DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00707_AAD_S_000007_PKG

Source


1 PACKAGE BODY XLA_00707_AAD_S_000007_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_000007_PKG                                        |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : Federal Costing Application Accounting Definition      |
14 |      Code    : FV_CST_AAD                                             |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 30-03-2009 at 05:03:12 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_000007_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_000007_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_000007_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_000007_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_000007_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_000007_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_000007_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_000007_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_000007_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_000007_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_000007_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 --Receiving Accounting Line Type
2380  , p_source_5            IN VARCHAR2
2381 --DISTRIBUTION_IDENTIFIER
2382  , p_source_11            IN NUMBER
2383 --Distribution Type
2384  , p_source_12            IN VARCHAR2
2385  , p_source_12_meaning    IN VARCHAR2
2386 --Entered Currency Code
2387  , p_source_15            IN VARCHAR2
2388 --Entered Amount
2389  , p_source_18            IN NUMBER
2390 --Currency Conversion Date
2391  , p_source_19            IN DATE
2392 --Currency Conversion Rate
2393  , p_source_20            IN NUMBER
2394 --Currency Conversion Type
2395  , p_source_21            IN VARCHAR2
2396 --Accounted Amount
2397  , p_source_22            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                := 'RCV_ACCOUNTING_EVENTS';
2492 l_event_class_code           := 'RETR_PRICE_ADJ_RCV';
2493 l_event_type_code            := 'RETR_PRICE_ADJ_RCV_ALL';
2494 l_line_definition_owner_code := 'S';
2495 l_line_definition_code       := 'RETR_PRICE_ADJ_RCV';
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_5,'
2525 ') =  'Accrual'
2526  THEN 
2527 
2528    --
2529    XLA_AE_LINES_PKG.SetNewLine;
2530 
2531    p_balance_type_code          := l_balance_type_code;
2532    -- set the flag so later we will know whether the gain loss line needs to be created
2533    
2534    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2535      p_actual_flag :='A';
2536    END IF;
2537 
2538    --
2539    -- bulk performance
2540    --
2541    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2542                                       p_header_num   => 0); -- 4262811
2543    --
2544    -- set accounting line options
2545    --
2546    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2547            p_natural_side_code          => 'D'
2548          , p_gain_or_loss_flag          => 'N'
2549          , p_gl_transfer_mode_code      => 'S'
2550          , p_acct_entry_type_code       => 'A'
2551          , p_switch_side_flag           => 'Y'
2552          , p_merge_duplicate_code       => 'N'
2553          );
2554    --
2555    l_acc_rev_natural_side_code := 'C';  -- 4262811
2556    -- 
2557    --
2558    -- set accounting line type info
2559    --
2560    xla_ae_lines_pkg.SetAcctLineType
2561       (p_component_type             => l_component_type
2562       ,p_event_type_code            => l_event_type_code
2563       ,p_line_definition_owner_code => l_line_definition_owner_code
2564       ,p_line_definition_code       => l_line_definition_code
2565       ,p_accounting_line_code       => l_component_code
2566       ,p_accounting_line_type_code  => l_component_type_code
2567       ,p_accounting_line_appl_id    => l_component_appl_id
2568       ,p_amb_context_code           => l_amb_context_code
2569       ,p_entity_code                => l_entity_code
2570       ,p_event_class_code           => l_event_class_code);
2571    --
2572    -- set accounting class
2573    --
2574    xla_ae_lines_pkg.SetAcctClass(
2575            p_accounting_class_code  => 'ACCRUAL'
2576          , p_ae_header_id           => l_ae_header_id
2577          );
2578 
2579    --
2580    -- set rounding class
2581    --
2582    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2583                       'ACCRUAL';
2584 
2585    --
2586    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2587    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2588    --
2589    -- bulk performance
2590    --
2591    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2592 
2593    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2594       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2595 
2596    -- 4955764
2597    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2598       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2599 
2600    -- 4458381 Public Sector Enh
2601    
2602    --
2603    -- set accounting attributes for the line type
2604    --
2605    l_entered_amt_idx := 3;
2606    l_accted_amt_idx  := 8;
2607    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2608    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
2609    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
2610    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
2611    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
2612    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
2613    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
2614    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
2615    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
2616    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
2617    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
2618    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
2619    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
2620    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
2621    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
2622    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
2623    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
2624 
2625    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2626    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2627 
2628    ---------------------------------------------------------------------------------------------------------------
2629    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2630    ---------------------------------------------------------------------------------------------------------------
2631    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2632 
2633    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2634    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2635 
2636    IF xla_accounting_cache_pkg.GetValueChar
2637          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2638          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2639    AND l_bflow_method_code = 'PRIOR_ENTRY'
2640 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2641    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2642          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2643        )
2644    THEN
2645          xla_ae_lines_pkg.BflowUpgEntry
2646            (p_business_method_code    => l_bflow_method_code
2647            ,p_business_class_code     => l_bflow_class_code
2648            ,p_balance_type            => l_balance_type_code);
2649    ELSE
2650       NULL;
2651 -- No business flow processing for business flow method of NONE.
2652    END IF;
2653 
2654    --
2655    -- call analytical criteria
2656    --
2657    
2658    --
2659    -- call description
2660    --
2661    -- No description or it is inherited.
2662    --
2663    -- call ADRs
2664    -- Bug 4922099
2665    --
2666    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2667         (NVL(l_actual_upg_option, 'N') = 'O') OR
2668         (NVL(l_enc_upg_option, 'N') = 'O')
2669       )
2670    THEN
2671    NULL;
2672    --
2673    --
2674    
2675   l_ccid := AcctDerRule_4(
2676            p_application_id           => p_application_id
2677          , p_ae_header_id             => l_ae_header_id 
2678 , p_source_4 => p_source_4
2679          , x_transaction_coa_id       => l_adr_transaction_coa_id
2680          , x_accounting_coa_id        => l_adr_accounting_coa_id
2681          , x_value_type_code          => l_adr_value_type_code
2682          , p_side                     => 'NA'
2683    );
2684 
2685    xla_ae_lines_pkg.set_ccid(
2686     p_code_combination_id          => l_ccid
2687   , p_value_type_code              => l_adr_value_type_code
2688   , p_transaction_coa_id           => l_adr_transaction_coa_id
2689   , p_accounting_coa_id            => l_adr_accounting_coa_id
2690   , p_adr_code                     => 'CST_DEFAULT'
2691   , p_adr_type_code                => 'S'
2692   , p_component_type               => l_component_type
2693   , p_component_code               => l_component_code
2694   , p_component_type_code          => l_component_type_code
2695   , p_component_appl_id            => l_component_appl_id
2696   , p_amb_context_code             => l_amb_context_code
2697   , p_side                         => 'NA'
2698   );
2699 
2700 
2701    --
2702    --
2703    END IF;
2704    --
2705    -- Bug 4922099
2706    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2707           (NVL(l_enc_upg_option, 'N') = 'O')
2708         ) AND
2709         (l_bflow_method_code = 'PRIOR_ENTRY')
2710       )
2711    THEN
2712       IF
2713       --
2714       1 = 2
2715       --
2716       THEN
2717       xla_accounting_err_pkg.build_message
2718                                     (p_appli_s_name            => 'XLA'
2719                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2720                                     ,p_token_1                 => 'LINE_NUMBER'
2721                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
2722                                     ,p_token_2                 => 'LINE_TYPE_NAME'
2723                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2724                                                                              l_component_type
2725                                                                             ,l_component_code
2726                                                                             ,l_component_type_code
2727                                                                             ,l_component_appl_id
2728                                                                             ,l_amb_context_code
2729                                                                             ,l_entity_code
2730                                                                             ,l_event_class_code
2731                                                                            )
2732                                     ,p_token_3                 => 'OWNER'
2733                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
2734                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
2735                                                                           ,p_lookup_code    => l_component_type_code
2736                                                                          )
2737                                     ,p_token_4                 => 'PRODUCT_NAME'
2738                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2739                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2740                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2741                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2742                                     ,p_ae_header_id            =>  NULL
2743                                        );
2744 
2745         IF (C_LEVEL_ERROR>= g_log_level) THEN
2746                  trace
2747                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2748                       ,p_level    => C_LEVEL_ERROR
2749                       ,p_module   => l_log_module);
2750         END IF;
2751       END IF;
2752    END IF;
2753    --
2754    --
2755    ------------------------------------------------------------------------------------------------
2756    -- 4219869 Business Flow
2757    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2758    -- Prior Entry.  Currently, the following code is always generated.
2759    ------------------------------------------------------------------------------------------------
2760    XLA_AE_LINES_PKG.ValidateCurrentLine;
2761 
2762    ------------------------------------------------------------------------------------
2763    -- 4219869 Business Flow
2764    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2765    ------------------------------------------------------------------------------------
2766    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2767 
2768    ----------------------------------------------------------------------------------
2769    -- 4219869 Business Flow
2770    -- Update journal entry status -- Need to generate this within IF <condition>
2771    ----------------------------------------------------------------------------------
2772    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2773          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2774          ,p_balance_type_code => l_balance_type_code
2775          );
2776 
2777    -------------------------------------------------------------------------------------------
2778    -- 4262811 - Generate the Accrual Reversal lines
2779    -------------------------------------------------------------------------------------------
2780    BEGIN
2781       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2782                               (g_array_event(p_event_id).array_value_num('header_index'));
2783       IF l_acc_rev_flag IS NULL THEN
2784          l_acc_rev_flag := 'N';
2785       END IF;
2786    EXCEPTION
2787       WHEN OTHERS THEN
2788          l_acc_rev_flag := 'N';
2789    END;
2790    --
2791    IF (l_acc_rev_flag = 'Y') THEN
2792 
2793        -- 4645092  ------------------------------------------------------------------------------
2794        -- To allow MPA report to determine if it should generate report process
2795        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2796        ------------------------------------------------------------------------------------------
2797 
2798        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2799        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2800    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
2801    -- call ADRs
2802    -- Bug 4922099
2803    --
2804    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2805         (NVL(l_actual_upg_option, 'N') = 'O') OR
2806         (NVL(l_enc_upg_option, 'N') = 'O')
2807       )
2808    THEN
2809    NULL;
2810    --
2811    --
2812    
2813   l_ccid := AcctDerRule_4(
2814            p_application_id           => p_application_id
2815          , p_ae_header_id             => l_ae_header_id 
2816 , p_source_4 => p_source_4
2817          , x_transaction_coa_id       => l_adr_transaction_coa_id
2818          , x_accounting_coa_id        => l_adr_accounting_coa_id
2819          , x_value_type_code          => l_adr_value_type_code
2820          , p_side                     => 'NA'
2821    );
2822 
2823    xla_ae_lines_pkg.set_ccid(
2824     p_code_combination_id          => l_ccid
2825   , p_value_type_code              => l_adr_value_type_code
2826   , p_transaction_coa_id           => l_adr_transaction_coa_id
2827   , p_accounting_coa_id            => l_adr_accounting_coa_id
2828   , p_adr_code                     => 'CST_DEFAULT'
2829   , p_adr_type_code                => 'S'
2830   , p_component_type               => l_component_type
2831   , p_component_code               => l_component_code
2832   , p_component_type_code          => l_component_type_code
2833   , p_component_appl_id            => l_component_appl_id
2834   , p_amb_context_code             => l_amb_context_code
2835   , p_side                         => 'NA'
2836   );
2837 
2838 
2839    --
2840    --
2841    END IF;
2842 
2843        --
2844        -- Update the line information that should be overwritten
2845        --
2846        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2847                                          p_header_num   => 1);
2848        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
2849 
2850        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2851 
2852        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
2853           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2854        END IF;
2855 
2856       --
2857       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2858       --
2859       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2860           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
2861       ELSE
2862           ---------------------------------------------------------------------------------------------------
2863           -- 4262811a Switch Sign
2864           ---------------------------------------------------------------------------------------------------
2865           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
2866           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2867                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2868           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2869                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2870           -- 5132302
2871           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2872                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2873 
2874       END IF;
2875 
2876       -- 4955764
2877       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2878       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2879 
2880 
2881       XLA_AE_LINES_PKG.ValidateCurrentLine;
2882       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2883 
2884       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2885                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2886                ,p_balance_type_code => l_balance_type_code);
2887 
2888    END IF;
2889 
2890    -----------------------------------------------------------------------------------------
2891    -- 4262811 Multiperiod Accounting
2892    -----------------------------------------------------------------------------------------
2893      -- No MPA option is assigned.
2894 
2895 
2896 END IF;
2897 END IF;
2898 --
2899 
2900 --
2901 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2902    trace
2903       (p_msg      => 'END of AcctLineType_8'
2904       ,p_level    => C_LEVEL_PROCEDURE
2905       ,p_module   => l_log_module);
2906 END IF;
2907 --
2908 EXCEPTION
2909   WHEN xla_exceptions_pkg.application_exception THEN
2910       RAISE;
2911   WHEN OTHERS THEN
2912        xla_exceptions_pkg.raise_message
2913            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_8');
2914 END AcctLineType_8;
2915 --
2916 
2917 ---------------------------------------
2918 --
2919 -- PRIVATE FUNCTION
2920 --         AcctLineType_9
2921 --
2922 ---------------------------------------
2923 PROCEDURE AcctLineType_9 (
2924   p_application_id        IN NUMBER
2925  ,p_event_id              IN NUMBER
2926  ,p_calculate_acctd_flag  IN VARCHAR2
2927  ,p_calculate_g_l_flag    IN VARCHAR2
2928  ,p_actual_flag           IN OUT VARCHAR2
2929  ,p_balance_type_code     OUT VARCHAR2
2930  ,p_gain_or_loss_ref      OUT VARCHAR2
2931  
2932 --Cost Management Default Account
2933  , p_source_4            IN NUMBER
2934 --Receiving Accounting Line Type
2935  , p_source_5            IN VARCHAR2
2936 --DISTRIBUTION_IDENTIFIER
2937  , p_source_11            IN NUMBER
2938 --Distribution Type
2939  , p_source_12            IN VARCHAR2
2940  , p_source_12_meaning    IN VARCHAR2
2941 --Entered Currency Code
2942  , p_source_15            IN VARCHAR2
2943 --Entered Amount
2944  , p_source_18            IN NUMBER
2945 --Currency Conversion Date
2946  , p_source_19            IN DATE
2947 --Currency Conversion Rate
2948  , p_source_20            IN NUMBER
2949 --Currency Conversion Type
2950  , p_source_21            IN VARCHAR2
2951 --Accounted Amount
2952  , p_source_22            IN NUMBER
2953 )
2954 IS
2955 
2956 l_component_type              VARCHAR2(80);
2957 l_component_code              VARCHAR2(30);
2958 l_component_type_code         VARCHAR2(1);
2959 l_component_appl_id           INTEGER;
2960 l_amb_context_code            VARCHAR2(30);
2961 l_entity_code                 VARCHAR2(30);
2962 l_event_class_code            VARCHAR2(30);
2963 l_ae_header_id                NUMBER;
2964 l_event_type_code             VARCHAR2(30);
2965 l_line_definition_code        VARCHAR2(30);
2966 l_line_definition_owner_code  VARCHAR2(1);
2967 --
2968 -- adr variables
2969 l_segment                     VARCHAR2(30);
2970 l_ccid                        NUMBER;
2971 l_adr_transaction_coa_id      NUMBER;
2972 l_adr_accounting_coa_id       NUMBER;
2973 l_adr_flexfield_segment_code  VARCHAR2(30);
2974 l_adr_flex_value_set_id       NUMBER;
2975 l_adr_value_type_code         VARCHAR2(30);
2976 l_adr_value_combination_id    NUMBER;
2977 l_adr_value_segment_code      VARCHAR2(30);
2978 
2979 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2980 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2981 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2982 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2983 
2984 -- 4262811 Variables ------------------------------------------------------------------------------------------
2985 l_entered_amt_idx             NUMBER;
2986 l_accted_amt_idx              NUMBER;
2987 l_acc_rev_flag                VARCHAR2(1);
2988 l_accrual_line_num            NUMBER;
2989 l_tmp_amt                     NUMBER;
2990 l_acc_rev_natural_side_code   VARCHAR2(1);
2991 
2992 l_num_entries                 NUMBER;
2993 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2994 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2995 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2996 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2997 l_recog_line_1                NUMBER;
2998 l_recog_line_2                NUMBER;
2999 
3000 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3001 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3002 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3003 
3004 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3005 
3006 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3007 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3008 
3009 ---------------------------------------------------------------------------------------------------------------
3010 
3011 
3012 --
3013 -- bulk performance
3014 --
3015 l_balance_type_code           VARCHAR2(1);
3016 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3017 l_log_module                  VARCHAR2(240);
3018 
3019 --
3020 -- Upgrade strategy
3021 --
3022 l_actual_upg_option           VARCHAR2(1);
3023 l_enc_upg_option           VARCHAR2(1);
3024 
3025 --
3026 BEGIN
3027 --
3028 IF g_log_enabled THEN
3029       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_9';
3030 END IF;
3031 --
3032 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3033 
3034       trace
3035          (p_msg      => 'BEGIN of AcctLineType_9'
3036          ,p_level    => C_LEVEL_PROCEDURE
3037          ,p_module   => l_log_module);
3038 
3039 END IF;
3040 --
3041 l_component_type             := 'AMB_JLT';
3042 l_component_code             := 'ACCRUAL';
3043 l_component_type_code        := 'S';
3044 l_component_appl_id          :=  707;
3045 l_amb_context_code           := 'DEFAULT';
3046 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
3047 l_event_class_code           := 'RCPT_REC_INSP';
3048 l_event_type_code            := 'RCPT_REC_INSP_ALL';
3049 l_line_definition_owner_code := 'S';
3050 l_line_definition_code       := 'RCPT_REC_INSP';
3051 --
3052 l_balance_type_code          := 'A';
3053 l_segment                     := NULL;
3054 l_ccid                        := NULL;
3055 l_adr_transaction_coa_id      := NULL;
3056 l_adr_accounting_coa_id       := NULL;
3057 l_adr_flexfield_segment_code  := NULL;
3058 l_adr_flex_value_set_id       := NULL;
3059 l_adr_value_type_code         := NULL;
3060 l_adr_value_combination_id    := NULL;
3061 l_adr_value_segment_code      := NULL;
3062 
3063 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
3064 l_bflow_class_code           := '';    -- 4219869 Business Flow
3065 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3066 l_budgetary_control_flag     := 'N';
3067 
3068 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3069 l_bflow_applied_to_amt       := NULL; -- 5132302
3070 l_entered_amt_idx            := NULL;          -- 4262811
3071 l_accted_amt_idx             := NULL;          -- 4262811
3072 l_acc_rev_flag               := NULL;          -- 4262811
3073 l_accrual_line_num           := NULL;          -- 4262811
3074 l_tmp_amt                    := NULL;          -- 4262811
3075 --
3076  
3077 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3078     l_balance_type_code <> 'B' THEN
3079 IF NVL(p_source_5,'
3080 ') =  'Accrual'
3081  THEN 
3082 
3083    --
3084    XLA_AE_LINES_PKG.SetNewLine;
3085 
3086    p_balance_type_code          := l_balance_type_code;
3087    -- set the flag so later we will know whether the gain loss line needs to be created
3088    
3089    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3090      p_actual_flag :='A';
3091    END IF;
3092 
3093    --
3094    -- bulk performance
3095    --
3096    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3097                                       p_header_num   => 0); -- 4262811
3098    --
3099    -- set accounting line options
3100    --
3101    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3102            p_natural_side_code          => 'D'
3103          , p_gain_or_loss_flag          => 'N'
3104          , p_gl_transfer_mode_code      => 'S'
3105          , p_acct_entry_type_code       => 'A'
3106          , p_switch_side_flag           => 'Y'
3107          , p_merge_duplicate_code       => 'N'
3108          );
3109    --
3110    l_acc_rev_natural_side_code := 'C';  -- 4262811
3111    -- 
3112    --
3113    -- set accounting line type info
3114    --
3115    xla_ae_lines_pkg.SetAcctLineType
3116       (p_component_type             => l_component_type
3117       ,p_event_type_code            => l_event_type_code
3118       ,p_line_definition_owner_code => l_line_definition_owner_code
3119       ,p_line_definition_code       => l_line_definition_code
3120       ,p_accounting_line_code       => l_component_code
3121       ,p_accounting_line_type_code  => l_component_type_code
3122       ,p_accounting_line_appl_id    => l_component_appl_id
3123       ,p_amb_context_code           => l_amb_context_code
3124       ,p_entity_code                => l_entity_code
3125       ,p_event_class_code           => l_event_class_code);
3126    --
3127    -- set accounting class
3128    --
3129    xla_ae_lines_pkg.SetAcctClass(
3130            p_accounting_class_code  => 'ACCRUAL'
3131          , p_ae_header_id           => l_ae_header_id
3132          );
3133 
3134    --
3135    -- set rounding class
3136    --
3137    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3138                       'ACCRUAL';
3139 
3140    --
3141    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3142    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3143    --
3144    -- bulk performance
3145    --
3146    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3147 
3148    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3149       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3150 
3151    -- 4955764
3152    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3153       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3154 
3155    -- 4458381 Public Sector Enh
3156    
3157    --
3158    -- set accounting attributes for the line type
3159    --
3160    l_entered_amt_idx := 3;
3161    l_accted_amt_idx  := 8;
3162    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3163    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
3164    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
3165    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
3166    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
3167    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
3168    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
3169    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
3170    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
3171    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
3172    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
3173    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
3174    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
3175    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
3176    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
3177    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
3178    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
3179 
3180    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3181    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3182 
3183    ---------------------------------------------------------------------------------------------------------------
3184    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3185    ---------------------------------------------------------------------------------------------------------------
3186    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3187 
3188    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3189    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3190 
3191    IF xla_accounting_cache_pkg.GetValueChar
3192          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3193          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3194    AND l_bflow_method_code = 'PRIOR_ENTRY'
3195 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3196    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3197          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3198        )
3199    THEN
3200          xla_ae_lines_pkg.BflowUpgEntry
3201            (p_business_method_code    => l_bflow_method_code
3202            ,p_business_class_code     => l_bflow_class_code
3203            ,p_balance_type            => l_balance_type_code);
3204    ELSE
3205       NULL;
3206 -- No business flow processing for business flow method of NONE.
3207    END IF;
3208 
3209    --
3210    -- call analytical criteria
3211    --
3212    
3213    --
3214    -- call description
3215    --
3216    -- No description or it is inherited.
3217    --
3218    -- call ADRs
3219    -- Bug 4922099
3220    --
3221    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3222         (NVL(l_actual_upg_option, 'N') = 'O') OR
3223         (NVL(l_enc_upg_option, 'N') = 'O')
3224       )
3225    THEN
3226    NULL;
3227    --
3228    --
3229    
3230   l_ccid := AcctDerRule_4(
3231            p_application_id           => p_application_id
3232          , p_ae_header_id             => l_ae_header_id 
3233 , p_source_4 => p_source_4
3234          , x_transaction_coa_id       => l_adr_transaction_coa_id
3235          , x_accounting_coa_id        => l_adr_accounting_coa_id
3236          , x_value_type_code          => l_adr_value_type_code
3237          , p_side                     => 'NA'
3238    );
3239 
3240    xla_ae_lines_pkg.set_ccid(
3241     p_code_combination_id          => l_ccid
3242   , p_value_type_code              => l_adr_value_type_code
3243   , p_transaction_coa_id           => l_adr_transaction_coa_id
3244   , p_accounting_coa_id            => l_adr_accounting_coa_id
3245   , p_adr_code                     => 'CST_DEFAULT'
3246   , p_adr_type_code                => 'S'
3247   , p_component_type               => l_component_type
3248   , p_component_code               => l_component_code
3249   , p_component_type_code          => l_component_type_code
3250   , p_component_appl_id            => l_component_appl_id
3251   , p_amb_context_code             => l_amb_context_code
3252   , p_side                         => 'NA'
3253   );
3254 
3255 
3256    --
3257    --
3258    END IF;
3259    --
3260    -- Bug 4922099
3261    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3262           (NVL(l_enc_upg_option, 'N') = 'O')
3263         ) AND
3264         (l_bflow_method_code = 'PRIOR_ENTRY')
3265       )
3266    THEN
3267       IF
3268       --
3269       1 = 2
3270       --
3271       THEN
3272       xla_accounting_err_pkg.build_message
3273                                     (p_appli_s_name            => 'XLA'
3274                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3275                                     ,p_token_1                 => 'LINE_NUMBER'
3276                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3277                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3278                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3279                                                                              l_component_type
3280                                                                             ,l_component_code
3281                                                                             ,l_component_type_code
3282                                                                             ,l_component_appl_id
3283                                                                             ,l_amb_context_code
3284                                                                             ,l_entity_code
3285                                                                             ,l_event_class_code
3286                                                                            )
3287                                     ,p_token_3                 => 'OWNER'
3288                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3289                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3290                                                                           ,p_lookup_code    => l_component_type_code
3291                                                                          )
3292                                     ,p_token_4                 => 'PRODUCT_NAME'
3293                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3294                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3295                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3296                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3297                                     ,p_ae_header_id            =>  NULL
3298                                        );
3299 
3300         IF (C_LEVEL_ERROR>= g_log_level) THEN
3301                  trace
3302                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3303                       ,p_level    => C_LEVEL_ERROR
3304                       ,p_module   => l_log_module);
3305         END IF;
3306       END IF;
3307    END IF;
3308    --
3309    --
3310    ------------------------------------------------------------------------------------------------
3311    -- 4219869 Business Flow
3312    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3313    -- Prior Entry.  Currently, the following code is always generated.
3314    ------------------------------------------------------------------------------------------------
3315    XLA_AE_LINES_PKG.ValidateCurrentLine;
3316 
3317    ------------------------------------------------------------------------------------
3318    -- 4219869 Business Flow
3319    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3320    ------------------------------------------------------------------------------------
3321    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3322 
3323    ----------------------------------------------------------------------------------
3324    -- 4219869 Business Flow
3325    -- Update journal entry status -- Need to generate this within IF <condition>
3326    ----------------------------------------------------------------------------------
3327    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3328          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3329          ,p_balance_type_code => l_balance_type_code
3330          );
3331 
3332    -------------------------------------------------------------------------------------------
3333    -- 4262811 - Generate the Accrual Reversal lines
3334    -------------------------------------------------------------------------------------------
3335    BEGIN
3336       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3337                               (g_array_event(p_event_id).array_value_num('header_index'));
3338       IF l_acc_rev_flag IS NULL THEN
3339          l_acc_rev_flag := 'N';
3340       END IF;
3341    EXCEPTION
3342       WHEN OTHERS THEN
3343          l_acc_rev_flag := 'N';
3344    END;
3345    --
3346    IF (l_acc_rev_flag = 'Y') THEN
3347 
3348        -- 4645092  ------------------------------------------------------------------------------
3349        -- To allow MPA report to determine if it should generate report process
3350        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3351        ------------------------------------------------------------------------------------------
3352 
3353        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3354        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3355    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
3356    -- call ADRs
3357    -- Bug 4922099
3358    --
3359    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3360         (NVL(l_actual_upg_option, 'N') = 'O') OR
3361         (NVL(l_enc_upg_option, 'N') = 'O')
3362       )
3363    THEN
3364    NULL;
3365    --
3366    --
3367    
3368   l_ccid := AcctDerRule_4(
3369            p_application_id           => p_application_id
3370          , p_ae_header_id             => l_ae_header_id 
3371 , p_source_4 => p_source_4
3372          , x_transaction_coa_id       => l_adr_transaction_coa_id
3373          , x_accounting_coa_id        => l_adr_accounting_coa_id
3374          , x_value_type_code          => l_adr_value_type_code
3375          , p_side                     => 'NA'
3376    );
3377 
3378    xla_ae_lines_pkg.set_ccid(
3379     p_code_combination_id          => l_ccid
3380   , p_value_type_code              => l_adr_value_type_code
3381   , p_transaction_coa_id           => l_adr_transaction_coa_id
3382   , p_accounting_coa_id            => l_adr_accounting_coa_id
3383   , p_adr_code                     => 'CST_DEFAULT'
3384   , p_adr_type_code                => 'S'
3385   , p_component_type               => l_component_type
3386   , p_component_code               => l_component_code
3387   , p_component_type_code          => l_component_type_code
3388   , p_component_appl_id            => l_component_appl_id
3389   , p_amb_context_code             => l_amb_context_code
3390   , p_side                         => 'NA'
3391   );
3392 
3393 
3394    --
3395    --
3396    END IF;
3397 
3398        --
3399        -- Update the line information that should be overwritten
3400        --
3401        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3402                                          p_header_num   => 1);
3403        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3404 
3405        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3406 
3407        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3408           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3409        END IF;
3410 
3411       --
3412       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3413       --
3414       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3415           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3416       ELSE
3417           ---------------------------------------------------------------------------------------------------
3418           -- 4262811a Switch Sign
3419           ---------------------------------------------------------------------------------------------------
3420           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3421           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3422                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3423           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3424                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3425           -- 5132302
3426           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3427                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3428 
3429       END IF;
3430 
3431       -- 4955764
3432       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3433       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3434 
3435 
3436       XLA_AE_LINES_PKG.ValidateCurrentLine;
3437       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3438 
3439       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3440                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3441                ,p_balance_type_code => l_balance_type_code);
3442 
3443    END IF;
3444 
3445    -----------------------------------------------------------------------------------------
3446    -- 4262811 Multiperiod Accounting
3447    -----------------------------------------------------------------------------------------
3448      -- No MPA option is assigned.
3449 
3450 
3451 END IF;
3452 END IF;
3453 --
3454 
3455 --
3456 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3457    trace
3458       (p_msg      => 'END of AcctLineType_9'
3459       ,p_level    => C_LEVEL_PROCEDURE
3460       ,p_module   => l_log_module);
3461 END IF;
3462 --
3463 EXCEPTION
3464   WHEN xla_exceptions_pkg.application_exception THEN
3465       RAISE;
3466   WHEN OTHERS THEN
3467        xla_exceptions_pkg.raise_message
3468            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_9');
3469 END AcctLineType_9;
3470 --
3471 
3472 ---------------------------------------
3473 --
3474 -- PRIVATE FUNCTION
3475 --         AcctLineType_10
3476 --
3477 ---------------------------------------
3478 PROCEDURE AcctLineType_10 (
3479   p_application_id        IN NUMBER
3480  ,p_event_id              IN NUMBER
3481  ,p_calculate_acctd_flag  IN VARCHAR2
3482  ,p_calculate_g_l_flag    IN VARCHAR2
3483  ,p_actual_flag           IN OUT VARCHAR2
3484  ,p_balance_type_code     OUT VARCHAR2
3485  ,p_gain_or_loss_ref      OUT VARCHAR2
3486  
3487 --Cost Management Default Account
3488  , p_source_4            IN NUMBER
3489 --Receiving Accounting Line Type
3490  , p_source_5            IN VARCHAR2
3491 --DISTRIBUTION_IDENTIFIER
3492  , p_source_11            IN NUMBER
3493 --Distribution Type
3494  , p_source_12            IN VARCHAR2
3495  , p_source_12_meaning    IN VARCHAR2
3496 --Entered Currency Code
3497  , p_source_15            IN VARCHAR2
3498 --Entered Amount
3499  , p_source_18            IN NUMBER
3500 --Currency Conversion Date
3501  , p_source_19            IN DATE
3502 --Currency Conversion Rate
3503  , p_source_20            IN NUMBER
3504 --Accounted Amount
3505  , p_source_22            IN NUMBER
3506 )
3507 IS
3508 
3509 l_component_type              VARCHAR2(80);
3510 l_component_code              VARCHAR2(30);
3511 l_component_type_code         VARCHAR2(1);
3512 l_component_appl_id           INTEGER;
3513 l_amb_context_code            VARCHAR2(30);
3514 l_entity_code                 VARCHAR2(30);
3515 l_event_class_code            VARCHAR2(30);
3516 l_ae_header_id                NUMBER;
3517 l_event_type_code             VARCHAR2(30);
3518 l_line_definition_code        VARCHAR2(30);
3519 l_line_definition_owner_code  VARCHAR2(1);
3520 --
3521 -- adr variables
3522 l_segment                     VARCHAR2(30);
3523 l_ccid                        NUMBER;
3524 l_adr_transaction_coa_id      NUMBER;
3525 l_adr_accounting_coa_id       NUMBER;
3526 l_adr_flexfield_segment_code  VARCHAR2(30);
3527 l_adr_flex_value_set_id       NUMBER;
3528 l_adr_value_type_code         VARCHAR2(30);
3529 l_adr_value_combination_id    NUMBER;
3530 l_adr_value_segment_code      VARCHAR2(30);
3531 
3532 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3533 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3534 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3535 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3536 
3537 -- 4262811 Variables ------------------------------------------------------------------------------------------
3538 l_entered_amt_idx             NUMBER;
3539 l_accted_amt_idx              NUMBER;
3540 l_acc_rev_flag                VARCHAR2(1);
3541 l_accrual_line_num            NUMBER;
3542 l_tmp_amt                     NUMBER;
3543 l_acc_rev_natural_side_code   VARCHAR2(1);
3544 
3545 l_num_entries                 NUMBER;
3546 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3547 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3548 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3549 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3550 l_recog_line_1                NUMBER;
3551 l_recog_line_2                NUMBER;
3552 
3553 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3554 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3555 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3556 
3557 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3558 
3559 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3560 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3561 
3562 ---------------------------------------------------------------------------------------------------------------
3563 
3564 
3565 --
3566 -- bulk performance
3567 --
3568 l_balance_type_code           VARCHAR2(1);
3569 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3570 l_log_module                  VARCHAR2(240);
3571 
3572 --
3573 -- Upgrade strategy
3574 --
3575 l_actual_upg_option           VARCHAR2(1);
3576 l_enc_upg_option           VARCHAR2(1);
3577 
3578 --
3579 BEGIN
3580 --
3581 IF g_log_enabled THEN
3582       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_10';
3583 END IF;
3584 --
3585 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3586 
3587       trace
3588          (p_msg      => 'BEGIN of AcctLineType_10'
3589          ,p_level    => C_LEVEL_PROCEDURE
3590          ,p_module   => l_log_module);
3591 
3592 END IF;
3593 --
3594 l_component_type             := 'AMB_JLT';
3595 l_component_code             := 'CHARGE';
3596 l_component_type_code        := 'S';
3597 l_component_appl_id          :=  707;
3598 l_amb_context_code           := 'DEFAULT';
3599 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
3600 l_event_class_code           := 'RETR_PRICE_ADJ_DEL';
3601 l_event_type_code            := 'RETR_PRICE_ADJ_DEL_ALL';
3602 l_line_definition_owner_code := 'S';
3603 l_line_definition_code       := 'RETR_PRICE_ADJ_DEL';
3604 --
3605 l_balance_type_code          := 'A';
3606 l_segment                     := NULL;
3607 l_ccid                        := NULL;
3608 l_adr_transaction_coa_id      := NULL;
3609 l_adr_accounting_coa_id       := NULL;
3610 l_adr_flexfield_segment_code  := NULL;
3611 l_adr_flex_value_set_id       := NULL;
3612 l_adr_value_type_code         := NULL;
3613 l_adr_value_combination_id    := NULL;
3614 l_adr_value_segment_code      := NULL;
3615 
3616 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
3617 l_bflow_class_code           := '';    -- 4219869 Business Flow
3618 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3619 l_budgetary_control_flag     := 'N';
3620 
3621 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3622 l_bflow_applied_to_amt       := NULL; -- 5132302
3623 l_entered_amt_idx            := NULL;          -- 4262811
3624 l_accted_amt_idx             := NULL;          -- 4262811
3625 l_acc_rev_flag               := NULL;          -- 4262811
3626 l_accrual_line_num           := NULL;          -- 4262811
3627 l_tmp_amt                    := NULL;          -- 4262811
3628 --
3629  
3630 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3631     l_balance_type_code <> 'B' THEN
3632 IF NVL(p_source_5,'
3633 ') =  'Charge'
3634  THEN 
3635 
3636    --
3637    XLA_AE_LINES_PKG.SetNewLine;
3638 
3639    p_balance_type_code          := l_balance_type_code;
3640    -- set the flag so later we will know whether the gain loss line needs to be created
3641    
3642    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3643      p_actual_flag :='A';
3644    END IF;
3645 
3646    --
3647    -- bulk performance
3648    --
3649    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3650                                       p_header_num   => 0); -- 4262811
3651    --
3652    -- set accounting line options
3653    --
3654    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3655            p_natural_side_code          => 'D'
3656          , p_gain_or_loss_flag          => 'N'
3657          , p_gl_transfer_mode_code      => 'S'
3658          , p_acct_entry_type_code       => 'A'
3659          , p_switch_side_flag           => 'Y'
3660          , p_merge_duplicate_code       => 'N'
3661          );
3662    --
3663    l_acc_rev_natural_side_code := 'C';  -- 4262811
3664    -- 
3665    --
3666    -- set accounting line type info
3667    --
3668    xla_ae_lines_pkg.SetAcctLineType
3669       (p_component_type             => l_component_type
3670       ,p_event_type_code            => l_event_type_code
3671       ,p_line_definition_owner_code => l_line_definition_owner_code
3672       ,p_line_definition_code       => l_line_definition_code
3673       ,p_accounting_line_code       => l_component_code
3674       ,p_accounting_line_type_code  => l_component_type_code
3675       ,p_accounting_line_appl_id    => l_component_appl_id
3676       ,p_amb_context_code           => l_amb_context_code
3677       ,p_entity_code                => l_entity_code
3678       ,p_event_class_code           => l_event_class_code);
3679    --
3680    -- set accounting class
3681    --
3682    xla_ae_lines_pkg.SetAcctClass(
3683            p_accounting_class_code  => 'CHARGE'
3684          , p_ae_header_id           => l_ae_header_id
3685          );
3686 
3687    --
3688    -- set rounding class
3689    --
3690    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3691                       'CHARGE';
3692 
3693    --
3694    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3695    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3696    --
3697    -- bulk performance
3698    --
3699    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3700 
3701    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3702       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3703 
3704    -- 4955764
3705    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3706       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3707 
3708    -- 4458381 Public Sector Enh
3709    
3710    --
3711    -- set accounting attributes for the line type
3712    --
3713    l_entered_amt_idx := 3;
3714    l_accted_amt_idx  := 8;
3715    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3716    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
3717    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
3718    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
3719    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
3720    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
3721    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
3722    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
3723    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
3724    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
3725    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
3726    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
3727    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
3728    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
3729    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
3730    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
3731    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
3732 
3733    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3734    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3735 
3736    ---------------------------------------------------------------------------------------------------------------
3737    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3738    ---------------------------------------------------------------------------------------------------------------
3739    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3740 
3741    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3742    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3743 
3744    IF xla_accounting_cache_pkg.GetValueChar
3745          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3746          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3747    AND l_bflow_method_code = 'PRIOR_ENTRY'
3748 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3749    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3750          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3751        )
3752    THEN
3753          xla_ae_lines_pkg.BflowUpgEntry
3754            (p_business_method_code    => l_bflow_method_code
3755            ,p_business_class_code     => l_bflow_class_code
3756            ,p_balance_type            => l_balance_type_code);
3757    ELSE
3758       NULL;
3759 -- No business flow processing for business flow method of NONE.
3760    END IF;
3761 
3762    --
3763    -- call analytical criteria
3764    --
3765    
3766    --
3767    -- call description
3768    --
3769    -- No description or it is inherited.
3770    --
3771    -- call ADRs
3772    -- Bug 4922099
3773    --
3774    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3775         (NVL(l_actual_upg_option, 'N') = 'O') OR
3776         (NVL(l_enc_upg_option, 'N') = 'O')
3777       )
3778    THEN
3779    NULL;
3780    --
3781    --
3782    
3783   l_ccid := AcctDerRule_4(
3784            p_application_id           => p_application_id
3785          , p_ae_header_id             => l_ae_header_id 
3786 , p_source_4 => p_source_4
3787          , x_transaction_coa_id       => l_adr_transaction_coa_id
3788          , x_accounting_coa_id        => l_adr_accounting_coa_id
3789          , x_value_type_code          => l_adr_value_type_code
3790          , p_side                     => 'NA'
3791    );
3792 
3793    xla_ae_lines_pkg.set_ccid(
3794     p_code_combination_id          => l_ccid
3795   , p_value_type_code              => l_adr_value_type_code
3796   , p_transaction_coa_id           => l_adr_transaction_coa_id
3797   , p_accounting_coa_id            => l_adr_accounting_coa_id
3798   , p_adr_code                     => 'CST_DEFAULT'
3799   , p_adr_type_code                => 'S'
3800   , p_component_type               => l_component_type
3801   , p_component_code               => l_component_code
3802   , p_component_type_code          => l_component_type_code
3803   , p_component_appl_id            => l_component_appl_id
3804   , p_amb_context_code             => l_amb_context_code
3805   , p_side                         => 'NA'
3806   );
3807 
3808 
3809    --
3810    --
3811    END IF;
3812    --
3813    -- Bug 4922099
3814    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3815           (NVL(l_enc_upg_option, 'N') = 'O')
3816         ) AND
3817         (l_bflow_method_code = 'PRIOR_ENTRY')
3818       )
3819    THEN
3820       IF
3821       --
3822       1 = 2
3823       --
3824       THEN
3825       xla_accounting_err_pkg.build_message
3826                                     (p_appli_s_name            => 'XLA'
3827                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3828                                     ,p_token_1                 => 'LINE_NUMBER'
3829                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3830                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3831                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3832                                                                              l_component_type
3833                                                                             ,l_component_code
3834                                                                             ,l_component_type_code
3835                                                                             ,l_component_appl_id
3836                                                                             ,l_amb_context_code
3837                                                                             ,l_entity_code
3838                                                                             ,l_event_class_code
3839                                                                            )
3840                                     ,p_token_3                 => 'OWNER'
3841                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3842                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3843                                                                           ,p_lookup_code    => l_component_type_code
3844                                                                          )
3845                                     ,p_token_4                 => 'PRODUCT_NAME'
3846                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3847                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3848                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3849                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3850                                     ,p_ae_header_id            =>  NULL
3851                                        );
3852 
3853         IF (C_LEVEL_ERROR>= g_log_level) THEN
3854                  trace
3855                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3856                       ,p_level    => C_LEVEL_ERROR
3857                       ,p_module   => l_log_module);
3858         END IF;
3859       END IF;
3860    END IF;
3861    --
3862    --
3863    ------------------------------------------------------------------------------------------------
3864    -- 4219869 Business Flow
3865    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3866    -- Prior Entry.  Currently, the following code is always generated.
3867    ------------------------------------------------------------------------------------------------
3868    XLA_AE_LINES_PKG.ValidateCurrentLine;
3869 
3870    ------------------------------------------------------------------------------------
3871    -- 4219869 Business Flow
3872    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3873    ------------------------------------------------------------------------------------
3874    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3875 
3876    ----------------------------------------------------------------------------------
3877    -- 4219869 Business Flow
3878    -- Update journal entry status -- Need to generate this within IF <condition>
3879    ----------------------------------------------------------------------------------
3880    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3881          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3882          ,p_balance_type_code => l_balance_type_code
3883          );
3884 
3885    -------------------------------------------------------------------------------------------
3886    -- 4262811 - Generate the Accrual Reversal lines
3887    -------------------------------------------------------------------------------------------
3888    BEGIN
3889       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3890                               (g_array_event(p_event_id).array_value_num('header_index'));
3891       IF l_acc_rev_flag IS NULL THEN
3892          l_acc_rev_flag := 'N';
3893       END IF;
3894    EXCEPTION
3895       WHEN OTHERS THEN
3896          l_acc_rev_flag := 'N';
3897    END;
3898    --
3899    IF (l_acc_rev_flag = 'Y') THEN
3900 
3901        -- 4645092  ------------------------------------------------------------------------------
3902        -- To allow MPA report to determine if it should generate report process
3903        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3904        ------------------------------------------------------------------------------------------
3905 
3906        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3907        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3908    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
3909    -- call ADRs
3910    -- Bug 4922099
3911    --
3912    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3913         (NVL(l_actual_upg_option, 'N') = 'O') OR
3914         (NVL(l_enc_upg_option, 'N') = 'O')
3915       )
3916    THEN
3917    NULL;
3918    --
3919    --
3920    
3921   l_ccid := AcctDerRule_4(
3922            p_application_id           => p_application_id
3923          , p_ae_header_id             => l_ae_header_id 
3924 , p_source_4 => p_source_4
3925          , x_transaction_coa_id       => l_adr_transaction_coa_id
3926          , x_accounting_coa_id        => l_adr_accounting_coa_id
3927          , x_value_type_code          => l_adr_value_type_code
3928          , p_side                     => 'NA'
3929    );
3930 
3931    xla_ae_lines_pkg.set_ccid(
3932     p_code_combination_id          => l_ccid
3933   , p_value_type_code              => l_adr_value_type_code
3934   , p_transaction_coa_id           => l_adr_transaction_coa_id
3935   , p_accounting_coa_id            => l_adr_accounting_coa_id
3936   , p_adr_code                     => 'CST_DEFAULT'
3937   , p_adr_type_code                => 'S'
3938   , p_component_type               => l_component_type
3939   , p_component_code               => l_component_code
3940   , p_component_type_code          => l_component_type_code
3941   , p_component_appl_id            => l_component_appl_id
3942   , p_amb_context_code             => l_amb_context_code
3943   , p_side                         => 'NA'
3944   );
3945 
3946 
3947    --
3948    --
3949    END IF;
3950 
3951        --
3952        -- Update the line information that should be overwritten
3953        --
3954        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3955                                          p_header_num   => 1);
3956        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3957 
3958        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3959 
3960        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3961           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3962        END IF;
3963 
3964       --
3965       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3966       --
3967       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3968           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3969       ELSE
3970           ---------------------------------------------------------------------------------------------------
3971           -- 4262811a Switch Sign
3972           ---------------------------------------------------------------------------------------------------
3973           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3974           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3975                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3976           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3977                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3978           -- 5132302
3979           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3980                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3981 
3982       END IF;
3983 
3984       -- 4955764
3985       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3986       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3987 
3988 
3989       XLA_AE_LINES_PKG.ValidateCurrentLine;
3990       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3991 
3992       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3993                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3994                ,p_balance_type_code => l_balance_type_code);
3995 
3996    END IF;
3997 
3998    -----------------------------------------------------------------------------------------
3999    -- 4262811 Multiperiod Accounting
4000    -----------------------------------------------------------------------------------------
4001      -- No MPA option is assigned.
4002 
4003 
4004 END IF;
4005 END IF;
4006 --
4007 
4008 --
4009 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4010    trace
4011       (p_msg      => 'END of AcctLineType_10'
4012       ,p_level    => C_LEVEL_PROCEDURE
4013       ,p_module   => l_log_module);
4014 END IF;
4015 --
4016 EXCEPTION
4017   WHEN xla_exceptions_pkg.application_exception THEN
4018       RAISE;
4019   WHEN OTHERS THEN
4020        xla_exceptions_pkg.raise_message
4021            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_10');
4022 END AcctLineType_10;
4023 --
4024 
4025 ---------------------------------------
4026 --
4027 -- PRIVATE FUNCTION
4028 --         AcctLineType_11
4029 --
4030 ---------------------------------------
4031 PROCEDURE AcctLineType_11 (
4032   p_application_id        IN NUMBER
4033  ,p_event_id              IN NUMBER
4034  ,p_calculate_acctd_flag  IN VARCHAR2
4035  ,p_calculate_g_l_flag    IN VARCHAR2
4036  ,p_actual_flag           IN OUT VARCHAR2
4037  ,p_balance_type_code     OUT VARCHAR2
4038  ,p_gain_or_loss_ref      OUT VARCHAR2
4039  
4040 --Cost Management Default Account
4041  , p_source_4            IN NUMBER
4042 --Receiving Accounting Line Type
4043  , p_source_5            IN VARCHAR2
4044 --Applied to Application ID
4045  , p_source_6            IN NUMBER
4046 --Applied to Distribution Link Type
4047  , p_source_7            IN VARCHAR2
4048 --Applied to Entity Code
4049  , p_source_8            IN VARCHAR2
4050 --PO_DISTRIBUTION_ID
4051  , p_source_9            IN NUMBER
4052 --Applied To Purchase Document Identifier
4053  , p_source_10            IN NUMBER
4054 --DISTRIBUTION_IDENTIFIER
4055  , p_source_11            IN NUMBER
4056 --Distribution Type
4057  , p_source_12            IN VARCHAR2
4058  , p_source_12_meaning    IN VARCHAR2
4059 --PO Budget Account
4060  , p_source_13            IN NUMBER
4061 --Encumbrance Reversal Amount Entered
4062  , p_source_14            IN NUMBER
4063 --Entered Currency Code
4064  , p_source_15            IN VARCHAR2
4065 --Transaction Encumbrance Reversal Amount
4066  , p_source_16            IN NUMBER
4067 --Costing Period End Accrual Encumbrance Upgrade Option
4068  , p_source_17            IN VARCHAR2
4069 --Entered Amount
4070  , p_source_18            IN NUMBER
4071 --Currency Conversion Date
4072  , p_source_19            IN DATE
4073 --Currency Conversion Rate
4074  , p_source_20            IN NUMBER
4075 --Currency Conversion Type
4076  , p_source_21            IN VARCHAR2
4077 --Accounted Amount
4078  , p_source_22            IN NUMBER
4079 --Purchasing Encumbrance Type Identifier
4080  , p_source_23            IN NUMBER
4081 )
4082 IS
4083 
4084 l_component_type              VARCHAR2(80);
4085 l_component_code              VARCHAR2(30);
4086 l_component_type_code         VARCHAR2(1);
4087 l_component_appl_id           INTEGER;
4088 l_amb_context_code            VARCHAR2(30);
4089 l_entity_code                 VARCHAR2(30);
4090 l_event_class_code            VARCHAR2(30);
4091 l_ae_header_id                NUMBER;
4092 l_event_type_code             VARCHAR2(30);
4093 l_line_definition_code        VARCHAR2(30);
4094 l_line_definition_owner_code  VARCHAR2(1);
4095 --
4096 -- adr variables
4097 l_segment                     VARCHAR2(30);
4098 l_ccid                        NUMBER;
4099 l_adr_transaction_coa_id      NUMBER;
4100 l_adr_accounting_coa_id       NUMBER;
4101 l_adr_flexfield_segment_code  VARCHAR2(30);
4102 l_adr_flex_value_set_id       NUMBER;
4103 l_adr_value_type_code         VARCHAR2(30);
4104 l_adr_value_combination_id    NUMBER;
4105 l_adr_value_segment_code      VARCHAR2(30);
4106 
4107 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4108 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4109 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4110 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4111 
4112 -- 4262811 Variables ------------------------------------------------------------------------------------------
4113 l_entered_amt_idx             NUMBER;
4114 l_accted_amt_idx              NUMBER;
4115 l_acc_rev_flag                VARCHAR2(1);
4116 l_accrual_line_num            NUMBER;
4117 l_tmp_amt                     NUMBER;
4118 l_acc_rev_natural_side_code   VARCHAR2(1);
4119 
4120 l_num_entries                 NUMBER;
4121 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4122 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4123 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4124 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4125 l_recog_line_1                NUMBER;
4126 l_recog_line_2                NUMBER;
4127 
4128 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4129 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4130 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4131 
4132 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4133 
4134 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4135 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4136 
4137 ---------------------------------------------------------------------------------------------------------------
4138 
4139 
4140 --
4141 -- bulk performance
4142 --
4143 l_balance_type_code           VARCHAR2(1);
4144 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4145 l_log_module                  VARCHAR2(240);
4146 
4147 --
4148 -- Upgrade strategy
4149 --
4150 l_actual_upg_option           VARCHAR2(1);
4151 l_enc_upg_option           VARCHAR2(1);
4152 
4153 --
4154 BEGIN
4155 --
4156 IF g_log_enabled THEN
4157       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_11';
4158 END IF;
4159 --
4160 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4161 
4162       trace
4163          (p_msg      => 'BEGIN of AcctLineType_11'
4164          ,p_level    => C_LEVEL_PROCEDURE
4165          ,p_module   => l_log_module);
4166 
4167 END IF;
4168 --
4169 l_component_type             := 'AMB_JLT';
4170 l_component_code             := 'CHARGE';
4171 l_component_type_code        := 'S';
4172 l_component_appl_id          :=  707;
4173 l_amb_context_code           := 'DEFAULT';
4174 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
4175 l_event_class_code           := 'PERIOD_END_ACCRUAL';
4176 l_event_type_code            := 'PERIOD_END_ACCRUAL_ALL';
4177 l_line_definition_owner_code := 'S';
4178 l_line_definition_code       := 'PERIOD_END_ACCRUAL';
4179 --
4180 l_balance_type_code          := 'A';
4181 l_segment                     := NULL;
4182 l_ccid                        := NULL;
4183 l_adr_transaction_coa_id      := NULL;
4184 l_adr_accounting_coa_id       := NULL;
4185 l_adr_flexfield_segment_code  := NULL;
4186 l_adr_flex_value_set_id       := NULL;
4187 l_adr_value_type_code         := NULL;
4188 l_adr_value_combination_id    := NULL;
4189 l_adr_value_segment_code      := NULL;
4190 
4191 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
4192 l_bflow_class_code           := '';    -- 4219869 Business Flow
4193 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4194 l_budgetary_control_flag     := 'N';
4195 
4196 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4197 l_bflow_applied_to_amt       := NULL; -- 5132302
4198 l_entered_amt_idx            := NULL;          -- 4262811
4199 l_accted_amt_idx             := NULL;          -- 4262811
4200 l_acc_rev_flag               := NULL;          -- 4262811
4201 l_accrual_line_num           := NULL;          -- 4262811
4202 l_tmp_amt                    := NULL;          -- 4262811
4203 --
4204  
4205 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4206     l_balance_type_code <> 'B' THEN
4207 IF NVL(p_source_5,'
4208 ') =  'Charge'
4209  THEN 
4210 
4211    --
4212    XLA_AE_LINES_PKG.SetNewLine;
4213 
4214    p_balance_type_code          := l_balance_type_code;
4215    -- set the flag so later we will know whether the gain loss line needs to be created
4216    
4217    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4218      p_actual_flag :='A';
4219    END IF;
4220 
4221    --
4222    -- bulk performance
4223    --
4224    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4225                                       p_header_num   => 0); -- 4262811
4226    --
4227    -- set accounting line options
4228    --
4229    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4230            p_natural_side_code          => 'D'
4231          , p_gain_or_loss_flag          => 'N'
4232          , p_gl_transfer_mode_code      => 'S'
4233          , p_acct_entry_type_code       => 'A'
4234          , p_switch_side_flag           => 'Y'
4235          , p_merge_duplicate_code       => 'N'
4236          );
4237    --
4238    l_acc_rev_natural_side_code := 'C';  -- 4262811
4239    -- 
4240    --
4241    -- set accounting line type info
4242    --
4243    xla_ae_lines_pkg.SetAcctLineType
4244       (p_component_type             => l_component_type
4245       ,p_event_type_code            => l_event_type_code
4246       ,p_line_definition_owner_code => l_line_definition_owner_code
4247       ,p_line_definition_code       => l_line_definition_code
4248       ,p_accounting_line_code       => l_component_code
4249       ,p_accounting_line_type_code  => l_component_type_code
4250       ,p_accounting_line_appl_id    => l_component_appl_id
4251       ,p_amb_context_code           => l_amb_context_code
4252       ,p_entity_code                => l_entity_code
4253       ,p_event_class_code           => l_event_class_code);
4254    --
4255    -- set accounting class
4256    --
4257    xla_ae_lines_pkg.SetAcctClass(
4258            p_accounting_class_code  => 'CHARGE'
4259          , p_ae_header_id           => l_ae_header_id
4260          );
4261 
4262    --
4263    -- set rounding class
4264    --
4265    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4266                       'CHARGE';
4267 
4268    --
4269    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4270    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4271    --
4272    -- bulk performance
4273    --
4274    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4275 
4276    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4277       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4278 
4279    -- 4955764
4280    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4281       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4282 
4283    -- 4458381 Public Sector Enh
4284    
4285    --
4286    -- set accounting attributes for the line type
4287    --
4288    l_entered_amt_idx := 17;
4289    l_accted_amt_idx  := 22;
4290    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4291    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
4292    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
4293    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
4294    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
4295    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
4296    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
4297    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
4298    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_9);
4299    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
4300    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
4301    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
4302    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
4303    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
4304    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
4305    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
4306    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
4307    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
4308    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
4309    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
4310    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
4311    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
4312    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
4313    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
4314    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
4315    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
4316    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
4317    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
4318    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
4319    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
4320    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
4321    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
4322    l_rec_acct_attrs.array_char_value(16)  := p_source_17;
4323    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
4324    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
4325    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
4326    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
4327    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
4328    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
4329    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
4330    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
4331    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
4332    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
4333    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
4334    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
4335    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
4336    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
4337    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
4338    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
4339 
4340    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4341    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4342 
4343    ---------------------------------------------------------------------------------------------------------------
4344    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4345    ---------------------------------------------------------------------------------------------------------------
4346    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4347 
4348    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4349    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4350 
4351    IF xla_accounting_cache_pkg.GetValueChar
4352          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4353          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4354    AND l_bflow_method_code = 'PRIOR_ENTRY'
4355 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4356    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4357          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4358        )
4359    THEN
4360          xla_ae_lines_pkg.BflowUpgEntry
4361            (p_business_method_code    => l_bflow_method_code
4362            ,p_business_class_code     => l_bflow_class_code
4363            ,p_balance_type            => l_balance_type_code);
4364    ELSE
4365       NULL;
4366 -- No business flow processing for business flow method of NONE.
4367    END IF;
4368 
4369    --
4370    -- call analytical criteria
4371    --
4372    
4373    --
4374    -- call description
4375    --
4376    -- No description or it is inherited.
4377    --
4378    -- call ADRs
4379    -- Bug 4922099
4380    --
4381    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4382         (NVL(l_actual_upg_option, 'N') = 'O') OR
4383         (NVL(l_enc_upg_option, 'N') = 'O')
4384       )
4385    THEN
4386    NULL;
4387    --
4388    --
4389    
4390   l_ccid := AcctDerRule_4(
4391            p_application_id           => p_application_id
4392          , p_ae_header_id             => l_ae_header_id 
4393 , p_source_4 => p_source_4
4394          , x_transaction_coa_id       => l_adr_transaction_coa_id
4395          , x_accounting_coa_id        => l_adr_accounting_coa_id
4396          , x_value_type_code          => l_adr_value_type_code
4397          , p_side                     => 'NA'
4398    );
4399 
4400    xla_ae_lines_pkg.set_ccid(
4401     p_code_combination_id          => l_ccid
4402   , p_value_type_code              => l_adr_value_type_code
4403   , p_transaction_coa_id           => l_adr_transaction_coa_id
4404   , p_accounting_coa_id            => l_adr_accounting_coa_id
4405   , p_adr_code                     => 'CST_DEFAULT'
4406   , p_adr_type_code                => 'S'
4407   , p_component_type               => l_component_type
4408   , p_component_code               => l_component_code
4409   , p_component_type_code          => l_component_type_code
4410   , p_component_appl_id            => l_component_appl_id
4411   , p_amb_context_code             => l_amb_context_code
4412   , p_side                         => 'NA'
4413   );
4414 
4415 
4416    --
4417    --
4418    END IF;
4419    --
4420    -- Bug 4922099
4421    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4422           (NVL(l_enc_upg_option, 'N') = 'O')
4423         ) AND
4424         (l_bflow_method_code = 'PRIOR_ENTRY')
4425       )
4426    THEN
4427       IF
4428       --
4429       1 = 2
4430       --
4431       THEN
4432       xla_accounting_err_pkg.build_message
4433                                     (p_appli_s_name            => 'XLA'
4434                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4435                                     ,p_token_1                 => 'LINE_NUMBER'
4436                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4437                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4438                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4439                                                                              l_component_type
4440                                                                             ,l_component_code
4441                                                                             ,l_component_type_code
4442                                                                             ,l_component_appl_id
4443                                                                             ,l_amb_context_code
4444                                                                             ,l_entity_code
4445                                                                             ,l_event_class_code
4446                                                                            )
4447                                     ,p_token_3                 => 'OWNER'
4448                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4449                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4450                                                                           ,p_lookup_code    => l_component_type_code
4451                                                                          )
4452                                     ,p_token_4                 => 'PRODUCT_NAME'
4453                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4454                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4455                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4456                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4457                                     ,p_ae_header_id            =>  NULL
4458                                        );
4459 
4460         IF (C_LEVEL_ERROR>= g_log_level) THEN
4461                  trace
4462                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4463                       ,p_level    => C_LEVEL_ERROR
4464                       ,p_module   => l_log_module);
4465         END IF;
4466       END IF;
4467    END IF;
4468    --
4469    --
4470    ------------------------------------------------------------------------------------------------
4471    -- 4219869 Business Flow
4472    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4473    -- Prior Entry.  Currently, the following code is always generated.
4474    ------------------------------------------------------------------------------------------------
4475    XLA_AE_LINES_PKG.ValidateCurrentLine;
4476 
4477    ------------------------------------------------------------------------------------
4478    -- 4219869 Business Flow
4479    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4480    ------------------------------------------------------------------------------------
4481    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4482 
4483    ----------------------------------------------------------------------------------
4484    -- 4219869 Business Flow
4485    -- Update journal entry status -- Need to generate this within IF <condition>
4486    ----------------------------------------------------------------------------------
4487    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4488          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4489          ,p_balance_type_code => l_balance_type_code
4490          );
4491 
4492    -------------------------------------------------------------------------------------------
4493    -- 4262811 - Generate the Accrual Reversal lines
4494    -------------------------------------------------------------------------------------------
4495    BEGIN
4496       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4497                               (g_array_event(p_event_id).array_value_num('header_index'));
4498       IF l_acc_rev_flag IS NULL THEN
4499          l_acc_rev_flag := 'N';
4500       END IF;
4501    EXCEPTION
4502       WHEN OTHERS THEN
4503          l_acc_rev_flag := 'N';
4504    END;
4505    --
4506    IF (l_acc_rev_flag = 'Y') THEN
4507 
4508        -- 4645092  ------------------------------------------------------------------------------
4509        -- To allow MPA report to determine if it should generate report process
4510        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4511        ------------------------------------------------------------------------------------------
4512 
4513        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4514        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4515    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
4516    -- call ADRs
4517    -- Bug 4922099
4518    --
4519    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4520         (NVL(l_actual_upg_option, 'N') = 'O') OR
4521         (NVL(l_enc_upg_option, 'N') = 'O')
4522       )
4523    THEN
4524    NULL;
4525    --
4526    --
4527    
4528   l_ccid := AcctDerRule_4(
4529            p_application_id           => p_application_id
4530          , p_ae_header_id             => l_ae_header_id 
4531 , p_source_4 => p_source_4
4532          , x_transaction_coa_id       => l_adr_transaction_coa_id
4533          , x_accounting_coa_id        => l_adr_accounting_coa_id
4534          , x_value_type_code          => l_adr_value_type_code
4535          , p_side                     => 'NA'
4536    );
4537 
4538    xla_ae_lines_pkg.set_ccid(
4539     p_code_combination_id          => l_ccid
4540   , p_value_type_code              => l_adr_value_type_code
4541   , p_transaction_coa_id           => l_adr_transaction_coa_id
4542   , p_accounting_coa_id            => l_adr_accounting_coa_id
4543   , p_adr_code                     => 'CST_DEFAULT'
4544   , p_adr_type_code                => 'S'
4545   , p_component_type               => l_component_type
4546   , p_component_code               => l_component_code
4547   , p_component_type_code          => l_component_type_code
4548   , p_component_appl_id            => l_component_appl_id
4549   , p_amb_context_code             => l_amb_context_code
4550   , p_side                         => 'NA'
4551   );
4552 
4553 
4554    --
4555    --
4556    END IF;
4557 
4558        --
4559        -- Update the line information that should be overwritten
4560        --
4561        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4562                                          p_header_num   => 1);
4563        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4564 
4565        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4566 
4567        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4568           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4569        END IF;
4570 
4571       --
4572       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4573       --
4574       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4575           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4576       ELSE
4577           ---------------------------------------------------------------------------------------------------
4578           -- 4262811a Switch Sign
4579           ---------------------------------------------------------------------------------------------------
4580           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4581           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4582                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4583           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4584                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4585           -- 5132302
4586           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4587                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4588 
4589       END IF;
4590 
4591       -- 4955764
4592       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4593       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4594 
4595 
4596       XLA_AE_LINES_PKG.ValidateCurrentLine;
4597       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4598 
4599       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4600                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4601                ,p_balance_type_code => l_balance_type_code);
4602 
4603    END IF;
4604 
4605    -----------------------------------------------------------------------------------------
4606    -- 4262811 Multiperiod Accounting
4607    -----------------------------------------------------------------------------------------
4608      -- No MPA option is assigned.
4609 
4610 
4611 END IF;
4612 END IF;
4613 --
4614 
4615 --
4616 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4617    trace
4618       (p_msg      => 'END of AcctLineType_11'
4619       ,p_level    => C_LEVEL_PROCEDURE
4620       ,p_module   => l_log_module);
4621 END IF;
4622 --
4623 EXCEPTION
4624   WHEN xla_exceptions_pkg.application_exception THEN
4625       RAISE;
4626   WHEN OTHERS THEN
4627        xla_exceptions_pkg.raise_message
4628            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_11');
4629 END AcctLineType_11;
4630 --
4631 
4632 ---------------------------------------
4633 --
4634 -- PRIVATE FUNCTION
4635 --         AcctLineType_12
4636 --
4637 ---------------------------------------
4638 PROCEDURE AcctLineType_12 (
4639   p_application_id        IN NUMBER
4640  ,p_event_id              IN NUMBER
4641  ,p_calculate_acctd_flag  IN VARCHAR2
4642  ,p_calculate_g_l_flag    IN VARCHAR2
4643  ,p_actual_flag           IN OUT VARCHAR2
4644  ,p_balance_type_code     OUT VARCHAR2
4645  ,p_gain_or_loss_ref      OUT VARCHAR2
4646  
4647 --Cost Management Default Account
4648  , p_source_4            IN NUMBER
4649 --Receiving Accounting Line Type
4650  , p_source_5            IN VARCHAR2
4651 --Applied to Application ID
4652  , p_source_6            IN NUMBER
4653 --Applied to Distribution Link Type
4654  , p_source_7            IN VARCHAR2
4655 --Applied to Entity Code
4656  , p_source_8            IN VARCHAR2
4657 --PO_DISTRIBUTION_ID
4658  , p_source_9            IN NUMBER
4659 --Applied To Purchase Document Identifier
4660  , p_source_10            IN NUMBER
4661 --DISTRIBUTION_IDENTIFIER
4662  , p_source_11            IN NUMBER
4663 --Distribution Type
4664  , p_source_12            IN VARCHAR2
4665  , p_source_12_meaning    IN VARCHAR2
4666 --PO Budget Account
4667  , p_source_13            IN NUMBER
4668 --Encumbrance Reversal Amount Entered
4669  , p_source_14            IN NUMBER
4670 --Entered Currency Code
4671  , p_source_15            IN VARCHAR2
4672 --Transaction Encumbrance Reversal Amount
4673  , p_source_16            IN NUMBER
4674 --Entered Amount
4675  , p_source_18            IN NUMBER
4676 --Currency Conversion Date
4677  , p_source_19            IN DATE
4678 --Currency Conversion Rate
4679  , p_source_20            IN NUMBER
4680 --Currency Conversion Type
4681  , p_source_21            IN VARCHAR2
4682 --Accounted Amount
4683  , p_source_22            IN NUMBER
4684 --Purchasing Encumbrance Type Identifier
4685  , p_source_23            IN NUMBER
4686 --Costing Encumbrance Upgrade Option
4687  , p_source_27            IN VARCHAR2
4688 )
4689 IS
4690 
4691 l_component_type              VARCHAR2(80);
4692 l_component_code              VARCHAR2(30);
4693 l_component_type_code         VARCHAR2(1);
4694 l_component_appl_id           INTEGER;
4695 l_amb_context_code            VARCHAR2(30);
4696 l_entity_code                 VARCHAR2(30);
4697 l_event_class_code            VARCHAR2(30);
4698 l_ae_header_id                NUMBER;
4699 l_event_type_code             VARCHAR2(30);
4700 l_line_definition_code        VARCHAR2(30);
4701 l_line_definition_owner_code  VARCHAR2(1);
4702 --
4703 -- adr variables
4704 l_segment                     VARCHAR2(30);
4705 l_ccid                        NUMBER;
4706 l_adr_transaction_coa_id      NUMBER;
4707 l_adr_accounting_coa_id       NUMBER;
4708 l_adr_flexfield_segment_code  VARCHAR2(30);
4709 l_adr_flex_value_set_id       NUMBER;
4710 l_adr_value_type_code         VARCHAR2(30);
4711 l_adr_value_combination_id    NUMBER;
4712 l_adr_value_segment_code      VARCHAR2(30);
4713 
4714 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4715 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4716 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4717 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4718 
4719 -- 4262811 Variables ------------------------------------------------------------------------------------------
4720 l_entered_amt_idx             NUMBER;
4721 l_accted_amt_idx              NUMBER;
4722 l_acc_rev_flag                VARCHAR2(1);
4723 l_accrual_line_num            NUMBER;
4724 l_tmp_amt                     NUMBER;
4725 l_acc_rev_natural_side_code   VARCHAR2(1);
4726 
4727 l_num_entries                 NUMBER;
4728 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4729 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4730 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4731 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4732 l_recog_line_1                NUMBER;
4733 l_recog_line_2                NUMBER;
4734 
4735 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4736 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4737 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4738 
4739 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4740 
4741 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4742 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4743 
4744 ---------------------------------------------------------------------------------------------------------------
4745 
4746 
4747 --
4748 -- bulk performance
4749 --
4750 l_balance_type_code           VARCHAR2(1);
4751 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4752 l_log_module                  VARCHAR2(240);
4753 
4754 --
4755 -- Upgrade strategy
4756 --
4757 l_actual_upg_option           VARCHAR2(1);
4758 l_enc_upg_option           VARCHAR2(1);
4759 
4760 --
4761 BEGIN
4762 --
4763 IF g_log_enabled THEN
4764       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_12';
4765 END IF;
4766 --
4767 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4768 
4769       trace
4770          (p_msg      => 'BEGIN of AcctLineType_12'
4771          ,p_level    => C_LEVEL_PROCEDURE
4772          ,p_module   => l_log_module);
4773 
4774 END IF;
4775 --
4776 l_component_type             := 'AMB_JLT';
4777 l_component_code             := 'CHARGE';
4778 l_component_type_code        := 'S';
4779 l_component_appl_id          :=  707;
4780 l_amb_context_code           := 'DEFAULT';
4781 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
4782 l_event_class_code           := 'DELIVER_EXPENSE';
4783 l_event_type_code            := 'DELIVER_EXPENSE_ALL';
4784 l_line_definition_owner_code := 'S';
4785 l_line_definition_code       := 'DELIVER_EXPENSE';
4786 --
4787 l_balance_type_code          := 'A';
4788 l_segment                     := NULL;
4789 l_ccid                        := NULL;
4790 l_adr_transaction_coa_id      := NULL;
4791 l_adr_accounting_coa_id       := NULL;
4792 l_adr_flexfield_segment_code  := NULL;
4793 l_adr_flex_value_set_id       := NULL;
4794 l_adr_value_type_code         := NULL;
4795 l_adr_value_combination_id    := NULL;
4796 l_adr_value_segment_code      := NULL;
4797 
4798 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
4799 l_bflow_class_code           := '';    -- 4219869 Business Flow
4800 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4801 l_budgetary_control_flag     := 'N';
4802 
4803 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4804 l_bflow_applied_to_amt       := NULL; -- 5132302
4805 l_entered_amt_idx            := NULL;          -- 4262811
4806 l_accted_amt_idx             := NULL;          -- 4262811
4807 l_acc_rev_flag               := NULL;          -- 4262811
4808 l_accrual_line_num           := NULL;          -- 4262811
4809 l_tmp_amt                    := NULL;          -- 4262811
4810 --
4811  
4812 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4813     l_balance_type_code <> 'B' THEN
4814 IF NVL(p_source_5,'
4815 ') =  'Charge'
4816  THEN 
4817 
4818    --
4819    XLA_AE_LINES_PKG.SetNewLine;
4820 
4821    p_balance_type_code          := l_balance_type_code;
4822    -- set the flag so later we will know whether the gain loss line needs to be created
4823    
4824    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4825      p_actual_flag :='A';
4826    END IF;
4827 
4828    --
4829    -- bulk performance
4830    --
4831    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4832                                       p_header_num   => 0); -- 4262811
4833    --
4834    -- set accounting line options
4835    --
4836    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4837            p_natural_side_code          => 'D'
4838          , p_gain_or_loss_flag          => 'N'
4839          , p_gl_transfer_mode_code      => 'S'
4840          , p_acct_entry_type_code       => 'A'
4841          , p_switch_side_flag           => 'Y'
4842          , p_merge_duplicate_code       => 'N'
4843          );
4844    --
4845    l_acc_rev_natural_side_code := 'C';  -- 4262811
4846    -- 
4847    --
4848    -- set accounting line type info
4849    --
4850    xla_ae_lines_pkg.SetAcctLineType
4851       (p_component_type             => l_component_type
4852       ,p_event_type_code            => l_event_type_code
4853       ,p_line_definition_owner_code => l_line_definition_owner_code
4854       ,p_line_definition_code       => l_line_definition_code
4855       ,p_accounting_line_code       => l_component_code
4856       ,p_accounting_line_type_code  => l_component_type_code
4857       ,p_accounting_line_appl_id    => l_component_appl_id
4858       ,p_amb_context_code           => l_amb_context_code
4859       ,p_entity_code                => l_entity_code
4860       ,p_event_class_code           => l_event_class_code);
4861    --
4862    -- set accounting class
4863    --
4864    xla_ae_lines_pkg.SetAcctClass(
4865            p_accounting_class_code  => 'CHARGE'
4866          , p_ae_header_id           => l_ae_header_id
4867          );
4868 
4869    --
4870    -- set rounding class
4871    --
4872    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4873                       'CHARGE';
4874 
4875    --
4876    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4877    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4878    --
4879    -- bulk performance
4880    --
4881    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4882 
4883    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4884       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4885 
4886    -- 4955764
4887    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4888       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4889 
4890    -- 4458381 Public Sector Enh
4891    
4892    --
4893    -- set accounting attributes for the line type
4894    --
4895    l_entered_amt_idx := 17;
4896    l_accted_amt_idx  := 22;
4897    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4898    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
4899    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
4900    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
4901    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
4902    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
4903    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
4904    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
4905    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_9);
4906    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
4907    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
4908    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
4909    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
4910    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
4911    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
4912    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
4913    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
4914    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
4915    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
4916    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
4917    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
4918    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
4919    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
4920    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
4921    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
4922    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
4923    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
4924    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
4925    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
4926    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
4927    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
4928    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
4929    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
4930    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
4931    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
4932    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
4933    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
4934    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
4935    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
4936    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
4937    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
4938    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
4939    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
4940    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
4941    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
4942    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
4943    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
4944    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
4945    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
4946 
4947    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4948    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4949 
4950    ---------------------------------------------------------------------------------------------------------------
4951    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4952    ---------------------------------------------------------------------------------------------------------------
4953    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4954 
4955    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4956    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4957 
4958    IF xla_accounting_cache_pkg.GetValueChar
4959          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4960          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4961    AND l_bflow_method_code = 'PRIOR_ENTRY'
4962 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4963    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4964          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4965        )
4966    THEN
4967          xla_ae_lines_pkg.BflowUpgEntry
4968            (p_business_method_code    => l_bflow_method_code
4969            ,p_business_class_code     => l_bflow_class_code
4970            ,p_balance_type            => l_balance_type_code);
4971    ELSE
4972       NULL;
4973 -- No business flow processing for business flow method of NONE.
4974    END IF;
4975 
4976    --
4977    -- call analytical criteria
4978    --
4979    
4980    --
4981    -- call description
4982    --
4983    -- No description or it is inherited.
4984    --
4985    -- call ADRs
4986    -- Bug 4922099
4987    --
4988    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4989         (NVL(l_actual_upg_option, 'N') = 'O') OR
4990         (NVL(l_enc_upg_option, 'N') = 'O')
4991       )
4992    THEN
4993    NULL;
4994    --
4995    --
4996    
4997   l_ccid := AcctDerRule_4(
4998            p_application_id           => p_application_id
4999          , p_ae_header_id             => l_ae_header_id 
5000 , p_source_4 => p_source_4
5001          , x_transaction_coa_id       => l_adr_transaction_coa_id
5002          , x_accounting_coa_id        => l_adr_accounting_coa_id
5003          , x_value_type_code          => l_adr_value_type_code
5004          , p_side                     => 'NA'
5005    );
5006 
5007    xla_ae_lines_pkg.set_ccid(
5008     p_code_combination_id          => l_ccid
5009   , p_value_type_code              => l_adr_value_type_code
5010   , p_transaction_coa_id           => l_adr_transaction_coa_id
5011   , p_accounting_coa_id            => l_adr_accounting_coa_id
5012   , p_adr_code                     => 'CST_DEFAULT'
5013   , p_adr_type_code                => 'S'
5014   , p_component_type               => l_component_type
5015   , p_component_code               => l_component_code
5016   , p_component_type_code          => l_component_type_code
5017   , p_component_appl_id            => l_component_appl_id
5018   , p_amb_context_code             => l_amb_context_code
5019   , p_side                         => 'NA'
5020   );
5021 
5022 
5023    --
5024    --
5025    END IF;
5026    --
5027    -- Bug 4922099
5028    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5029           (NVL(l_enc_upg_option, 'N') = 'O')
5030         ) AND
5031         (l_bflow_method_code = 'PRIOR_ENTRY')
5032       )
5033    THEN
5034       IF
5035       --
5036       1 = 2
5037       --
5038       THEN
5039       xla_accounting_err_pkg.build_message
5040                                     (p_appli_s_name            => 'XLA'
5041                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5042                                     ,p_token_1                 => 'LINE_NUMBER'
5043                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5044                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5045                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5046                                                                              l_component_type
5047                                                                             ,l_component_code
5048                                                                             ,l_component_type_code
5049                                                                             ,l_component_appl_id
5050                                                                             ,l_amb_context_code
5051                                                                             ,l_entity_code
5052                                                                             ,l_event_class_code
5053                                                                            )
5054                                     ,p_token_3                 => 'OWNER'
5055                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5056                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5057                                                                           ,p_lookup_code    => l_component_type_code
5058                                                                          )
5059                                     ,p_token_4                 => 'PRODUCT_NAME'
5060                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5061                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5062                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5063                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5064                                     ,p_ae_header_id            =>  NULL
5065                                        );
5066 
5067         IF (C_LEVEL_ERROR>= g_log_level) THEN
5068                  trace
5069                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5070                       ,p_level    => C_LEVEL_ERROR
5071                       ,p_module   => l_log_module);
5072         END IF;
5073       END IF;
5074    END IF;
5075    --
5076    --
5077    ------------------------------------------------------------------------------------------------
5078    -- 4219869 Business Flow
5079    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5080    -- Prior Entry.  Currently, the following code is always generated.
5081    ------------------------------------------------------------------------------------------------
5082    XLA_AE_LINES_PKG.ValidateCurrentLine;
5083 
5084    ------------------------------------------------------------------------------------
5085    -- 4219869 Business Flow
5086    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5087    ------------------------------------------------------------------------------------
5088    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5089 
5090    ----------------------------------------------------------------------------------
5091    -- 4219869 Business Flow
5092    -- Update journal entry status -- Need to generate this within IF <condition>
5093    ----------------------------------------------------------------------------------
5094    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5095          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5096          ,p_balance_type_code => l_balance_type_code
5097          );
5098 
5099    -------------------------------------------------------------------------------------------
5100    -- 4262811 - Generate the Accrual Reversal lines
5101    -------------------------------------------------------------------------------------------
5102    BEGIN
5103       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5104                               (g_array_event(p_event_id).array_value_num('header_index'));
5105       IF l_acc_rev_flag IS NULL THEN
5106          l_acc_rev_flag := 'N';
5107       END IF;
5108    EXCEPTION
5109       WHEN OTHERS THEN
5110          l_acc_rev_flag := 'N';
5111    END;
5112    --
5113    IF (l_acc_rev_flag = 'Y') THEN
5114 
5115        -- 4645092  ------------------------------------------------------------------------------
5116        -- To allow MPA report to determine if it should generate report process
5117        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5118        ------------------------------------------------------------------------------------------
5119 
5120        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5121        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5122    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
5123    -- call ADRs
5124    -- Bug 4922099
5125    --
5126    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5127         (NVL(l_actual_upg_option, 'N') = 'O') OR
5128         (NVL(l_enc_upg_option, 'N') = 'O')
5129       )
5130    THEN
5131    NULL;
5132    --
5133    --
5134    
5135   l_ccid := AcctDerRule_4(
5136            p_application_id           => p_application_id
5137          , p_ae_header_id             => l_ae_header_id 
5138 , p_source_4 => p_source_4
5139          , x_transaction_coa_id       => l_adr_transaction_coa_id
5140          , x_accounting_coa_id        => l_adr_accounting_coa_id
5141          , x_value_type_code          => l_adr_value_type_code
5142          , p_side                     => 'NA'
5143    );
5144 
5145    xla_ae_lines_pkg.set_ccid(
5146     p_code_combination_id          => l_ccid
5147   , p_value_type_code              => l_adr_value_type_code
5148   , p_transaction_coa_id           => l_adr_transaction_coa_id
5149   , p_accounting_coa_id            => l_adr_accounting_coa_id
5150   , p_adr_code                     => 'CST_DEFAULT'
5151   , p_adr_type_code                => 'S'
5152   , p_component_type               => l_component_type
5153   , p_component_code               => l_component_code
5154   , p_component_type_code          => l_component_type_code
5155   , p_component_appl_id            => l_component_appl_id
5156   , p_amb_context_code             => l_amb_context_code
5157   , p_side                         => 'NA'
5158   );
5159 
5160 
5161    --
5162    --
5163    END IF;
5164 
5165        --
5166        -- Update the line information that should be overwritten
5167        --
5168        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5169                                          p_header_num   => 1);
5170        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5171 
5172        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5173 
5174        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5175           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5176        END IF;
5177 
5178       --
5179       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5180       --
5181       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5182           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5183       ELSE
5184           ---------------------------------------------------------------------------------------------------
5185           -- 4262811a Switch Sign
5186           ---------------------------------------------------------------------------------------------------
5187           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5188           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5189                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5190           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5191                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5192           -- 5132302
5193           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5194                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5195 
5196       END IF;
5197 
5198       -- 4955764
5199       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5200       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5201 
5202 
5203       XLA_AE_LINES_PKG.ValidateCurrentLine;
5204       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5205 
5206       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5207                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5208                ,p_balance_type_code => l_balance_type_code);
5209 
5210    END IF;
5211 
5212    -----------------------------------------------------------------------------------------
5213    -- 4262811 Multiperiod Accounting
5214    -----------------------------------------------------------------------------------------
5215      -- No MPA option is assigned.
5216 
5217 
5218 END IF;
5219 END IF;
5220 --
5221 
5222 --
5223 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5224    trace
5225       (p_msg      => 'END of AcctLineType_12'
5226       ,p_level    => C_LEVEL_PROCEDURE
5227       ,p_module   => l_log_module);
5228 END IF;
5229 --
5230 EXCEPTION
5231   WHEN xla_exceptions_pkg.application_exception THEN
5232       RAISE;
5233   WHEN OTHERS THEN
5234        xla_exceptions_pkg.raise_message
5235            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_12');
5236 END AcctLineType_12;
5237 --
5238 
5239 ---------------------------------------
5240 --
5241 -- PRIVATE FUNCTION
5242 --         AcctLineType_13
5243 --
5244 ---------------------------------------
5245 PROCEDURE AcctLineType_13 (
5246   p_application_id        IN NUMBER
5247  ,p_event_id              IN NUMBER
5248  ,p_calculate_acctd_flag  IN VARCHAR2
5249  ,p_calculate_g_l_flag    IN VARCHAR2
5250  ,p_actual_flag           IN OUT VARCHAR2
5251  ,p_balance_type_code     OUT VARCHAR2
5252  ,p_gain_or_loss_ref      OUT VARCHAR2
5253  
5254 --Cost Management Default Account
5255  , p_source_4            IN NUMBER
5256 --Receiving Accounting Line Type
5257  , p_source_5            IN VARCHAR2
5258 --DISTRIBUTION_IDENTIFIER
5259  , p_source_11            IN NUMBER
5260 --Distribution Type
5261  , p_source_12            IN VARCHAR2
5262  , p_source_12_meaning    IN VARCHAR2
5263 --Entered Currency Code
5264  , p_source_15            IN VARCHAR2
5265 --Entered Amount
5266  , p_source_18            IN NUMBER
5267 --Currency Conversion Date
5268  , p_source_19            IN DATE
5269 --Currency Conversion Rate
5270  , p_source_20            IN NUMBER
5271 --Currency Conversion Type
5272  , p_source_21            IN VARCHAR2
5273 --Accounted Amount
5274  , p_source_22            IN NUMBER
5275 )
5276 IS
5277 
5278 l_component_type              VARCHAR2(80);
5279 l_component_code              VARCHAR2(30);
5280 l_component_type_code         VARCHAR2(1);
5281 l_component_appl_id           INTEGER;
5282 l_amb_context_code            VARCHAR2(30);
5283 l_entity_code                 VARCHAR2(30);
5284 l_event_class_code            VARCHAR2(30);
5285 l_ae_header_id                NUMBER;
5286 l_event_type_code             VARCHAR2(30);
5287 l_line_definition_code        VARCHAR2(30);
5288 l_line_definition_owner_code  VARCHAR2(1);
5289 --
5290 -- adr variables
5291 l_segment                     VARCHAR2(30);
5292 l_ccid                        NUMBER;
5293 l_adr_transaction_coa_id      NUMBER;
5294 l_adr_accounting_coa_id       NUMBER;
5295 l_adr_flexfield_segment_code  VARCHAR2(30);
5296 l_adr_flex_value_set_id       NUMBER;
5297 l_adr_value_type_code         VARCHAR2(30);
5298 l_adr_value_combination_id    NUMBER;
5299 l_adr_value_segment_code      VARCHAR2(30);
5300 
5301 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5302 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5303 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5304 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5305 
5306 -- 4262811 Variables ------------------------------------------------------------------------------------------
5307 l_entered_amt_idx             NUMBER;
5308 l_accted_amt_idx              NUMBER;
5309 l_acc_rev_flag                VARCHAR2(1);
5310 l_accrual_line_num            NUMBER;
5311 l_tmp_amt                     NUMBER;
5312 l_acc_rev_natural_side_code   VARCHAR2(1);
5313 
5314 l_num_entries                 NUMBER;
5315 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5316 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5317 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5318 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5319 l_recog_line_1                NUMBER;
5320 l_recog_line_2                NUMBER;
5321 
5322 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5323 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5324 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5325 
5326 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5327 
5328 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5329 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5330 
5331 ---------------------------------------------------------------------------------------------------------------
5332 
5333 
5334 --
5335 -- bulk performance
5336 --
5337 l_balance_type_code           VARCHAR2(1);
5338 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5339 l_log_module                  VARCHAR2(240);
5340 
5341 --
5342 -- Upgrade strategy
5343 --
5344 l_actual_upg_option           VARCHAR2(1);
5345 l_enc_upg_option           VARCHAR2(1);
5346 
5347 --
5348 BEGIN
5349 --
5350 IF g_log_enabled THEN
5351       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_13';
5352 END IF;
5353 --
5354 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5355 
5356       trace
5357          (p_msg      => 'BEGIN of AcctLineType_13'
5358          ,p_level    => C_LEVEL_PROCEDURE
5359          ,p_module   => l_log_module);
5360 
5361 END IF;
5362 --
5363 l_component_type             := 'AMB_JLT';
5364 l_component_code             := 'CLEARING';
5365 l_component_type_code        := 'S';
5366 l_component_appl_id          :=  707;
5367 l_amb_context_code           := 'DEFAULT';
5368 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
5369 l_event_class_code           := 'RCPT_REC_INSP';
5370 l_event_type_code            := 'RCPT_REC_INSP_ALL';
5371 l_line_definition_owner_code := 'S';
5372 l_line_definition_code       := 'RCPT_REC_INSP';
5373 --
5374 l_balance_type_code          := 'A';
5375 l_segment                     := NULL;
5376 l_ccid                        := NULL;
5377 l_adr_transaction_coa_id      := NULL;
5378 l_adr_accounting_coa_id       := NULL;
5379 l_adr_flexfield_segment_code  := NULL;
5380 l_adr_flex_value_set_id       := NULL;
5381 l_adr_value_type_code         := NULL;
5382 l_adr_value_combination_id    := NULL;
5383 l_adr_value_segment_code      := NULL;
5384 
5385 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5386 l_bflow_class_code           := '';    -- 4219869 Business Flow
5387 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5388 l_budgetary_control_flag     := 'N';
5389 
5390 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5391 l_bflow_applied_to_amt       := NULL; -- 5132302
5392 l_entered_amt_idx            := NULL;          -- 4262811
5393 l_accted_amt_idx             := NULL;          -- 4262811
5394 l_acc_rev_flag               := NULL;          -- 4262811
5395 l_accrual_line_num           := NULL;          -- 4262811
5396 l_tmp_amt                    := NULL;          -- 4262811
5397 --
5398  
5399 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5400     l_balance_type_code <> 'B' THEN
5401 IF NVL(p_source_5,'
5402 ') =  'Clearing'
5403  THEN 
5404 
5405    --
5406    XLA_AE_LINES_PKG.SetNewLine;
5407 
5408    p_balance_type_code          := l_balance_type_code;
5409    -- set the flag so later we will know whether the gain loss line needs to be created
5410    
5411    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5412      p_actual_flag :='A';
5413    END IF;
5414 
5415    --
5416    -- bulk performance
5417    --
5418    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5419                                       p_header_num   => 0); -- 4262811
5420    --
5421    -- set accounting line options
5422    --
5423    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5424            p_natural_side_code          => 'D'
5425          , p_gain_or_loss_flag          => 'N'
5426          , p_gl_transfer_mode_code      => 'S'
5427          , p_acct_entry_type_code       => 'A'
5428          , p_switch_side_flag           => 'Y'
5429          , p_merge_duplicate_code       => 'N'
5430          );
5431    --
5432    l_acc_rev_natural_side_code := 'C';  -- 4262811
5433    -- 
5434    --
5435    -- set accounting line type info
5436    --
5437    xla_ae_lines_pkg.SetAcctLineType
5438       (p_component_type             => l_component_type
5439       ,p_event_type_code            => l_event_type_code
5440       ,p_line_definition_owner_code => l_line_definition_owner_code
5441       ,p_line_definition_code       => l_line_definition_code
5442       ,p_accounting_line_code       => l_component_code
5443       ,p_accounting_line_type_code  => l_component_type_code
5444       ,p_accounting_line_appl_id    => l_component_appl_id
5445       ,p_amb_context_code           => l_amb_context_code
5446       ,p_entity_code                => l_entity_code
5447       ,p_event_class_code           => l_event_class_code);
5448    --
5449    -- set accounting class
5450    --
5451    xla_ae_lines_pkg.SetAcctClass(
5452            p_accounting_class_code  => 'CLEARING'
5453          , p_ae_header_id           => l_ae_header_id
5454          );
5455 
5456    --
5457    -- set rounding class
5458    --
5459    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5460                       'CLEARING';
5461 
5462    --
5463    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5464    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5465    --
5466    -- bulk performance
5467    --
5468    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5469 
5470    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5471       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5472 
5473    -- 4955764
5474    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5475       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5476 
5477    -- 4458381 Public Sector Enh
5478    
5479    --
5480    -- set accounting attributes for the line type
5481    --
5482    l_entered_amt_idx := 3;
5483    l_accted_amt_idx  := 8;
5484    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5485    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
5486    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
5487    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
5488    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
5489    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
5490    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
5491    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
5492    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
5493    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
5494    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
5495    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
5496    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
5497    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
5498    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
5499    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
5500    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
5501 
5502    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5503    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5504 
5505    ---------------------------------------------------------------------------------------------------------------
5506    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5507    ---------------------------------------------------------------------------------------------------------------
5508    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5509 
5510    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5511    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5512 
5513    IF xla_accounting_cache_pkg.GetValueChar
5514          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5515          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5516    AND l_bflow_method_code = 'PRIOR_ENTRY'
5517 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5518    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5519          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5520        )
5521    THEN
5522          xla_ae_lines_pkg.BflowUpgEntry
5523            (p_business_method_code    => l_bflow_method_code
5524            ,p_business_class_code     => l_bflow_class_code
5525            ,p_balance_type            => l_balance_type_code);
5526    ELSE
5527       NULL;
5528 -- No business flow processing for business flow method of NONE.
5529    END IF;
5530 
5531    --
5532    -- call analytical criteria
5533    --
5534    
5535    --
5536    -- call description
5537    --
5538    -- No description or it is inherited.
5539    --
5540    -- call ADRs
5541    -- Bug 4922099
5542    --
5543    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5544         (NVL(l_actual_upg_option, 'N') = 'O') OR
5545         (NVL(l_enc_upg_option, 'N') = 'O')
5546       )
5547    THEN
5548    NULL;
5549    --
5550    --
5551    
5552   l_ccid := AcctDerRule_4(
5553            p_application_id           => p_application_id
5554          , p_ae_header_id             => l_ae_header_id 
5555 , p_source_4 => p_source_4
5556          , x_transaction_coa_id       => l_adr_transaction_coa_id
5557          , x_accounting_coa_id        => l_adr_accounting_coa_id
5558          , x_value_type_code          => l_adr_value_type_code
5559          , p_side                     => 'NA'
5560    );
5561 
5562    xla_ae_lines_pkg.set_ccid(
5563     p_code_combination_id          => l_ccid
5564   , p_value_type_code              => l_adr_value_type_code
5565   , p_transaction_coa_id           => l_adr_transaction_coa_id
5566   , p_accounting_coa_id            => l_adr_accounting_coa_id
5567   , p_adr_code                     => 'CST_DEFAULT'
5568   , p_adr_type_code                => 'S'
5569   , p_component_type               => l_component_type
5570   , p_component_code               => l_component_code
5571   , p_component_type_code          => l_component_type_code
5572   , p_component_appl_id            => l_component_appl_id
5573   , p_amb_context_code             => l_amb_context_code
5574   , p_side                         => 'NA'
5575   );
5576 
5577 
5578    --
5579    --
5580    END IF;
5581    --
5582    -- Bug 4922099
5583    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5584           (NVL(l_enc_upg_option, 'N') = 'O')
5585         ) AND
5586         (l_bflow_method_code = 'PRIOR_ENTRY')
5587       )
5588    THEN
5589       IF
5590       --
5591       1 = 2
5592       --
5593       THEN
5594       xla_accounting_err_pkg.build_message
5595                                     (p_appli_s_name            => 'XLA'
5596                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5597                                     ,p_token_1                 => 'LINE_NUMBER'
5598                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5599                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5600                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5601                                                                              l_component_type
5602                                                                             ,l_component_code
5603                                                                             ,l_component_type_code
5604                                                                             ,l_component_appl_id
5605                                                                             ,l_amb_context_code
5606                                                                             ,l_entity_code
5607                                                                             ,l_event_class_code
5608                                                                            )
5609                                     ,p_token_3                 => 'OWNER'
5610                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5611                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5612                                                                           ,p_lookup_code    => l_component_type_code
5613                                                                          )
5614                                     ,p_token_4                 => 'PRODUCT_NAME'
5615                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5616                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5617                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5618                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5619                                     ,p_ae_header_id            =>  NULL
5620                                        );
5621 
5622         IF (C_LEVEL_ERROR>= g_log_level) THEN
5623                  trace
5624                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5625                       ,p_level    => C_LEVEL_ERROR
5626                       ,p_module   => l_log_module);
5627         END IF;
5628       END IF;
5629    END IF;
5630    --
5631    --
5632    ------------------------------------------------------------------------------------------------
5633    -- 4219869 Business Flow
5634    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5635    -- Prior Entry.  Currently, the following code is always generated.
5636    ------------------------------------------------------------------------------------------------
5637    XLA_AE_LINES_PKG.ValidateCurrentLine;
5638 
5639    ------------------------------------------------------------------------------------
5640    -- 4219869 Business Flow
5641    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5642    ------------------------------------------------------------------------------------
5643    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5644 
5645    ----------------------------------------------------------------------------------
5646    -- 4219869 Business Flow
5647    -- Update journal entry status -- Need to generate this within IF <condition>
5648    ----------------------------------------------------------------------------------
5649    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5650          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5651          ,p_balance_type_code => l_balance_type_code
5652          );
5653 
5654    -------------------------------------------------------------------------------------------
5655    -- 4262811 - Generate the Accrual Reversal lines
5656    -------------------------------------------------------------------------------------------
5657    BEGIN
5658       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5659                               (g_array_event(p_event_id).array_value_num('header_index'));
5660       IF l_acc_rev_flag IS NULL THEN
5661          l_acc_rev_flag := 'N';
5662       END IF;
5663    EXCEPTION
5664       WHEN OTHERS THEN
5665          l_acc_rev_flag := 'N';
5666    END;
5667    --
5668    IF (l_acc_rev_flag = 'Y') THEN
5669 
5670        -- 4645092  ------------------------------------------------------------------------------
5671        -- To allow MPA report to determine if it should generate report process
5672        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5673        ------------------------------------------------------------------------------------------
5674 
5675        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5676        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5677    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
5678    -- call ADRs
5679    -- Bug 4922099
5680    --
5681    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5682         (NVL(l_actual_upg_option, 'N') = 'O') OR
5683         (NVL(l_enc_upg_option, 'N') = 'O')
5684       )
5685    THEN
5686    NULL;
5687    --
5688    --
5689    
5690   l_ccid := AcctDerRule_4(
5691            p_application_id           => p_application_id
5692          , p_ae_header_id             => l_ae_header_id 
5693 , p_source_4 => p_source_4
5694          , x_transaction_coa_id       => l_adr_transaction_coa_id
5695          , x_accounting_coa_id        => l_adr_accounting_coa_id
5696          , x_value_type_code          => l_adr_value_type_code
5697          , p_side                     => 'NA'
5698    );
5699 
5700    xla_ae_lines_pkg.set_ccid(
5701     p_code_combination_id          => l_ccid
5702   , p_value_type_code              => l_adr_value_type_code
5703   , p_transaction_coa_id           => l_adr_transaction_coa_id
5704   , p_accounting_coa_id            => l_adr_accounting_coa_id
5705   , p_adr_code                     => 'CST_DEFAULT'
5706   , p_adr_type_code                => 'S'
5707   , p_component_type               => l_component_type
5708   , p_component_code               => l_component_code
5709   , p_component_type_code          => l_component_type_code
5710   , p_component_appl_id            => l_component_appl_id
5711   , p_amb_context_code             => l_amb_context_code
5712   , p_side                         => 'NA'
5713   );
5714 
5715 
5716    --
5717    --
5718    END IF;
5719 
5720        --
5721        -- Update the line information that should be overwritten
5722        --
5723        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5724                                          p_header_num   => 1);
5725        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5726 
5727        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5728 
5729        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5730           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5731        END IF;
5732 
5733       --
5734       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5735       --
5736       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5737           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5738       ELSE
5739           ---------------------------------------------------------------------------------------------------
5740           -- 4262811a Switch Sign
5741           ---------------------------------------------------------------------------------------------------
5742           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5743           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5744                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5745           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5746                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5747           -- 5132302
5748           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5749                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5750 
5751       END IF;
5752 
5753       -- 4955764
5754       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5755       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5756 
5757 
5758       XLA_AE_LINES_PKG.ValidateCurrentLine;
5759       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5760 
5761       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5762                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5763                ,p_balance_type_code => l_balance_type_code);
5764 
5765    END IF;
5766 
5767    -----------------------------------------------------------------------------------------
5768    -- 4262811 Multiperiod Accounting
5769    -----------------------------------------------------------------------------------------
5770      -- No MPA option is assigned.
5771 
5772 
5773 END IF;
5774 END IF;
5775 --
5776 
5777 --
5778 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5779    trace
5780       (p_msg      => 'END of AcctLineType_13'
5781       ,p_level    => C_LEVEL_PROCEDURE
5782       ,p_module   => l_log_module);
5783 END IF;
5784 --
5785 EXCEPTION
5786   WHEN xla_exceptions_pkg.application_exception THEN
5787       RAISE;
5788   WHEN OTHERS THEN
5789        xla_exceptions_pkg.raise_message
5790            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_13');
5791 END AcctLineType_13;
5792 --
5793 
5794 ---------------------------------------
5795 --
5796 -- PRIVATE FUNCTION
5797 --         AcctLineType_14
5798 --
5799 ---------------------------------------
5800 PROCEDURE AcctLineType_14 (
5801   p_application_id        IN NUMBER
5802  ,p_event_id              IN NUMBER
5803  ,p_calculate_acctd_flag  IN VARCHAR2
5804  ,p_calculate_g_l_flag    IN VARCHAR2
5805  ,p_actual_flag           IN OUT VARCHAR2
5806  ,p_balance_type_code     OUT VARCHAR2
5807  ,p_gain_or_loss_ref      OUT VARCHAR2
5808  
5809 --Cost Management Default Account
5810  , p_source_4            IN NUMBER
5811 --DISTRIBUTION_IDENTIFIER
5812  , p_source_11            IN NUMBER
5813 --Distribution Type
5814  , p_source_12            IN VARCHAR2
5815  , p_source_12_meaning    IN VARCHAR2
5816 --Entered Currency Code
5817  , p_source_15            IN VARCHAR2
5818 --Entered Amount
5819  , p_source_18            IN NUMBER
5820 --Currency Conversion Date
5821  , p_source_19            IN DATE
5822 --Currency Conversion Rate
5823  , p_source_20            IN NUMBER
5824 --Currency Conversion Type
5825  , p_source_21            IN VARCHAR2
5826 --Accounted Amount
5827  , p_source_22            IN NUMBER
5828 --Accounting Line Type
5829  , p_source_24            IN NUMBER
5830 )
5831 IS
5832 
5833 l_component_type              VARCHAR2(80);
5834 l_component_code              VARCHAR2(30);
5835 l_component_type_code         VARCHAR2(1);
5836 l_component_appl_id           INTEGER;
5837 l_amb_context_code            VARCHAR2(30);
5838 l_entity_code                 VARCHAR2(30);
5839 l_event_class_code            VARCHAR2(30);
5840 l_ae_header_id                NUMBER;
5841 l_event_type_code             VARCHAR2(30);
5842 l_line_definition_code        VARCHAR2(30);
5843 l_line_definition_owner_code  VARCHAR2(1);
5844 --
5845 -- adr variables
5846 l_segment                     VARCHAR2(30);
5847 l_ccid                        NUMBER;
5848 l_adr_transaction_coa_id      NUMBER;
5849 l_adr_accounting_coa_id       NUMBER;
5850 l_adr_flexfield_segment_code  VARCHAR2(30);
5851 l_adr_flex_value_set_id       NUMBER;
5852 l_adr_value_type_code         VARCHAR2(30);
5853 l_adr_value_combination_id    NUMBER;
5854 l_adr_value_segment_code      VARCHAR2(30);
5855 
5856 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5857 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5858 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5859 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5860 
5861 -- 4262811 Variables ------------------------------------------------------------------------------------------
5862 l_entered_amt_idx             NUMBER;
5863 l_accted_amt_idx              NUMBER;
5864 l_acc_rev_flag                VARCHAR2(1);
5865 l_accrual_line_num            NUMBER;
5866 l_tmp_amt                     NUMBER;
5867 l_acc_rev_natural_side_code   VARCHAR2(1);
5868 
5869 l_num_entries                 NUMBER;
5870 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5871 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5872 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5873 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5874 l_recog_line_1                NUMBER;
5875 l_recog_line_2                NUMBER;
5876 
5877 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5878 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5879 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5880 
5881 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5882 
5883 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5884 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5885 
5886 ---------------------------------------------------------------------------------------------------------------
5887 
5888 
5889 --
5890 -- bulk performance
5891 --
5892 l_balance_type_code           VARCHAR2(1);
5893 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5894 l_log_module                  VARCHAR2(240);
5895 
5896 --
5897 -- Upgrade strategy
5898 --
5899 l_actual_upg_option           VARCHAR2(1);
5900 l_enc_upg_option           VARCHAR2(1);
5901 
5902 --
5903 BEGIN
5904 --
5905 IF g_log_enabled THEN
5906       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_14';
5907 END IF;
5908 --
5909 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5910 
5911       trace
5912          (p_msg      => 'BEGIN of AcctLineType_14'
5913          ,p_level    => C_LEVEL_PROCEDURE
5914          ,p_module   => l_log_module);
5915 
5916 END IF;
5917 --
5918 l_component_type             := 'AMB_JLT';
5919 l_component_code             := 'CLEARING';
5920 l_component_type_code        := 'S';
5921 l_component_appl_id          :=  707;
5922 l_amb_context_code           := 'DEFAULT';
5923 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
5924 l_event_class_code           := 'LOG_INTERCOMPANY';
5925 l_event_type_code            := 'LOG_INTERCOMPANY_ALL';
5926 l_line_definition_owner_code := 'S';
5927 l_line_definition_code       := 'LOG_INTERCOMPANY';
5928 --
5929 l_balance_type_code          := 'A';
5930 l_segment                     := NULL;
5931 l_ccid                        := NULL;
5932 l_adr_transaction_coa_id      := NULL;
5933 l_adr_accounting_coa_id       := NULL;
5934 l_adr_flexfield_segment_code  := NULL;
5935 l_adr_flex_value_set_id       := NULL;
5936 l_adr_value_type_code         := NULL;
5937 l_adr_value_combination_id    := NULL;
5938 l_adr_value_segment_code      := NULL;
5939 
5940 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5941 l_bflow_class_code           := '';    -- 4219869 Business Flow
5942 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5943 l_budgetary_control_flag     := 'N';
5944 
5945 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5946 l_bflow_applied_to_amt       := NULL; -- 5132302
5947 l_entered_amt_idx            := NULL;          -- 4262811
5948 l_accted_amt_idx             := NULL;          -- 4262811
5949 l_acc_rev_flag               := NULL;          -- 4262811
5950 l_accrual_line_num           := NULL;          -- 4262811
5951 l_tmp_amt                    := NULL;          -- 4262811
5952 --
5953  
5954 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5955     l_balance_type_code <> 'B' THEN
5956 IF NVL(p_source_24,9E125) =  31
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_000007_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_000007_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             := 'COST_OF_GOODS_SOLD';
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           := 'USER_DEFINE';
7085 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_TP';
7086 l_line_definition_owner_code := 'S';
7087 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_TP';
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) =  2 AND 
7117 p_source_22 >  0
7118  THEN 
7119 
7120    --
7121    XLA_AE_LINES_PKG.SetNewLine;
7122 
7123    p_balance_type_code          := l_balance_type_code;
7124    -- set the flag so later we will know whether the gain loss line needs to be created
7125    
7126    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7127      p_actual_flag :='A';
7128    END IF;
7129 
7130    --
7131    -- bulk performance
7132    --
7133    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7134                                       p_header_num   => 0); -- 4262811
7135    --
7136    -- set accounting line options
7137    --
7138    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7139            p_natural_side_code          => 'D'
7140          , p_gain_or_loss_flag          => 'N'
7141          , p_gl_transfer_mode_code      => 'S'
7142          , p_acct_entry_type_code       => 'A'
7143          , p_switch_side_flag           => 'Y'
7144          , p_merge_duplicate_code       => 'N'
7145          );
7146    --
7147    l_acc_rev_natural_side_code := 'C';  -- 4262811
7148    -- 
7149    --
7150    -- set accounting line type info
7151    --
7152    xla_ae_lines_pkg.SetAcctLineType
7153       (p_component_type             => l_component_type
7154       ,p_event_type_code            => l_event_type_code
7155       ,p_line_definition_owner_code => l_line_definition_owner_code
7156       ,p_line_definition_code       => l_line_definition_code
7157       ,p_accounting_line_code       => l_component_code
7158       ,p_accounting_line_type_code  => l_component_type_code
7159       ,p_accounting_line_appl_id    => l_component_appl_id
7160       ,p_amb_context_code           => l_amb_context_code
7161       ,p_entity_code                => l_entity_code
7162       ,p_event_class_code           => l_event_class_code);
7163    --
7164    -- set accounting class
7165    --
7166    xla_ae_lines_pkg.SetAcctClass(
7167            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
7168          , p_ae_header_id           => l_ae_header_id
7169          );
7170 
7171    --
7172    -- set rounding class
7173    --
7174    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7175                       'COST_OF_GOODS_SOLD';
7176 
7177    --
7178    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7179    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7180    --
7181    -- bulk performance
7182    --
7183    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7184 
7185    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7186       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7187 
7188    -- 4955764
7189    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7190       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7191 
7192    -- 4458381 Public Sector Enh
7193    
7194    --
7195    -- set accounting attributes for the line type
7196    --
7197    l_entered_amt_idx := 3;
7198    l_accted_amt_idx  := 8;
7199    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7200    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7201    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
7202    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7203    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
7204    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7205    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
7206    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7207    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
7208    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7209    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
7210    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7211    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
7212    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7213    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
7214    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7215    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
7216 
7217    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7218    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7219 
7220    ---------------------------------------------------------------------------------------------------------------
7221    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7222    ---------------------------------------------------------------------------------------------------------------
7223    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7224 
7225    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7226    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7227 
7228    IF xla_accounting_cache_pkg.GetValueChar
7229          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7230          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7231    AND l_bflow_method_code = 'PRIOR_ENTRY'
7232 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7233    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7234          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7235        )
7236    THEN
7237          xla_ae_lines_pkg.BflowUpgEntry
7238            (p_business_method_code    => l_bflow_method_code
7239            ,p_business_class_code     => l_bflow_class_code
7240            ,p_balance_type            => l_balance_type_code);
7241    ELSE
7242       NULL;
7243 -- No business flow processing for business flow method of NONE.
7244    END IF;
7245 
7246    --
7247    -- call analytical criteria
7248    --
7249    
7250    --
7251    -- call description
7252    --
7253    -- No description or it is inherited.
7254    --
7255    -- call ADRs
7256    -- Bug 4922099
7257    --
7258    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7259         (NVL(l_actual_upg_option, 'N') = 'O') OR
7260         (NVL(l_enc_upg_option, 'N') = 'O')
7261       )
7262    THEN
7263    NULL;
7264    --
7265    --
7266    
7267   l_ccid := AcctDerRule_4(
7268            p_application_id           => p_application_id
7269          , p_ae_header_id             => l_ae_header_id 
7270 , p_source_4 => p_source_4
7271          , x_transaction_coa_id       => l_adr_transaction_coa_id
7272          , x_accounting_coa_id        => l_adr_accounting_coa_id
7273          , x_value_type_code          => l_adr_value_type_code
7274          , p_side                     => 'NA'
7275    );
7276 
7277    xla_ae_lines_pkg.set_ccid(
7278     p_code_combination_id          => l_ccid
7279   , p_value_type_code              => l_adr_value_type_code
7280   , p_transaction_coa_id           => l_adr_transaction_coa_id
7281   , p_accounting_coa_id            => l_adr_accounting_coa_id
7282   , p_adr_code                     => 'CST_DEFAULT'
7283   , p_adr_type_code                => 'S'
7284   , p_component_type               => l_component_type
7285   , p_component_code               => l_component_code
7286   , p_component_type_code          => l_component_type_code
7287   , p_component_appl_id            => l_component_appl_id
7288   , p_amb_context_code             => l_amb_context_code
7289   , p_side                         => 'NA'
7290   );
7291 
7292 
7293    --
7294    --
7295    END IF;
7296    --
7297    -- Bug 4922099
7298    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7299           (NVL(l_enc_upg_option, 'N') = 'O')
7300         ) AND
7301         (l_bflow_method_code = 'PRIOR_ENTRY')
7302       )
7303    THEN
7304       IF
7305       --
7306       1 = 2
7307       --
7308       THEN
7309       xla_accounting_err_pkg.build_message
7310                                     (p_appli_s_name            => 'XLA'
7311                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7312                                     ,p_token_1                 => 'LINE_NUMBER'
7313                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7314                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7315                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7316                                                                              l_component_type
7317                                                                             ,l_component_code
7318                                                                             ,l_component_type_code
7319                                                                             ,l_component_appl_id
7320                                                                             ,l_amb_context_code
7321                                                                             ,l_entity_code
7322                                                                             ,l_event_class_code
7323                                                                            )
7324                                     ,p_token_3                 => 'OWNER'
7325                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7326                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7327                                                                           ,p_lookup_code    => l_component_type_code
7328                                                                          )
7329                                     ,p_token_4                 => 'PRODUCT_NAME'
7330                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7331                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7332                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7333                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7334                                     ,p_ae_header_id            =>  NULL
7335                                        );
7336 
7337         IF (C_LEVEL_ERROR>= g_log_level) THEN
7338                  trace
7339                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7340                       ,p_level    => C_LEVEL_ERROR
7341                       ,p_module   => l_log_module);
7342         END IF;
7343       END IF;
7344    END IF;
7345    --
7346    --
7347    ------------------------------------------------------------------------------------------------
7348    -- 4219869 Business Flow
7349    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7350    -- Prior Entry.  Currently, the following code is always generated.
7351    ------------------------------------------------------------------------------------------------
7352    XLA_AE_LINES_PKG.ValidateCurrentLine;
7353 
7354    ------------------------------------------------------------------------------------
7355    -- 4219869 Business Flow
7356    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7357    ------------------------------------------------------------------------------------
7358    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7359 
7360    ----------------------------------------------------------------------------------
7361    -- 4219869 Business Flow
7362    -- Update journal entry status -- Need to generate this within IF <condition>
7363    ----------------------------------------------------------------------------------
7364    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7365          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7366          ,p_balance_type_code => l_balance_type_code
7367          );
7368 
7369    -------------------------------------------------------------------------------------------
7370    -- 4262811 - Generate the Accrual Reversal lines
7371    -------------------------------------------------------------------------------------------
7372    BEGIN
7373       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7374                               (g_array_event(p_event_id).array_value_num('header_index'));
7375       IF l_acc_rev_flag IS NULL THEN
7376          l_acc_rev_flag := 'N';
7377       END IF;
7378    EXCEPTION
7379       WHEN OTHERS THEN
7380          l_acc_rev_flag := 'N';
7381    END;
7382    --
7383    IF (l_acc_rev_flag = 'Y') THEN
7384 
7385        -- 4645092  ------------------------------------------------------------------------------
7386        -- To allow MPA report to determine if it should generate report process
7387        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7388        ------------------------------------------------------------------------------------------
7389 
7390        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7391        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7392    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
7393    -- call ADRs
7394    -- Bug 4922099
7395    --
7396    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7397         (NVL(l_actual_upg_option, 'N') = 'O') OR
7398         (NVL(l_enc_upg_option, 'N') = 'O')
7399       )
7400    THEN
7401    NULL;
7402    --
7403    --
7404    
7405   l_ccid := AcctDerRule_4(
7406            p_application_id           => p_application_id
7407          , p_ae_header_id             => l_ae_header_id 
7408 , p_source_4 => p_source_4
7409          , x_transaction_coa_id       => l_adr_transaction_coa_id
7410          , x_accounting_coa_id        => l_adr_accounting_coa_id
7411          , x_value_type_code          => l_adr_value_type_code
7412          , p_side                     => 'NA'
7413    );
7414 
7415    xla_ae_lines_pkg.set_ccid(
7416     p_code_combination_id          => l_ccid
7417   , p_value_type_code              => l_adr_value_type_code
7418   , p_transaction_coa_id           => l_adr_transaction_coa_id
7419   , p_accounting_coa_id            => l_adr_accounting_coa_id
7420   , p_adr_code                     => 'CST_DEFAULT'
7421   , p_adr_type_code                => 'S'
7422   , p_component_type               => l_component_type
7423   , p_component_code               => l_component_code
7424   , p_component_type_code          => l_component_type_code
7425   , p_component_appl_id            => l_component_appl_id
7426   , p_amb_context_code             => l_amb_context_code
7427   , p_side                         => 'NA'
7428   );
7429 
7430 
7431    --
7432    --
7433    END IF;
7434 
7435        --
7436        -- Update the line information that should be overwritten
7437        --
7438        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7439                                          p_header_num   => 1);
7440        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7441 
7442        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7443 
7444        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7445           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7446        END IF;
7447 
7448       --
7449       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7450       --
7451       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7452           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7453       ELSE
7454           ---------------------------------------------------------------------------------------------------
7455           -- 4262811a Switch Sign
7456           ---------------------------------------------------------------------------------------------------
7457           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7458           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7459                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7460           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7461                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7462           -- 5132302
7463           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7464                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7465 
7466       END IF;
7467 
7468       -- 4955764
7469       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7470       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7471 
7472 
7473       XLA_AE_LINES_PKG.ValidateCurrentLine;
7474       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7475 
7476       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7477                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7478                ,p_balance_type_code => l_balance_type_code);
7479 
7480    END IF;
7481 
7482    -----------------------------------------------------------------------------------------
7483    -- 4262811 Multiperiod Accounting
7484    -----------------------------------------------------------------------------------------
7485      -- No MPA option is assigned.
7486 
7487 
7488 END IF;
7489 END IF;
7490 --
7491 
7492 --
7493 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7494    trace
7495       (p_msg      => 'END of AcctLineType_16'
7496       ,p_level    => C_LEVEL_PROCEDURE
7497       ,p_module   => l_log_module);
7498 END IF;
7499 --
7500 EXCEPTION
7501   WHEN xla_exceptions_pkg.application_exception THEN
7502       RAISE;
7503   WHEN OTHERS THEN
7504        xla_exceptions_pkg.raise_message
7505            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_16');
7506 END AcctLineType_16;
7507 --
7508 
7509 ---------------------------------------
7510 --
7511 -- PRIVATE FUNCTION
7512 --         AcctLineType_17
7513 --
7514 ---------------------------------------
7515 PROCEDURE AcctLineType_17 (
7516   p_application_id        IN NUMBER
7517  ,p_event_id              IN NUMBER
7518  ,p_calculate_acctd_flag  IN VARCHAR2
7519  ,p_calculate_g_l_flag    IN VARCHAR2
7520  ,p_actual_flag           IN OUT VARCHAR2
7521  ,p_balance_type_code     OUT VARCHAR2
7522  ,p_gain_or_loss_ref      OUT VARCHAR2
7523  
7524 --Cost Management Default Account
7525  , p_source_4            IN NUMBER
7526 --DISTRIBUTION_IDENTIFIER
7527  , p_source_11            IN NUMBER
7528 --Distribution Type
7529  , p_source_12            IN VARCHAR2
7530  , p_source_12_meaning    IN VARCHAR2
7531 --Entered Currency Code
7532  , p_source_15            IN VARCHAR2
7533 --Entered Amount
7534  , p_source_18            IN NUMBER
7535 --Currency Conversion Date
7536  , p_source_19            IN DATE
7537 --Currency Conversion Rate
7538  , p_source_20            IN NUMBER
7539 --Currency Conversion Type
7540  , p_source_21            IN VARCHAR2
7541 --Accounted Amount
7542  , p_source_22            IN NUMBER
7543 --Accounting Line Type
7544  , p_source_24            IN NUMBER
7545 )
7546 IS
7547 
7548 l_component_type              VARCHAR2(80);
7549 l_component_code              VARCHAR2(30);
7550 l_component_type_code         VARCHAR2(1);
7551 l_component_appl_id           INTEGER;
7552 l_amb_context_code            VARCHAR2(30);
7553 l_entity_code                 VARCHAR2(30);
7554 l_event_class_code            VARCHAR2(30);
7555 l_ae_header_id                NUMBER;
7556 l_event_type_code             VARCHAR2(30);
7557 l_line_definition_code        VARCHAR2(30);
7558 l_line_definition_owner_code  VARCHAR2(1);
7559 --
7560 -- adr variables
7561 l_segment                     VARCHAR2(30);
7562 l_ccid                        NUMBER;
7563 l_adr_transaction_coa_id      NUMBER;
7564 l_adr_accounting_coa_id       NUMBER;
7565 l_adr_flexfield_segment_code  VARCHAR2(30);
7566 l_adr_flex_value_set_id       NUMBER;
7567 l_adr_value_type_code         VARCHAR2(30);
7568 l_adr_value_combination_id    NUMBER;
7569 l_adr_value_segment_code      VARCHAR2(30);
7570 
7571 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7572 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7573 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7574 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7575 
7576 -- 4262811 Variables ------------------------------------------------------------------------------------------
7577 l_entered_amt_idx             NUMBER;
7578 l_accted_amt_idx              NUMBER;
7579 l_acc_rev_flag                VARCHAR2(1);
7580 l_accrual_line_num            NUMBER;
7581 l_tmp_amt                     NUMBER;
7582 l_acc_rev_natural_side_code   VARCHAR2(1);
7583 
7584 l_num_entries                 NUMBER;
7585 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7586 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7587 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7588 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7589 l_recog_line_1                NUMBER;
7590 l_recog_line_2                NUMBER;
7591 
7592 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7593 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7594 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7595 
7596 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7597 
7598 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7599 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7600 
7601 ---------------------------------------------------------------------------------------------------------------
7602 
7603 
7604 --
7605 -- bulk performance
7606 --
7607 l_balance_type_code           VARCHAR2(1);
7608 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7609 l_log_module                  VARCHAR2(240);
7610 
7611 --
7612 -- Upgrade strategy
7613 --
7614 l_actual_upg_option           VARCHAR2(1);
7615 l_enc_upg_option           VARCHAR2(1);
7616 
7617 --
7618 BEGIN
7619 --
7620 IF g_log_enabled THEN
7621       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_17';
7622 END IF;
7623 --
7624 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7625 
7626       trace
7627          (p_msg      => 'BEGIN of AcctLineType_17'
7628          ,p_level    => C_LEVEL_PROCEDURE
7629          ,p_module   => l_log_module);
7630 
7631 END IF;
7632 --
7633 l_component_type             := 'AMB_JLT';
7634 l_component_code             := 'COST_OF_GOODS_SOLD';
7635 l_component_type_code        := 'S';
7636 l_component_appl_id          :=  707;
7637 l_amb_context_code           := 'DEFAULT';
7638 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
7639 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
7640 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_ALL';
7641 l_line_definition_owner_code := 'S';
7642 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT';
7643 --
7644 l_balance_type_code          := 'A';
7645 l_segment                     := NULL;
7646 l_ccid                        := NULL;
7647 l_adr_transaction_coa_id      := NULL;
7648 l_adr_accounting_coa_id       := NULL;
7649 l_adr_flexfield_segment_code  := NULL;
7650 l_adr_flex_value_set_id       := NULL;
7651 l_adr_value_type_code         := NULL;
7652 l_adr_value_combination_id    := NULL;
7653 l_adr_value_segment_code      := NULL;
7654 
7655 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7656 l_bflow_class_code           := '';    -- 4219869 Business Flow
7657 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7658 l_budgetary_control_flag     := 'N';
7659 
7660 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7661 l_bflow_applied_to_amt       := NULL; -- 5132302
7662 l_entered_amt_idx            := NULL;          -- 4262811
7663 l_accted_amt_idx             := NULL;          -- 4262811
7664 l_acc_rev_flag               := NULL;          -- 4262811
7665 l_accrual_line_num           := NULL;          -- 4262811
7666 l_tmp_amt                    := NULL;          -- 4262811
7667 --
7668  
7669 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7670     l_balance_type_code <> 'B' THEN
7671 IF NVL(p_source_24,9E125) =  2 AND 
7672 p_source_22 >  0
7673  THEN 
7674 
7675    --
7676    XLA_AE_LINES_PKG.SetNewLine;
7677 
7678    p_balance_type_code          := l_balance_type_code;
7679    -- set the flag so later we will know whether the gain loss line needs to be created
7680    
7681    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7682      p_actual_flag :='A';
7683    END IF;
7684 
7685    --
7686    -- bulk performance
7687    --
7688    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7689                                       p_header_num   => 0); -- 4262811
7690    --
7691    -- set accounting line options
7692    --
7693    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7694            p_natural_side_code          => 'D'
7695          , p_gain_or_loss_flag          => 'N'
7696          , p_gl_transfer_mode_code      => 'S'
7697          , p_acct_entry_type_code       => 'A'
7698          , p_switch_side_flag           => 'Y'
7699          , p_merge_duplicate_code       => 'N'
7700          );
7701    --
7702    l_acc_rev_natural_side_code := 'C';  -- 4262811
7703    -- 
7704    --
7705    -- set accounting line type info
7706    --
7707    xla_ae_lines_pkg.SetAcctLineType
7708       (p_component_type             => l_component_type
7709       ,p_event_type_code            => l_event_type_code
7710       ,p_line_definition_owner_code => l_line_definition_owner_code
7711       ,p_line_definition_code       => l_line_definition_code
7712       ,p_accounting_line_code       => l_component_code
7713       ,p_accounting_line_type_code  => l_component_type_code
7714       ,p_accounting_line_appl_id    => l_component_appl_id
7715       ,p_amb_context_code           => l_amb_context_code
7716       ,p_entity_code                => l_entity_code
7717       ,p_event_class_code           => l_event_class_code);
7718    --
7719    -- set accounting class
7720    --
7721    xla_ae_lines_pkg.SetAcctClass(
7722            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
7723          , p_ae_header_id           => l_ae_header_id
7724          );
7725 
7726    --
7727    -- set rounding class
7728    --
7729    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7730                       'COST_OF_GOODS_SOLD';
7731 
7732    --
7733    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7734    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7735    --
7736    -- bulk performance
7737    --
7738    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7739 
7740    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7741       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7742 
7743    -- 4955764
7744    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7745       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7746 
7747    -- 4458381 Public Sector Enh
7748    
7749    --
7750    -- set accounting attributes for the line type
7751    --
7752    l_entered_amt_idx := 3;
7753    l_accted_amt_idx  := 8;
7754    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7755    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7756    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
7757    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7758    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
7759    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7760    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
7761    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7762    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
7763    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7764    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
7765    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7766    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
7767    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7768    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
7769    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7770    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
7771 
7772    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7773    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7774 
7775    ---------------------------------------------------------------------------------------------------------------
7776    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7777    ---------------------------------------------------------------------------------------------------------------
7778    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7779 
7780    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7781    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7782 
7783    IF xla_accounting_cache_pkg.GetValueChar
7784          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7785          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7786    AND l_bflow_method_code = 'PRIOR_ENTRY'
7787 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7788    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7789          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7790        )
7791    THEN
7792          xla_ae_lines_pkg.BflowUpgEntry
7793            (p_business_method_code    => l_bflow_method_code
7794            ,p_business_class_code     => l_bflow_class_code
7795            ,p_balance_type            => l_balance_type_code);
7796    ELSE
7797       NULL;
7798 -- No business flow processing for business flow method of NONE.
7799    END IF;
7800 
7801    --
7802    -- call analytical criteria
7803    --
7804    
7805    --
7806    -- call description
7807    --
7808    -- No description or it is inherited.
7809    --
7810    -- call ADRs
7811    -- Bug 4922099
7812    --
7813    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7814         (NVL(l_actual_upg_option, 'N') = 'O') OR
7815         (NVL(l_enc_upg_option, 'N') = 'O')
7816       )
7817    THEN
7818    NULL;
7819    --
7820    --
7821    
7822   l_ccid := AcctDerRule_4(
7823            p_application_id           => p_application_id
7824          , p_ae_header_id             => l_ae_header_id 
7825 , p_source_4 => p_source_4
7826          , x_transaction_coa_id       => l_adr_transaction_coa_id
7827          , x_accounting_coa_id        => l_adr_accounting_coa_id
7828          , x_value_type_code          => l_adr_value_type_code
7829          , p_side                     => 'NA'
7830    );
7831 
7832    xla_ae_lines_pkg.set_ccid(
7833     p_code_combination_id          => l_ccid
7834   , p_value_type_code              => l_adr_value_type_code
7835   , p_transaction_coa_id           => l_adr_transaction_coa_id
7836   , p_accounting_coa_id            => l_adr_accounting_coa_id
7837   , p_adr_code                     => 'CST_DEFAULT'
7838   , p_adr_type_code                => 'S'
7839   , p_component_type               => l_component_type
7840   , p_component_code               => l_component_code
7841   , p_component_type_code          => l_component_type_code
7842   , p_component_appl_id            => l_component_appl_id
7843   , p_amb_context_code             => l_amb_context_code
7844   , p_side                         => 'NA'
7845   );
7846 
7847 
7848    --
7849    --
7850    END IF;
7851    --
7852    -- Bug 4922099
7853    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7854           (NVL(l_enc_upg_option, 'N') = 'O')
7855         ) AND
7856         (l_bflow_method_code = 'PRIOR_ENTRY')
7857       )
7858    THEN
7859       IF
7860       --
7861       1 = 2
7862       --
7863       THEN
7864       xla_accounting_err_pkg.build_message
7865                                     (p_appli_s_name            => 'XLA'
7866                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7867                                     ,p_token_1                 => 'LINE_NUMBER'
7868                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7869                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7870                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7871                                                                              l_component_type
7872                                                                             ,l_component_code
7873                                                                             ,l_component_type_code
7874                                                                             ,l_component_appl_id
7875                                                                             ,l_amb_context_code
7876                                                                             ,l_entity_code
7877                                                                             ,l_event_class_code
7878                                                                            )
7879                                     ,p_token_3                 => 'OWNER'
7880                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7881                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7882                                                                           ,p_lookup_code    => l_component_type_code
7883                                                                          )
7884                                     ,p_token_4                 => 'PRODUCT_NAME'
7885                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7886                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7887                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7888                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7889                                     ,p_ae_header_id            =>  NULL
7890                                        );
7891 
7892         IF (C_LEVEL_ERROR>= g_log_level) THEN
7893                  trace
7894                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7895                       ,p_level    => C_LEVEL_ERROR
7896                       ,p_module   => l_log_module);
7897         END IF;
7898       END IF;
7899    END IF;
7900    --
7901    --
7902    ------------------------------------------------------------------------------------------------
7903    -- 4219869 Business Flow
7904    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7905    -- Prior Entry.  Currently, the following code is always generated.
7906    ------------------------------------------------------------------------------------------------
7907    XLA_AE_LINES_PKG.ValidateCurrentLine;
7908 
7909    ------------------------------------------------------------------------------------
7910    -- 4219869 Business Flow
7911    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7912    ------------------------------------------------------------------------------------
7913    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7914 
7915    ----------------------------------------------------------------------------------
7916    -- 4219869 Business Flow
7917    -- Update journal entry status -- Need to generate this within IF <condition>
7918    ----------------------------------------------------------------------------------
7919    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7920          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7921          ,p_balance_type_code => l_balance_type_code
7922          );
7923 
7924    -------------------------------------------------------------------------------------------
7925    -- 4262811 - Generate the Accrual Reversal lines
7926    -------------------------------------------------------------------------------------------
7927    BEGIN
7928       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7929                               (g_array_event(p_event_id).array_value_num('header_index'));
7930       IF l_acc_rev_flag IS NULL THEN
7931          l_acc_rev_flag := 'N';
7932       END IF;
7933    EXCEPTION
7934       WHEN OTHERS THEN
7935          l_acc_rev_flag := 'N';
7936    END;
7937    --
7938    IF (l_acc_rev_flag = 'Y') THEN
7939 
7940        -- 4645092  ------------------------------------------------------------------------------
7941        -- To allow MPA report to determine if it should generate report process
7942        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7943        ------------------------------------------------------------------------------------------
7944 
7945        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7946        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7947    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
7948    -- call ADRs
7949    -- Bug 4922099
7950    --
7951    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7952         (NVL(l_actual_upg_option, 'N') = 'O') OR
7953         (NVL(l_enc_upg_option, 'N') = 'O')
7954       )
7955    THEN
7956    NULL;
7957    --
7958    --
7959    
7960   l_ccid := AcctDerRule_4(
7961            p_application_id           => p_application_id
7962          , p_ae_header_id             => l_ae_header_id 
7963 , p_source_4 => p_source_4
7964          , x_transaction_coa_id       => l_adr_transaction_coa_id
7965          , x_accounting_coa_id        => l_adr_accounting_coa_id
7966          , x_value_type_code          => l_adr_value_type_code
7967          , p_side                     => 'NA'
7968    );
7969 
7970    xla_ae_lines_pkg.set_ccid(
7971     p_code_combination_id          => l_ccid
7972   , p_value_type_code              => l_adr_value_type_code
7973   , p_transaction_coa_id           => l_adr_transaction_coa_id
7974   , p_accounting_coa_id            => l_adr_accounting_coa_id
7975   , p_adr_code                     => 'CST_DEFAULT'
7976   , p_adr_type_code                => 'S'
7977   , p_component_type               => l_component_type
7978   , p_component_code               => l_component_code
7979   , p_component_type_code          => l_component_type_code
7980   , p_component_appl_id            => l_component_appl_id
7981   , p_amb_context_code             => l_amb_context_code
7982   , p_side                         => 'NA'
7983   );
7984 
7985 
7986    --
7987    --
7988    END IF;
7989 
7990        --
7991        -- Update the line information that should be overwritten
7992        --
7993        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7994                                          p_header_num   => 1);
7995        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7996 
7997        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7998 
7999        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8000           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8001        END IF;
8002 
8003       --
8004       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8005       --
8006       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8007           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8008       ELSE
8009           ---------------------------------------------------------------------------------------------------
8010           -- 4262811a Switch Sign
8011           ---------------------------------------------------------------------------------------------------
8012           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8013           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8014                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8015           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8016                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8017           -- 5132302
8018           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8019                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8020 
8021       END IF;
8022 
8023       -- 4955764
8024       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8025       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8026 
8027 
8028       XLA_AE_LINES_PKG.ValidateCurrentLine;
8029       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8030 
8031       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8032                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8033                ,p_balance_type_code => l_balance_type_code);
8034 
8035    END IF;
8036 
8037    -----------------------------------------------------------------------------------------
8038    -- 4262811 Multiperiod Accounting
8039    -----------------------------------------------------------------------------------------
8040      -- No MPA option is assigned.
8041 
8042 
8043 END IF;
8044 END IF;
8045 --
8046 
8047 --
8048 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8049    trace
8050       (p_msg      => 'END of AcctLineType_17'
8051       ,p_level    => C_LEVEL_PROCEDURE
8052       ,p_module   => l_log_module);
8053 END IF;
8054 --
8055 EXCEPTION
8056   WHEN xla_exceptions_pkg.application_exception THEN
8057       RAISE;
8058   WHEN OTHERS THEN
8059        xla_exceptions_pkg.raise_message
8060            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_17');
8061 END AcctLineType_17;
8062 --
8063 
8064 ---------------------------------------
8065 --
8066 -- PRIVATE FUNCTION
8067 --         AcctLineType_18
8068 --
8069 ---------------------------------------
8070 PROCEDURE AcctLineType_18 (
8071   p_application_id        IN NUMBER
8072  ,p_event_id              IN NUMBER
8073  ,p_calculate_acctd_flag  IN VARCHAR2
8074  ,p_calculate_g_l_flag    IN VARCHAR2
8075  ,p_actual_flag           IN OUT VARCHAR2
8076  ,p_balance_type_code     OUT VARCHAR2
8077  ,p_gain_or_loss_ref      OUT VARCHAR2
8078  
8079 --Cost Management Default Account
8080  , p_source_4            IN NUMBER
8081 --DISTRIBUTION_IDENTIFIER
8082  , p_source_11            IN NUMBER
8083 --Distribution Type
8084  , p_source_12            IN VARCHAR2
8085  , p_source_12_meaning    IN VARCHAR2
8086 --Entered Currency Code
8087  , p_source_15            IN VARCHAR2
8088 --Entered Amount
8089  , p_source_18            IN NUMBER
8090 --Currency Conversion Date
8091  , p_source_19            IN DATE
8092 --Currency Conversion Rate
8093  , p_source_20            IN NUMBER
8094 --Currency Conversion Type
8095  , p_source_21            IN VARCHAR2
8096 --Accounted Amount
8097  , p_source_22            IN NUMBER
8098 --Accounting Line Type
8099  , p_source_24            IN NUMBER
8100 )
8101 IS
8102 
8103 l_component_type              VARCHAR2(80);
8104 l_component_code              VARCHAR2(30);
8105 l_component_type_code         VARCHAR2(1);
8106 l_component_appl_id           INTEGER;
8107 l_amb_context_code            VARCHAR2(30);
8108 l_entity_code                 VARCHAR2(30);
8109 l_event_class_code            VARCHAR2(30);
8110 l_ae_header_id                NUMBER;
8111 l_event_type_code             VARCHAR2(30);
8112 l_line_definition_code        VARCHAR2(30);
8113 l_line_definition_owner_code  VARCHAR2(1);
8114 --
8115 -- adr variables
8116 l_segment                     VARCHAR2(30);
8117 l_ccid                        NUMBER;
8118 l_adr_transaction_coa_id      NUMBER;
8119 l_adr_accounting_coa_id       NUMBER;
8120 l_adr_flexfield_segment_code  VARCHAR2(30);
8121 l_adr_flex_value_set_id       NUMBER;
8122 l_adr_value_type_code         VARCHAR2(30);
8123 l_adr_value_combination_id    NUMBER;
8124 l_adr_value_segment_code      VARCHAR2(30);
8125 
8126 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8127 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8128 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8129 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8130 
8131 -- 4262811 Variables ------------------------------------------------------------------------------------------
8132 l_entered_amt_idx             NUMBER;
8133 l_accted_amt_idx              NUMBER;
8134 l_acc_rev_flag                VARCHAR2(1);
8135 l_accrual_line_num            NUMBER;
8136 l_tmp_amt                     NUMBER;
8137 l_acc_rev_natural_side_code   VARCHAR2(1);
8138 
8139 l_num_entries                 NUMBER;
8140 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8141 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8142 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8143 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8144 l_recog_line_1                NUMBER;
8145 l_recog_line_2                NUMBER;
8146 
8147 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8148 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8149 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8150 
8151 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8152 
8153 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8154 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8155 
8156 ---------------------------------------------------------------------------------------------------------------
8157 
8158 
8159 --
8160 -- bulk performance
8161 --
8162 l_balance_type_code           VARCHAR2(1);
8163 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8164 l_log_module                  VARCHAR2(240);
8165 
8166 --
8167 -- Upgrade strategy
8168 --
8169 l_actual_upg_option           VARCHAR2(1);
8170 l_enc_upg_option           VARCHAR2(1);
8171 
8172 --
8173 BEGIN
8174 --
8175 IF g_log_enabled THEN
8176       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_18';
8177 END IF;
8178 --
8179 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8180 
8181       trace
8182          (p_msg      => 'BEGIN of AcctLineType_18'
8183          ,p_level    => C_LEVEL_PROCEDURE
8184          ,p_module   => l_log_module);
8185 
8186 END IF;
8187 --
8188 l_component_type             := 'AMB_JLT';
8189 l_component_code             := 'COST_OF_GOODS_SOLD';
8190 l_component_type_code        := 'S';
8191 l_component_appl_id          :=  707;
8192 l_amb_context_code           := 'DEFAULT';
8193 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
8194 l_event_class_code           := 'SALES_ORDER';
8195 l_event_type_code            := 'SALES_ORDER_ALL';
8196 l_line_definition_owner_code := 'S';
8197 l_line_definition_code       := 'SALES_ORDER';
8198 --
8199 l_balance_type_code          := 'A';
8200 l_segment                     := NULL;
8201 l_ccid                        := NULL;
8202 l_adr_transaction_coa_id      := NULL;
8203 l_adr_accounting_coa_id       := NULL;
8204 l_adr_flexfield_segment_code  := NULL;
8205 l_adr_flex_value_set_id       := NULL;
8206 l_adr_value_type_code         := NULL;
8207 l_adr_value_combination_id    := NULL;
8208 l_adr_value_segment_code      := NULL;
8209 
8210 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8211 l_bflow_class_code           := '';    -- 4219869 Business Flow
8212 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8213 l_budgetary_control_flag     := 'N';
8214 
8215 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8216 l_bflow_applied_to_amt       := NULL; -- 5132302
8217 l_entered_amt_idx            := NULL;          -- 4262811
8218 l_accted_amt_idx             := NULL;          -- 4262811
8219 l_acc_rev_flag               := NULL;          -- 4262811
8220 l_accrual_line_num           := NULL;          -- 4262811
8221 l_tmp_amt                    := NULL;          -- 4262811
8222 --
8223  
8224 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8225     l_balance_type_code <> 'B' THEN
8226 IF NVL(p_source_24,9E125) =  35
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_000007_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           := 'USER_DEFINE';
8749 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
8750 l_line_definition_owner_code := 'S';
8751 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
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_000007_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           := 'FOB_SHIP_SENDER_SHIP';
9304 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_ALL';
9305 l_line_definition_owner_code := 'S';
9306 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP';
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) =  2 AND 
9336 p_source_22 >  0
9337  THEN 
9338 
9339    --
9340    XLA_AE_LINES_PKG.SetNewLine;
9341 
9342    p_balance_type_code          := l_balance_type_code;
9343    -- set the flag so later we will know whether the gain loss line needs to be created
9344    
9345    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9346      p_actual_flag :='A';
9347    END IF;
9348 
9349    --
9350    -- bulk performance
9351    --
9352    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9353                                       p_header_num   => 0); -- 4262811
9354    --
9355    -- set accounting line options
9356    --
9357    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9358            p_natural_side_code          => 'D'
9359          , p_gain_or_loss_flag          => 'N'
9360          , p_gl_transfer_mode_code      => 'S'
9361          , p_acct_entry_type_code       => 'A'
9362          , p_switch_side_flag           => 'Y'
9363          , p_merge_duplicate_code       => 'N'
9364          );
9365    --
9366    l_acc_rev_natural_side_code := 'C';  -- 4262811
9367    -- 
9368    --
9369    -- set accounting line type info
9370    --
9371    xla_ae_lines_pkg.SetAcctLineType
9372       (p_component_type             => l_component_type
9373       ,p_event_type_code            => l_event_type_code
9374       ,p_line_definition_owner_code => l_line_definition_owner_code
9375       ,p_line_definition_code       => l_line_definition_code
9376       ,p_accounting_line_code       => l_component_code
9377       ,p_accounting_line_type_code  => l_component_type_code
9378       ,p_accounting_line_appl_id    => l_component_appl_id
9379       ,p_amb_context_code           => l_amb_context_code
9380       ,p_entity_code                => l_entity_code
9381       ,p_event_class_code           => l_event_class_code);
9382    --
9383    -- set accounting class
9384    --
9385    xla_ae_lines_pkg.SetAcctClass(
9386            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
9387          , p_ae_header_id           => l_ae_header_id
9388          );
9389 
9390    --
9391    -- set rounding class
9392    --
9393    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9394                       'COST_OF_GOODS_SOLD';
9395 
9396    --
9397    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9398    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9399    --
9400    -- bulk performance
9401    --
9402    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9403 
9404    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9405       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9406 
9407    -- 4955764
9408    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9409       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9410 
9411    -- 4458381 Public Sector Enh
9412    
9413    --
9414    -- set accounting attributes for the line type
9415    --
9416    l_entered_amt_idx := 3;
9417    l_accted_amt_idx  := 8;
9418    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9419    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9420    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
9421    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
9422    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
9423    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
9424    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
9425    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
9426    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
9427    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
9428    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
9429    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
9430    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
9431    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
9432    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
9433    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
9434    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
9435 
9436    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9437    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9438 
9439    ---------------------------------------------------------------------------------------------------------------
9440    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9441    ---------------------------------------------------------------------------------------------------------------
9442    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9443 
9444    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9445    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9446 
9447    IF xla_accounting_cache_pkg.GetValueChar
9448          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9449          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9450    AND l_bflow_method_code = 'PRIOR_ENTRY'
9451 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9452    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9453          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9454        )
9455    THEN
9456          xla_ae_lines_pkg.BflowUpgEntry
9457            (p_business_method_code    => l_bflow_method_code
9458            ,p_business_class_code     => l_bflow_class_code
9459            ,p_balance_type            => l_balance_type_code);
9460    ELSE
9461       NULL;
9462 -- No business flow processing for business flow method of NONE.
9463    END IF;
9464 
9465    --
9466    -- call analytical criteria
9467    --
9468    
9469    --
9470    -- call description
9471    --
9472    -- No description or it is inherited.
9473    --
9474    -- call ADRs
9475    -- Bug 4922099
9476    --
9477    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9478         (NVL(l_actual_upg_option, 'N') = 'O') OR
9479         (NVL(l_enc_upg_option, 'N') = 'O')
9480       )
9481    THEN
9482    NULL;
9483    --
9484    --
9485    
9486   l_ccid := AcctDerRule_4(
9487            p_application_id           => p_application_id
9488          , p_ae_header_id             => l_ae_header_id 
9489 , p_source_4 => p_source_4
9490          , x_transaction_coa_id       => l_adr_transaction_coa_id
9491          , x_accounting_coa_id        => l_adr_accounting_coa_id
9492          , x_value_type_code          => l_adr_value_type_code
9493          , p_side                     => 'NA'
9494    );
9495 
9496    xla_ae_lines_pkg.set_ccid(
9497     p_code_combination_id          => l_ccid
9498   , p_value_type_code              => l_adr_value_type_code
9499   , p_transaction_coa_id           => l_adr_transaction_coa_id
9500   , p_accounting_coa_id            => l_adr_accounting_coa_id
9501   , p_adr_code                     => 'CST_DEFAULT'
9502   , p_adr_type_code                => 'S'
9503   , p_component_type               => l_component_type
9504   , p_component_code               => l_component_code
9505   , p_component_type_code          => l_component_type_code
9506   , p_component_appl_id            => l_component_appl_id
9507   , p_amb_context_code             => l_amb_context_code
9508   , p_side                         => 'NA'
9509   );
9510 
9511 
9512    --
9513    --
9514    END IF;
9515    --
9516    -- Bug 4922099
9517    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9518           (NVL(l_enc_upg_option, 'N') = 'O')
9519         ) AND
9520         (l_bflow_method_code = 'PRIOR_ENTRY')
9521       )
9522    THEN
9523       IF
9524       --
9525       1 = 2
9526       --
9527       THEN
9528       xla_accounting_err_pkg.build_message
9529                                     (p_appli_s_name            => 'XLA'
9530                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9531                                     ,p_token_1                 => 'LINE_NUMBER'
9532                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9533                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9534                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9535                                                                              l_component_type
9536                                                                             ,l_component_code
9537                                                                             ,l_component_type_code
9538                                                                             ,l_component_appl_id
9539                                                                             ,l_amb_context_code
9540                                                                             ,l_entity_code
9541                                                                             ,l_event_class_code
9542                                                                            )
9543                                     ,p_token_3                 => 'OWNER'
9544                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9545                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9546                                                                           ,p_lookup_code    => l_component_type_code
9547                                                                          )
9548                                     ,p_token_4                 => 'PRODUCT_NAME'
9549                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9550                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9551                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9552                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9553                                     ,p_ae_header_id            =>  NULL
9554                                        );
9555 
9556         IF (C_LEVEL_ERROR>= g_log_level) THEN
9557                  trace
9558                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9559                       ,p_level    => C_LEVEL_ERROR
9560                       ,p_module   => l_log_module);
9561         END IF;
9562       END IF;
9563    END IF;
9564    --
9565    --
9566    ------------------------------------------------------------------------------------------------
9567    -- 4219869 Business Flow
9568    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9569    -- Prior Entry.  Currently, the following code is always generated.
9570    ------------------------------------------------------------------------------------------------
9571    XLA_AE_LINES_PKG.ValidateCurrentLine;
9572 
9573    ------------------------------------------------------------------------------------
9574    -- 4219869 Business Flow
9575    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9576    ------------------------------------------------------------------------------------
9577    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9578 
9579    ----------------------------------------------------------------------------------
9580    -- 4219869 Business Flow
9581    -- Update journal entry status -- Need to generate this within IF <condition>
9582    ----------------------------------------------------------------------------------
9583    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9584          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9585          ,p_balance_type_code => l_balance_type_code
9586          );
9587 
9588    -------------------------------------------------------------------------------------------
9589    -- 4262811 - Generate the Accrual Reversal lines
9590    -------------------------------------------------------------------------------------------
9591    BEGIN
9592       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9593                               (g_array_event(p_event_id).array_value_num('header_index'));
9594       IF l_acc_rev_flag IS NULL THEN
9595          l_acc_rev_flag := 'N';
9596       END IF;
9597    EXCEPTION
9598       WHEN OTHERS THEN
9599          l_acc_rev_flag := 'N';
9600    END;
9601    --
9602    IF (l_acc_rev_flag = 'Y') THEN
9603 
9604        -- 4645092  ------------------------------------------------------------------------------
9605        -- To allow MPA report to determine if it should generate report process
9606        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9607        ------------------------------------------------------------------------------------------
9608 
9609        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9610        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9611    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
9612    -- call ADRs
9613    -- Bug 4922099
9614    --
9615    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9616         (NVL(l_actual_upg_option, 'N') = 'O') OR
9617         (NVL(l_enc_upg_option, 'N') = 'O')
9618       )
9619    THEN
9620    NULL;
9621    --
9622    --
9623    
9624   l_ccid := AcctDerRule_4(
9625            p_application_id           => p_application_id
9626          , p_ae_header_id             => l_ae_header_id 
9627 , p_source_4 => p_source_4
9628          , x_transaction_coa_id       => l_adr_transaction_coa_id
9629          , x_accounting_coa_id        => l_adr_accounting_coa_id
9630          , x_value_type_code          => l_adr_value_type_code
9631          , p_side                     => 'NA'
9632    );
9633 
9634    xla_ae_lines_pkg.set_ccid(
9635     p_code_combination_id          => l_ccid
9636   , p_value_type_code              => l_adr_value_type_code
9637   , p_transaction_coa_id           => l_adr_transaction_coa_id
9638   , p_accounting_coa_id            => l_adr_accounting_coa_id
9639   , p_adr_code                     => 'CST_DEFAULT'
9640   , p_adr_type_code                => 'S'
9641   , p_component_type               => l_component_type
9642   , p_component_code               => l_component_code
9643   , p_component_type_code          => l_component_type_code
9644   , p_component_appl_id            => l_component_appl_id
9645   , p_amb_context_code             => l_amb_context_code
9646   , p_side                         => 'NA'
9647   );
9648 
9649 
9650    --
9651    --
9652    END IF;
9653 
9654        --
9655        -- Update the line information that should be overwritten
9656        --
9657        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9658                                          p_header_num   => 1);
9659        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9660 
9661        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9662 
9663        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9664           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9665        END IF;
9666 
9667       --
9668       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9669       --
9670       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9671           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9672       ELSE
9673           ---------------------------------------------------------------------------------------------------
9674           -- 4262811a Switch Sign
9675           ---------------------------------------------------------------------------------------------------
9676           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9677           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9678                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9679           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9680                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9681           -- 5132302
9682           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9683                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9684 
9685       END IF;
9686 
9687       -- 4955764
9688       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9689       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9690 
9691 
9692       XLA_AE_LINES_PKG.ValidateCurrentLine;
9693       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9694 
9695       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9696                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9697                ,p_balance_type_code => l_balance_type_code);
9698 
9699    END IF;
9700 
9701    -----------------------------------------------------------------------------------------
9702    -- 4262811 Multiperiod Accounting
9703    -----------------------------------------------------------------------------------------
9704      -- No MPA option is assigned.
9705 
9706 
9707 END IF;
9708 END IF;
9709 --
9710 
9711 --
9712 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9713    trace
9714       (p_msg      => 'END of AcctLineType_20'
9715       ,p_level    => C_LEVEL_PROCEDURE
9716       ,p_module   => l_log_module);
9717 END IF;
9718 --
9719 EXCEPTION
9720   WHEN xla_exceptions_pkg.application_exception THEN
9721       RAISE;
9722   WHEN OTHERS THEN
9723        xla_exceptions_pkg.raise_message
9724            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_20');
9725 END AcctLineType_20;
9726 --
9727 
9728 ---------------------------------------
9729 --
9730 -- PRIVATE FUNCTION
9731 --         AcctLineType_21
9732 --
9733 ---------------------------------------
9734 PROCEDURE AcctLineType_21 (
9735   p_application_id        IN NUMBER
9736  ,p_event_id              IN NUMBER
9737  ,p_calculate_acctd_flag  IN VARCHAR2
9738  ,p_calculate_g_l_flag    IN VARCHAR2
9739  ,p_actual_flag           IN OUT VARCHAR2
9740  ,p_balance_type_code     OUT VARCHAR2
9741  ,p_gain_or_loss_ref      OUT VARCHAR2
9742  
9743 --Cost Management Default Account
9744  , p_source_4            IN NUMBER
9745 --DISTRIBUTION_IDENTIFIER
9746  , p_source_11            IN NUMBER
9747 --Distribution Type
9748  , p_source_12            IN VARCHAR2
9749  , p_source_12_meaning    IN VARCHAR2
9750 --Entered Currency Code
9751  , p_source_15            IN VARCHAR2
9752 --Entered Amount
9753  , p_source_18            IN NUMBER
9754 --Currency Conversion Date
9755  , p_source_19            IN DATE
9756 --Currency Conversion Rate
9757  , p_source_20            IN NUMBER
9758 --Currency Conversion Type
9759  , p_source_21            IN VARCHAR2
9760 --Accounted Amount
9761  , p_source_22            IN NUMBER
9762 --Accounting Line Type
9763  , p_source_24            IN NUMBER
9764 )
9765 IS
9766 
9767 l_component_type              VARCHAR2(80);
9768 l_component_code              VARCHAR2(30);
9769 l_component_type_code         VARCHAR2(1);
9770 l_component_appl_id           INTEGER;
9771 l_amb_context_code            VARCHAR2(30);
9772 l_entity_code                 VARCHAR2(30);
9773 l_event_class_code            VARCHAR2(30);
9774 l_ae_header_id                NUMBER;
9775 l_event_type_code             VARCHAR2(30);
9776 l_line_definition_code        VARCHAR2(30);
9777 l_line_definition_owner_code  VARCHAR2(1);
9778 --
9779 -- adr variables
9780 l_segment                     VARCHAR2(30);
9781 l_ccid                        NUMBER;
9782 l_adr_transaction_coa_id      NUMBER;
9783 l_adr_accounting_coa_id       NUMBER;
9784 l_adr_flexfield_segment_code  VARCHAR2(30);
9785 l_adr_flex_value_set_id       NUMBER;
9786 l_adr_value_type_code         VARCHAR2(30);
9787 l_adr_value_combination_id    NUMBER;
9788 l_adr_value_segment_code      VARCHAR2(30);
9789 
9790 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9791 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9792 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9793 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9794 
9795 -- 4262811 Variables ------------------------------------------------------------------------------------------
9796 l_entered_amt_idx             NUMBER;
9797 l_accted_amt_idx              NUMBER;
9798 l_acc_rev_flag                VARCHAR2(1);
9799 l_accrual_line_num            NUMBER;
9800 l_tmp_amt                     NUMBER;
9801 l_acc_rev_natural_side_code   VARCHAR2(1);
9802 
9803 l_num_entries                 NUMBER;
9804 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9805 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9806 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9807 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9808 l_recog_line_1                NUMBER;
9809 l_recog_line_2                NUMBER;
9810 
9811 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9812 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9813 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9814 
9815 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9816 
9817 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9818 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9819 
9820 ---------------------------------------------------------------------------------------------------------------
9821 
9822 
9823 --
9824 -- bulk performance
9825 --
9826 l_balance_type_code           VARCHAR2(1);
9827 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9828 l_log_module                  VARCHAR2(240);
9829 
9830 --
9831 -- Upgrade strategy
9832 --
9833 l_actual_upg_option           VARCHAR2(1);
9834 l_enc_upg_option           VARCHAR2(1);
9835 
9836 --
9837 BEGIN
9838 --
9839 IF g_log_enabled THEN
9840       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_21';
9841 END IF;
9842 --
9843 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9844 
9845       trace
9846          (p_msg      => 'BEGIN of AcctLineType_21'
9847          ,p_level    => C_LEVEL_PROCEDURE
9848          ,p_module   => l_log_module);
9849 
9850 END IF;
9851 --
9852 l_component_type             := 'AMB_JLT';
9853 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
9854 l_component_type_code        := 'S';
9855 l_component_appl_id          :=  707;
9856 l_amb_context_code           := 'DEFAULT';
9857 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
9858 l_event_class_code           := 'WIP_COST_UPD';
9859 l_event_type_code            := 'WIP_COST_UPD_ALL';
9860 l_line_definition_owner_code := 'S';
9861 l_line_definition_code       := 'COST_UPDATE';
9862 --
9863 l_balance_type_code          := 'A';
9864 l_segment                     := NULL;
9865 l_ccid                        := NULL;
9866 l_adr_transaction_coa_id      := NULL;
9867 l_adr_accounting_coa_id       := NULL;
9868 l_adr_flexfield_segment_code  := NULL;
9869 l_adr_flex_value_set_id       := NULL;
9870 l_adr_value_type_code         := NULL;
9871 l_adr_value_combination_id    := NULL;
9872 l_adr_value_segment_code      := NULL;
9873 
9874 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
9875 l_bflow_class_code           := '';    -- 4219869 Business Flow
9876 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9877 l_budgetary_control_flag     := 'N';
9878 
9879 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9880 l_bflow_applied_to_amt       := NULL; -- 5132302
9881 l_entered_amt_idx            := NULL;          -- 4262811
9882 l_accted_amt_idx             := NULL;          -- 4262811
9883 l_acc_rev_flag               := NULL;          -- 4262811
9884 l_accrual_line_num           := NULL;          -- 4262811
9885 l_tmp_amt                    := NULL;          -- 4262811
9886 --
9887  
9888 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9889     l_balance_type_code <> 'B' THEN
9890 IF NVL(p_source_24,9E125) =  2
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_UPDATE_ADJUSTMENT'
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_UPDATE_ADJUSTMENT';
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_000007_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                := 'MTL_ACCOUNTING_EVENTS';
10412 l_event_class_code           := 'USER_DEFINE';
10413 l_event_type_code            := 'UIPV_TXFR';
10414 l_line_definition_owner_code := 'S';
10415 l_line_definition_code       := 'USER_IPV_TXFR';
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_000007_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           := 'SALES_ORDER';
10967 l_event_type_code            := 'SALES_ORDER_ALL';
10968 l_line_definition_owner_code := 'S';
10969 l_line_definition_code       := 'SALES_ORDER';
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) =  37
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_000007_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_000007_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_VARIANCE';
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           := 'USER_DEFINE';
12075 l_event_type_code            := 'UAVG_COST_UPD';
12076 l_line_definition_owner_code := 'S';
12077 l_line_definition_code       := 'USER_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) =  13
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_VARIANCE'
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_VARIANCE';
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_000007_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_VARIANCE';
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           := 'USER_DEFINE';
12629 l_event_type_code            := 'UMISC_ISSUE';
12630 l_line_definition_owner_code := 'S';
12631 l_line_definition_code       := 'USER_ISSUE';
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) =  13
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_VARIANCE'
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_VARIANCE';
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_000007_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 --Applied to Application ID
13070  , p_source_6            IN NUMBER
13071 --Applied to Distribution Link Type
13072  , p_source_7            IN VARCHAR2
13073 --Applied to Entity Code
13074  , p_source_8            IN VARCHAR2
13075 --DISTRIBUTION_IDENTIFIER
13076  , p_source_11            IN NUMBER
13077 --Distribution Type
13078  , p_source_12            IN VARCHAR2
13079  , p_source_12_meaning    IN VARCHAR2
13080 --Encumbrance Reversal Amount Entered
13081  , p_source_14            IN NUMBER
13082 --Entered Currency Code
13083  , p_source_15            IN VARCHAR2
13084 --Transaction Encumbrance Reversal Amount
13085  , p_source_16            IN NUMBER
13086 --Entered Amount
13087  , p_source_18            IN NUMBER
13088 --Currency Conversion Date
13089  , p_source_19            IN DATE
13090 --Currency Conversion Rate
13091  , p_source_20            IN NUMBER
13092 --Currency Conversion Type
13093  , p_source_21            IN VARCHAR2
13094 --Accounted Amount
13095  , p_source_22            IN NUMBER
13096 --Accounting Line Type
13097  , p_source_24            IN NUMBER
13098 --Costing Encumbrance Upgrade Option
13099  , p_source_27            IN VARCHAR2
13100 --TXN_PO_DISTRIBUTION_ID
13101  , p_source_28            IN NUMBER
13102 --TXN_PO_HEADER_ID
13103  , p_source_29            IN NUMBER
13104 --Requisition Budget Account
13105  , p_source_30            IN NUMBER
13106 --Requisition Encumbrance Type Identifier
13107  , p_source_31            IN NUMBER
13108 )
13109 IS
13110 
13111 l_component_type              VARCHAR2(80);
13112 l_component_code              VARCHAR2(30);
13113 l_component_type_code         VARCHAR2(1);
13114 l_component_appl_id           INTEGER;
13115 l_amb_context_code            VARCHAR2(30);
13116 l_entity_code                 VARCHAR2(30);
13117 l_event_class_code            VARCHAR2(30);
13118 l_ae_header_id                NUMBER;
13119 l_event_type_code             VARCHAR2(30);
13120 l_line_definition_code        VARCHAR2(30);
13121 l_line_definition_owner_code  VARCHAR2(1);
13122 --
13123 -- adr variables
13124 l_segment                     VARCHAR2(30);
13125 l_ccid                        NUMBER;
13126 l_adr_transaction_coa_id      NUMBER;
13127 l_adr_accounting_coa_id       NUMBER;
13128 l_adr_flexfield_segment_code  VARCHAR2(30);
13129 l_adr_flex_value_set_id       NUMBER;
13130 l_adr_value_type_code         VARCHAR2(30);
13131 l_adr_value_combination_id    NUMBER;
13132 l_adr_value_segment_code      VARCHAR2(30);
13133 
13134 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13135 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13136 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13137 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13138 
13139 -- 4262811 Variables ------------------------------------------------------------------------------------------
13140 l_entered_amt_idx             NUMBER;
13141 l_accted_amt_idx              NUMBER;
13142 l_acc_rev_flag                VARCHAR2(1);
13143 l_accrual_line_num            NUMBER;
13144 l_tmp_amt                     NUMBER;
13145 l_acc_rev_natural_side_code   VARCHAR2(1);
13146 
13147 l_num_entries                 NUMBER;
13148 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13149 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13150 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13151 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13152 l_recog_line_1                NUMBER;
13153 l_recog_line_2                NUMBER;
13154 
13155 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13156 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13157 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13158 
13159 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13160 
13161 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13162 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13163 
13164 ---------------------------------------------------------------------------------------------------------------
13165 
13166 
13167 --
13168 -- bulk performance
13169 --
13170 l_balance_type_code           VARCHAR2(1);
13171 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13172 l_log_module                  VARCHAR2(240);
13173 
13174 --
13175 -- Upgrade strategy
13176 --
13177 l_actual_upg_option           VARCHAR2(1);
13178 l_enc_upg_option           VARCHAR2(1);
13179 
13180 --
13181 BEGIN
13182 --
13183 IF g_log_enabled THEN
13184       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_27';
13185 END IF;
13186 --
13187 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13188 
13189       trace
13190          (p_msg      => 'BEGIN of AcctLineType_27'
13191          ,p_level    => C_LEVEL_PROCEDURE
13192          ,p_module   => l_log_module);
13193 
13194 END IF;
13195 --
13196 l_component_type             := 'AMB_JLT';
13197 l_component_code             := 'COST_VARIANCE';
13198 l_component_type_code        := 'S';
13199 l_component_appl_id          :=  707;
13200 l_amb_context_code           := 'DEFAULT';
13201 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
13202 l_event_class_code           := 'DIR_INTERORG_RCPT';
13203 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
13204 l_line_definition_owner_code := 'S';
13205 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
13206 --
13207 l_balance_type_code          := 'A';
13208 l_segment                     := NULL;
13209 l_ccid                        := NULL;
13210 l_adr_transaction_coa_id      := NULL;
13211 l_adr_accounting_coa_id       := NULL;
13212 l_adr_flexfield_segment_code  := NULL;
13213 l_adr_flex_value_set_id       := NULL;
13214 l_adr_value_type_code         := NULL;
13215 l_adr_value_combination_id    := NULL;
13216 l_adr_value_segment_code      := NULL;
13217 
13218 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13219 l_bflow_class_code           := '';    -- 4219869 Business Flow
13220 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13221 l_budgetary_control_flag     := 'N';
13222 
13223 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13224 l_bflow_applied_to_amt       := NULL; -- 5132302
13225 l_entered_amt_idx            := NULL;          -- 4262811
13226 l_accted_amt_idx             := NULL;          -- 4262811
13227 l_acc_rev_flag               := NULL;          -- 4262811
13228 l_accrual_line_num           := NULL;          -- 4262811
13229 l_tmp_amt                    := NULL;          -- 4262811
13230 --
13231  
13232 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13233     l_balance_type_code <> 'B' THEN
13234 IF NVL(p_source_24,9E125) =  13
13235  THEN 
13236 
13237    --
13238    XLA_AE_LINES_PKG.SetNewLine;
13239 
13240    p_balance_type_code          := l_balance_type_code;
13241    -- set the flag so later we will know whether the gain loss line needs to be created
13242    
13243    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13244      p_actual_flag :='A';
13245    END IF;
13246 
13247    --
13248    -- bulk performance
13249    --
13250    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13251                                       p_header_num   => 0); -- 4262811
13252    --
13253    -- set accounting line options
13254    --
13255    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13256            p_natural_side_code          => 'D'
13257          , p_gain_or_loss_flag          => 'N'
13258          , p_gl_transfer_mode_code      => 'S'
13259          , p_acct_entry_type_code       => 'A'
13260          , p_switch_side_flag           => 'Y'
13261          , p_merge_duplicate_code       => 'N'
13262          );
13263    --
13264    l_acc_rev_natural_side_code := 'C';  -- 4262811
13265    -- 
13266    --
13267    -- set accounting line type info
13268    --
13269    xla_ae_lines_pkg.SetAcctLineType
13270       (p_component_type             => l_component_type
13271       ,p_event_type_code            => l_event_type_code
13272       ,p_line_definition_owner_code => l_line_definition_owner_code
13273       ,p_line_definition_code       => l_line_definition_code
13274       ,p_accounting_line_code       => l_component_code
13275       ,p_accounting_line_type_code  => l_component_type_code
13276       ,p_accounting_line_appl_id    => l_component_appl_id
13277       ,p_amb_context_code           => l_amb_context_code
13278       ,p_entity_code                => l_entity_code
13279       ,p_event_class_code           => l_event_class_code);
13280    --
13281    -- set accounting class
13282    --
13283    xla_ae_lines_pkg.SetAcctClass(
13284            p_accounting_class_code  => 'COST_VARIANCE'
13285          , p_ae_header_id           => l_ae_header_id
13286          );
13287 
13288    --
13289    -- set rounding class
13290    --
13291    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13292                       'COST_VARIANCE';
13293 
13294    --
13295    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13296    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13297    --
13298    -- bulk performance
13299    --
13300    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13301 
13302    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13303       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13304 
13305    -- 4955764
13306    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13307       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13308 
13309    -- 4458381 Public Sector Enh
13310    
13311    --
13312    -- set accounting attributes for the line type
13313    --
13314    l_entered_amt_idx := 17;
13315    l_accted_amt_idx  := 22;
13316    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13317    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
13318    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
13319    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
13320    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
13321    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
13322    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
13323    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
13324    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
13325    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
13326    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
13327    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
13328    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
13329    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
13330    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
13331    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
13332    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
13333    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
13334    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
13335    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
13336    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
13337    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
13338    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
13339    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
13340    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
13341    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
13342    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
13343    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
13344    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
13345    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
13346    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
13347    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
13348    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
13349    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
13350    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
13351    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
13352    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
13353    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
13354    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
13355    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
13356    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
13357    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
13358    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
13359    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
13360    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
13361    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
13362    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
13363    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
13364    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
13365 
13366    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13367    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13368 
13369    ---------------------------------------------------------------------------------------------------------------
13370    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13371    ---------------------------------------------------------------------------------------------------------------
13372    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13373 
13374    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13375    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13376 
13377    IF xla_accounting_cache_pkg.GetValueChar
13378          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13379          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13380    AND l_bflow_method_code = 'PRIOR_ENTRY'
13381 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13382    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13383          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13384        )
13385    THEN
13386          xla_ae_lines_pkg.BflowUpgEntry
13387            (p_business_method_code    => l_bflow_method_code
13388            ,p_business_class_code     => l_bflow_class_code
13389            ,p_balance_type            => l_balance_type_code);
13390    ELSE
13391       NULL;
13392 -- No business flow processing for business flow method of NONE.
13393    END IF;
13394 
13395    --
13396    -- call analytical criteria
13397    --
13398    
13399    --
13400    -- call description
13401    --
13402    -- No description or it is inherited.
13403    --
13404    -- call ADRs
13405    -- Bug 4922099
13406    --
13407    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13408         (NVL(l_actual_upg_option, 'N') = 'O') OR
13409         (NVL(l_enc_upg_option, 'N') = 'O')
13410       )
13411    THEN
13412    NULL;
13413    --
13414    --
13415    
13416   l_ccid := AcctDerRule_4(
13417            p_application_id           => p_application_id
13418          , p_ae_header_id             => l_ae_header_id 
13419 , p_source_4 => p_source_4
13420          , x_transaction_coa_id       => l_adr_transaction_coa_id
13421          , x_accounting_coa_id        => l_adr_accounting_coa_id
13422          , x_value_type_code          => l_adr_value_type_code
13423          , p_side                     => 'NA'
13424    );
13425 
13426    xla_ae_lines_pkg.set_ccid(
13427     p_code_combination_id          => l_ccid
13428   , p_value_type_code              => l_adr_value_type_code
13429   , p_transaction_coa_id           => l_adr_transaction_coa_id
13430   , p_accounting_coa_id            => l_adr_accounting_coa_id
13431   , p_adr_code                     => 'CST_DEFAULT'
13432   , p_adr_type_code                => 'S'
13433   , p_component_type               => l_component_type
13434   , p_component_code               => l_component_code
13435   , p_component_type_code          => l_component_type_code
13436   , p_component_appl_id            => l_component_appl_id
13437   , p_amb_context_code             => l_amb_context_code
13438   , p_side                         => 'NA'
13439   );
13440 
13441 
13442    --
13443    --
13444    END IF;
13445    --
13446    -- Bug 4922099
13447    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13448           (NVL(l_enc_upg_option, 'N') = 'O')
13449         ) AND
13450         (l_bflow_method_code = 'PRIOR_ENTRY')
13451       )
13452    THEN
13453       IF
13454       --
13455       1 = 2
13456       --
13457       THEN
13458       xla_accounting_err_pkg.build_message
13459                                     (p_appli_s_name            => 'XLA'
13460                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13461                                     ,p_token_1                 => 'LINE_NUMBER'
13462                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13463                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13464                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13465                                                                              l_component_type
13466                                                                             ,l_component_code
13467                                                                             ,l_component_type_code
13468                                                                             ,l_component_appl_id
13469                                                                             ,l_amb_context_code
13470                                                                             ,l_entity_code
13471                                                                             ,l_event_class_code
13472                                                                            )
13473                                     ,p_token_3                 => 'OWNER'
13474                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13475                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13476                                                                           ,p_lookup_code    => l_component_type_code
13477                                                                          )
13478                                     ,p_token_4                 => 'PRODUCT_NAME'
13479                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13480                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13481                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13482                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13483                                     ,p_ae_header_id            =>  NULL
13484                                        );
13485 
13486         IF (C_LEVEL_ERROR>= g_log_level) THEN
13487                  trace
13488                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13489                       ,p_level    => C_LEVEL_ERROR
13490                       ,p_module   => l_log_module);
13491         END IF;
13492       END IF;
13493    END IF;
13494    --
13495    --
13496    ------------------------------------------------------------------------------------------------
13497    -- 4219869 Business Flow
13498    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13499    -- Prior Entry.  Currently, the following code is always generated.
13500    ------------------------------------------------------------------------------------------------
13501    XLA_AE_LINES_PKG.ValidateCurrentLine;
13502 
13503    ------------------------------------------------------------------------------------
13504    -- 4219869 Business Flow
13505    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13506    ------------------------------------------------------------------------------------
13507    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13508 
13509    ----------------------------------------------------------------------------------
13510    -- 4219869 Business Flow
13511    -- Update journal entry status -- Need to generate this within IF <condition>
13512    ----------------------------------------------------------------------------------
13513    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13514          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13515          ,p_balance_type_code => l_balance_type_code
13516          );
13517 
13518    -------------------------------------------------------------------------------------------
13519    -- 4262811 - Generate the Accrual Reversal lines
13520    -------------------------------------------------------------------------------------------
13521    BEGIN
13522       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13523                               (g_array_event(p_event_id).array_value_num('header_index'));
13524       IF l_acc_rev_flag IS NULL THEN
13525          l_acc_rev_flag := 'N';
13526       END IF;
13527    EXCEPTION
13528       WHEN OTHERS THEN
13529          l_acc_rev_flag := 'N';
13530    END;
13531    --
13532    IF (l_acc_rev_flag = 'Y') THEN
13533 
13534        -- 4645092  ------------------------------------------------------------------------------
13535        -- To allow MPA report to determine if it should generate report process
13536        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13537        ------------------------------------------------------------------------------------------
13538 
13539        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13540        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13541    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
13542    -- call ADRs
13543    -- Bug 4922099
13544    --
13545    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13546         (NVL(l_actual_upg_option, 'N') = 'O') OR
13547         (NVL(l_enc_upg_option, 'N') = 'O')
13548       )
13549    THEN
13550    NULL;
13551    --
13552    --
13553    
13554   l_ccid := AcctDerRule_4(
13555            p_application_id           => p_application_id
13556          , p_ae_header_id             => l_ae_header_id 
13557 , p_source_4 => p_source_4
13558          , x_transaction_coa_id       => l_adr_transaction_coa_id
13559          , x_accounting_coa_id        => l_adr_accounting_coa_id
13560          , x_value_type_code          => l_adr_value_type_code
13561          , p_side                     => 'NA'
13562    );
13563 
13564    xla_ae_lines_pkg.set_ccid(
13565     p_code_combination_id          => l_ccid
13566   , p_value_type_code              => l_adr_value_type_code
13567   , p_transaction_coa_id           => l_adr_transaction_coa_id
13568   , p_accounting_coa_id            => l_adr_accounting_coa_id
13569   , p_adr_code                     => 'CST_DEFAULT'
13570   , p_adr_type_code                => 'S'
13571   , p_component_type               => l_component_type
13572   , p_component_code               => l_component_code
13573   , p_component_type_code          => l_component_type_code
13574   , p_component_appl_id            => l_component_appl_id
13575   , p_amb_context_code             => l_amb_context_code
13576   , p_side                         => 'NA'
13577   );
13578 
13579 
13580    --
13581    --
13582    END IF;
13583 
13584        --
13585        -- Update the line information that should be overwritten
13586        --
13587        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13588                                          p_header_num   => 1);
13589        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13590 
13591        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13592 
13593        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13594           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13595        END IF;
13596 
13597       --
13598       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13599       --
13600       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13601           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13602       ELSE
13603           ---------------------------------------------------------------------------------------------------
13604           -- 4262811a Switch Sign
13605           ---------------------------------------------------------------------------------------------------
13606           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13607           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13608                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13609           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13610                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13611           -- 5132302
13612           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13613                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13614 
13615       END IF;
13616 
13617       -- 4955764
13618       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13619       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13620 
13621 
13622       XLA_AE_LINES_PKG.ValidateCurrentLine;
13623       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13624 
13625       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13626                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13627                ,p_balance_type_code => l_balance_type_code);
13628 
13629    END IF;
13630 
13631    -----------------------------------------------------------------------------------------
13632    -- 4262811 Multiperiod Accounting
13633    -----------------------------------------------------------------------------------------
13634      -- No MPA option is assigned.
13635 
13636 
13637 END IF;
13638 END IF;
13639 --
13640 
13641 --
13642 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13643    trace
13644       (p_msg      => 'END of AcctLineType_27'
13645       ,p_level    => C_LEVEL_PROCEDURE
13646       ,p_module   => l_log_module);
13647 END IF;
13648 --
13649 EXCEPTION
13650   WHEN xla_exceptions_pkg.application_exception THEN
13651       RAISE;
13652   WHEN OTHERS THEN
13653        xla_exceptions_pkg.raise_message
13654            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_27');
13655 END AcctLineType_27;
13656 --
13657 
13658 ---------------------------------------
13659 --
13660 -- PRIVATE FUNCTION
13661 --         AcctLineType_28
13662 --
13663 ---------------------------------------
13664 PROCEDURE AcctLineType_28 (
13665   p_application_id        IN NUMBER
13666  ,p_event_id              IN NUMBER
13667  ,p_calculate_acctd_flag  IN VARCHAR2
13668  ,p_calculate_g_l_flag    IN VARCHAR2
13669  ,p_actual_flag           IN OUT VARCHAR2
13670  ,p_balance_type_code     OUT VARCHAR2
13671  ,p_gain_or_loss_ref      OUT VARCHAR2
13672  
13673 --Cost Management Default Account
13674  , p_source_4            IN NUMBER
13675 --DISTRIBUTION_IDENTIFIER
13676  , p_source_11            IN NUMBER
13677 --Distribution Type
13678  , p_source_12            IN VARCHAR2
13679  , p_source_12_meaning    IN VARCHAR2
13680 --Entered Currency Code
13681  , p_source_15            IN VARCHAR2
13682 --Entered Amount
13683  , p_source_18            IN NUMBER
13684 --Currency Conversion Date
13685  , p_source_19            IN DATE
13686 --Currency Conversion Rate
13687  , p_source_20            IN NUMBER
13688 --Currency Conversion Type
13689  , p_source_21            IN VARCHAR2
13690 --Accounted Amount
13691  , p_source_22            IN NUMBER
13692 --Accounting Line Type
13693  , p_source_24            IN NUMBER
13694 )
13695 IS
13696 
13697 l_component_type              VARCHAR2(80);
13698 l_component_code              VARCHAR2(30);
13699 l_component_type_code         VARCHAR2(1);
13700 l_component_appl_id           INTEGER;
13701 l_amb_context_code            VARCHAR2(30);
13702 l_entity_code                 VARCHAR2(30);
13703 l_event_class_code            VARCHAR2(30);
13704 l_ae_header_id                NUMBER;
13705 l_event_type_code             VARCHAR2(30);
13706 l_line_definition_code        VARCHAR2(30);
13707 l_line_definition_owner_code  VARCHAR2(1);
13708 --
13709 -- adr variables
13710 l_segment                     VARCHAR2(30);
13711 l_ccid                        NUMBER;
13712 l_adr_transaction_coa_id      NUMBER;
13713 l_adr_accounting_coa_id       NUMBER;
13714 l_adr_flexfield_segment_code  VARCHAR2(30);
13715 l_adr_flex_value_set_id       NUMBER;
13716 l_adr_value_type_code         VARCHAR2(30);
13717 l_adr_value_combination_id    NUMBER;
13718 l_adr_value_segment_code      VARCHAR2(30);
13719 
13720 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13721 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13722 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13723 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13724 
13725 -- 4262811 Variables ------------------------------------------------------------------------------------------
13726 l_entered_amt_idx             NUMBER;
13727 l_accted_amt_idx              NUMBER;
13728 l_acc_rev_flag                VARCHAR2(1);
13729 l_accrual_line_num            NUMBER;
13730 l_tmp_amt                     NUMBER;
13731 l_acc_rev_natural_side_code   VARCHAR2(1);
13732 
13733 l_num_entries                 NUMBER;
13734 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13735 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13736 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13737 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13738 l_recog_line_1                NUMBER;
13739 l_recog_line_2                NUMBER;
13740 
13741 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13742 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13743 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13744 
13745 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13746 
13747 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13748 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13749 
13750 ---------------------------------------------------------------------------------------------------------------
13751 
13752 
13753 --
13754 -- bulk performance
13755 --
13756 l_balance_type_code           VARCHAR2(1);
13757 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13758 l_log_module                  VARCHAR2(240);
13759 
13760 --
13761 -- Upgrade strategy
13762 --
13763 l_actual_upg_option           VARCHAR2(1);
13764 l_enc_upg_option           VARCHAR2(1);
13765 
13766 --
13767 BEGIN
13768 --
13769 IF g_log_enabled THEN
13770       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_28';
13771 END IF;
13772 --
13773 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13774 
13775       trace
13776          (p_msg      => 'BEGIN of AcctLineType_28'
13777          ,p_level    => C_LEVEL_PROCEDURE
13778          ,p_module   => l_log_module);
13779 
13780 END IF;
13781 --
13782 l_component_type             := 'AMB_JLT';
13783 l_component_code             := 'COST_VARIANCE';
13784 l_component_type_code        := 'S';
13785 l_component_appl_id          :=  707;
13786 l_amb_context_code           := 'DEFAULT';
13787 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
13788 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
13789 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
13790 l_line_definition_owner_code := 'S';
13791 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
13792 --
13793 l_balance_type_code          := 'A';
13794 l_segment                     := NULL;
13795 l_ccid                        := NULL;
13796 l_adr_transaction_coa_id      := NULL;
13797 l_adr_accounting_coa_id       := NULL;
13798 l_adr_flexfield_segment_code  := NULL;
13799 l_adr_flex_value_set_id       := NULL;
13800 l_adr_value_type_code         := NULL;
13801 l_adr_value_combination_id    := NULL;
13802 l_adr_value_segment_code      := NULL;
13803 
13804 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13805 l_bflow_class_code           := '';    -- 4219869 Business Flow
13806 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13807 l_budgetary_control_flag     := 'N';
13808 
13809 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13810 l_bflow_applied_to_amt       := NULL; -- 5132302
13811 l_entered_amt_idx            := NULL;          -- 4262811
13812 l_accted_amt_idx             := NULL;          -- 4262811
13813 l_acc_rev_flag               := NULL;          -- 4262811
13814 l_accrual_line_num           := NULL;          -- 4262811
13815 l_tmp_amt                    := NULL;          -- 4262811
13816 --
13817  
13818 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13819     l_balance_type_code <> 'B' THEN
13820 IF NVL(p_source_24,9E125) =  13
13821  THEN 
13822 
13823    --
13824    XLA_AE_LINES_PKG.SetNewLine;
13825 
13826    p_balance_type_code          := l_balance_type_code;
13827    -- set the flag so later we will know whether the gain loss line needs to be created
13828    
13829    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13830      p_actual_flag :='A';
13831    END IF;
13832 
13833    --
13834    -- bulk performance
13835    --
13836    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13837                                       p_header_num   => 0); -- 4262811
13838    --
13839    -- set accounting line options
13840    --
13841    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13842            p_natural_side_code          => 'D'
13843          , p_gain_or_loss_flag          => 'N'
13844          , p_gl_transfer_mode_code      => 'S'
13845          , p_acct_entry_type_code       => 'A'
13846          , p_switch_side_flag           => 'Y'
13847          , p_merge_duplicate_code       => 'N'
13848          );
13849    --
13850    l_acc_rev_natural_side_code := 'C';  -- 4262811
13851    -- 
13852    --
13853    -- set accounting line type info
13854    --
13855    xla_ae_lines_pkg.SetAcctLineType
13856       (p_component_type             => l_component_type
13857       ,p_event_type_code            => l_event_type_code
13858       ,p_line_definition_owner_code => l_line_definition_owner_code
13859       ,p_line_definition_code       => l_line_definition_code
13860       ,p_accounting_line_code       => l_component_code
13861       ,p_accounting_line_type_code  => l_component_type_code
13862       ,p_accounting_line_appl_id    => l_component_appl_id
13863       ,p_amb_context_code           => l_amb_context_code
13864       ,p_entity_code                => l_entity_code
13865       ,p_event_class_code           => l_event_class_code);
13866    --
13867    -- set accounting class
13868    --
13869    xla_ae_lines_pkg.SetAcctClass(
13870            p_accounting_class_code  => 'COST_VARIANCE'
13871          , p_ae_header_id           => l_ae_header_id
13872          );
13873 
13874    --
13875    -- set rounding class
13876    --
13877    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13878                       'COST_VARIANCE';
13879 
13880    --
13881    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13882    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13883    --
13884    -- bulk performance
13885    --
13886    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13887 
13888    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13889       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13890 
13891    -- 4955764
13892    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13893       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13894 
13895    -- 4458381 Public Sector Enh
13896    
13897    --
13898    -- set accounting attributes for the line type
13899    --
13900    l_entered_amt_idx := 3;
13901    l_accted_amt_idx  := 8;
13902    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13903    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13904    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
13905    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
13906    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
13907    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
13908    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
13909    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
13910    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
13911    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
13912    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
13913    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
13914    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
13915    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
13916    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
13917    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
13918    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
13919 
13920    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13921    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13922 
13923    ---------------------------------------------------------------------------------------------------------------
13924    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13925    ---------------------------------------------------------------------------------------------------------------
13926    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13927 
13928    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13929    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13930 
13931    IF xla_accounting_cache_pkg.GetValueChar
13932          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13933          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13934    AND l_bflow_method_code = 'PRIOR_ENTRY'
13935 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13936    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13937          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13938        )
13939    THEN
13940          xla_ae_lines_pkg.BflowUpgEntry
13941            (p_business_method_code    => l_bflow_method_code
13942            ,p_business_class_code     => l_bflow_class_code
13943            ,p_balance_type            => l_balance_type_code);
13944    ELSE
13945       NULL;
13946 -- No business flow processing for business flow method of NONE.
13947    END IF;
13948 
13949    --
13950    -- call analytical criteria
13951    --
13952    
13953    --
13954    -- call description
13955    --
13956    -- No description or it is inherited.
13957    --
13958    -- call ADRs
13959    -- Bug 4922099
13960    --
13961    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13962         (NVL(l_actual_upg_option, 'N') = 'O') OR
13963         (NVL(l_enc_upg_option, 'N') = 'O')
13964       )
13965    THEN
13966    NULL;
13967    --
13968    --
13969    
13970   l_ccid := AcctDerRule_4(
13971            p_application_id           => p_application_id
13972          , p_ae_header_id             => l_ae_header_id 
13973 , p_source_4 => p_source_4
13974          , x_transaction_coa_id       => l_adr_transaction_coa_id
13975          , x_accounting_coa_id        => l_adr_accounting_coa_id
13976          , x_value_type_code          => l_adr_value_type_code
13977          , p_side                     => 'NA'
13978    );
13979 
13980    xla_ae_lines_pkg.set_ccid(
13981     p_code_combination_id          => l_ccid
13982   , p_value_type_code              => l_adr_value_type_code
13983   , p_transaction_coa_id           => l_adr_transaction_coa_id
13984   , p_accounting_coa_id            => l_adr_accounting_coa_id
13985   , p_adr_code                     => 'CST_DEFAULT'
13986   , p_adr_type_code                => 'S'
13987   , p_component_type               => l_component_type
13988   , p_component_code               => l_component_code
13989   , p_component_type_code          => l_component_type_code
13990   , p_component_appl_id            => l_component_appl_id
13991   , p_amb_context_code             => l_amb_context_code
13992   , p_side                         => 'NA'
13993   );
13994 
13995 
13996    --
13997    --
13998    END IF;
13999    --
14000    -- Bug 4922099
14001    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14002           (NVL(l_enc_upg_option, 'N') = 'O')
14003         ) AND
14004         (l_bflow_method_code = 'PRIOR_ENTRY')
14005       )
14006    THEN
14007       IF
14008       --
14009       1 = 2
14010       --
14011       THEN
14012       xla_accounting_err_pkg.build_message
14013                                     (p_appli_s_name            => 'XLA'
14014                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14015                                     ,p_token_1                 => 'LINE_NUMBER'
14016                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14017                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14018                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14019                                                                              l_component_type
14020                                                                             ,l_component_code
14021                                                                             ,l_component_type_code
14022                                                                             ,l_component_appl_id
14023                                                                             ,l_amb_context_code
14024                                                                             ,l_entity_code
14025                                                                             ,l_event_class_code
14026                                                                            )
14027                                     ,p_token_3                 => 'OWNER'
14028                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14029                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14030                                                                           ,p_lookup_code    => l_component_type_code
14031                                                                          )
14032                                     ,p_token_4                 => 'PRODUCT_NAME'
14033                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14034                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14035                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14036                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14037                                     ,p_ae_header_id            =>  NULL
14038                                        );
14039 
14040         IF (C_LEVEL_ERROR>= g_log_level) THEN
14041                  trace
14042                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14043                       ,p_level    => C_LEVEL_ERROR
14044                       ,p_module   => l_log_module);
14045         END IF;
14046       END IF;
14047    END IF;
14048    --
14049    --
14050    ------------------------------------------------------------------------------------------------
14051    -- 4219869 Business Flow
14052    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14053    -- Prior Entry.  Currently, the following code is always generated.
14054    ------------------------------------------------------------------------------------------------
14055    XLA_AE_LINES_PKG.ValidateCurrentLine;
14056 
14057    ------------------------------------------------------------------------------------
14058    -- 4219869 Business Flow
14059    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14060    ------------------------------------------------------------------------------------
14061    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14062 
14063    ----------------------------------------------------------------------------------
14064    -- 4219869 Business Flow
14065    -- Update journal entry status -- Need to generate this within IF <condition>
14066    ----------------------------------------------------------------------------------
14067    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14068          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14069          ,p_balance_type_code => l_balance_type_code
14070          );
14071 
14072    -------------------------------------------------------------------------------------------
14073    -- 4262811 - Generate the Accrual Reversal lines
14074    -------------------------------------------------------------------------------------------
14075    BEGIN
14076       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14077                               (g_array_event(p_event_id).array_value_num('header_index'));
14078       IF l_acc_rev_flag IS NULL THEN
14079          l_acc_rev_flag := 'N';
14080       END IF;
14081    EXCEPTION
14082       WHEN OTHERS THEN
14083          l_acc_rev_flag := 'N';
14084    END;
14085    --
14086    IF (l_acc_rev_flag = 'Y') THEN
14087 
14088        -- 4645092  ------------------------------------------------------------------------------
14089        -- To allow MPA report to determine if it should generate report process
14090        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14091        ------------------------------------------------------------------------------------------
14092 
14093        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14094        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14095    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
14096    -- call ADRs
14097    -- Bug 4922099
14098    --
14099    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14100         (NVL(l_actual_upg_option, 'N') = 'O') OR
14101         (NVL(l_enc_upg_option, 'N') = 'O')
14102       )
14103    THEN
14104    NULL;
14105    --
14106    --
14107    
14108   l_ccid := AcctDerRule_4(
14109            p_application_id           => p_application_id
14110          , p_ae_header_id             => l_ae_header_id 
14111 , p_source_4 => p_source_4
14112          , x_transaction_coa_id       => l_adr_transaction_coa_id
14113          , x_accounting_coa_id        => l_adr_accounting_coa_id
14114          , x_value_type_code          => l_adr_value_type_code
14115          , p_side                     => 'NA'
14116    );
14117 
14118    xla_ae_lines_pkg.set_ccid(
14119     p_code_combination_id          => l_ccid
14120   , p_value_type_code              => l_adr_value_type_code
14121   , p_transaction_coa_id           => l_adr_transaction_coa_id
14122   , p_accounting_coa_id            => l_adr_accounting_coa_id
14123   , p_adr_code                     => 'CST_DEFAULT'
14124   , p_adr_type_code                => 'S'
14125   , p_component_type               => l_component_type
14126   , p_component_code               => l_component_code
14127   , p_component_type_code          => l_component_type_code
14128   , p_component_appl_id            => l_component_appl_id
14129   , p_amb_context_code             => l_amb_context_code
14130   , p_side                         => 'NA'
14131   );
14132 
14133 
14134    --
14135    --
14136    END IF;
14137 
14138        --
14139        -- Update the line information that should be overwritten
14140        --
14141        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14142                                          p_header_num   => 1);
14143        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14144 
14145        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14146 
14147        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14148           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14149        END IF;
14150 
14151       --
14152       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14153       --
14154       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14155           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14156       ELSE
14157           ---------------------------------------------------------------------------------------------------
14158           -- 4262811a Switch Sign
14159           ---------------------------------------------------------------------------------------------------
14160           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14161           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14162                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14163           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14164                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14165           -- 5132302
14166           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14167                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14168 
14169       END IF;
14170 
14171       -- 4955764
14172       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14173       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14174 
14175 
14176       XLA_AE_LINES_PKG.ValidateCurrentLine;
14177       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14178 
14179       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14180                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14181                ,p_balance_type_code => l_balance_type_code);
14182 
14183    END IF;
14184 
14185    -----------------------------------------------------------------------------------------
14186    -- 4262811 Multiperiod Accounting
14187    -----------------------------------------------------------------------------------------
14188      -- No MPA option is assigned.
14189 
14190 
14191 END IF;
14192 END IF;
14193 --
14194 
14195 --
14196 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14197    trace
14198       (p_msg      => 'END of AcctLineType_28'
14199       ,p_level    => C_LEVEL_PROCEDURE
14200       ,p_module   => l_log_module);
14201 END IF;
14202 --
14203 EXCEPTION
14204   WHEN xla_exceptions_pkg.application_exception THEN
14205       RAISE;
14206   WHEN OTHERS THEN
14207        xla_exceptions_pkg.raise_message
14208            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_28');
14209 END AcctLineType_28;
14210 --
14211 
14212 ---------------------------------------
14213 --
14214 -- PRIVATE FUNCTION
14215 --         AcctLineType_29
14216 --
14217 ---------------------------------------
14218 PROCEDURE AcctLineType_29 (
14219   p_application_id        IN NUMBER
14220  ,p_event_id              IN NUMBER
14221  ,p_calculate_acctd_flag  IN VARCHAR2
14222  ,p_calculate_g_l_flag    IN VARCHAR2
14223  ,p_actual_flag           IN OUT VARCHAR2
14224  ,p_balance_type_code     OUT VARCHAR2
14225  ,p_gain_or_loss_ref      OUT VARCHAR2
14226  
14227 --Cost Management Default Account
14228  , p_source_4            IN NUMBER
14229 --DISTRIBUTION_IDENTIFIER
14230  , p_source_11            IN NUMBER
14231 --Distribution Type
14232  , p_source_12            IN VARCHAR2
14233  , p_source_12_meaning    IN VARCHAR2
14234 --Entered Currency Code
14235  , p_source_15            IN VARCHAR2
14236 --Entered Amount
14237  , p_source_18            IN NUMBER
14238 --Currency Conversion Date
14239  , p_source_19            IN DATE
14240 --Currency Conversion Rate
14241  , p_source_20            IN NUMBER
14242 --Currency Conversion Type
14243  , p_source_21            IN VARCHAR2
14244 --Accounted Amount
14245  , p_source_22            IN NUMBER
14246 --Accounting Line Type
14247  , p_source_24            IN NUMBER
14248 )
14249 IS
14250 
14251 l_component_type              VARCHAR2(80);
14252 l_component_code              VARCHAR2(30);
14253 l_component_type_code         VARCHAR2(1);
14254 l_component_appl_id           INTEGER;
14255 l_amb_context_code            VARCHAR2(30);
14256 l_entity_code                 VARCHAR2(30);
14257 l_event_class_code            VARCHAR2(30);
14258 l_ae_header_id                NUMBER;
14259 l_event_type_code             VARCHAR2(30);
14260 l_line_definition_code        VARCHAR2(30);
14261 l_line_definition_owner_code  VARCHAR2(1);
14262 --
14263 -- adr variables
14264 l_segment                     VARCHAR2(30);
14265 l_ccid                        NUMBER;
14266 l_adr_transaction_coa_id      NUMBER;
14267 l_adr_accounting_coa_id       NUMBER;
14268 l_adr_flexfield_segment_code  VARCHAR2(30);
14269 l_adr_flex_value_set_id       NUMBER;
14270 l_adr_value_type_code         VARCHAR2(30);
14271 l_adr_value_combination_id    NUMBER;
14272 l_adr_value_segment_code      VARCHAR2(30);
14273 
14274 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14275 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14276 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14277 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14278 
14279 -- 4262811 Variables ------------------------------------------------------------------------------------------
14280 l_entered_amt_idx             NUMBER;
14281 l_accted_amt_idx              NUMBER;
14282 l_acc_rev_flag                VARCHAR2(1);
14283 l_accrual_line_num            NUMBER;
14284 l_tmp_amt                     NUMBER;
14285 l_acc_rev_natural_side_code   VARCHAR2(1);
14286 
14287 l_num_entries                 NUMBER;
14288 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14289 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14290 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14291 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14292 l_recog_line_1                NUMBER;
14293 l_recog_line_2                NUMBER;
14294 
14295 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14296 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14297 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14298 
14299 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14300 
14301 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14302 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14303 
14304 ---------------------------------------------------------------------------------------------------------------
14305 
14306 
14307 --
14308 -- bulk performance
14309 --
14310 l_balance_type_code           VARCHAR2(1);
14311 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14312 l_log_module                  VARCHAR2(240);
14313 
14314 --
14315 -- Upgrade strategy
14316 --
14317 l_actual_upg_option           VARCHAR2(1);
14318 l_enc_upg_option           VARCHAR2(1);
14319 
14320 --
14321 BEGIN
14322 --
14323 IF g_log_enabled THEN
14324       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_29';
14325 END IF;
14326 --
14327 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14328 
14329       trace
14330          (p_msg      => 'BEGIN of AcctLineType_29'
14331          ,p_level    => C_LEVEL_PROCEDURE
14332          ,p_module   => l_log_module);
14333 
14334 END IF;
14335 --
14336 l_component_type             := 'AMB_JLT';
14337 l_component_code             := 'COST_VARIANCE';
14338 l_component_type_code        := 'S';
14339 l_component_appl_id          :=  707;
14340 l_amb_context_code           := 'DEFAULT';
14341 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
14342 l_event_class_code           := 'INTRAORG_TXFR';
14343 l_event_type_code            := 'INTRAORG_TXFR_ALL';
14344 l_line_definition_owner_code := 'S';
14345 l_line_definition_code       := 'INTRAORG_TXFR';
14346 --
14347 l_balance_type_code          := 'A';
14348 l_segment                     := NULL;
14349 l_ccid                        := NULL;
14350 l_adr_transaction_coa_id      := NULL;
14351 l_adr_accounting_coa_id       := NULL;
14352 l_adr_flexfield_segment_code  := NULL;
14353 l_adr_flex_value_set_id       := NULL;
14354 l_adr_value_type_code         := NULL;
14355 l_adr_value_combination_id    := NULL;
14356 l_adr_value_segment_code      := NULL;
14357 
14358 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
14359 l_bflow_class_code           := '';    -- 4219869 Business Flow
14360 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14361 l_budgetary_control_flag     := 'N';
14362 
14363 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14364 l_bflow_applied_to_amt       := NULL; -- 5132302
14365 l_entered_amt_idx            := NULL;          -- 4262811
14366 l_accted_amt_idx             := NULL;          -- 4262811
14367 l_acc_rev_flag               := NULL;          -- 4262811
14368 l_accrual_line_num           := NULL;          -- 4262811
14369 l_tmp_amt                    := NULL;          -- 4262811
14370 --
14371  
14372 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14373     l_balance_type_code <> 'B' THEN
14374 IF NVL(p_source_24,9E125) =  13
14375  THEN 
14376 
14377    --
14378    XLA_AE_LINES_PKG.SetNewLine;
14379 
14380    p_balance_type_code          := l_balance_type_code;
14381    -- set the flag so later we will know whether the gain loss line needs to be created
14382    
14383    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14384      p_actual_flag :='A';
14385    END IF;
14386 
14387    --
14388    -- bulk performance
14389    --
14390    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14391                                       p_header_num   => 0); -- 4262811
14392    --
14393    -- set accounting line options
14394    --
14395    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14396            p_natural_side_code          => 'D'
14397          , p_gain_or_loss_flag          => 'N'
14398          , p_gl_transfer_mode_code      => 'S'
14399          , p_acct_entry_type_code       => 'A'
14400          , p_switch_side_flag           => 'Y'
14401          , p_merge_duplicate_code       => 'N'
14402          );
14403    --
14404    l_acc_rev_natural_side_code := 'C';  -- 4262811
14405    -- 
14406    --
14407    -- set accounting line type info
14408    --
14409    xla_ae_lines_pkg.SetAcctLineType
14410       (p_component_type             => l_component_type
14411       ,p_event_type_code            => l_event_type_code
14412       ,p_line_definition_owner_code => l_line_definition_owner_code
14413       ,p_line_definition_code       => l_line_definition_code
14414       ,p_accounting_line_code       => l_component_code
14415       ,p_accounting_line_type_code  => l_component_type_code
14416       ,p_accounting_line_appl_id    => l_component_appl_id
14417       ,p_amb_context_code           => l_amb_context_code
14418       ,p_entity_code                => l_entity_code
14419       ,p_event_class_code           => l_event_class_code);
14420    --
14421    -- set accounting class
14422    --
14423    xla_ae_lines_pkg.SetAcctClass(
14424            p_accounting_class_code  => 'COST_VARIANCE'
14425          , p_ae_header_id           => l_ae_header_id
14426          );
14427 
14428    --
14429    -- set rounding class
14430    --
14431    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14432                       'COST_VARIANCE';
14433 
14434    --
14435    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14436    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14437    --
14438    -- bulk performance
14439    --
14440    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14441 
14442    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14443       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14444 
14445    -- 4955764
14446    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14447       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14448 
14449    -- 4458381 Public Sector Enh
14450    
14451    --
14452    -- set accounting attributes for the line type
14453    --
14454    l_entered_amt_idx := 3;
14455    l_accted_amt_idx  := 8;
14456    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
14457    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
14458    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
14459    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
14460    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
14461    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
14462    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
14463    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
14464    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
14465    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
14466    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
14467    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
14468    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
14469    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
14470    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
14471    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
14472    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
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_000007_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           := 'USER_DEFINE';
14897 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
14898 l_line_definition_owner_code := 'S';
14899 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
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_000007_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           := 'USER_DEFINE';
15451 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
15452 l_line_definition_owner_code := 'S';
15453 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
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_000007_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           := 'SALES_ORDER';
16005 l_event_type_code            := 'SALES_ORDER_ALL';
16006 l_line_definition_owner_code := 'S';
16007 l_line_definition_code       := 'SALES_ORDER';
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_000007_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           := 'MISC_ISSUE_RCPT';
16559 l_event_type_code            := 'MISC_ISSUE_RCPT_ALL';
16560 l_line_definition_owner_code := 'S';
16561 l_line_definition_code       := 'MISC_ISSUE_RCPT';
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_000007_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 --Applied to Application ID
17000  , p_source_6            IN NUMBER
17001 --Applied to Distribution Link Type
17002  , p_source_7            IN VARCHAR2
17003 --Applied to Entity Code
17004  , p_source_8            IN VARCHAR2
17005 --DISTRIBUTION_IDENTIFIER
17006  , p_source_11            IN NUMBER
17007 --Distribution Type
17008  , p_source_12            IN VARCHAR2
17009  , p_source_12_meaning    IN VARCHAR2
17010 --Encumbrance Reversal Amount Entered
17011  , p_source_14            IN NUMBER
17012 --Entered Currency Code
17013  , p_source_15            IN VARCHAR2
17014 --Transaction Encumbrance Reversal Amount
17015  , p_source_16            IN NUMBER
17016 --Entered Amount
17017  , p_source_18            IN NUMBER
17018 --Currency Conversion Date
17019  , p_source_19            IN DATE
17020 --Currency Conversion Rate
17021  , p_source_20            IN NUMBER
17022 --Currency Conversion Type
17023  , p_source_21            IN VARCHAR2
17024 --Accounted Amount
17025  , p_source_22            IN NUMBER
17026 --Accounting Line Type
17027  , p_source_24            IN NUMBER
17028 --Costing Encumbrance Upgrade Option
17029  , p_source_27            IN VARCHAR2
17030 --TXN_PO_DISTRIBUTION_ID
17031  , p_source_28            IN NUMBER
17032 --TXN_PO_HEADER_ID
17033  , p_source_29            IN NUMBER
17034 --Requisition Budget Account
17035  , p_source_30            IN NUMBER
17036 --Requisition Encumbrance Type Identifier
17037  , p_source_31            IN NUMBER
17038 )
17039 IS
17040 
17041 l_component_type              VARCHAR2(80);
17042 l_component_code              VARCHAR2(30);
17043 l_component_type_code         VARCHAR2(1);
17044 l_component_appl_id           INTEGER;
17045 l_amb_context_code            VARCHAR2(30);
17046 l_entity_code                 VARCHAR2(30);
17047 l_event_class_code            VARCHAR2(30);
17048 l_ae_header_id                NUMBER;
17049 l_event_type_code             VARCHAR2(30);
17050 l_line_definition_code        VARCHAR2(30);
17051 l_line_definition_owner_code  VARCHAR2(1);
17052 --
17053 -- adr variables
17054 l_segment                     VARCHAR2(30);
17055 l_ccid                        NUMBER;
17056 l_adr_transaction_coa_id      NUMBER;
17057 l_adr_accounting_coa_id       NUMBER;
17058 l_adr_flexfield_segment_code  VARCHAR2(30);
17059 l_adr_flex_value_set_id       NUMBER;
17060 l_adr_value_type_code         VARCHAR2(30);
17061 l_adr_value_combination_id    NUMBER;
17062 l_adr_value_segment_code      VARCHAR2(30);
17063 
17064 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17065 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17066 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17067 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17068 
17069 -- 4262811 Variables ------------------------------------------------------------------------------------------
17070 l_entered_amt_idx             NUMBER;
17071 l_accted_amt_idx              NUMBER;
17072 l_acc_rev_flag                VARCHAR2(1);
17073 l_accrual_line_num            NUMBER;
17074 l_tmp_amt                     NUMBER;
17075 l_acc_rev_natural_side_code   VARCHAR2(1);
17076 
17077 l_num_entries                 NUMBER;
17078 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17079 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17080 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17081 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17082 l_recog_line_1                NUMBER;
17083 l_recog_line_2                NUMBER;
17084 
17085 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17086 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17087 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17088 
17089 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17090 
17091 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17092 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17093 
17094 ---------------------------------------------------------------------------------------------------------------
17095 
17096 
17097 --
17098 -- bulk performance
17099 --
17100 l_balance_type_code           VARCHAR2(1);
17101 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17102 l_log_module                  VARCHAR2(240);
17103 
17104 --
17105 -- Upgrade strategy
17106 --
17107 l_actual_upg_option           VARCHAR2(1);
17108 l_enc_upg_option           VARCHAR2(1);
17109 
17110 --
17111 BEGIN
17112 --
17113 IF g_log_enabled THEN
17114       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_34';
17115 END IF;
17116 --
17117 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17118 
17119       trace
17120          (p_msg      => 'BEGIN of AcctLineType_34'
17121          ,p_level    => C_LEVEL_PROCEDURE
17122          ,p_module   => l_log_module);
17123 
17124 END IF;
17125 --
17126 l_component_type             := 'AMB_JLT';
17127 l_component_code             := 'COST_VARIANCE';
17128 l_component_type_code        := 'S';
17129 l_component_appl_id          :=  707;
17130 l_amb_context_code           := 'DEFAULT';
17131 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
17132 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
17133 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
17134 l_line_definition_owner_code := 'S';
17135 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT';
17136 --
17137 l_balance_type_code          := 'A';
17138 l_segment                     := NULL;
17139 l_ccid                        := NULL;
17140 l_adr_transaction_coa_id      := NULL;
17141 l_adr_accounting_coa_id       := NULL;
17142 l_adr_flexfield_segment_code  := NULL;
17143 l_adr_flex_value_set_id       := NULL;
17144 l_adr_value_type_code         := NULL;
17145 l_adr_value_combination_id    := NULL;
17146 l_adr_value_segment_code      := NULL;
17147 
17148 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
17149 l_bflow_class_code           := '';    -- 4219869 Business Flow
17150 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17151 l_budgetary_control_flag     := 'N';
17152 
17153 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17154 l_bflow_applied_to_amt       := NULL; -- 5132302
17155 l_entered_amt_idx            := NULL;          -- 4262811
17156 l_accted_amt_idx             := NULL;          -- 4262811
17157 l_acc_rev_flag               := NULL;          -- 4262811
17158 l_accrual_line_num           := NULL;          -- 4262811
17159 l_tmp_amt                    := NULL;          -- 4262811
17160 --
17161  
17162 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17163     l_balance_type_code <> 'B' THEN
17164 IF NVL(p_source_24,9E125) =  13
17165  THEN 
17166 
17167    --
17168    XLA_AE_LINES_PKG.SetNewLine;
17169 
17170    p_balance_type_code          := l_balance_type_code;
17171    -- set the flag so later we will know whether the gain loss line needs to be created
17172    
17173    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17174      p_actual_flag :='A';
17175    END IF;
17176 
17177    --
17178    -- bulk performance
17179    --
17180    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17181                                       p_header_num   => 0); -- 4262811
17182    --
17183    -- set accounting line options
17184    --
17185    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17186            p_natural_side_code          => 'D'
17187          , p_gain_or_loss_flag          => 'N'
17188          , p_gl_transfer_mode_code      => 'S'
17189          , p_acct_entry_type_code       => 'A'
17190          , p_switch_side_flag           => 'Y'
17191          , p_merge_duplicate_code       => 'N'
17192          );
17193    --
17194    l_acc_rev_natural_side_code := 'C';  -- 4262811
17195    -- 
17196    --
17197    -- set accounting line type info
17198    --
17199    xla_ae_lines_pkg.SetAcctLineType
17200       (p_component_type             => l_component_type
17201       ,p_event_type_code            => l_event_type_code
17202       ,p_line_definition_owner_code => l_line_definition_owner_code
17203       ,p_line_definition_code       => l_line_definition_code
17204       ,p_accounting_line_code       => l_component_code
17205       ,p_accounting_line_type_code  => l_component_type_code
17206       ,p_accounting_line_appl_id    => l_component_appl_id
17207       ,p_amb_context_code           => l_amb_context_code
17208       ,p_entity_code                => l_entity_code
17209       ,p_event_class_code           => l_event_class_code);
17210    --
17211    -- set accounting class
17212    --
17213    xla_ae_lines_pkg.SetAcctClass(
17214            p_accounting_class_code  => 'COST_VARIANCE'
17215          , p_ae_header_id           => l_ae_header_id
17216          );
17217 
17218    --
17219    -- set rounding class
17220    --
17221    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17222                       'COST_VARIANCE';
17223 
17224    --
17225    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17226    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17227    --
17228    -- bulk performance
17229    --
17230    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17231 
17232    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17233       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17234 
17235    -- 4955764
17236    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17237       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17238 
17239    -- 4458381 Public Sector Enh
17240    
17241    --
17242    -- set accounting attributes for the line type
17243    --
17244    l_entered_amt_idx := 17;
17245    l_accted_amt_idx  := 22;
17246    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17247    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
17248    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
17249    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
17250    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
17251    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
17252    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
17253    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
17254    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
17255    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
17256    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
17257    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
17258    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
17259    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
17260    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
17261    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
17262    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
17263    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
17264    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
17265    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
17266    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
17267    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
17268    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
17269    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
17270    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
17271    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
17272    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
17273    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
17274    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
17275    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
17276    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
17277    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
17278    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
17279    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
17280    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
17281    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
17282    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
17283    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
17284    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
17285    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
17286    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
17287    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
17288    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
17289    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
17290    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
17291    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
17292    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
17293    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
17294    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
17295 
17296    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17297    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17298 
17299    ---------------------------------------------------------------------------------------------------------------
17300    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17301    ---------------------------------------------------------------------------------------------------------------
17302    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17303 
17304    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17305    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17306 
17307    IF xla_accounting_cache_pkg.GetValueChar
17308          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17309          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17310    AND l_bflow_method_code = 'PRIOR_ENTRY'
17311 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17312    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17313          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17314        )
17315    THEN
17316          xla_ae_lines_pkg.BflowUpgEntry
17317            (p_business_method_code    => l_bflow_method_code
17318            ,p_business_class_code     => l_bflow_class_code
17319            ,p_balance_type            => l_balance_type_code);
17320    ELSE
17321       NULL;
17322 -- No business flow processing for business flow method of NONE.
17323    END IF;
17324 
17325    --
17326    -- call analytical criteria
17327    --
17328    
17329    --
17330    -- call description
17331    --
17332    -- No description or it is inherited.
17333    --
17334    -- call ADRs
17335    -- Bug 4922099
17336    --
17337    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17338         (NVL(l_actual_upg_option, 'N') = 'O') OR
17339         (NVL(l_enc_upg_option, 'N') = 'O')
17340       )
17341    THEN
17342    NULL;
17343    --
17344    --
17345    
17346   l_ccid := AcctDerRule_4(
17347            p_application_id           => p_application_id
17348          , p_ae_header_id             => l_ae_header_id 
17349 , p_source_4 => p_source_4
17350          , x_transaction_coa_id       => l_adr_transaction_coa_id
17351          , x_accounting_coa_id        => l_adr_accounting_coa_id
17352          , x_value_type_code          => l_adr_value_type_code
17353          , p_side                     => 'NA'
17354    );
17355 
17356    xla_ae_lines_pkg.set_ccid(
17357     p_code_combination_id          => l_ccid
17358   , p_value_type_code              => l_adr_value_type_code
17359   , p_transaction_coa_id           => l_adr_transaction_coa_id
17360   , p_accounting_coa_id            => l_adr_accounting_coa_id
17361   , p_adr_code                     => 'CST_DEFAULT'
17362   , p_adr_type_code                => 'S'
17363   , p_component_type               => l_component_type
17364   , p_component_code               => l_component_code
17365   , p_component_type_code          => l_component_type_code
17366   , p_component_appl_id            => l_component_appl_id
17367   , p_amb_context_code             => l_amb_context_code
17368   , p_side                         => 'NA'
17369   );
17370 
17371 
17372    --
17373    --
17374    END IF;
17375    --
17376    -- Bug 4922099
17377    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17378           (NVL(l_enc_upg_option, 'N') = 'O')
17379         ) AND
17380         (l_bflow_method_code = 'PRIOR_ENTRY')
17381       )
17382    THEN
17383       IF
17384       --
17385       1 = 2
17386       --
17387       THEN
17388       xla_accounting_err_pkg.build_message
17389                                     (p_appli_s_name            => 'XLA'
17390                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17391                                     ,p_token_1                 => 'LINE_NUMBER'
17392                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17393                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17394                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17395                                                                              l_component_type
17396                                                                             ,l_component_code
17397                                                                             ,l_component_type_code
17398                                                                             ,l_component_appl_id
17399                                                                             ,l_amb_context_code
17400                                                                             ,l_entity_code
17401                                                                             ,l_event_class_code
17402                                                                            )
17403                                     ,p_token_3                 => 'OWNER'
17404                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17405                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17406                                                                           ,p_lookup_code    => l_component_type_code
17407                                                                          )
17408                                     ,p_token_4                 => 'PRODUCT_NAME'
17409                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17410                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17411                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17412                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17413                                     ,p_ae_header_id            =>  NULL
17414                                        );
17415 
17416         IF (C_LEVEL_ERROR>= g_log_level) THEN
17417                  trace
17418                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17419                       ,p_level    => C_LEVEL_ERROR
17420                       ,p_module   => l_log_module);
17421         END IF;
17422       END IF;
17423    END IF;
17424    --
17425    --
17426    ------------------------------------------------------------------------------------------------
17427    -- 4219869 Business Flow
17428    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17429    -- Prior Entry.  Currently, the following code is always generated.
17430    ------------------------------------------------------------------------------------------------
17431    XLA_AE_LINES_PKG.ValidateCurrentLine;
17432 
17433    ------------------------------------------------------------------------------------
17434    -- 4219869 Business Flow
17435    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17436    ------------------------------------------------------------------------------------
17437    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17438 
17439    ----------------------------------------------------------------------------------
17440    -- 4219869 Business Flow
17441    -- Update journal entry status -- Need to generate this within IF <condition>
17442    ----------------------------------------------------------------------------------
17443    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17444          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17445          ,p_balance_type_code => l_balance_type_code
17446          );
17447 
17448    -------------------------------------------------------------------------------------------
17449    -- 4262811 - Generate the Accrual Reversal lines
17450    -------------------------------------------------------------------------------------------
17451    BEGIN
17452       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17453                               (g_array_event(p_event_id).array_value_num('header_index'));
17454       IF l_acc_rev_flag IS NULL THEN
17455          l_acc_rev_flag := 'N';
17456       END IF;
17457    EXCEPTION
17458       WHEN OTHERS THEN
17459          l_acc_rev_flag := 'N';
17460    END;
17461    --
17462    IF (l_acc_rev_flag = 'Y') THEN
17463 
17464        -- 4645092  ------------------------------------------------------------------------------
17465        -- To allow MPA report to determine if it should generate report process
17466        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17467        ------------------------------------------------------------------------------------------
17468 
17469        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17470        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17471    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
17472    -- call ADRs
17473    -- Bug 4922099
17474    --
17475    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17476         (NVL(l_actual_upg_option, 'N') = 'O') OR
17477         (NVL(l_enc_upg_option, 'N') = 'O')
17478       )
17479    THEN
17480    NULL;
17481    --
17482    --
17483    
17484   l_ccid := AcctDerRule_4(
17485            p_application_id           => p_application_id
17486          , p_ae_header_id             => l_ae_header_id 
17487 , p_source_4 => p_source_4
17488          , x_transaction_coa_id       => l_adr_transaction_coa_id
17489          , x_accounting_coa_id        => l_adr_accounting_coa_id
17490          , x_value_type_code          => l_adr_value_type_code
17491          , p_side                     => 'NA'
17492    );
17493 
17494    xla_ae_lines_pkg.set_ccid(
17495     p_code_combination_id          => l_ccid
17496   , p_value_type_code              => l_adr_value_type_code
17497   , p_transaction_coa_id           => l_adr_transaction_coa_id
17498   , p_accounting_coa_id            => l_adr_accounting_coa_id
17499   , p_adr_code                     => 'CST_DEFAULT'
17500   , p_adr_type_code                => 'S'
17501   , p_component_type               => l_component_type
17502   , p_component_code               => l_component_code
17503   , p_component_type_code          => l_component_type_code
17504   , p_component_appl_id            => l_component_appl_id
17505   , p_amb_context_code             => l_amb_context_code
17506   , p_side                         => 'NA'
17507   );
17508 
17509 
17510    --
17511    --
17512    END IF;
17513 
17514        --
17515        -- Update the line information that should be overwritten
17516        --
17517        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17518                                          p_header_num   => 1);
17519        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17520 
17521        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17522 
17523        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17524           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17525        END IF;
17526 
17527       --
17528       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17529       --
17530       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17531           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17532       ELSE
17533           ---------------------------------------------------------------------------------------------------
17534           -- 4262811a Switch Sign
17535           ---------------------------------------------------------------------------------------------------
17536           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17537           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17538                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17539           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17540                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17541           -- 5132302
17542           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17543                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17544 
17545       END IF;
17546 
17547       -- 4955764
17548       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17549       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17550 
17551 
17552       XLA_AE_LINES_PKG.ValidateCurrentLine;
17553       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17554 
17555       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17556                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17557                ,p_balance_type_code => l_balance_type_code);
17558 
17559    END IF;
17560 
17561    -----------------------------------------------------------------------------------------
17562    -- 4262811 Multiperiod Accounting
17563    -----------------------------------------------------------------------------------------
17564      -- No MPA option is assigned.
17565 
17566 
17567 END IF;
17568 END IF;
17569 --
17570 
17571 --
17572 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17573    trace
17574       (p_msg      => 'END of AcctLineType_34'
17575       ,p_level    => C_LEVEL_PROCEDURE
17576       ,p_module   => l_log_module);
17577 END IF;
17578 --
17579 EXCEPTION
17580   WHEN xla_exceptions_pkg.application_exception THEN
17581       RAISE;
17582   WHEN OTHERS THEN
17583        xla_exceptions_pkg.raise_message
17584            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_34');
17585 END AcctLineType_34;
17586 --
17587 
17588 ---------------------------------------
17589 --
17590 -- PRIVATE FUNCTION
17591 --         AcctLineType_35
17592 --
17593 ---------------------------------------
17594 PROCEDURE AcctLineType_35 (
17595   p_application_id        IN NUMBER
17596  ,p_event_id              IN NUMBER
17597  ,p_calculate_acctd_flag  IN VARCHAR2
17598  ,p_calculate_g_l_flag    IN VARCHAR2
17599  ,p_actual_flag           IN OUT VARCHAR2
17600  ,p_balance_type_code     OUT VARCHAR2
17601  ,p_gain_or_loss_ref      OUT VARCHAR2
17602  
17603 --Cost Management Default Account
17604  , p_source_4            IN NUMBER
17605 --DISTRIBUTION_IDENTIFIER
17606  , p_source_11            IN NUMBER
17607 --Distribution Type
17608  , p_source_12            IN VARCHAR2
17609  , p_source_12_meaning    IN VARCHAR2
17610 --Entered Currency Code
17611  , p_source_15            IN VARCHAR2
17612 --Entered Amount
17613  , p_source_18            IN NUMBER
17614 --Currency Conversion Date
17615  , p_source_19            IN DATE
17616 --Currency Conversion Rate
17617  , p_source_20            IN NUMBER
17618 --Currency Conversion Type
17619  , p_source_21            IN VARCHAR2
17620 --Accounted Amount
17621  , p_source_22            IN NUMBER
17622 --Accounting Line Type
17623  , p_source_24            IN NUMBER
17624 )
17625 IS
17626 
17627 l_component_type              VARCHAR2(80);
17628 l_component_code              VARCHAR2(30);
17629 l_component_type_code         VARCHAR2(1);
17630 l_component_appl_id           INTEGER;
17631 l_amb_context_code            VARCHAR2(30);
17632 l_entity_code                 VARCHAR2(30);
17633 l_event_class_code            VARCHAR2(30);
17634 l_ae_header_id                NUMBER;
17635 l_event_type_code             VARCHAR2(30);
17636 l_line_definition_code        VARCHAR2(30);
17637 l_line_definition_owner_code  VARCHAR2(1);
17638 --
17639 -- adr variables
17640 l_segment                     VARCHAR2(30);
17641 l_ccid                        NUMBER;
17642 l_adr_transaction_coa_id      NUMBER;
17643 l_adr_accounting_coa_id       NUMBER;
17644 l_adr_flexfield_segment_code  VARCHAR2(30);
17645 l_adr_flex_value_set_id       NUMBER;
17646 l_adr_value_type_code         VARCHAR2(30);
17647 l_adr_value_combination_id    NUMBER;
17648 l_adr_value_segment_code      VARCHAR2(30);
17649 
17650 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17651 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17652 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17653 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17654 
17655 -- 4262811 Variables ------------------------------------------------------------------------------------------
17656 l_entered_amt_idx             NUMBER;
17657 l_accted_amt_idx              NUMBER;
17658 l_acc_rev_flag                VARCHAR2(1);
17659 l_accrual_line_num            NUMBER;
17660 l_tmp_amt                     NUMBER;
17661 l_acc_rev_natural_side_code   VARCHAR2(1);
17662 
17663 l_num_entries                 NUMBER;
17664 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17665 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17666 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17667 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17668 l_recog_line_1                NUMBER;
17669 l_recog_line_2                NUMBER;
17670 
17671 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17672 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17673 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17674 
17675 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17676 
17677 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17678 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17679 
17680 ---------------------------------------------------------------------------------------------------------------
17681 
17682 
17683 --
17684 -- bulk performance
17685 --
17686 l_balance_type_code           VARCHAR2(1);
17687 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17688 l_log_module                  VARCHAR2(240);
17689 
17690 --
17691 -- Upgrade strategy
17692 --
17693 l_actual_upg_option           VARCHAR2(1);
17694 l_enc_upg_option           VARCHAR2(1);
17695 
17696 --
17697 BEGIN
17698 --
17699 IF g_log_enabled THEN
17700       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_35';
17701 END IF;
17702 --
17703 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17704 
17705       trace
17706          (p_msg      => 'BEGIN of AcctLineType_35'
17707          ,p_level    => C_LEVEL_PROCEDURE
17708          ,p_module   => l_log_module);
17709 
17710 END IF;
17711 --
17712 l_component_type             := 'AMB_JLT';
17713 l_component_code             := 'COST_VARIANCE';
17714 l_component_type_code        := 'S';
17715 l_component_appl_id          :=  707;
17716 l_amb_context_code           := 'DEFAULT';
17717 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
17718 l_event_class_code           := 'USER_DEFINE';
17719 l_event_type_code            := 'USUB_TXFR';
17720 l_line_definition_owner_code := 'S';
17721 l_line_definition_code       := 'USER_SUB_TXFR';
17722 --
17723 l_balance_type_code          := 'A';
17724 l_segment                     := NULL;
17725 l_ccid                        := NULL;
17726 l_adr_transaction_coa_id      := NULL;
17727 l_adr_accounting_coa_id       := NULL;
17728 l_adr_flexfield_segment_code  := NULL;
17729 l_adr_flex_value_set_id       := NULL;
17730 l_adr_value_type_code         := NULL;
17731 l_adr_value_combination_id    := NULL;
17732 l_adr_value_segment_code      := NULL;
17733 
17734 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
17735 l_bflow_class_code           := '';    -- 4219869 Business Flow
17736 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17737 l_budgetary_control_flag     := 'N';
17738 
17739 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17740 l_bflow_applied_to_amt       := NULL; -- 5132302
17741 l_entered_amt_idx            := NULL;          -- 4262811
17742 l_accted_amt_idx             := NULL;          -- 4262811
17743 l_acc_rev_flag               := NULL;          -- 4262811
17744 l_accrual_line_num           := NULL;          -- 4262811
17745 l_tmp_amt                    := NULL;          -- 4262811
17746 --
17747  
17748 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17749     l_balance_type_code <> 'B' THEN
17750 IF NVL(p_source_24,9E125) =  13
17751  THEN 
17752 
17753    --
17754    XLA_AE_LINES_PKG.SetNewLine;
17755 
17756    p_balance_type_code          := l_balance_type_code;
17757    -- set the flag so later we will know whether the gain loss line needs to be created
17758    
17759    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17760      p_actual_flag :='A';
17761    END IF;
17762 
17763    --
17764    -- bulk performance
17765    --
17766    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17767                                       p_header_num   => 0); -- 4262811
17768    --
17769    -- set accounting line options
17770    --
17771    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17772            p_natural_side_code          => 'D'
17773          , p_gain_or_loss_flag          => 'N'
17774          , p_gl_transfer_mode_code      => 'S'
17775          , p_acct_entry_type_code       => 'A'
17776          , p_switch_side_flag           => 'Y'
17777          , p_merge_duplicate_code       => 'N'
17778          );
17779    --
17780    l_acc_rev_natural_side_code := 'C';  -- 4262811
17781    -- 
17782    --
17783    -- set accounting line type info
17784    --
17785    xla_ae_lines_pkg.SetAcctLineType
17786       (p_component_type             => l_component_type
17787       ,p_event_type_code            => l_event_type_code
17788       ,p_line_definition_owner_code => l_line_definition_owner_code
17789       ,p_line_definition_code       => l_line_definition_code
17790       ,p_accounting_line_code       => l_component_code
17791       ,p_accounting_line_type_code  => l_component_type_code
17792       ,p_accounting_line_appl_id    => l_component_appl_id
17793       ,p_amb_context_code           => l_amb_context_code
17794       ,p_entity_code                => l_entity_code
17795       ,p_event_class_code           => l_event_class_code);
17796    --
17797    -- set accounting class
17798    --
17799    xla_ae_lines_pkg.SetAcctClass(
17800            p_accounting_class_code  => 'COST_VARIANCE'
17801          , p_ae_header_id           => l_ae_header_id
17802          );
17803 
17804    --
17805    -- set rounding class
17806    --
17807    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17808                       'COST_VARIANCE';
17809 
17810    --
17811    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17812    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17813    --
17814    -- bulk performance
17815    --
17816    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17817 
17818    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17819       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17820 
17821    -- 4955764
17822    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17823       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17824 
17825    -- 4458381 Public Sector Enh
17826    
17827    --
17828    -- set accounting attributes for the line type
17829    --
17830    l_entered_amt_idx := 3;
17831    l_accted_amt_idx  := 8;
17832    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17833    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
17834    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
17835    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
17836    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
17837    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
17838    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
17839    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
17840    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
17841    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
17842    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
17843    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
17844    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
17845    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
17846    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
17847    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
17848    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
17849 
17850    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17851    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17852 
17853    ---------------------------------------------------------------------------------------------------------------
17854    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17855    ---------------------------------------------------------------------------------------------------------------
17856    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17857 
17858    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17859    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17860 
17861    IF xla_accounting_cache_pkg.GetValueChar
17862          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17863          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17864    AND l_bflow_method_code = 'PRIOR_ENTRY'
17865 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17866    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17867          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17868        )
17869    THEN
17870          xla_ae_lines_pkg.BflowUpgEntry
17871            (p_business_method_code    => l_bflow_method_code
17872            ,p_business_class_code     => l_bflow_class_code
17873            ,p_balance_type            => l_balance_type_code);
17874    ELSE
17875       NULL;
17876 -- No business flow processing for business flow method of NONE.
17877    END IF;
17878 
17879    --
17880    -- call analytical criteria
17881    --
17882    
17883    --
17884    -- call description
17885    --
17886    -- No description or it is inherited.
17887    --
17888    -- call ADRs
17889    -- Bug 4922099
17890    --
17891    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17892         (NVL(l_actual_upg_option, 'N') = 'O') OR
17893         (NVL(l_enc_upg_option, 'N') = 'O')
17894       )
17895    THEN
17896    NULL;
17897    --
17898    --
17899    
17900   l_ccid := AcctDerRule_4(
17901            p_application_id           => p_application_id
17902          , p_ae_header_id             => l_ae_header_id 
17903 , p_source_4 => p_source_4
17904          , x_transaction_coa_id       => l_adr_transaction_coa_id
17905          , x_accounting_coa_id        => l_adr_accounting_coa_id
17906          , x_value_type_code          => l_adr_value_type_code
17907          , p_side                     => 'NA'
17908    );
17909 
17910    xla_ae_lines_pkg.set_ccid(
17911     p_code_combination_id          => l_ccid
17912   , p_value_type_code              => l_adr_value_type_code
17913   , p_transaction_coa_id           => l_adr_transaction_coa_id
17914   , p_accounting_coa_id            => l_adr_accounting_coa_id
17915   , p_adr_code                     => 'CST_DEFAULT'
17916   , p_adr_type_code                => 'S'
17917   , p_component_type               => l_component_type
17918   , p_component_code               => l_component_code
17919   , p_component_type_code          => l_component_type_code
17920   , p_component_appl_id            => l_component_appl_id
17921   , p_amb_context_code             => l_amb_context_code
17922   , p_side                         => 'NA'
17923   );
17924 
17925 
17926    --
17927    --
17928    END IF;
17929    --
17930    -- Bug 4922099
17931    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17932           (NVL(l_enc_upg_option, 'N') = 'O')
17933         ) AND
17934         (l_bflow_method_code = 'PRIOR_ENTRY')
17935       )
17936    THEN
17937       IF
17938       --
17939       1 = 2
17940       --
17941       THEN
17942       xla_accounting_err_pkg.build_message
17943                                     (p_appli_s_name            => 'XLA'
17944                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17945                                     ,p_token_1                 => 'LINE_NUMBER'
17946                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17947                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17948                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17949                                                                              l_component_type
17950                                                                             ,l_component_code
17951                                                                             ,l_component_type_code
17952                                                                             ,l_component_appl_id
17953                                                                             ,l_amb_context_code
17954                                                                             ,l_entity_code
17955                                                                             ,l_event_class_code
17956                                                                            )
17957                                     ,p_token_3                 => 'OWNER'
17958                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17959                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17960                                                                           ,p_lookup_code    => l_component_type_code
17961                                                                          )
17962                                     ,p_token_4                 => 'PRODUCT_NAME'
17963                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17964                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17965                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17966                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17967                                     ,p_ae_header_id            =>  NULL
17968                                        );
17969 
17970         IF (C_LEVEL_ERROR>= g_log_level) THEN
17971                  trace
17972                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17973                       ,p_level    => C_LEVEL_ERROR
17974                       ,p_module   => l_log_module);
17975         END IF;
17976       END IF;
17977    END IF;
17978    --
17979    --
17980    ------------------------------------------------------------------------------------------------
17981    -- 4219869 Business Flow
17982    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17983    -- Prior Entry.  Currently, the following code is always generated.
17984    ------------------------------------------------------------------------------------------------
17985    XLA_AE_LINES_PKG.ValidateCurrentLine;
17986 
17987    ------------------------------------------------------------------------------------
17988    -- 4219869 Business Flow
17989    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17990    ------------------------------------------------------------------------------------
17991    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17992 
17993    ----------------------------------------------------------------------------------
17994    -- 4219869 Business Flow
17995    -- Update journal entry status -- Need to generate this within IF <condition>
17996    ----------------------------------------------------------------------------------
17997    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17998          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17999          ,p_balance_type_code => l_balance_type_code
18000          );
18001 
18002    -------------------------------------------------------------------------------------------
18003    -- 4262811 - Generate the Accrual Reversal lines
18004    -------------------------------------------------------------------------------------------
18005    BEGIN
18006       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18007                               (g_array_event(p_event_id).array_value_num('header_index'));
18008       IF l_acc_rev_flag IS NULL THEN
18009          l_acc_rev_flag := 'N';
18010       END IF;
18011    EXCEPTION
18012       WHEN OTHERS THEN
18013          l_acc_rev_flag := 'N';
18014    END;
18015    --
18016    IF (l_acc_rev_flag = 'Y') THEN
18017 
18018        -- 4645092  ------------------------------------------------------------------------------
18019        -- To allow MPA report to determine if it should generate report process
18020        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18021        ------------------------------------------------------------------------------------------
18022 
18023        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18024        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18025    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
18026    -- call ADRs
18027    -- Bug 4922099
18028    --
18029    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18030         (NVL(l_actual_upg_option, 'N') = 'O') OR
18031         (NVL(l_enc_upg_option, 'N') = 'O')
18032       )
18033    THEN
18034    NULL;
18035    --
18036    --
18037    
18038   l_ccid := AcctDerRule_4(
18039            p_application_id           => p_application_id
18040          , p_ae_header_id             => l_ae_header_id 
18041 , p_source_4 => p_source_4
18042          , x_transaction_coa_id       => l_adr_transaction_coa_id
18043          , x_accounting_coa_id        => l_adr_accounting_coa_id
18044          , x_value_type_code          => l_adr_value_type_code
18045          , p_side                     => 'NA'
18046    );
18047 
18048    xla_ae_lines_pkg.set_ccid(
18049     p_code_combination_id          => l_ccid
18050   , p_value_type_code              => l_adr_value_type_code
18051   , p_transaction_coa_id           => l_adr_transaction_coa_id
18052   , p_accounting_coa_id            => l_adr_accounting_coa_id
18053   , p_adr_code                     => 'CST_DEFAULT'
18054   , p_adr_type_code                => 'S'
18055   , p_component_type               => l_component_type
18056   , p_component_code               => l_component_code
18057   , p_component_type_code          => l_component_type_code
18058   , p_component_appl_id            => l_component_appl_id
18059   , p_amb_context_code             => l_amb_context_code
18060   , p_side                         => 'NA'
18061   );
18062 
18063 
18064    --
18065    --
18066    END IF;
18067 
18068        --
18069        -- Update the line information that should be overwritten
18070        --
18071        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18072                                          p_header_num   => 1);
18073        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
18074 
18075        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18076 
18077        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
18078           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18079        END IF;
18080 
18081       --
18082       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18083       --
18084       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18085           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
18086       ELSE
18087           ---------------------------------------------------------------------------------------------------
18088           -- 4262811a Switch Sign
18089           ---------------------------------------------------------------------------------------------------
18090           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18091           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18092                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18093           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18094                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18095           -- 5132302
18096           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18097                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18098 
18099       END IF;
18100 
18101       -- 4955764
18102       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18103       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18104 
18105 
18106       XLA_AE_LINES_PKG.ValidateCurrentLine;
18107       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18108 
18109       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18110                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18111                ,p_balance_type_code => l_balance_type_code);
18112 
18113    END IF;
18114 
18115    -----------------------------------------------------------------------------------------
18116    -- 4262811 Multiperiod Accounting
18117    -----------------------------------------------------------------------------------------
18118      -- No MPA option is assigned.
18119 
18120 
18121 END IF;
18122 END IF;
18123 --
18124 
18125 --
18126 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18127    trace
18128       (p_msg      => 'END of AcctLineType_35'
18129       ,p_level    => C_LEVEL_PROCEDURE
18130       ,p_module   => l_log_module);
18131 END IF;
18132 --
18133 EXCEPTION
18134   WHEN xla_exceptions_pkg.application_exception THEN
18135       RAISE;
18136   WHEN OTHERS THEN
18137        xla_exceptions_pkg.raise_message
18138            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_35');
18139 END AcctLineType_35;
18140 --
18141 
18142 ---------------------------------------
18143 --
18144 -- PRIVATE FUNCTION
18145 --         AcctLineType_36
18146 --
18147 ---------------------------------------
18148 PROCEDURE AcctLineType_36 (
18149   p_application_id        IN NUMBER
18150  ,p_event_id              IN NUMBER
18151  ,p_calculate_acctd_flag  IN VARCHAR2
18152  ,p_calculate_g_l_flag    IN VARCHAR2
18153  ,p_actual_flag           IN OUT VARCHAR2
18154  ,p_balance_type_code     OUT VARCHAR2
18155  ,p_gain_or_loss_ref      OUT VARCHAR2
18156  
18157 --Cost Management Default Account
18158  , p_source_4            IN NUMBER
18159 --DISTRIBUTION_IDENTIFIER
18160  , p_source_11            IN NUMBER
18161 --Distribution Type
18162  , p_source_12            IN VARCHAR2
18163  , p_source_12_meaning    IN VARCHAR2
18164 --Entered Currency Code
18165  , p_source_15            IN VARCHAR2
18166 --Entered Amount
18167  , p_source_18            IN NUMBER
18168 --Currency Conversion Date
18169  , p_source_19            IN DATE
18170 --Currency Conversion Rate
18171  , p_source_20            IN NUMBER
18172 --Currency Conversion Type
18173  , p_source_21            IN VARCHAR2
18174 --Accounted Amount
18175  , p_source_22            IN NUMBER
18176 --Accounting Line Type
18177  , p_source_24            IN NUMBER
18178 )
18179 IS
18180 
18181 l_component_type              VARCHAR2(80);
18182 l_component_code              VARCHAR2(30);
18183 l_component_type_code         VARCHAR2(1);
18184 l_component_appl_id           INTEGER;
18185 l_amb_context_code            VARCHAR2(30);
18186 l_entity_code                 VARCHAR2(30);
18187 l_event_class_code            VARCHAR2(30);
18188 l_ae_header_id                NUMBER;
18189 l_event_type_code             VARCHAR2(30);
18190 l_line_definition_code        VARCHAR2(30);
18191 l_line_definition_owner_code  VARCHAR2(1);
18192 --
18193 -- adr variables
18194 l_segment                     VARCHAR2(30);
18195 l_ccid                        NUMBER;
18196 l_adr_transaction_coa_id      NUMBER;
18197 l_adr_accounting_coa_id       NUMBER;
18198 l_adr_flexfield_segment_code  VARCHAR2(30);
18199 l_adr_flex_value_set_id       NUMBER;
18200 l_adr_value_type_code         VARCHAR2(30);
18201 l_adr_value_combination_id    NUMBER;
18202 l_adr_value_segment_code      VARCHAR2(30);
18203 
18204 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18205 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18206 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18207 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18208 
18209 -- 4262811 Variables ------------------------------------------------------------------------------------------
18210 l_entered_amt_idx             NUMBER;
18211 l_accted_amt_idx              NUMBER;
18212 l_acc_rev_flag                VARCHAR2(1);
18213 l_accrual_line_num            NUMBER;
18214 l_tmp_amt                     NUMBER;
18215 l_acc_rev_natural_side_code   VARCHAR2(1);
18216 
18217 l_num_entries                 NUMBER;
18218 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18219 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18220 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18221 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18222 l_recog_line_1                NUMBER;
18223 l_recog_line_2                NUMBER;
18224 
18225 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18226 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18227 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18228 
18229 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18230 
18231 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18232 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18233 
18234 ---------------------------------------------------------------------------------------------------------------
18235 
18236 
18237 --
18238 -- bulk performance
18239 --
18240 l_balance_type_code           VARCHAR2(1);
18241 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18242 l_log_module                  VARCHAR2(240);
18243 
18244 --
18245 -- Upgrade strategy
18246 --
18247 l_actual_upg_option           VARCHAR2(1);
18248 l_enc_upg_option           VARCHAR2(1);
18249 
18250 --
18251 BEGIN
18252 --
18253 IF g_log_enabled THEN
18254       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_36';
18255 END IF;
18256 --
18257 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18258 
18259       trace
18260          (p_msg      => 'BEGIN of AcctLineType_36'
18261          ,p_level    => C_LEVEL_PROCEDURE
18262          ,p_module   => l_log_module);
18263 
18264 END IF;
18265 --
18266 l_component_type             := 'AMB_JLT';
18267 l_component_code             := 'COST_VARIANCE';
18268 l_component_type_code        := 'S';
18269 l_component_appl_id          :=  707;
18270 l_amb_context_code           := 'DEFAULT';
18271 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
18272 l_event_class_code           := 'USER_DEFINE';
18273 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
18274 l_line_definition_owner_code := 'S';
18275 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
18276 --
18277 l_balance_type_code          := 'A';
18278 l_segment                     := NULL;
18279 l_ccid                        := NULL;
18280 l_adr_transaction_coa_id      := NULL;
18281 l_adr_accounting_coa_id       := NULL;
18282 l_adr_flexfield_segment_code  := NULL;
18283 l_adr_flex_value_set_id       := NULL;
18284 l_adr_value_type_code         := NULL;
18285 l_adr_value_combination_id    := NULL;
18286 l_adr_value_segment_code      := NULL;
18287 
18288 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18289 l_bflow_class_code           := '';    -- 4219869 Business Flow
18290 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18291 l_budgetary_control_flag     := 'N';
18292 
18293 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18294 l_bflow_applied_to_amt       := NULL; -- 5132302
18295 l_entered_amt_idx            := NULL;          -- 4262811
18296 l_accted_amt_idx             := NULL;          -- 4262811
18297 l_acc_rev_flag               := NULL;          -- 4262811
18298 l_accrual_line_num           := NULL;          -- 4262811
18299 l_tmp_amt                    := NULL;          -- 4262811
18300 --
18301  
18302 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18303     l_balance_type_code <> 'B' THEN
18304 IF NVL(p_source_24,9E125) =  13
18305  THEN 
18306 
18307    --
18308    XLA_AE_LINES_PKG.SetNewLine;
18309 
18310    p_balance_type_code          := l_balance_type_code;
18311    -- set the flag so later we will know whether the gain loss line needs to be created
18312    
18313    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18314      p_actual_flag :='A';
18315    END IF;
18316 
18317    --
18318    -- bulk performance
18319    --
18320    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18321                                       p_header_num   => 0); -- 4262811
18322    --
18323    -- set accounting line options
18324    --
18325    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18326            p_natural_side_code          => 'D'
18327          , p_gain_or_loss_flag          => 'N'
18328          , p_gl_transfer_mode_code      => 'S'
18329          , p_acct_entry_type_code       => 'A'
18330          , p_switch_side_flag           => 'Y'
18331          , p_merge_duplicate_code       => 'N'
18332          );
18333    --
18334    l_acc_rev_natural_side_code := 'C';  -- 4262811
18335    -- 
18336    --
18337    -- set accounting line type info
18338    --
18339    xla_ae_lines_pkg.SetAcctLineType
18340       (p_component_type             => l_component_type
18341       ,p_event_type_code            => l_event_type_code
18342       ,p_line_definition_owner_code => l_line_definition_owner_code
18343       ,p_line_definition_code       => l_line_definition_code
18344       ,p_accounting_line_code       => l_component_code
18345       ,p_accounting_line_type_code  => l_component_type_code
18346       ,p_accounting_line_appl_id    => l_component_appl_id
18347       ,p_amb_context_code           => l_amb_context_code
18348       ,p_entity_code                => l_entity_code
18349       ,p_event_class_code           => l_event_class_code);
18350    --
18351    -- set accounting class
18352    --
18353    xla_ae_lines_pkg.SetAcctClass(
18354            p_accounting_class_code  => 'COST_VARIANCE'
18355          , p_ae_header_id           => l_ae_header_id
18356          );
18357 
18358    --
18359    -- set rounding class
18360    --
18361    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18362                       'COST_VARIANCE';
18363 
18364    --
18365    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18366    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18367    --
18368    -- bulk performance
18369    --
18370    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18371 
18372    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18373       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18374 
18375    -- 4955764
18376    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18377       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18378 
18379    -- 4458381 Public Sector Enh
18380    
18381    --
18382    -- set accounting attributes for the line type
18383    --
18384    l_entered_amt_idx := 3;
18385    l_accted_amt_idx  := 8;
18386    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18387    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
18388    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
18389    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
18390    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
18391    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
18392    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
18393    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
18394    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
18395    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
18396    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
18397    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
18398    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
18399    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
18400    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
18401    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
18402    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
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_000007_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            := 'UDIR_INTERORG_RCPT';
18828 l_line_definition_owner_code := 'S';
18829 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
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_000007_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 --Applied to Application ID
19268  , p_source_6            IN NUMBER
19269 --Applied to Distribution Link Type
19270  , p_source_7            IN VARCHAR2
19271 --Applied to Entity Code
19272  , p_source_8            IN VARCHAR2
19273 --Applied To Purchase Document Identifier
19274  , p_source_10            IN NUMBER
19275 --DISTRIBUTION_IDENTIFIER
19276  , p_source_11            IN NUMBER
19277 --Distribution Type
19278  , p_source_12            IN VARCHAR2
19279  , p_source_12_meaning    IN VARCHAR2
19280 --PO Budget Account
19281  , p_source_13            IN NUMBER
19282 --Encumbrance Reversal Amount Entered
19283  , p_source_14            IN NUMBER
19284 --Entered Currency Code
19285  , p_source_15            IN VARCHAR2
19286 --Transaction Encumbrance Reversal Amount
19287  , p_source_16            IN NUMBER
19288 --Entered Amount
19289  , p_source_18            IN NUMBER
19290 --Currency Conversion Date
19291  , p_source_19            IN DATE
19292 --Currency Conversion Rate
19293  , p_source_20            IN NUMBER
19294 --Currency Conversion Type
19295  , p_source_21            IN VARCHAR2
19296 --Accounted Amount
19297  , p_source_22            IN NUMBER
19298 --Purchasing Encumbrance Type Identifier
19299  , p_source_23            IN NUMBER
19300 --Accounting Line Type
19301  , p_source_24            IN NUMBER
19302 --Costing Encumbrance Upgrade Option
19303  , p_source_27            IN VARCHAR2
19304 --TXN_PO_DISTRIBUTION_ID
19305  , p_source_28            IN NUMBER
19306 )
19307 IS
19308 
19309 l_component_type              VARCHAR2(80);
19310 l_component_code              VARCHAR2(30);
19311 l_component_type_code         VARCHAR2(1);
19312 l_component_appl_id           INTEGER;
19313 l_amb_context_code            VARCHAR2(30);
19314 l_entity_code                 VARCHAR2(30);
19315 l_event_class_code            VARCHAR2(30);
19316 l_ae_header_id                NUMBER;
19317 l_event_type_code             VARCHAR2(30);
19318 l_line_definition_code        VARCHAR2(30);
19319 l_line_definition_owner_code  VARCHAR2(1);
19320 --
19321 -- adr variables
19322 l_segment                     VARCHAR2(30);
19323 l_ccid                        NUMBER;
19324 l_adr_transaction_coa_id      NUMBER;
19325 l_adr_accounting_coa_id       NUMBER;
19326 l_adr_flexfield_segment_code  VARCHAR2(30);
19327 l_adr_flex_value_set_id       NUMBER;
19328 l_adr_value_type_code         VARCHAR2(30);
19329 l_adr_value_combination_id    NUMBER;
19330 l_adr_value_segment_code      VARCHAR2(30);
19331 
19332 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19333 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19334 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19335 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19336 
19337 -- 4262811 Variables ------------------------------------------------------------------------------------------
19338 l_entered_amt_idx             NUMBER;
19339 l_accted_amt_idx              NUMBER;
19340 l_acc_rev_flag                VARCHAR2(1);
19341 l_accrual_line_num            NUMBER;
19342 l_tmp_amt                     NUMBER;
19343 l_acc_rev_natural_side_code   VARCHAR2(1);
19344 
19345 l_num_entries                 NUMBER;
19346 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19347 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19348 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19349 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19350 l_recog_line_1                NUMBER;
19351 l_recog_line_2                NUMBER;
19352 
19353 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19354 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19355 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19356 
19357 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19358 
19359 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19360 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19361 
19362 ---------------------------------------------------------------------------------------------------------------
19363 
19364 
19365 --
19366 -- bulk performance
19367 --
19368 l_balance_type_code           VARCHAR2(1);
19369 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19370 l_log_module                  VARCHAR2(240);
19371 
19372 --
19373 -- Upgrade strategy
19374 --
19375 l_actual_upg_option           VARCHAR2(1);
19376 l_enc_upg_option           VARCHAR2(1);
19377 
19378 --
19379 BEGIN
19380 --
19381 IF g_log_enabled THEN
19382       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_38';
19383 END IF;
19384 --
19385 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19386 
19387       trace
19388          (p_msg      => 'BEGIN of AcctLineType_38'
19389          ,p_level    => C_LEVEL_PROCEDURE
19390          ,p_module   => l_log_module);
19391 
19392 END IF;
19393 --
19394 l_component_type             := 'AMB_JLT';
19395 l_component_code             := 'COST_VARIANCE';
19396 l_component_type_code        := 'S';
19397 l_component_appl_id          :=  707;
19398 l_amb_context_code           := 'DEFAULT';
19399 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
19400 l_event_class_code           := 'PURCHASE_ORDER';
19401 l_event_type_code            := 'PURCHASE_ORDER_ALL';
19402 l_line_definition_owner_code := 'S';
19403 l_line_definition_code       := 'PURCHASE_ORDER';
19404 --
19405 l_balance_type_code          := 'A';
19406 l_segment                     := NULL;
19407 l_ccid                        := NULL;
19408 l_adr_transaction_coa_id      := NULL;
19409 l_adr_accounting_coa_id       := NULL;
19410 l_adr_flexfield_segment_code  := NULL;
19411 l_adr_flex_value_set_id       := NULL;
19412 l_adr_value_type_code         := NULL;
19413 l_adr_value_combination_id    := NULL;
19414 l_adr_value_segment_code      := NULL;
19415 
19416 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
19417 l_bflow_class_code           := '';    -- 4219869 Business Flow
19418 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
19419 l_budgetary_control_flag     := 'N';
19420 
19421 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19422 l_bflow_applied_to_amt       := NULL; -- 5132302
19423 l_entered_amt_idx            := NULL;          -- 4262811
19424 l_accted_amt_idx             := NULL;          -- 4262811
19425 l_acc_rev_flag               := NULL;          -- 4262811
19426 l_accrual_line_num           := NULL;          -- 4262811
19427 l_tmp_amt                    := NULL;          -- 4262811
19428 --
19429  
19430 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19431     l_balance_type_code <> 'B' THEN
19432 IF NVL(p_source_24,9E125) =  13
19433  THEN 
19434 
19435    --
19436    XLA_AE_LINES_PKG.SetNewLine;
19437 
19438    p_balance_type_code          := l_balance_type_code;
19439    -- set the flag so later we will know whether the gain loss line needs to be created
19440    
19441    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19442      p_actual_flag :='A';
19443    END IF;
19444 
19445    --
19446    -- bulk performance
19447    --
19448    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19449                                       p_header_num   => 0); -- 4262811
19450    --
19451    -- set accounting line options
19452    --
19453    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19454            p_natural_side_code          => 'D'
19455          , p_gain_or_loss_flag          => 'N'
19456          , p_gl_transfer_mode_code      => 'S'
19457          , p_acct_entry_type_code       => 'A'
19458          , p_switch_side_flag           => 'Y'
19459          , p_merge_duplicate_code       => 'N'
19460          );
19461    --
19462    l_acc_rev_natural_side_code := 'C';  -- 4262811
19463    -- 
19464    --
19465    -- set accounting line type info
19466    --
19467    xla_ae_lines_pkg.SetAcctLineType
19468       (p_component_type             => l_component_type
19469       ,p_event_type_code            => l_event_type_code
19470       ,p_line_definition_owner_code => l_line_definition_owner_code
19471       ,p_line_definition_code       => l_line_definition_code
19472       ,p_accounting_line_code       => l_component_code
19473       ,p_accounting_line_type_code  => l_component_type_code
19474       ,p_accounting_line_appl_id    => l_component_appl_id
19475       ,p_amb_context_code           => l_amb_context_code
19476       ,p_entity_code                => l_entity_code
19477       ,p_event_class_code           => l_event_class_code);
19478    --
19479    -- set accounting class
19480    --
19481    xla_ae_lines_pkg.SetAcctClass(
19482            p_accounting_class_code  => 'COST_VARIANCE'
19483          , p_ae_header_id           => l_ae_header_id
19484          );
19485 
19486    --
19487    -- set rounding class
19488    --
19489    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19490                       'COST_VARIANCE';
19491 
19492    --
19493    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19494    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19495    --
19496    -- bulk performance
19497    --
19498    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19499 
19500    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19501       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19502 
19503    -- 4955764
19504    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19505       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19506 
19507    -- 4458381 Public Sector Enh
19508    
19509    --
19510    -- set accounting attributes for the line type
19511    --
19512    l_entered_amt_idx := 17;
19513    l_accted_amt_idx  := 22;
19514    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
19515    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
19516    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
19517    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
19518    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
19519    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
19520    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
19521    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
19522    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
19523    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
19524    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
19525    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
19526    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
19527    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
19528    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
19529    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
19530    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
19531    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
19532    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
19533    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
19534    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
19535    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
19536    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
19537    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
19538    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
19539    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
19540    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
19541    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
19542    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
19543    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
19544    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
19545    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
19546    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
19547    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
19548    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
19549    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
19550    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
19551    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
19552    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
19553    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
19554    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
19555    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
19556    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
19557    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
19558    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
19559    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
19560    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
19561    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
19562    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
19563 
19564    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19565    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19566 
19567    ---------------------------------------------------------------------------------------------------------------
19568    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19569    ---------------------------------------------------------------------------------------------------------------
19570    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19571 
19572    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19573    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19574 
19575    IF xla_accounting_cache_pkg.GetValueChar
19576          (p_source_code         => 'LEDGER_CATEGORY_CODE'
19577          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19578    AND l_bflow_method_code = 'PRIOR_ENTRY'
19579 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19580    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19581          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19582        )
19583    THEN
19584          xla_ae_lines_pkg.BflowUpgEntry
19585            (p_business_method_code    => l_bflow_method_code
19586            ,p_business_class_code     => l_bflow_class_code
19587            ,p_balance_type            => l_balance_type_code);
19588    ELSE
19589       NULL;
19590 -- No business flow processing for business flow method of NONE.
19591    END IF;
19592 
19593    --
19594    -- call analytical criteria
19595    --
19596    
19597    --
19598    -- call description
19599    --
19600    -- No description or it is inherited.
19601    --
19602    -- call ADRs
19603    -- Bug 4922099
19604    --
19605    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19606         (NVL(l_actual_upg_option, 'N') = 'O') OR
19607         (NVL(l_enc_upg_option, 'N') = 'O')
19608       )
19609    THEN
19610    NULL;
19611    --
19612    --
19613    
19614   l_ccid := AcctDerRule_4(
19615            p_application_id           => p_application_id
19616          , p_ae_header_id             => l_ae_header_id 
19617 , p_source_4 => p_source_4
19618          , x_transaction_coa_id       => l_adr_transaction_coa_id
19619          , x_accounting_coa_id        => l_adr_accounting_coa_id
19620          , x_value_type_code          => l_adr_value_type_code
19621          , p_side                     => 'NA'
19622    );
19623 
19624    xla_ae_lines_pkg.set_ccid(
19625     p_code_combination_id          => l_ccid
19626   , p_value_type_code              => l_adr_value_type_code
19627   , p_transaction_coa_id           => l_adr_transaction_coa_id
19628   , p_accounting_coa_id            => l_adr_accounting_coa_id
19629   , p_adr_code                     => 'CST_DEFAULT'
19630   , p_adr_type_code                => 'S'
19631   , p_component_type               => l_component_type
19632   , p_component_code               => l_component_code
19633   , p_component_type_code          => l_component_type_code
19634   , p_component_appl_id            => l_component_appl_id
19635   , p_amb_context_code             => l_amb_context_code
19636   , p_side                         => 'NA'
19637   );
19638 
19639 
19640    --
19641    --
19642    END IF;
19643    --
19644    -- Bug 4922099
19645    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19646           (NVL(l_enc_upg_option, 'N') = 'O')
19647         ) AND
19648         (l_bflow_method_code = 'PRIOR_ENTRY')
19649       )
19650    THEN
19651       IF
19652       --
19653       1 = 2
19654       --
19655       THEN
19656       xla_accounting_err_pkg.build_message
19657                                     (p_appli_s_name            => 'XLA'
19658                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19659                                     ,p_token_1                 => 'LINE_NUMBER'
19660                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19661                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19662                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19663                                                                              l_component_type
19664                                                                             ,l_component_code
19665                                                                             ,l_component_type_code
19666                                                                             ,l_component_appl_id
19667                                                                             ,l_amb_context_code
19668                                                                             ,l_entity_code
19669                                                                             ,l_event_class_code
19670                                                                            )
19671                                     ,p_token_3                 => 'OWNER'
19672                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19673                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19674                                                                           ,p_lookup_code    => l_component_type_code
19675                                                                          )
19676                                     ,p_token_4                 => 'PRODUCT_NAME'
19677                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19678                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19679                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19680                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19681                                     ,p_ae_header_id            =>  NULL
19682                                        );
19683 
19684         IF (C_LEVEL_ERROR>= g_log_level) THEN
19685                  trace
19686                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19687                       ,p_level    => C_LEVEL_ERROR
19688                       ,p_module   => l_log_module);
19689         END IF;
19690       END IF;
19691    END IF;
19692    --
19693    --
19694    ------------------------------------------------------------------------------------------------
19695    -- 4219869 Business Flow
19696    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19697    -- Prior Entry.  Currently, the following code is always generated.
19698    ------------------------------------------------------------------------------------------------
19699    XLA_AE_LINES_PKG.ValidateCurrentLine;
19700 
19701    ------------------------------------------------------------------------------------
19702    -- 4219869 Business Flow
19703    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19704    ------------------------------------------------------------------------------------
19705    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19706 
19707    ----------------------------------------------------------------------------------
19708    -- 4219869 Business Flow
19709    -- Update journal entry status -- Need to generate this within IF <condition>
19710    ----------------------------------------------------------------------------------
19711    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19712          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19713          ,p_balance_type_code => l_balance_type_code
19714          );
19715 
19716    -------------------------------------------------------------------------------------------
19717    -- 4262811 - Generate the Accrual Reversal lines
19718    -------------------------------------------------------------------------------------------
19719    BEGIN
19720       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19721                               (g_array_event(p_event_id).array_value_num('header_index'));
19722       IF l_acc_rev_flag IS NULL THEN
19723          l_acc_rev_flag := 'N';
19724       END IF;
19725    EXCEPTION
19726       WHEN OTHERS THEN
19727          l_acc_rev_flag := 'N';
19728    END;
19729    --
19730    IF (l_acc_rev_flag = 'Y') THEN
19731 
19732        -- 4645092  ------------------------------------------------------------------------------
19733        -- To allow MPA report to determine if it should generate report process
19734        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19735        ------------------------------------------------------------------------------------------
19736 
19737        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19738        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19739    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
19740    -- call ADRs
19741    -- Bug 4922099
19742    --
19743    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19744         (NVL(l_actual_upg_option, 'N') = 'O') OR
19745         (NVL(l_enc_upg_option, 'N') = 'O')
19746       )
19747    THEN
19748    NULL;
19749    --
19750    --
19751    
19752   l_ccid := AcctDerRule_4(
19753            p_application_id           => p_application_id
19754          , p_ae_header_id             => l_ae_header_id 
19755 , p_source_4 => p_source_4
19756          , x_transaction_coa_id       => l_adr_transaction_coa_id
19757          , x_accounting_coa_id        => l_adr_accounting_coa_id
19758          , x_value_type_code          => l_adr_value_type_code
19759          , p_side                     => 'NA'
19760    );
19761 
19762    xla_ae_lines_pkg.set_ccid(
19763     p_code_combination_id          => l_ccid
19764   , p_value_type_code              => l_adr_value_type_code
19765   , p_transaction_coa_id           => l_adr_transaction_coa_id
19766   , p_accounting_coa_id            => l_adr_accounting_coa_id
19767   , p_adr_code                     => 'CST_DEFAULT'
19768   , p_adr_type_code                => 'S'
19769   , p_component_type               => l_component_type
19770   , p_component_code               => l_component_code
19771   , p_component_type_code          => l_component_type_code
19772   , p_component_appl_id            => l_component_appl_id
19773   , p_amb_context_code             => l_amb_context_code
19774   , p_side                         => 'NA'
19775   );
19776 
19777 
19778    --
19779    --
19780    END IF;
19781 
19782        --
19783        -- Update the line information that should be overwritten
19784        --
19785        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19786                                          p_header_num   => 1);
19787        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19788 
19789        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19790 
19791        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19792           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19793        END IF;
19794 
19795       --
19796       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19797       --
19798       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19799           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19800       ELSE
19801           ---------------------------------------------------------------------------------------------------
19802           -- 4262811a Switch Sign
19803           ---------------------------------------------------------------------------------------------------
19804           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19805           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19806                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19807           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19808                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19809           -- 5132302
19810           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19811                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19812 
19813       END IF;
19814 
19815       -- 4955764
19816       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19817       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19818 
19819 
19820       XLA_AE_LINES_PKG.ValidateCurrentLine;
19821       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19822 
19823       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19824                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19825                ,p_balance_type_code => l_balance_type_code);
19826 
19827    END IF;
19828 
19829    -----------------------------------------------------------------------------------------
19830    -- 4262811 Multiperiod Accounting
19831    -----------------------------------------------------------------------------------------
19832      -- No MPA option is assigned.
19833 
19834 
19835 END IF;
19836 END IF;
19837 --
19838 
19839 --
19840 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19841    trace
19842       (p_msg      => 'END of AcctLineType_38'
19843       ,p_level    => C_LEVEL_PROCEDURE
19844       ,p_module   => l_log_module);
19845 END IF;
19846 --
19847 EXCEPTION
19848   WHEN xla_exceptions_pkg.application_exception THEN
19849       RAISE;
19850   WHEN OTHERS THEN
19851        xla_exceptions_pkg.raise_message
19852            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_38');
19853 END AcctLineType_38;
19854 --
19855 
19856 ---------------------------------------
19857 --
19858 -- PRIVATE FUNCTION
19859 --         AcctLineType_39
19860 --
19861 ---------------------------------------
19862 PROCEDURE AcctLineType_39 (
19863   p_application_id        IN NUMBER
19864  ,p_event_id              IN NUMBER
19865  ,p_calculate_acctd_flag  IN VARCHAR2
19866  ,p_calculate_g_l_flag    IN VARCHAR2
19867  ,p_actual_flag           IN OUT VARCHAR2
19868  ,p_balance_type_code     OUT VARCHAR2
19869  ,p_gain_or_loss_ref      OUT VARCHAR2
19870  
19871 --Cost Management Default Account
19872  , p_source_4            IN NUMBER
19873 --DISTRIBUTION_IDENTIFIER
19874  , p_source_11            IN NUMBER
19875 --Distribution Type
19876  , p_source_12            IN VARCHAR2
19877  , p_source_12_meaning    IN VARCHAR2
19878 --Entered Currency Code
19879  , p_source_15            IN VARCHAR2
19880 --Entered Amount
19881  , p_source_18            IN NUMBER
19882 --Currency Conversion Date
19883  , p_source_19            IN DATE
19884 --Currency Conversion Rate
19885  , p_source_20            IN NUMBER
19886 --Currency Conversion Type
19887  , p_source_21            IN VARCHAR2
19888 --Accounted Amount
19889  , p_source_22            IN NUMBER
19890 --Accounting Line Type
19891  , p_source_24            IN NUMBER
19892 )
19893 IS
19894 
19895 l_component_type              VARCHAR2(80);
19896 l_component_code              VARCHAR2(30);
19897 l_component_type_code         VARCHAR2(1);
19898 l_component_appl_id           INTEGER;
19899 l_amb_context_code            VARCHAR2(30);
19900 l_entity_code                 VARCHAR2(30);
19901 l_event_class_code            VARCHAR2(30);
19902 l_ae_header_id                NUMBER;
19903 l_event_type_code             VARCHAR2(30);
19904 l_line_definition_code        VARCHAR2(30);
19905 l_line_definition_owner_code  VARCHAR2(1);
19906 --
19907 -- adr variables
19908 l_segment                     VARCHAR2(30);
19909 l_ccid                        NUMBER;
19910 l_adr_transaction_coa_id      NUMBER;
19911 l_adr_accounting_coa_id       NUMBER;
19912 l_adr_flexfield_segment_code  VARCHAR2(30);
19913 l_adr_flex_value_set_id       NUMBER;
19914 l_adr_value_type_code         VARCHAR2(30);
19915 l_adr_value_combination_id    NUMBER;
19916 l_adr_value_segment_code      VARCHAR2(30);
19917 
19918 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19919 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19920 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19921 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19922 
19923 -- 4262811 Variables ------------------------------------------------------------------------------------------
19924 l_entered_amt_idx             NUMBER;
19925 l_accted_amt_idx              NUMBER;
19926 l_acc_rev_flag                VARCHAR2(1);
19927 l_accrual_line_num            NUMBER;
19928 l_tmp_amt                     NUMBER;
19929 l_acc_rev_natural_side_code   VARCHAR2(1);
19930 
19931 l_num_entries                 NUMBER;
19932 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19933 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19934 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19935 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19936 l_recog_line_1                NUMBER;
19937 l_recog_line_2                NUMBER;
19938 
19939 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19940 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19941 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19942 
19943 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19944 
19945 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19946 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19947 
19948 ---------------------------------------------------------------------------------------------------------------
19949 
19950 
19951 --
19952 -- bulk performance
19953 --
19954 l_balance_type_code           VARCHAR2(1);
19955 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19956 l_log_module                  VARCHAR2(240);
19957 
19958 --
19959 -- Upgrade strategy
19960 --
19961 l_actual_upg_option           VARCHAR2(1);
19962 l_enc_upg_option           VARCHAR2(1);
19963 
19964 --
19965 BEGIN
19966 --
19967 IF g_log_enabled THEN
19968       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_39';
19969 END IF;
19970 --
19971 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19972 
19973       trace
19974          (p_msg      => 'BEGIN of AcctLineType_39'
19975          ,p_level    => C_LEVEL_PROCEDURE
19976          ,p_module   => l_log_module);
19977 
19978 END IF;
19979 --
19980 l_component_type             := 'AMB_JLT';
19981 l_component_code             := 'COST_VARIANCE';
19982 l_component_type_code        := 'S';
19983 l_component_appl_id          :=  707;
19984 l_amb_context_code           := 'DEFAULT';
19985 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
19986 l_event_class_code           := 'WIP_MTL';
19987 l_event_type_code            := 'WIP_MTL_ALL';
19988 l_line_definition_owner_code := 'S';
19989 l_line_definition_code       := 'WIP_MTL';
19990 --
19991 l_balance_type_code          := 'A';
19992 l_segment                     := NULL;
19993 l_ccid                        := NULL;
19994 l_adr_transaction_coa_id      := NULL;
19995 l_adr_accounting_coa_id       := NULL;
19996 l_adr_flexfield_segment_code  := NULL;
19997 l_adr_flex_value_set_id       := NULL;
19998 l_adr_value_type_code         := NULL;
19999 l_adr_value_combination_id    := NULL;
20000 l_adr_value_segment_code      := NULL;
20001 
20002 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
20003 l_bflow_class_code           := '';    -- 4219869 Business Flow
20004 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
20005 l_budgetary_control_flag     := 'N';
20006 
20007 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20008 l_bflow_applied_to_amt       := NULL; -- 5132302
20009 l_entered_amt_idx            := NULL;          -- 4262811
20010 l_accted_amt_idx             := NULL;          -- 4262811
20011 l_acc_rev_flag               := NULL;          -- 4262811
20012 l_accrual_line_num           := NULL;          -- 4262811
20013 l_tmp_amt                    := NULL;          -- 4262811
20014 --
20015  
20016 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20017     l_balance_type_code <> 'B' THEN
20018 IF NVL(p_source_24,9E125) =  13
20019  THEN 
20020 
20021    --
20022    XLA_AE_LINES_PKG.SetNewLine;
20023 
20024    p_balance_type_code          := l_balance_type_code;
20025    -- set the flag so later we will know whether the gain loss line needs to be created
20026    
20027    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20028      p_actual_flag :='A';
20029    END IF;
20030 
20031    --
20032    -- bulk performance
20033    --
20034    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20035                                       p_header_num   => 0); -- 4262811
20036    --
20037    -- set accounting line options
20038    --
20039    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20040            p_natural_side_code          => 'D'
20041          , p_gain_or_loss_flag          => 'N'
20042          , p_gl_transfer_mode_code      => 'S'
20043          , p_acct_entry_type_code       => 'A'
20044          , p_switch_side_flag           => 'Y'
20045          , p_merge_duplicate_code       => 'N'
20046          );
20047    --
20048    l_acc_rev_natural_side_code := 'C';  -- 4262811
20049    -- 
20050    --
20051    -- set accounting line type info
20052    --
20053    xla_ae_lines_pkg.SetAcctLineType
20054       (p_component_type             => l_component_type
20055       ,p_event_type_code            => l_event_type_code
20056       ,p_line_definition_owner_code => l_line_definition_owner_code
20057       ,p_line_definition_code       => l_line_definition_code
20058       ,p_accounting_line_code       => l_component_code
20059       ,p_accounting_line_type_code  => l_component_type_code
20060       ,p_accounting_line_appl_id    => l_component_appl_id
20061       ,p_amb_context_code           => l_amb_context_code
20062       ,p_entity_code                => l_entity_code
20063       ,p_event_class_code           => l_event_class_code);
20064    --
20065    -- set accounting class
20066    --
20067    xla_ae_lines_pkg.SetAcctClass(
20068            p_accounting_class_code  => 'COST_VARIANCE'
20069          , p_ae_header_id           => l_ae_header_id
20070          );
20071 
20072    --
20073    -- set rounding class
20074    --
20075    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20076                       'COST_VARIANCE';
20077 
20078    --
20079    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20080    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20081    --
20082    -- bulk performance
20083    --
20084    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20085 
20086    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20087       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20088 
20089    -- 4955764
20090    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20091       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20092 
20093    -- 4458381 Public Sector Enh
20094    
20095    --
20096    -- set accounting attributes for the line type
20097    --
20098    l_entered_amt_idx := 3;
20099    l_accted_amt_idx  := 8;
20100    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20101    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
20102    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
20103    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
20104    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
20105    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
20106    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
20107    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
20108    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
20109    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
20110    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
20111    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
20112    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
20113    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
20114    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
20115    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
20116    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
20117 
20118    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20119    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20120 
20121    ---------------------------------------------------------------------------------------------------------------
20122    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20123    ---------------------------------------------------------------------------------------------------------------
20124    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20125 
20126    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20127    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20128 
20129    IF xla_accounting_cache_pkg.GetValueChar
20130          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20131          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20132    AND l_bflow_method_code = 'PRIOR_ENTRY'
20133 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20134    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20135          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20136        )
20137    THEN
20138          xla_ae_lines_pkg.BflowUpgEntry
20139            (p_business_method_code    => l_bflow_method_code
20140            ,p_business_class_code     => l_bflow_class_code
20141            ,p_balance_type            => l_balance_type_code);
20142    ELSE
20143       NULL;
20144 -- No business flow processing for business flow method of NONE.
20145    END IF;
20146 
20147    --
20148    -- call analytical criteria
20149    --
20150    
20151    --
20152    -- call description
20153    --
20154    -- No description or it is inherited.
20155    --
20156    -- call ADRs
20157    -- Bug 4922099
20158    --
20159    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20160         (NVL(l_actual_upg_option, 'N') = 'O') OR
20161         (NVL(l_enc_upg_option, 'N') = 'O')
20162       )
20163    THEN
20164    NULL;
20165    --
20166    --
20167    
20168   l_ccid := AcctDerRule_4(
20169            p_application_id           => p_application_id
20170          , p_ae_header_id             => l_ae_header_id 
20171 , p_source_4 => p_source_4
20172          , x_transaction_coa_id       => l_adr_transaction_coa_id
20173          , x_accounting_coa_id        => l_adr_accounting_coa_id
20174          , x_value_type_code          => l_adr_value_type_code
20175          , p_side                     => 'NA'
20176    );
20177 
20178    xla_ae_lines_pkg.set_ccid(
20179     p_code_combination_id          => l_ccid
20180   , p_value_type_code              => l_adr_value_type_code
20181   , p_transaction_coa_id           => l_adr_transaction_coa_id
20182   , p_accounting_coa_id            => l_adr_accounting_coa_id
20183   , p_adr_code                     => 'CST_DEFAULT'
20184   , p_adr_type_code                => 'S'
20185   , p_component_type               => l_component_type
20186   , p_component_code               => l_component_code
20187   , p_component_type_code          => l_component_type_code
20188   , p_component_appl_id            => l_component_appl_id
20189   , p_amb_context_code             => l_amb_context_code
20190   , p_side                         => 'NA'
20191   );
20192 
20193 
20194    --
20195    --
20196    END IF;
20197    --
20198    -- Bug 4922099
20199    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20200           (NVL(l_enc_upg_option, 'N') = 'O')
20201         ) AND
20202         (l_bflow_method_code = 'PRIOR_ENTRY')
20203       )
20204    THEN
20205       IF
20206       --
20207       1 = 2
20208       --
20209       THEN
20210       xla_accounting_err_pkg.build_message
20211                                     (p_appli_s_name            => 'XLA'
20212                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20213                                     ,p_token_1                 => 'LINE_NUMBER'
20214                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20215                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20216                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20217                                                                              l_component_type
20218                                                                             ,l_component_code
20219                                                                             ,l_component_type_code
20220                                                                             ,l_component_appl_id
20221                                                                             ,l_amb_context_code
20222                                                                             ,l_entity_code
20223                                                                             ,l_event_class_code
20224                                                                            )
20225                                     ,p_token_3                 => 'OWNER'
20226                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20227                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20228                                                                           ,p_lookup_code    => l_component_type_code
20229                                                                          )
20230                                     ,p_token_4                 => 'PRODUCT_NAME'
20231                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20232                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20233                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20234                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20235                                     ,p_ae_header_id            =>  NULL
20236                                        );
20237 
20238         IF (C_LEVEL_ERROR>= g_log_level) THEN
20239                  trace
20240                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20241                       ,p_level    => C_LEVEL_ERROR
20242                       ,p_module   => l_log_module);
20243         END IF;
20244       END IF;
20245    END IF;
20246    --
20247    --
20248    ------------------------------------------------------------------------------------------------
20249    -- 4219869 Business Flow
20250    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20251    -- Prior Entry.  Currently, the following code is always generated.
20252    ------------------------------------------------------------------------------------------------
20253    XLA_AE_LINES_PKG.ValidateCurrentLine;
20254 
20255    ------------------------------------------------------------------------------------
20256    -- 4219869 Business Flow
20257    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20258    ------------------------------------------------------------------------------------
20259    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20260 
20261    ----------------------------------------------------------------------------------
20262    -- 4219869 Business Flow
20263    -- Update journal entry status -- Need to generate this within IF <condition>
20264    ----------------------------------------------------------------------------------
20265    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20266          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20267          ,p_balance_type_code => l_balance_type_code
20268          );
20269 
20270    -------------------------------------------------------------------------------------------
20271    -- 4262811 - Generate the Accrual Reversal lines
20272    -------------------------------------------------------------------------------------------
20273    BEGIN
20274       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20275                               (g_array_event(p_event_id).array_value_num('header_index'));
20276       IF l_acc_rev_flag IS NULL THEN
20277          l_acc_rev_flag := 'N';
20278       END IF;
20279    EXCEPTION
20280       WHEN OTHERS THEN
20281          l_acc_rev_flag := 'N';
20282    END;
20283    --
20284    IF (l_acc_rev_flag = 'Y') THEN
20285 
20286        -- 4645092  ------------------------------------------------------------------------------
20287        -- To allow MPA report to determine if it should generate report process
20288        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20289        ------------------------------------------------------------------------------------------
20290 
20291        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20292        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20293    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
20294    -- call ADRs
20295    -- Bug 4922099
20296    --
20297    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20298         (NVL(l_actual_upg_option, 'N') = 'O') OR
20299         (NVL(l_enc_upg_option, 'N') = 'O')
20300       )
20301    THEN
20302    NULL;
20303    --
20304    --
20305    
20306   l_ccid := AcctDerRule_4(
20307            p_application_id           => p_application_id
20308          , p_ae_header_id             => l_ae_header_id 
20309 , p_source_4 => p_source_4
20310          , x_transaction_coa_id       => l_adr_transaction_coa_id
20311          , x_accounting_coa_id        => l_adr_accounting_coa_id
20312          , x_value_type_code          => l_adr_value_type_code
20313          , p_side                     => 'NA'
20314    );
20315 
20316    xla_ae_lines_pkg.set_ccid(
20317     p_code_combination_id          => l_ccid
20318   , p_value_type_code              => l_adr_value_type_code
20319   , p_transaction_coa_id           => l_adr_transaction_coa_id
20320   , p_accounting_coa_id            => l_adr_accounting_coa_id
20321   , p_adr_code                     => 'CST_DEFAULT'
20322   , p_adr_type_code                => 'S'
20323   , p_component_type               => l_component_type
20324   , p_component_code               => l_component_code
20325   , p_component_type_code          => l_component_type_code
20326   , p_component_appl_id            => l_component_appl_id
20327   , p_amb_context_code             => l_amb_context_code
20328   , p_side                         => 'NA'
20329   );
20330 
20331 
20332    --
20333    --
20334    END IF;
20335 
20336        --
20337        -- Update the line information that should be overwritten
20338        --
20339        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20340                                          p_header_num   => 1);
20341        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20342 
20343        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20344 
20345        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20346           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20347        END IF;
20348 
20349       --
20350       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20351       --
20352       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20353           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20354       ELSE
20355           ---------------------------------------------------------------------------------------------------
20356           -- 4262811a Switch Sign
20357           ---------------------------------------------------------------------------------------------------
20358           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20359           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20360                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20361           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20362                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20363           -- 5132302
20364           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20365                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20366 
20367       END IF;
20368 
20369       -- 4955764
20370       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20371       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20372 
20373 
20374       XLA_AE_LINES_PKG.ValidateCurrentLine;
20375       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20376 
20377       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20378                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20379                ,p_balance_type_code => l_balance_type_code);
20380 
20381    END IF;
20382 
20383    -----------------------------------------------------------------------------------------
20384    -- 4262811 Multiperiod Accounting
20385    -----------------------------------------------------------------------------------------
20386      -- No MPA option is assigned.
20387 
20388 
20389 END IF;
20390 END IF;
20391 --
20392 
20393 --
20394 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20395    trace
20396       (p_msg      => 'END of AcctLineType_39'
20397       ,p_level    => C_LEVEL_PROCEDURE
20398       ,p_module   => l_log_module);
20399 END IF;
20400 --
20401 EXCEPTION
20402   WHEN xla_exceptions_pkg.application_exception THEN
20403       RAISE;
20404   WHEN OTHERS THEN
20405        xla_exceptions_pkg.raise_message
20406            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_39');
20407 END AcctLineType_39;
20408 --
20409 
20410 ---------------------------------------
20411 --
20412 -- PRIVATE FUNCTION
20413 --         AcctLineType_40
20414 --
20415 ---------------------------------------
20416 PROCEDURE AcctLineType_40 (
20417   p_application_id        IN NUMBER
20418  ,p_event_id              IN NUMBER
20419  ,p_calculate_acctd_flag  IN VARCHAR2
20420  ,p_calculate_g_l_flag    IN VARCHAR2
20421  ,p_actual_flag           IN OUT VARCHAR2
20422  ,p_balance_type_code     OUT VARCHAR2
20423  ,p_gain_or_loss_ref      OUT VARCHAR2
20424  
20425 --Cost Management Default Account
20426  , p_source_4            IN NUMBER
20427 --DISTRIBUTION_IDENTIFIER
20428  , p_source_11            IN NUMBER
20429 --Distribution Type
20430  , p_source_12            IN VARCHAR2
20431  , p_source_12_meaning    IN VARCHAR2
20432 --Entered Currency Code
20433  , p_source_15            IN VARCHAR2
20434 --Entered Amount
20435  , p_source_18            IN NUMBER
20436 --Currency Conversion Date
20437  , p_source_19            IN DATE
20438 --Currency Conversion Rate
20439  , p_source_20            IN NUMBER
20440 --Currency Conversion Type
20441  , p_source_21            IN VARCHAR2
20442 --Accounted Amount
20443  , p_source_22            IN NUMBER
20444 --Accounting Line Type
20445  , p_source_24            IN NUMBER
20446 )
20447 IS
20448 
20449 l_component_type              VARCHAR2(80);
20450 l_component_code              VARCHAR2(30);
20451 l_component_type_code         VARCHAR2(1);
20452 l_component_appl_id           INTEGER;
20453 l_amb_context_code            VARCHAR2(30);
20454 l_entity_code                 VARCHAR2(30);
20455 l_event_class_code            VARCHAR2(30);
20456 l_ae_header_id                NUMBER;
20457 l_event_type_code             VARCHAR2(30);
20458 l_line_definition_code        VARCHAR2(30);
20459 l_line_definition_owner_code  VARCHAR2(1);
20460 --
20461 -- adr variables
20462 l_segment                     VARCHAR2(30);
20463 l_ccid                        NUMBER;
20464 l_adr_transaction_coa_id      NUMBER;
20465 l_adr_accounting_coa_id       NUMBER;
20466 l_adr_flexfield_segment_code  VARCHAR2(30);
20467 l_adr_flex_value_set_id       NUMBER;
20468 l_adr_value_type_code         VARCHAR2(30);
20469 l_adr_value_combination_id    NUMBER;
20470 l_adr_value_segment_code      VARCHAR2(30);
20471 
20472 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
20473 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
20474 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
20475 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
20476 
20477 -- 4262811 Variables ------------------------------------------------------------------------------------------
20478 l_entered_amt_idx             NUMBER;
20479 l_accted_amt_idx              NUMBER;
20480 l_acc_rev_flag                VARCHAR2(1);
20481 l_accrual_line_num            NUMBER;
20482 l_tmp_amt                     NUMBER;
20483 l_acc_rev_natural_side_code   VARCHAR2(1);
20484 
20485 l_num_entries                 NUMBER;
20486 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
20487 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
20488 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
20489 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
20490 l_recog_line_1                NUMBER;
20491 l_recog_line_2                NUMBER;
20492 
20493 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
20494 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
20495 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
20496 
20497 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20498 
20499 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
20500 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
20501 
20502 ---------------------------------------------------------------------------------------------------------------
20503 
20504 
20505 --
20506 -- bulk performance
20507 --
20508 l_balance_type_code           VARCHAR2(1);
20509 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
20510 l_log_module                  VARCHAR2(240);
20511 
20512 --
20513 -- Upgrade strategy
20514 --
20515 l_actual_upg_option           VARCHAR2(1);
20516 l_enc_upg_option           VARCHAR2(1);
20517 
20518 --
20519 BEGIN
20520 --
20521 IF g_log_enabled THEN
20522       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_40';
20523 END IF;
20524 --
20525 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20526 
20527       trace
20528          (p_msg      => 'BEGIN of AcctLineType_40'
20529          ,p_level    => C_LEVEL_PROCEDURE
20530          ,p_module   => l_log_module);
20531 
20532 END IF;
20533 --
20534 l_component_type             := 'AMB_JLT';
20535 l_component_code             := 'COST_VARIANCE';
20536 l_component_type_code        := 'S';
20537 l_component_appl_id          :=  707;
20538 l_amb_context_code           := 'DEFAULT';
20539 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
20540 l_event_class_code           := 'USER_DEFINE';
20541 l_event_type_code            := 'UIPV_TXFR';
20542 l_line_definition_owner_code := 'S';
20543 l_line_definition_code       := 'USER_IPV_TXFR';
20544 --
20545 l_balance_type_code          := 'A';
20546 l_segment                     := NULL;
20547 l_ccid                        := NULL;
20548 l_adr_transaction_coa_id      := NULL;
20549 l_adr_accounting_coa_id       := NULL;
20550 l_adr_flexfield_segment_code  := NULL;
20551 l_adr_flex_value_set_id       := NULL;
20552 l_adr_value_type_code         := NULL;
20553 l_adr_value_combination_id    := NULL;
20554 l_adr_value_segment_code      := NULL;
20555 
20556 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
20557 l_bflow_class_code           := '';    -- 4219869 Business Flow
20558 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
20559 l_budgetary_control_flag     := 'N';
20560 
20561 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20562 l_bflow_applied_to_amt       := NULL; -- 5132302
20563 l_entered_amt_idx            := NULL;          -- 4262811
20564 l_accted_amt_idx             := NULL;          -- 4262811
20565 l_acc_rev_flag               := NULL;          -- 4262811
20566 l_accrual_line_num           := NULL;          -- 4262811
20567 l_tmp_amt                    := NULL;          -- 4262811
20568 --
20569  
20570 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20571     l_balance_type_code <> 'B' THEN
20572 IF NVL(p_source_24,9E125) =  13
20573  THEN 
20574 
20575    --
20576    XLA_AE_LINES_PKG.SetNewLine;
20577 
20578    p_balance_type_code          := l_balance_type_code;
20579    -- set the flag so later we will know whether the gain loss line needs to be created
20580    
20581    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20582      p_actual_flag :='A';
20583    END IF;
20584 
20585    --
20586    -- bulk performance
20587    --
20588    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20589                                       p_header_num   => 0); -- 4262811
20590    --
20591    -- set accounting line options
20592    --
20593    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20594            p_natural_side_code          => 'D'
20595          , p_gain_or_loss_flag          => 'N'
20596          , p_gl_transfer_mode_code      => 'S'
20597          , p_acct_entry_type_code       => 'A'
20598          , p_switch_side_flag           => 'Y'
20599          , p_merge_duplicate_code       => 'N'
20600          );
20601    --
20602    l_acc_rev_natural_side_code := 'C';  -- 4262811
20603    -- 
20604    --
20605    -- set accounting line type info
20606    --
20607    xla_ae_lines_pkg.SetAcctLineType
20608       (p_component_type             => l_component_type
20609       ,p_event_type_code            => l_event_type_code
20610       ,p_line_definition_owner_code => l_line_definition_owner_code
20611       ,p_line_definition_code       => l_line_definition_code
20612       ,p_accounting_line_code       => l_component_code
20613       ,p_accounting_line_type_code  => l_component_type_code
20614       ,p_accounting_line_appl_id    => l_component_appl_id
20615       ,p_amb_context_code           => l_amb_context_code
20616       ,p_entity_code                => l_entity_code
20617       ,p_event_class_code           => l_event_class_code);
20618    --
20619    -- set accounting class
20620    --
20621    xla_ae_lines_pkg.SetAcctClass(
20622            p_accounting_class_code  => 'COST_VARIANCE'
20623          , p_ae_header_id           => l_ae_header_id
20624          );
20625 
20626    --
20627    -- set rounding class
20628    --
20629    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20630                       'COST_VARIANCE';
20631 
20632    --
20633    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20634    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20635    --
20636    -- bulk performance
20637    --
20638    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20639 
20640    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20641       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20642 
20643    -- 4955764
20644    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20645       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20646 
20647    -- 4458381 Public Sector Enh
20648    
20649    --
20650    -- set accounting attributes for the line type
20651    --
20652    l_entered_amt_idx := 3;
20653    l_accted_amt_idx  := 8;
20654    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20655    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
20656    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
20657    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
20658    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
20659    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
20660    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
20661    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
20662    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
20663    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
20664    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
20665    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
20666    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
20667    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
20668    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
20669    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
20670    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
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_000007_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           := 'USER_DEFINE';
21095 l_event_type_code            := 'UCG_TXFR';
21096 l_line_definition_owner_code := 'S';
21097 l_line_definition_code       := 'USER_CG_TXFR';
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_000007_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           := 'CON_INV_OWNR_TXFR';
21649 l_event_type_code            := 'CON_INV_OWNR_TXFR_ALL';
21650 l_line_definition_owner_code := 'S';
21651 l_line_definition_code       := 'CON_INV_OWNR_TXFR';
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_000007_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            := 'UMISC_RCPT';
22204 l_line_definition_owner_code := 'S';
22205 l_line_definition_code       := 'USER_RCPT';
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_000007_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            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
22758 l_line_definition_owner_code := 'S';
22759 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
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_000007_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             := 'DEFERRED_COGS';
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           := 'SALES_ORDER';
23311 l_event_type_code            := 'SALES_ORDER_ALL';
23312 l_line_definition_owner_code := 'S';
23313 l_line_definition_code       := 'SALES_ORDER';
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) =  36
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  => 'DEFERRED_COGS'
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                       'DEFERRED_COGS';
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_000007_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             := 'EST_SCRAP_ABSORPTION';
23860 l_component_type_code        := 'S';
23861 l_component_appl_id          :=  707;
23862 l_amb_context_code           := 'DEFAULT';
23863 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
23864 l_event_class_code           := 'ABSORPTION';
23865 l_event_type_code            := 'ABSORPTION_ALL';
23866 l_line_definition_owner_code := 'S';
23867 l_line_definition_code       := 'ABSORPTION';
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) =  29
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  => 'ESTIMATED_SCRAP_ABSORPTION'
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                       'ESTIMATED_SCRAP_ABSORPTION';
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_000007_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             := 'EXPENSE';
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            := 'UAVG_COST_UPD';
24420 l_line_definition_owner_code := 'S';
24421 l_line_definition_code       := 'USER_COST_UPD';
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) =  20
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  => 'EXPENSE'
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                       'EXPENSE';
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_000007_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 --Receiving Accounting Line Type
24860  , p_source_5            IN VARCHAR2
24861 --DISTRIBUTION_IDENTIFIER
24862  , p_source_11            IN NUMBER
24863 --Distribution Type
24864  , p_source_12            IN VARCHAR2
24865  , p_source_12_meaning    IN VARCHAR2
24866 --Entered Amount
24867  , p_source_18            IN NUMBER
24868 --Accounted Amount
24869  , p_source_22            IN NUMBER
24870 --Entered Currency Code
24871  , p_source_32            IN VARCHAR2
24872 --Currency Conversion Date
24873  , p_source_33            IN DATE
24874 --Currency Conversion Rate
24875  , p_source_34            IN NUMBER
24876 )
24877 IS
24878 
24879 l_component_type              VARCHAR2(80);
24880 l_component_code              VARCHAR2(30);
24881 l_component_type_code         VARCHAR2(1);
24882 l_component_appl_id           INTEGER;
24883 l_amb_context_code            VARCHAR2(30);
24884 l_entity_code                 VARCHAR2(30);
24885 l_event_class_code            VARCHAR2(30);
24886 l_ae_header_id                NUMBER;
24887 l_event_type_code             VARCHAR2(30);
24888 l_line_definition_code        VARCHAR2(30);
24889 l_line_definition_owner_code  VARCHAR2(1);
24890 --
24891 -- adr variables
24892 l_segment                     VARCHAR2(30);
24893 l_ccid                        NUMBER;
24894 l_adr_transaction_coa_id      NUMBER;
24895 l_adr_accounting_coa_id       NUMBER;
24896 l_adr_flexfield_segment_code  VARCHAR2(30);
24897 l_adr_flex_value_set_id       NUMBER;
24898 l_adr_value_type_code         VARCHAR2(30);
24899 l_adr_value_combination_id    NUMBER;
24900 l_adr_value_segment_code      VARCHAR2(30);
24901 
24902 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24903 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24904 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24905 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24906 
24907 -- 4262811 Variables ------------------------------------------------------------------------------------------
24908 l_entered_amt_idx             NUMBER;
24909 l_accted_amt_idx              NUMBER;
24910 l_acc_rev_flag                VARCHAR2(1);
24911 l_accrual_line_num            NUMBER;
24912 l_tmp_amt                     NUMBER;
24913 l_acc_rev_natural_side_code   VARCHAR2(1);
24914 
24915 l_num_entries                 NUMBER;
24916 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24917 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24918 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24919 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24920 l_recog_line_1                NUMBER;
24921 l_recog_line_2                NUMBER;
24922 
24923 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24924 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24925 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24926 
24927 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24928 
24929 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24930 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24931 
24932 ---------------------------------------------------------------------------------------------------------------
24933 
24934 
24935 --
24936 -- bulk performance
24937 --
24938 l_balance_type_code           VARCHAR2(1);
24939 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24940 l_log_module                  VARCHAR2(240);
24941 
24942 --
24943 -- Upgrade strategy
24944 --
24945 l_actual_upg_option           VARCHAR2(1);
24946 l_enc_upg_option           VARCHAR2(1);
24947 
24948 --
24949 BEGIN
24950 --
24951 IF g_log_enabled THEN
24952       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_48';
24953 END IF;
24954 --
24955 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24956 
24957       trace
24958          (p_msg      => 'BEGIN of AcctLineType_48'
24959          ,p_level    => C_LEVEL_PROCEDURE
24960          ,p_module   => l_log_module);
24961 
24962 END IF;
24963 --
24964 l_component_type             := 'AMB_JLT';
24965 l_component_code             := 'EXPENSE';
24966 l_component_type_code        := 'S';
24967 l_component_appl_id          :=  707;
24968 l_amb_context_code           := 'DEFAULT';
24969 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
24970 l_event_class_code           := 'LDD_COST_ADJ_DEL';
24971 l_event_type_code            := 'LDD_COST_ADJ_DEL_ALL';
24972 l_line_definition_owner_code := 'S';
24973 l_line_definition_code       := 'LDD_COST_ADJ_DEL';
24974 --
24975 l_balance_type_code          := 'A';
24976 l_segment                     := NULL;
24977 l_ccid                        := NULL;
24978 l_adr_transaction_coa_id      := NULL;
24979 l_adr_accounting_coa_id       := NULL;
24980 l_adr_flexfield_segment_code  := NULL;
24981 l_adr_flex_value_set_id       := NULL;
24982 l_adr_value_type_code         := NULL;
24983 l_adr_value_combination_id    := NULL;
24984 l_adr_value_segment_code      := NULL;
24985 
24986 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
24987 l_bflow_class_code           := '';    -- 4219869 Business Flow
24988 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
24989 l_budgetary_control_flag     := 'N';
24990 
24991 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24992 l_bflow_applied_to_amt       := NULL; -- 5132302
24993 l_entered_amt_idx            := NULL;          -- 4262811
24994 l_accted_amt_idx             := NULL;          -- 4262811
24995 l_acc_rev_flag               := NULL;          -- 4262811
24996 l_accrual_line_num           := NULL;          -- 4262811
24997 l_tmp_amt                    := NULL;          -- 4262811
24998 --
24999  
25000 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25001     l_balance_type_code <> 'B' THEN
25002 IF NVL(p_source_5,'
25003 ') =  'Expense'
25004  THEN 
25005 
25006    --
25007    XLA_AE_LINES_PKG.SetNewLine;
25008 
25009    p_balance_type_code          := l_balance_type_code;
25010    -- set the flag so later we will know whether the gain loss line needs to be created
25011    
25012    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25013      p_actual_flag :='A';
25014    END IF;
25015 
25016    --
25017    -- bulk performance
25018    --
25019    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25020                                       p_header_num   => 0); -- 4262811
25021    --
25022    -- set accounting line options
25023    --
25024    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25025            p_natural_side_code          => 'D'
25026          , p_gain_or_loss_flag          => 'N'
25027          , p_gl_transfer_mode_code      => 'S'
25028          , p_acct_entry_type_code       => 'A'
25029          , p_switch_side_flag           => 'Y'
25030          , p_merge_duplicate_code       => 'N'
25031          );
25032    --
25033    l_acc_rev_natural_side_code := 'C';  -- 4262811
25034    -- 
25035    --
25036    -- set accounting line type info
25037    --
25038    xla_ae_lines_pkg.SetAcctLineType
25039       (p_component_type             => l_component_type
25040       ,p_event_type_code            => l_event_type_code
25041       ,p_line_definition_owner_code => l_line_definition_owner_code
25042       ,p_line_definition_code       => l_line_definition_code
25043       ,p_accounting_line_code       => l_component_code
25044       ,p_accounting_line_type_code  => l_component_type_code
25045       ,p_accounting_line_appl_id    => l_component_appl_id
25046       ,p_amb_context_code           => l_amb_context_code
25047       ,p_entity_code                => l_entity_code
25048       ,p_event_class_code           => l_event_class_code);
25049    --
25050    -- set accounting class
25051    --
25052    xla_ae_lines_pkg.SetAcctClass(
25053            p_accounting_class_code  => 'EXPENSE'
25054          , p_ae_header_id           => l_ae_header_id
25055          );
25056 
25057    --
25058    -- set rounding class
25059    --
25060    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25061                       'EXPENSE';
25062 
25063    --
25064    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25065    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25066    --
25067    -- bulk performance
25068    --
25069    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25070 
25071    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25072       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25073 
25074    -- 4955764
25075    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25076       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25077 
25078    -- 4458381 Public Sector Enh
25079    
25080    --
25081    -- set accounting attributes for the line type
25082    --
25083    l_entered_amt_idx := 3;
25084    l_accted_amt_idx  := 7;
25085    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25086    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
25087    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
25088    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
25089    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
25090    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
25091    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
25092    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
25093    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
25094    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
25095    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
25096    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
25097    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
25098    l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
25099    l_rec_acct_attrs.array_num_value(7)  := p_source_22;
25100 
25101    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25102    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25103 
25104    ---------------------------------------------------------------------------------------------------------------
25105    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25106    ---------------------------------------------------------------------------------------------------------------
25107    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25108 
25109    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25110    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25111 
25112    IF xla_accounting_cache_pkg.GetValueChar
25113          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25114          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25115    AND l_bflow_method_code = 'PRIOR_ENTRY'
25116 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25117    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25118          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25119        )
25120    THEN
25121          xla_ae_lines_pkg.BflowUpgEntry
25122            (p_business_method_code    => l_bflow_method_code
25123            ,p_business_class_code     => l_bflow_class_code
25124            ,p_balance_type            => l_balance_type_code);
25125    ELSE
25126       NULL;
25127 -- No business flow processing for business flow method of NONE.
25128    END IF;
25129 
25130    --
25131    -- call analytical criteria
25132    --
25133    
25134    --
25135    -- call description
25136    --
25137    -- No description or it is inherited.
25138    --
25139    -- call ADRs
25140    -- Bug 4922099
25141    --
25142    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25143         (NVL(l_actual_upg_option, 'N') = 'O') OR
25144         (NVL(l_enc_upg_option, 'N') = 'O')
25145       )
25146    THEN
25147    NULL;
25148    --
25149    --
25150    
25151   l_ccid := AcctDerRule_4(
25152            p_application_id           => p_application_id
25153          , p_ae_header_id             => l_ae_header_id 
25154 , p_source_4 => p_source_4
25155          , x_transaction_coa_id       => l_adr_transaction_coa_id
25156          , x_accounting_coa_id        => l_adr_accounting_coa_id
25157          , x_value_type_code          => l_adr_value_type_code
25158          , p_side                     => 'NA'
25159    );
25160 
25161    xla_ae_lines_pkg.set_ccid(
25162     p_code_combination_id          => l_ccid
25163   , p_value_type_code              => l_adr_value_type_code
25164   , p_transaction_coa_id           => l_adr_transaction_coa_id
25165   , p_accounting_coa_id            => l_adr_accounting_coa_id
25166   , p_adr_code                     => 'CST_DEFAULT'
25167   , p_adr_type_code                => 'S'
25168   , p_component_type               => l_component_type
25169   , p_component_code               => l_component_code
25170   , p_component_type_code          => l_component_type_code
25171   , p_component_appl_id            => l_component_appl_id
25172   , p_amb_context_code             => l_amb_context_code
25173   , p_side                         => 'NA'
25174   );
25175 
25176 
25177    --
25178    --
25179    END IF;
25180    --
25181    -- Bug 4922099
25182    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25183           (NVL(l_enc_upg_option, 'N') = 'O')
25184         ) AND
25185         (l_bflow_method_code = 'PRIOR_ENTRY')
25186       )
25187    THEN
25188       IF
25189       --
25190       1 = 2
25191       --
25192       THEN
25193       xla_accounting_err_pkg.build_message
25194                                     (p_appli_s_name            => 'XLA'
25195                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25196                                     ,p_token_1                 => 'LINE_NUMBER'
25197                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25198                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25199                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25200                                                                              l_component_type
25201                                                                             ,l_component_code
25202                                                                             ,l_component_type_code
25203                                                                             ,l_component_appl_id
25204                                                                             ,l_amb_context_code
25205                                                                             ,l_entity_code
25206                                                                             ,l_event_class_code
25207                                                                            )
25208                                     ,p_token_3                 => 'OWNER'
25209                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25210                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25211                                                                           ,p_lookup_code    => l_component_type_code
25212                                                                          )
25213                                     ,p_token_4                 => 'PRODUCT_NAME'
25214                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25215                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25216                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25217                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25218                                     ,p_ae_header_id            =>  NULL
25219                                        );
25220 
25221         IF (C_LEVEL_ERROR>= g_log_level) THEN
25222                  trace
25223                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25224                       ,p_level    => C_LEVEL_ERROR
25225                       ,p_module   => l_log_module);
25226         END IF;
25227       END IF;
25228    END IF;
25229    --
25230    --
25231    ------------------------------------------------------------------------------------------------
25232    -- 4219869 Business Flow
25233    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25234    -- Prior Entry.  Currently, the following code is always generated.
25235    ------------------------------------------------------------------------------------------------
25236    XLA_AE_LINES_PKG.ValidateCurrentLine;
25237 
25238    ------------------------------------------------------------------------------------
25239    -- 4219869 Business Flow
25240    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25241    ------------------------------------------------------------------------------------
25242    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25243 
25244    ----------------------------------------------------------------------------------
25245    -- 4219869 Business Flow
25246    -- Update journal entry status -- Need to generate this within IF <condition>
25247    ----------------------------------------------------------------------------------
25248    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25249          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25250          ,p_balance_type_code => l_balance_type_code
25251          );
25252 
25253    -------------------------------------------------------------------------------------------
25254    -- 4262811 - Generate the Accrual Reversal lines
25255    -------------------------------------------------------------------------------------------
25256    BEGIN
25257       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25258                               (g_array_event(p_event_id).array_value_num('header_index'));
25259       IF l_acc_rev_flag IS NULL THEN
25260          l_acc_rev_flag := 'N';
25261       END IF;
25262    EXCEPTION
25263       WHEN OTHERS THEN
25264          l_acc_rev_flag := 'N';
25265    END;
25266    --
25267    IF (l_acc_rev_flag = 'Y') THEN
25268 
25269        -- 4645092  ------------------------------------------------------------------------------
25270        -- To allow MPA report to determine if it should generate report process
25271        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25272        ------------------------------------------------------------------------------------------
25273 
25274        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25275        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25276    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
25277    -- call ADRs
25278    -- Bug 4922099
25279    --
25280    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25281         (NVL(l_actual_upg_option, 'N') = 'O') OR
25282         (NVL(l_enc_upg_option, 'N') = 'O')
25283       )
25284    THEN
25285    NULL;
25286    --
25287    --
25288    
25289   l_ccid := AcctDerRule_4(
25290            p_application_id           => p_application_id
25291          , p_ae_header_id             => l_ae_header_id 
25292 , p_source_4 => p_source_4
25293          , x_transaction_coa_id       => l_adr_transaction_coa_id
25294          , x_accounting_coa_id        => l_adr_accounting_coa_id
25295          , x_value_type_code          => l_adr_value_type_code
25296          , p_side                     => 'NA'
25297    );
25298 
25299    xla_ae_lines_pkg.set_ccid(
25300     p_code_combination_id          => l_ccid
25301   , p_value_type_code              => l_adr_value_type_code
25302   , p_transaction_coa_id           => l_adr_transaction_coa_id
25303   , p_accounting_coa_id            => l_adr_accounting_coa_id
25304   , p_adr_code                     => 'CST_DEFAULT'
25305   , p_adr_type_code                => 'S'
25306   , p_component_type               => l_component_type
25307   , p_component_code               => l_component_code
25308   , p_component_type_code          => l_component_type_code
25309   , p_component_appl_id            => l_component_appl_id
25310   , p_amb_context_code             => l_amb_context_code
25311   , p_side                         => 'NA'
25312   );
25313 
25314 
25315    --
25316    --
25317    END IF;
25318 
25319        --
25320        -- Update the line information that should be overwritten
25321        --
25322        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25323                                          p_header_num   => 1);
25324        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25325 
25326        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25327 
25328        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25329           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25330        END IF;
25331 
25332       --
25333       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25334       --
25335       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25336           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25337       ELSE
25338           ---------------------------------------------------------------------------------------------------
25339           -- 4262811a Switch Sign
25340           ---------------------------------------------------------------------------------------------------
25341           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25342           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25343                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25344           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25345                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25346           -- 5132302
25347           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25348                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25349 
25350       END IF;
25351 
25352       -- 4955764
25353       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25354       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25355 
25356 
25357       XLA_AE_LINES_PKG.ValidateCurrentLine;
25358       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25359 
25360       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25361                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25362                ,p_balance_type_code => l_balance_type_code);
25363 
25364    END IF;
25365 
25366    -----------------------------------------------------------------------------------------
25367    -- 4262811 Multiperiod Accounting
25368    -----------------------------------------------------------------------------------------
25369      -- No MPA option is assigned.
25370 
25371 
25372 END IF;
25373 END IF;
25374 --
25375 
25376 --
25377 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25378    trace
25379       (p_msg      => 'END of AcctLineType_48'
25380       ,p_level    => C_LEVEL_PROCEDURE
25381       ,p_module   => l_log_module);
25382 END IF;
25383 --
25384 EXCEPTION
25385   WHEN xla_exceptions_pkg.application_exception THEN
25386       RAISE;
25387   WHEN OTHERS THEN
25388        xla_exceptions_pkg.raise_message
25389            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_48');
25390 END AcctLineType_48;
25391 --
25392 
25393 ---------------------------------------
25394 --
25395 -- PRIVATE FUNCTION
25396 --         AcctLineType_49
25397 --
25398 ---------------------------------------
25399 PROCEDURE AcctLineType_49 (
25400   p_application_id        IN NUMBER
25401  ,p_event_id              IN NUMBER
25402  ,p_calculate_acctd_flag  IN VARCHAR2
25403  ,p_calculate_g_l_flag    IN VARCHAR2
25404  ,p_actual_flag           IN OUT VARCHAR2
25405  ,p_balance_type_code     OUT VARCHAR2
25406  ,p_gain_or_loss_ref      OUT VARCHAR2
25407  
25408 --Cost Management Default Account
25409  , p_source_4            IN NUMBER
25410 --DISTRIBUTION_IDENTIFIER
25411  , p_source_11            IN NUMBER
25412 --Distribution Type
25413  , p_source_12            IN VARCHAR2
25414  , p_source_12_meaning    IN VARCHAR2
25415 --Entered Currency Code
25416  , p_source_15            IN VARCHAR2
25417 --Entered Amount
25418  , p_source_18            IN NUMBER
25419 --Currency Conversion Date
25420  , p_source_19            IN DATE
25421 --Currency Conversion Rate
25422  , p_source_20            IN NUMBER
25423 --Currency Conversion Type
25424  , p_source_21            IN VARCHAR2
25425 --Accounted Amount
25426  , p_source_22            IN NUMBER
25427 --Accounting Line Type
25428  , p_source_24            IN NUMBER
25429 )
25430 IS
25431 
25432 l_component_type              VARCHAR2(80);
25433 l_component_code              VARCHAR2(30);
25434 l_component_type_code         VARCHAR2(1);
25435 l_component_appl_id           INTEGER;
25436 l_amb_context_code            VARCHAR2(30);
25437 l_entity_code                 VARCHAR2(30);
25438 l_event_class_code            VARCHAR2(30);
25439 l_ae_header_id                NUMBER;
25440 l_event_type_code             VARCHAR2(30);
25441 l_line_definition_code        VARCHAR2(30);
25442 l_line_definition_owner_code  VARCHAR2(1);
25443 --
25444 -- adr variables
25445 l_segment                     VARCHAR2(30);
25446 l_ccid                        NUMBER;
25447 l_adr_transaction_coa_id      NUMBER;
25448 l_adr_accounting_coa_id       NUMBER;
25449 l_adr_flexfield_segment_code  VARCHAR2(30);
25450 l_adr_flex_value_set_id       NUMBER;
25451 l_adr_value_type_code         VARCHAR2(30);
25452 l_adr_value_combination_id    NUMBER;
25453 l_adr_value_segment_code      VARCHAR2(30);
25454 
25455 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
25456 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
25457 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
25458 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
25459 
25460 -- 4262811 Variables ------------------------------------------------------------------------------------------
25461 l_entered_amt_idx             NUMBER;
25462 l_accted_amt_idx              NUMBER;
25463 l_acc_rev_flag                VARCHAR2(1);
25464 l_accrual_line_num            NUMBER;
25465 l_tmp_amt                     NUMBER;
25466 l_acc_rev_natural_side_code   VARCHAR2(1);
25467 
25468 l_num_entries                 NUMBER;
25469 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
25470 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
25471 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
25472 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
25473 l_recog_line_1                NUMBER;
25474 l_recog_line_2                NUMBER;
25475 
25476 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
25477 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
25478 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
25479 
25480 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25481 
25482 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
25483 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
25484 
25485 ---------------------------------------------------------------------------------------------------------------
25486 
25487 
25488 --
25489 -- bulk performance
25490 --
25491 l_balance_type_code           VARCHAR2(1);
25492 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25493 l_log_module                  VARCHAR2(240);
25494 
25495 --
25496 -- Upgrade strategy
25497 --
25498 l_actual_upg_option           VARCHAR2(1);
25499 l_enc_upg_option           VARCHAR2(1);
25500 
25501 --
25502 BEGIN
25503 --
25504 IF g_log_enabled THEN
25505       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_49';
25506 END IF;
25507 --
25508 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25509 
25510       trace
25511          (p_msg      => 'BEGIN of AcctLineType_49'
25512          ,p_level    => C_LEVEL_PROCEDURE
25513          ,p_module   => l_log_module);
25514 
25515 END IF;
25516 --
25517 l_component_type             := 'AMB_JLT';
25518 l_component_code             := 'INTERCOMPANY_ACCRUAL';
25519 l_component_type_code        := 'S';
25520 l_component_appl_id          :=  707;
25521 l_amb_context_code           := 'DEFAULT';
25522 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
25523 l_event_class_code           := 'LOG_INTERCOMPANY';
25524 l_event_type_code            := 'LOG_INTERCOMPANY_ALL';
25525 l_line_definition_owner_code := 'S';
25526 l_line_definition_code       := 'LOG_INTERCOMPANY';
25527 --
25528 l_balance_type_code          := 'A';
25529 l_segment                     := NULL;
25530 l_ccid                        := NULL;
25531 l_adr_transaction_coa_id      := NULL;
25532 l_adr_accounting_coa_id       := NULL;
25533 l_adr_flexfield_segment_code  := NULL;
25534 l_adr_flex_value_set_id       := NULL;
25535 l_adr_value_type_code         := NULL;
25536 l_adr_value_combination_id    := NULL;
25537 l_adr_value_segment_code      := NULL;
25538 
25539 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
25540 l_bflow_class_code           := '';    -- 4219869 Business Flow
25541 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
25542 l_budgetary_control_flag     := 'N';
25543 
25544 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25545 l_bflow_applied_to_amt       := NULL; -- 5132302
25546 l_entered_amt_idx            := NULL;          -- 4262811
25547 l_accted_amt_idx             := NULL;          -- 4262811
25548 l_acc_rev_flag               := NULL;          -- 4262811
25549 l_accrual_line_num           := NULL;          -- 4262811
25550 l_tmp_amt                    := NULL;          -- 4262811
25551 --
25552  
25553 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25554     l_balance_type_code <> 'B' THEN
25555 IF NVL(p_source_24,9E125) =  16
25556  THEN 
25557 
25558    --
25559    XLA_AE_LINES_PKG.SetNewLine;
25560 
25561    p_balance_type_code          := l_balance_type_code;
25562    -- set the flag so later we will know whether the gain loss line needs to be created
25563    
25564    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25565      p_actual_flag :='A';
25566    END IF;
25567 
25568    --
25569    -- bulk performance
25570    --
25571    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25572                                       p_header_num   => 0); -- 4262811
25573    --
25574    -- set accounting line options
25575    --
25576    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25577            p_natural_side_code          => 'D'
25578          , p_gain_or_loss_flag          => 'N'
25579          , p_gl_transfer_mode_code      => 'S'
25580          , p_acct_entry_type_code       => 'A'
25581          , p_switch_side_flag           => 'Y'
25582          , p_merge_duplicate_code       => 'N'
25583          );
25584    --
25585    l_acc_rev_natural_side_code := 'C';  -- 4262811
25586    -- 
25587    --
25588    -- set accounting line type info
25589    --
25590    xla_ae_lines_pkg.SetAcctLineType
25591       (p_component_type             => l_component_type
25592       ,p_event_type_code            => l_event_type_code
25593       ,p_line_definition_owner_code => l_line_definition_owner_code
25594       ,p_line_definition_code       => l_line_definition_code
25595       ,p_accounting_line_code       => l_component_code
25596       ,p_accounting_line_type_code  => l_component_type_code
25597       ,p_accounting_line_appl_id    => l_component_appl_id
25598       ,p_amb_context_code           => l_amb_context_code
25599       ,p_entity_code                => l_entity_code
25600       ,p_event_class_code           => l_event_class_code);
25601    --
25602    -- set accounting class
25603    --
25604    xla_ae_lines_pkg.SetAcctClass(
25605            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
25606          , p_ae_header_id           => l_ae_header_id
25607          );
25608 
25609    --
25610    -- set rounding class
25611    --
25612    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25613                       'INTERCOMPANY_ACCRUAL';
25614 
25615    --
25616    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25617    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25618    --
25619    -- bulk performance
25620    --
25621    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25622 
25623    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25624       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25625 
25626    -- 4955764
25627    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25628       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25629 
25630    -- 4458381 Public Sector Enh
25631    
25632    --
25633    -- set accounting attributes for the line type
25634    --
25635    l_entered_amt_idx := 3;
25636    l_accted_amt_idx  := 8;
25637    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25638    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
25639    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
25640    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
25641    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
25642    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
25643    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
25644    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
25645    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
25646    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
25647    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
25648    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
25649    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
25650    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
25651    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
25652    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
25653    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
25654 
25655    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25656    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25657 
25658    ---------------------------------------------------------------------------------------------------------------
25659    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25660    ---------------------------------------------------------------------------------------------------------------
25661    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25662 
25663    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25664    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25665 
25666    IF xla_accounting_cache_pkg.GetValueChar
25667          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25668          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25669    AND l_bflow_method_code = 'PRIOR_ENTRY'
25670 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25671    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25672          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25673        )
25674    THEN
25675          xla_ae_lines_pkg.BflowUpgEntry
25676            (p_business_method_code    => l_bflow_method_code
25677            ,p_business_class_code     => l_bflow_class_code
25678            ,p_balance_type            => l_balance_type_code);
25679    ELSE
25680       NULL;
25681 -- No business flow processing for business flow method of NONE.
25682    END IF;
25683 
25684    --
25685    -- call analytical criteria
25686    --
25687    
25688    --
25689    -- call description
25690    --
25691    -- No description or it is inherited.
25692    --
25693    -- call ADRs
25694    -- Bug 4922099
25695    --
25696    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25697         (NVL(l_actual_upg_option, 'N') = 'O') OR
25698         (NVL(l_enc_upg_option, 'N') = 'O')
25699       )
25700    THEN
25701    NULL;
25702    --
25703    --
25704    
25705   l_ccid := AcctDerRule_4(
25706            p_application_id           => p_application_id
25707          , p_ae_header_id             => l_ae_header_id 
25708 , p_source_4 => p_source_4
25709          , x_transaction_coa_id       => l_adr_transaction_coa_id
25710          , x_accounting_coa_id        => l_adr_accounting_coa_id
25711          , x_value_type_code          => l_adr_value_type_code
25712          , p_side                     => 'NA'
25713    );
25714 
25715    xla_ae_lines_pkg.set_ccid(
25716     p_code_combination_id          => l_ccid
25717   , p_value_type_code              => l_adr_value_type_code
25718   , p_transaction_coa_id           => l_adr_transaction_coa_id
25719   , p_accounting_coa_id            => l_adr_accounting_coa_id
25720   , p_adr_code                     => 'CST_DEFAULT'
25721   , p_adr_type_code                => 'S'
25722   , p_component_type               => l_component_type
25723   , p_component_code               => l_component_code
25724   , p_component_type_code          => l_component_type_code
25725   , p_component_appl_id            => l_component_appl_id
25726   , p_amb_context_code             => l_amb_context_code
25727   , p_side                         => 'NA'
25728   );
25729 
25730 
25731    --
25732    --
25733    END IF;
25734    --
25735    -- Bug 4922099
25736    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25737           (NVL(l_enc_upg_option, 'N') = 'O')
25738         ) AND
25739         (l_bflow_method_code = 'PRIOR_ENTRY')
25740       )
25741    THEN
25742       IF
25743       --
25744       1 = 2
25745       --
25746       THEN
25747       xla_accounting_err_pkg.build_message
25748                                     (p_appli_s_name            => 'XLA'
25749                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25750                                     ,p_token_1                 => 'LINE_NUMBER'
25751                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25752                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25753                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25754                                                                              l_component_type
25755                                                                             ,l_component_code
25756                                                                             ,l_component_type_code
25757                                                                             ,l_component_appl_id
25758                                                                             ,l_amb_context_code
25759                                                                             ,l_entity_code
25760                                                                             ,l_event_class_code
25761                                                                            )
25762                                     ,p_token_3                 => 'OWNER'
25763                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25764                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25765                                                                           ,p_lookup_code    => l_component_type_code
25766                                                                          )
25767                                     ,p_token_4                 => 'PRODUCT_NAME'
25768                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25769                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25770                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25771                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25772                                     ,p_ae_header_id            =>  NULL
25773                                        );
25774 
25775         IF (C_LEVEL_ERROR>= g_log_level) THEN
25776                  trace
25777                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25778                       ,p_level    => C_LEVEL_ERROR
25779                       ,p_module   => l_log_module);
25780         END IF;
25781       END IF;
25782    END IF;
25783    --
25784    --
25785    ------------------------------------------------------------------------------------------------
25786    -- 4219869 Business Flow
25787    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25788    -- Prior Entry.  Currently, the following code is always generated.
25789    ------------------------------------------------------------------------------------------------
25790    XLA_AE_LINES_PKG.ValidateCurrentLine;
25791 
25792    ------------------------------------------------------------------------------------
25793    -- 4219869 Business Flow
25794    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25795    ------------------------------------------------------------------------------------
25796    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25797 
25798    ----------------------------------------------------------------------------------
25799    -- 4219869 Business Flow
25800    -- Update journal entry status -- Need to generate this within IF <condition>
25801    ----------------------------------------------------------------------------------
25802    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25803          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25804          ,p_balance_type_code => l_balance_type_code
25805          );
25806 
25807    -------------------------------------------------------------------------------------------
25808    -- 4262811 - Generate the Accrual Reversal lines
25809    -------------------------------------------------------------------------------------------
25810    BEGIN
25811       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25812                               (g_array_event(p_event_id).array_value_num('header_index'));
25813       IF l_acc_rev_flag IS NULL THEN
25814          l_acc_rev_flag := 'N';
25815       END IF;
25816    EXCEPTION
25817       WHEN OTHERS THEN
25818          l_acc_rev_flag := 'N';
25819    END;
25820    --
25821    IF (l_acc_rev_flag = 'Y') THEN
25822 
25823        -- 4645092  ------------------------------------------------------------------------------
25824        -- To allow MPA report to determine if it should generate report process
25825        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25826        ------------------------------------------------------------------------------------------
25827 
25828        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25829        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25830    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
25831    -- call ADRs
25832    -- Bug 4922099
25833    --
25834    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25835         (NVL(l_actual_upg_option, 'N') = 'O') OR
25836         (NVL(l_enc_upg_option, 'N') = 'O')
25837       )
25838    THEN
25839    NULL;
25840    --
25841    --
25842    
25843   l_ccid := AcctDerRule_4(
25844            p_application_id           => p_application_id
25845          , p_ae_header_id             => l_ae_header_id 
25846 , p_source_4 => p_source_4
25847          , x_transaction_coa_id       => l_adr_transaction_coa_id
25848          , x_accounting_coa_id        => l_adr_accounting_coa_id
25849          , x_value_type_code          => l_adr_value_type_code
25850          , p_side                     => 'NA'
25851    );
25852 
25853    xla_ae_lines_pkg.set_ccid(
25854     p_code_combination_id          => l_ccid
25855   , p_value_type_code              => l_adr_value_type_code
25856   , p_transaction_coa_id           => l_adr_transaction_coa_id
25857   , p_accounting_coa_id            => l_adr_accounting_coa_id
25858   , p_adr_code                     => 'CST_DEFAULT'
25859   , p_adr_type_code                => 'S'
25860   , p_component_type               => l_component_type
25861   , p_component_code               => l_component_code
25862   , p_component_type_code          => l_component_type_code
25863   , p_component_appl_id            => l_component_appl_id
25864   , p_amb_context_code             => l_amb_context_code
25865   , p_side                         => 'NA'
25866   );
25867 
25868 
25869    --
25870    --
25871    END IF;
25872 
25873        --
25874        -- Update the line information that should be overwritten
25875        --
25876        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25877                                          p_header_num   => 1);
25878        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25879 
25880        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25881 
25882        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25883           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25884        END IF;
25885 
25886       --
25887       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25888       --
25889       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25890           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25891       ELSE
25892           ---------------------------------------------------------------------------------------------------
25893           -- 4262811a Switch Sign
25894           ---------------------------------------------------------------------------------------------------
25895           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25896           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25897                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25898           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25899                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25900           -- 5132302
25901           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25902                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25903 
25904       END IF;
25905 
25906       -- 4955764
25907       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25908       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25909 
25910 
25911       XLA_AE_LINES_PKG.ValidateCurrentLine;
25912       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25913 
25914       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25915                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25916                ,p_balance_type_code => l_balance_type_code);
25917 
25918    END IF;
25919 
25920    -----------------------------------------------------------------------------------------
25921    -- 4262811 Multiperiod Accounting
25922    -----------------------------------------------------------------------------------------
25923      -- No MPA option is assigned.
25924 
25925 
25926 END IF;
25927 END IF;
25928 --
25929 
25930 --
25931 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25932    trace
25933       (p_msg      => 'END of AcctLineType_49'
25934       ,p_level    => C_LEVEL_PROCEDURE
25935       ,p_module   => l_log_module);
25936 END IF;
25937 --
25938 EXCEPTION
25939   WHEN xla_exceptions_pkg.application_exception THEN
25940       RAISE;
25941   WHEN OTHERS THEN
25942        xla_exceptions_pkg.raise_message
25943            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_49');
25944 END AcctLineType_49;
25945 --
25946 
25947 ---------------------------------------
25948 --
25949 -- PRIVATE FUNCTION
25950 --         AcctLineType_50
25951 --
25952 ---------------------------------------
25953 PROCEDURE AcctLineType_50 (
25954   p_application_id        IN NUMBER
25955  ,p_event_id              IN NUMBER
25956  ,p_calculate_acctd_flag  IN VARCHAR2
25957  ,p_calculate_g_l_flag    IN VARCHAR2
25958  ,p_actual_flag           IN OUT VARCHAR2
25959  ,p_balance_type_code     OUT VARCHAR2
25960  ,p_gain_or_loss_ref      OUT VARCHAR2
25961  
25962 --Cost Management Default Account
25963  , p_source_4            IN NUMBER
25964 --Receiving Accounting Line Type
25965  , p_source_5            IN VARCHAR2
25966 --DISTRIBUTION_IDENTIFIER
25967  , p_source_11            IN NUMBER
25968 --Distribution Type
25969  , p_source_12            IN VARCHAR2
25970  , p_source_12_meaning    IN VARCHAR2
25971 --Entered Currency Code
25972  , p_source_15            IN VARCHAR2
25973 --Entered Amount
25974  , p_source_18            IN NUMBER
25975 --Currency Conversion Date
25976  , p_source_19            IN DATE
25977 --Currency Conversion Rate
25978  , p_source_20            IN NUMBER
25979 --Currency Conversion Type
25980  , p_source_21            IN VARCHAR2
25981 --Accounted Amount
25982  , p_source_22            IN NUMBER
25983 )
25984 IS
25985 
25986 l_component_type              VARCHAR2(80);
25987 l_component_code              VARCHAR2(30);
25988 l_component_type_code         VARCHAR2(1);
25989 l_component_appl_id           INTEGER;
25990 l_amb_context_code            VARCHAR2(30);
25991 l_entity_code                 VARCHAR2(30);
25992 l_event_class_code            VARCHAR2(30);
25993 l_ae_header_id                NUMBER;
25994 l_event_type_code             VARCHAR2(30);
25995 l_line_definition_code        VARCHAR2(30);
25996 l_line_definition_owner_code  VARCHAR2(1);
25997 --
25998 -- adr variables
25999 l_segment                     VARCHAR2(30);
26000 l_ccid                        NUMBER;
26001 l_adr_transaction_coa_id      NUMBER;
26002 l_adr_accounting_coa_id       NUMBER;
26003 l_adr_flexfield_segment_code  VARCHAR2(30);
26004 l_adr_flex_value_set_id       NUMBER;
26005 l_adr_value_type_code         VARCHAR2(30);
26006 l_adr_value_combination_id    NUMBER;
26007 l_adr_value_segment_code      VARCHAR2(30);
26008 
26009 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26010 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26011 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26012 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26013 
26014 -- 4262811 Variables ------------------------------------------------------------------------------------------
26015 l_entered_amt_idx             NUMBER;
26016 l_accted_amt_idx              NUMBER;
26017 l_acc_rev_flag                VARCHAR2(1);
26018 l_accrual_line_num            NUMBER;
26019 l_tmp_amt                     NUMBER;
26020 l_acc_rev_natural_side_code   VARCHAR2(1);
26021 
26022 l_num_entries                 NUMBER;
26023 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26024 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26025 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26026 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26027 l_recog_line_1                NUMBER;
26028 l_recog_line_2                NUMBER;
26029 
26030 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26031 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26032 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26033 
26034 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26035 
26036 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26037 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26038 
26039 ---------------------------------------------------------------------------------------------------------------
26040 
26041 
26042 --
26043 -- bulk performance
26044 --
26045 l_balance_type_code           VARCHAR2(1);
26046 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26047 l_log_module                  VARCHAR2(240);
26048 
26049 --
26050 -- Upgrade strategy
26051 --
26052 l_actual_upg_option           VARCHAR2(1);
26053 l_enc_upg_option           VARCHAR2(1);
26054 
26055 --
26056 BEGIN
26057 --
26058 IF g_log_enabled THEN
26059       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_50';
26060 END IF;
26061 --
26062 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26063 
26064       trace
26065          (p_msg      => 'BEGIN of AcctLineType_50'
26066          ,p_level    => C_LEVEL_PROCEDURE
26067          ,p_module   => l_log_module);
26068 
26069 END IF;
26070 --
26071 l_component_type             := 'AMB_JLT';
26072 l_component_code             := 'INTERCOMPANY_ACCRUAL';
26073 l_component_type_code        := 'S';
26074 l_component_appl_id          :=  707;
26075 l_amb_context_code           := 'DEFAULT';
26076 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
26077 l_event_class_code           := 'RCPT_REC_INSP';
26078 l_event_type_code            := 'RCPT_REC_INSP_ALL';
26079 l_line_definition_owner_code := 'S';
26080 l_line_definition_code       := 'RCPT_REC_INSP';
26081 --
26082 l_balance_type_code          := 'A';
26083 l_segment                     := NULL;
26084 l_ccid                        := NULL;
26085 l_adr_transaction_coa_id      := NULL;
26086 l_adr_accounting_coa_id       := NULL;
26087 l_adr_flexfield_segment_code  := NULL;
26088 l_adr_flex_value_set_id       := NULL;
26089 l_adr_value_type_code         := NULL;
26090 l_adr_value_combination_id    := NULL;
26091 l_adr_value_segment_code      := NULL;
26092 
26093 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26094 l_bflow_class_code           := '';    -- 4219869 Business Flow
26095 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26096 l_budgetary_control_flag     := 'N';
26097 
26098 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26099 l_bflow_applied_to_amt       := NULL; -- 5132302
26100 l_entered_amt_idx            := NULL;          -- 4262811
26101 l_accted_amt_idx             := NULL;          -- 4262811
26102 l_acc_rev_flag               := NULL;          -- 4262811
26103 l_accrual_line_num           := NULL;          -- 4262811
26104 l_tmp_amt                    := NULL;          -- 4262811
26105 --
26106  
26107 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26108     l_balance_type_code <> 'B' THEN
26109 IF NVL(p_source_5,'
26110 ') =  'IC Accrual'
26111  THEN 
26112 
26113    --
26114    XLA_AE_LINES_PKG.SetNewLine;
26115 
26116    p_balance_type_code          := l_balance_type_code;
26117    -- set the flag so later we will know whether the gain loss line needs to be created
26118    
26119    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26120      p_actual_flag :='A';
26121    END IF;
26122 
26123    --
26124    -- bulk performance
26125    --
26126    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26127                                       p_header_num   => 0); -- 4262811
26128    --
26129    -- set accounting line options
26130    --
26131    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26132            p_natural_side_code          => 'D'
26133          , p_gain_or_loss_flag          => 'N'
26134          , p_gl_transfer_mode_code      => 'S'
26135          , p_acct_entry_type_code       => 'A'
26136          , p_switch_side_flag           => 'Y'
26137          , p_merge_duplicate_code       => 'N'
26138          );
26139    --
26140    l_acc_rev_natural_side_code := 'C';  -- 4262811
26141    -- 
26142    --
26143    -- set accounting line type info
26144    --
26145    xla_ae_lines_pkg.SetAcctLineType
26146       (p_component_type             => l_component_type
26147       ,p_event_type_code            => l_event_type_code
26148       ,p_line_definition_owner_code => l_line_definition_owner_code
26149       ,p_line_definition_code       => l_line_definition_code
26150       ,p_accounting_line_code       => l_component_code
26151       ,p_accounting_line_type_code  => l_component_type_code
26152       ,p_accounting_line_appl_id    => l_component_appl_id
26153       ,p_amb_context_code           => l_amb_context_code
26154       ,p_entity_code                => l_entity_code
26155       ,p_event_class_code           => l_event_class_code);
26156    --
26157    -- set accounting class
26158    --
26159    xla_ae_lines_pkg.SetAcctClass(
26160            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
26161          , p_ae_header_id           => l_ae_header_id
26162          );
26163 
26164    --
26165    -- set rounding class
26166    --
26167    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26168                       'INTERCOMPANY_ACCRUAL';
26169 
26170    --
26171    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26172    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26173    --
26174    -- bulk performance
26175    --
26176    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26177 
26178    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26179       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26180 
26181    -- 4955764
26182    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26183       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26184 
26185    -- 4458381 Public Sector Enh
26186    
26187    --
26188    -- set accounting attributes for the line type
26189    --
26190    l_entered_amt_idx := 3;
26191    l_accted_amt_idx  := 8;
26192    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26193    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
26194    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
26195    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
26196    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
26197    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
26198    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
26199    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
26200    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
26201    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
26202    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
26203    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
26204    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
26205    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
26206    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
26207    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
26208    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
26209 
26210    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26211    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26212 
26213    ---------------------------------------------------------------------------------------------------------------
26214    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26215    ---------------------------------------------------------------------------------------------------------------
26216    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26217 
26218    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26219    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26220 
26221    IF xla_accounting_cache_pkg.GetValueChar
26222          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26223          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26224    AND l_bflow_method_code = 'PRIOR_ENTRY'
26225 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26226    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26227          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26228        )
26229    THEN
26230          xla_ae_lines_pkg.BflowUpgEntry
26231            (p_business_method_code    => l_bflow_method_code
26232            ,p_business_class_code     => l_bflow_class_code
26233            ,p_balance_type            => l_balance_type_code);
26234    ELSE
26235       NULL;
26236 -- No business flow processing for business flow method of NONE.
26237    END IF;
26238 
26239    --
26240    -- call analytical criteria
26241    --
26242    
26243    --
26244    -- call description
26245    --
26246    -- No description or it is inherited.
26247    --
26248    -- call ADRs
26249    -- Bug 4922099
26250    --
26251    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26252         (NVL(l_actual_upg_option, 'N') = 'O') OR
26253         (NVL(l_enc_upg_option, 'N') = 'O')
26254       )
26255    THEN
26256    NULL;
26257    --
26258    --
26259    
26260   l_ccid := AcctDerRule_4(
26261            p_application_id           => p_application_id
26262          , p_ae_header_id             => l_ae_header_id 
26263 , p_source_4 => p_source_4
26264          , x_transaction_coa_id       => l_adr_transaction_coa_id
26265          , x_accounting_coa_id        => l_adr_accounting_coa_id
26266          , x_value_type_code          => l_adr_value_type_code
26267          , p_side                     => 'NA'
26268    );
26269 
26270    xla_ae_lines_pkg.set_ccid(
26271     p_code_combination_id          => l_ccid
26272   , p_value_type_code              => l_adr_value_type_code
26273   , p_transaction_coa_id           => l_adr_transaction_coa_id
26274   , p_accounting_coa_id            => l_adr_accounting_coa_id
26275   , p_adr_code                     => 'CST_DEFAULT'
26276   , p_adr_type_code                => 'S'
26277   , p_component_type               => l_component_type
26278   , p_component_code               => l_component_code
26279   , p_component_type_code          => l_component_type_code
26280   , p_component_appl_id            => l_component_appl_id
26281   , p_amb_context_code             => l_amb_context_code
26282   , p_side                         => 'NA'
26283   );
26284 
26285 
26286    --
26287    --
26288    END IF;
26289    --
26290    -- Bug 4922099
26291    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26292           (NVL(l_enc_upg_option, 'N') = 'O')
26293         ) AND
26294         (l_bflow_method_code = 'PRIOR_ENTRY')
26295       )
26296    THEN
26297       IF
26298       --
26299       1 = 2
26300       --
26301       THEN
26302       xla_accounting_err_pkg.build_message
26303                                     (p_appli_s_name            => 'XLA'
26304                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26305                                     ,p_token_1                 => 'LINE_NUMBER'
26306                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26307                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26308                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26309                                                                              l_component_type
26310                                                                             ,l_component_code
26311                                                                             ,l_component_type_code
26312                                                                             ,l_component_appl_id
26313                                                                             ,l_amb_context_code
26314                                                                             ,l_entity_code
26315                                                                             ,l_event_class_code
26316                                                                            )
26317                                     ,p_token_3                 => 'OWNER'
26318                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26319                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26320                                                                           ,p_lookup_code    => l_component_type_code
26321                                                                          )
26322                                     ,p_token_4                 => 'PRODUCT_NAME'
26323                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26324                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26325                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26326                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26327                                     ,p_ae_header_id            =>  NULL
26328                                        );
26329 
26330         IF (C_LEVEL_ERROR>= g_log_level) THEN
26331                  trace
26332                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26333                       ,p_level    => C_LEVEL_ERROR
26334                       ,p_module   => l_log_module);
26335         END IF;
26336       END IF;
26337    END IF;
26338    --
26339    --
26340    ------------------------------------------------------------------------------------------------
26341    -- 4219869 Business Flow
26342    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26343    -- Prior Entry.  Currently, the following code is always generated.
26344    ------------------------------------------------------------------------------------------------
26345    XLA_AE_LINES_PKG.ValidateCurrentLine;
26346 
26347    ------------------------------------------------------------------------------------
26348    -- 4219869 Business Flow
26349    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26350    ------------------------------------------------------------------------------------
26351    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26352 
26353    ----------------------------------------------------------------------------------
26354    -- 4219869 Business Flow
26355    -- Update journal entry status -- Need to generate this within IF <condition>
26356    ----------------------------------------------------------------------------------
26357    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26358          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26359          ,p_balance_type_code => l_balance_type_code
26360          );
26361 
26362    -------------------------------------------------------------------------------------------
26363    -- 4262811 - Generate the Accrual Reversal lines
26364    -------------------------------------------------------------------------------------------
26365    BEGIN
26366       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26367                               (g_array_event(p_event_id).array_value_num('header_index'));
26368       IF l_acc_rev_flag IS NULL THEN
26369          l_acc_rev_flag := 'N';
26370       END IF;
26371    EXCEPTION
26372       WHEN OTHERS THEN
26373          l_acc_rev_flag := 'N';
26374    END;
26375    --
26376    IF (l_acc_rev_flag = 'Y') THEN
26377 
26378        -- 4645092  ------------------------------------------------------------------------------
26379        -- To allow MPA report to determine if it should generate report process
26380        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26381        ------------------------------------------------------------------------------------------
26382 
26383        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26384        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26385    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
26386    -- call ADRs
26387    -- Bug 4922099
26388    --
26389    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26390         (NVL(l_actual_upg_option, 'N') = 'O') OR
26391         (NVL(l_enc_upg_option, 'N') = 'O')
26392       )
26393    THEN
26394    NULL;
26395    --
26396    --
26397    
26398   l_ccid := AcctDerRule_4(
26399            p_application_id           => p_application_id
26400          , p_ae_header_id             => l_ae_header_id 
26401 , p_source_4 => p_source_4
26402          , x_transaction_coa_id       => l_adr_transaction_coa_id
26403          , x_accounting_coa_id        => l_adr_accounting_coa_id
26404          , x_value_type_code          => l_adr_value_type_code
26405          , p_side                     => 'NA'
26406    );
26407 
26408    xla_ae_lines_pkg.set_ccid(
26409     p_code_combination_id          => l_ccid
26410   , p_value_type_code              => l_adr_value_type_code
26411   , p_transaction_coa_id           => l_adr_transaction_coa_id
26412   , p_accounting_coa_id            => l_adr_accounting_coa_id
26413   , p_adr_code                     => 'CST_DEFAULT'
26414   , p_adr_type_code                => 'S'
26415   , p_component_type               => l_component_type
26416   , p_component_code               => l_component_code
26417   , p_component_type_code          => l_component_type_code
26418   , p_component_appl_id            => l_component_appl_id
26419   , p_amb_context_code             => l_amb_context_code
26420   , p_side                         => 'NA'
26421   );
26422 
26423 
26424    --
26425    --
26426    END IF;
26427 
26428        --
26429        -- Update the line information that should be overwritten
26430        --
26431        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26432                                          p_header_num   => 1);
26433        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26434 
26435        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26436 
26437        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26438           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26439        END IF;
26440 
26441       --
26442       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26443       --
26444       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26445           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
26446       ELSE
26447           ---------------------------------------------------------------------------------------------------
26448           -- 4262811a Switch Sign
26449           ---------------------------------------------------------------------------------------------------
26450           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
26451           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26452                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26453           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26454                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26455           -- 5132302
26456           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26457                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26458 
26459       END IF;
26460 
26461       -- 4955764
26462       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26463       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26464 
26465 
26466       XLA_AE_LINES_PKG.ValidateCurrentLine;
26467       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26468 
26469       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26470                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26471                ,p_balance_type_code => l_balance_type_code);
26472 
26473    END IF;
26474 
26475    -----------------------------------------------------------------------------------------
26476    -- 4262811 Multiperiod Accounting
26477    -----------------------------------------------------------------------------------------
26478      -- No MPA option is assigned.
26479 
26480 
26481 END IF;
26482 END IF;
26483 --
26484 
26485 --
26486 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26487    trace
26488       (p_msg      => 'END of AcctLineType_50'
26489       ,p_level    => C_LEVEL_PROCEDURE
26490       ,p_module   => l_log_module);
26491 END IF;
26492 --
26493 EXCEPTION
26494   WHEN xla_exceptions_pkg.application_exception THEN
26495       RAISE;
26496   WHEN OTHERS THEN
26497        xla_exceptions_pkg.raise_message
26498            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_50');
26499 END AcctLineType_50;
26500 --
26501 
26502 ---------------------------------------
26503 --
26504 -- PRIVATE FUNCTION
26505 --         AcctLineType_51
26506 --
26507 ---------------------------------------
26508 PROCEDURE AcctLineType_51 (
26509   p_application_id        IN NUMBER
26510  ,p_event_id              IN NUMBER
26511  ,p_calculate_acctd_flag  IN VARCHAR2
26512  ,p_calculate_g_l_flag    IN VARCHAR2
26513  ,p_actual_flag           IN OUT VARCHAR2
26514  ,p_balance_type_code     OUT VARCHAR2
26515  ,p_gain_or_loss_ref      OUT VARCHAR2
26516  
26517 --Cost Management Default Account
26518  , p_source_4            IN NUMBER
26519 --DISTRIBUTION_IDENTIFIER
26520  , p_source_11            IN NUMBER
26521 --Distribution Type
26522  , p_source_12            IN VARCHAR2
26523  , p_source_12_meaning    IN VARCHAR2
26524 --Entered Currency Code
26525  , p_source_15            IN VARCHAR2
26526 --Entered Amount
26527  , p_source_18            IN NUMBER
26528 --Currency Conversion Date
26529  , p_source_19            IN DATE
26530 --Currency Conversion Rate
26531  , p_source_20            IN NUMBER
26532 --Currency Conversion Type
26533  , p_source_21            IN VARCHAR2
26534 --Accounted Amount
26535  , p_source_22            IN NUMBER
26536 --Accounting Line Type
26537  , p_source_24            IN NUMBER
26538 )
26539 IS
26540 
26541 l_component_type              VARCHAR2(80);
26542 l_component_code              VARCHAR2(30);
26543 l_component_type_code         VARCHAR2(1);
26544 l_component_appl_id           INTEGER;
26545 l_amb_context_code            VARCHAR2(30);
26546 l_entity_code                 VARCHAR2(30);
26547 l_event_class_code            VARCHAR2(30);
26548 l_ae_header_id                NUMBER;
26549 l_event_type_code             VARCHAR2(30);
26550 l_line_definition_code        VARCHAR2(30);
26551 l_line_definition_owner_code  VARCHAR2(1);
26552 --
26553 -- adr variables
26554 l_segment                     VARCHAR2(30);
26555 l_ccid                        NUMBER;
26556 l_adr_transaction_coa_id      NUMBER;
26557 l_adr_accounting_coa_id       NUMBER;
26558 l_adr_flexfield_segment_code  VARCHAR2(30);
26559 l_adr_flex_value_set_id       NUMBER;
26560 l_adr_value_type_code         VARCHAR2(30);
26561 l_adr_value_combination_id    NUMBER;
26562 l_adr_value_segment_code      VARCHAR2(30);
26563 
26564 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26565 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26566 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26567 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26568 
26569 -- 4262811 Variables ------------------------------------------------------------------------------------------
26570 l_entered_amt_idx             NUMBER;
26571 l_accted_amt_idx              NUMBER;
26572 l_acc_rev_flag                VARCHAR2(1);
26573 l_accrual_line_num            NUMBER;
26574 l_tmp_amt                     NUMBER;
26575 l_acc_rev_natural_side_code   VARCHAR2(1);
26576 
26577 l_num_entries                 NUMBER;
26578 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26579 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26580 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26581 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26582 l_recog_line_1                NUMBER;
26583 l_recog_line_2                NUMBER;
26584 
26585 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26586 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26587 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26588 
26589 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26590 
26591 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26592 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26593 
26594 ---------------------------------------------------------------------------------------------------------------
26595 
26596 
26597 --
26598 -- bulk performance
26599 --
26600 l_balance_type_code           VARCHAR2(1);
26601 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26602 l_log_module                  VARCHAR2(240);
26603 
26604 --
26605 -- Upgrade strategy
26606 --
26607 l_actual_upg_option           VARCHAR2(1);
26608 l_enc_upg_option           VARCHAR2(1);
26609 
26610 --
26611 BEGIN
26612 --
26613 IF g_log_enabled THEN
26614       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_51';
26615 END IF;
26616 --
26617 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26618 
26619       trace
26620          (p_msg      => 'BEGIN of AcctLineType_51'
26621          ,p_level    => C_LEVEL_PROCEDURE
26622          ,p_module   => l_log_module);
26623 
26624 END IF;
26625 --
26626 l_component_type             := 'AMB_JLT';
26627 l_component_code             := 'INTERCOMPANY_ACCRUAL';
26628 l_component_type_code        := 'S';
26629 l_component_appl_id          :=  707;
26630 l_amb_context_code           := 'DEFAULT';
26631 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
26632 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
26633 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
26634 l_line_definition_owner_code := 'S';
26635 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
26636 --
26637 l_balance_type_code          := 'A';
26638 l_segment                     := NULL;
26639 l_ccid                        := NULL;
26640 l_adr_transaction_coa_id      := NULL;
26641 l_adr_accounting_coa_id       := NULL;
26642 l_adr_flexfield_segment_code  := NULL;
26643 l_adr_flex_value_set_id       := NULL;
26644 l_adr_value_type_code         := NULL;
26645 l_adr_value_combination_id    := NULL;
26646 l_adr_value_segment_code      := NULL;
26647 
26648 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26649 l_bflow_class_code           := '';    -- 4219869 Business Flow
26650 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26651 l_budgetary_control_flag     := 'N';
26652 
26653 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26654 l_bflow_applied_to_amt       := NULL; -- 5132302
26655 l_entered_amt_idx            := NULL;          -- 4262811
26656 l_accted_amt_idx             := NULL;          -- 4262811
26657 l_acc_rev_flag               := NULL;          -- 4262811
26658 l_accrual_line_num           := NULL;          -- 4262811
26659 l_tmp_amt                    := NULL;          -- 4262811
26660 --
26661  
26662 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26663     l_balance_type_code <> 'B' THEN
26664 IF NVL(p_source_24,9E125) =  2 AND 
26665 p_source_22 <  0
26666  THEN 
26667 
26668    --
26669    XLA_AE_LINES_PKG.SetNewLine;
26670 
26671    p_balance_type_code          := l_balance_type_code;
26672    -- set the flag so later we will know whether the gain loss line needs to be created
26673    
26674    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26675      p_actual_flag :='A';
26676    END IF;
26677 
26678    --
26679    -- bulk performance
26680    --
26681    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26682                                       p_header_num   => 0); -- 4262811
26683    --
26684    -- set accounting line options
26685    --
26686    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26687            p_natural_side_code          => 'D'
26688          , p_gain_or_loss_flag          => 'N'
26689          , p_gl_transfer_mode_code      => 'S'
26690          , p_acct_entry_type_code       => 'A'
26691          , p_switch_side_flag           => 'Y'
26692          , p_merge_duplicate_code       => 'N'
26693          );
26694    --
26695    l_acc_rev_natural_side_code := 'C';  -- 4262811
26696    -- 
26697    --
26698    -- set accounting line type info
26699    --
26700    xla_ae_lines_pkg.SetAcctLineType
26701       (p_component_type             => l_component_type
26702       ,p_event_type_code            => l_event_type_code
26703       ,p_line_definition_owner_code => l_line_definition_owner_code
26704       ,p_line_definition_code       => l_line_definition_code
26705       ,p_accounting_line_code       => l_component_code
26706       ,p_accounting_line_type_code  => l_component_type_code
26707       ,p_accounting_line_appl_id    => l_component_appl_id
26708       ,p_amb_context_code           => l_amb_context_code
26709       ,p_entity_code                => l_entity_code
26710       ,p_event_class_code           => l_event_class_code);
26711    --
26712    -- set accounting class
26713    --
26714    xla_ae_lines_pkg.SetAcctClass(
26715            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
26716          , p_ae_header_id           => l_ae_header_id
26717          );
26718 
26719    --
26720    -- set rounding class
26721    --
26722    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26723                       'INTERCOMPANY_ACCRUAL';
26724 
26725    --
26726    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26727    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26728    --
26729    -- bulk performance
26730    --
26731    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26732 
26733    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26734       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26735 
26736    -- 4955764
26737    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26738       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26739 
26740    -- 4458381 Public Sector Enh
26741    
26742    --
26743    -- set accounting attributes for the line type
26744    --
26745    l_entered_amt_idx := 3;
26746    l_accted_amt_idx  := 8;
26747    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26748    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
26749    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
26750    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
26751    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
26752    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
26753    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
26754    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
26755    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
26756    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
26757    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
26758    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
26759    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
26760    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
26761    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
26762    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
26763    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
26764 
26765    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26766    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26767 
26768    ---------------------------------------------------------------------------------------------------------------
26769    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26770    ---------------------------------------------------------------------------------------------------------------
26771    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26772 
26773    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26774    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26775 
26776    IF xla_accounting_cache_pkg.GetValueChar
26777          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26778          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26779    AND l_bflow_method_code = 'PRIOR_ENTRY'
26780 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26781    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26782          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26783        )
26784    THEN
26785          xla_ae_lines_pkg.BflowUpgEntry
26786            (p_business_method_code    => l_bflow_method_code
26787            ,p_business_class_code     => l_bflow_class_code
26788            ,p_balance_type            => l_balance_type_code);
26789    ELSE
26790       NULL;
26791 -- No business flow processing for business flow method of NONE.
26792    END IF;
26793 
26794    --
26795    -- call analytical criteria
26796    --
26797    
26798    --
26799    -- call description
26800    --
26801    -- No description or it is inherited.
26802    --
26803    -- call ADRs
26804    -- Bug 4922099
26805    --
26806    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26807         (NVL(l_actual_upg_option, 'N') = 'O') OR
26808         (NVL(l_enc_upg_option, 'N') = 'O')
26809       )
26810    THEN
26811    NULL;
26812    --
26813    --
26814    
26815   l_ccid := AcctDerRule_4(
26816            p_application_id           => p_application_id
26817          , p_ae_header_id             => l_ae_header_id 
26818 , p_source_4 => p_source_4
26819          , x_transaction_coa_id       => l_adr_transaction_coa_id
26820          , x_accounting_coa_id        => l_adr_accounting_coa_id
26821          , x_value_type_code          => l_adr_value_type_code
26822          , p_side                     => 'NA'
26823    );
26824 
26825    xla_ae_lines_pkg.set_ccid(
26826     p_code_combination_id          => l_ccid
26827   , p_value_type_code              => l_adr_value_type_code
26828   , p_transaction_coa_id           => l_adr_transaction_coa_id
26829   , p_accounting_coa_id            => l_adr_accounting_coa_id
26830   , p_adr_code                     => 'CST_DEFAULT'
26831   , p_adr_type_code                => 'S'
26832   , p_component_type               => l_component_type
26833   , p_component_code               => l_component_code
26834   , p_component_type_code          => l_component_type_code
26835   , p_component_appl_id            => l_component_appl_id
26836   , p_amb_context_code             => l_amb_context_code
26837   , p_side                         => 'NA'
26838   );
26839 
26840 
26841    --
26842    --
26843    END IF;
26844    --
26845    -- Bug 4922099
26846    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26847           (NVL(l_enc_upg_option, 'N') = 'O')
26848         ) AND
26849         (l_bflow_method_code = 'PRIOR_ENTRY')
26850       )
26851    THEN
26852       IF
26853       --
26854       1 = 2
26855       --
26856       THEN
26857       xla_accounting_err_pkg.build_message
26858                                     (p_appli_s_name            => 'XLA'
26859                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26860                                     ,p_token_1                 => 'LINE_NUMBER'
26861                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26862                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26863                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26864                                                                              l_component_type
26865                                                                             ,l_component_code
26866                                                                             ,l_component_type_code
26867                                                                             ,l_component_appl_id
26868                                                                             ,l_amb_context_code
26869                                                                             ,l_entity_code
26870                                                                             ,l_event_class_code
26871                                                                            )
26872                                     ,p_token_3                 => 'OWNER'
26873                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26874                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26875                                                                           ,p_lookup_code    => l_component_type_code
26876                                                                          )
26877                                     ,p_token_4                 => 'PRODUCT_NAME'
26878                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26879                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26880                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26881                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26882                                     ,p_ae_header_id            =>  NULL
26883                                        );
26884 
26885         IF (C_LEVEL_ERROR>= g_log_level) THEN
26886                  trace
26887                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26888                       ,p_level    => C_LEVEL_ERROR
26889                       ,p_module   => l_log_module);
26890         END IF;
26891       END IF;
26892    END IF;
26893    --
26894    --
26895    ------------------------------------------------------------------------------------------------
26896    -- 4219869 Business Flow
26897    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26898    -- Prior Entry.  Currently, the following code is always generated.
26899    ------------------------------------------------------------------------------------------------
26900    XLA_AE_LINES_PKG.ValidateCurrentLine;
26901 
26902    ------------------------------------------------------------------------------------
26903    -- 4219869 Business Flow
26904    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26905    ------------------------------------------------------------------------------------
26906    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26907 
26908    ----------------------------------------------------------------------------------
26909    -- 4219869 Business Flow
26910    -- Update journal entry status -- Need to generate this within IF <condition>
26911    ----------------------------------------------------------------------------------
26912    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26913          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26914          ,p_balance_type_code => l_balance_type_code
26915          );
26916 
26917    -------------------------------------------------------------------------------------------
26918    -- 4262811 - Generate the Accrual Reversal lines
26919    -------------------------------------------------------------------------------------------
26920    BEGIN
26921       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26922                               (g_array_event(p_event_id).array_value_num('header_index'));
26923       IF l_acc_rev_flag IS NULL THEN
26924          l_acc_rev_flag := 'N';
26925       END IF;
26926    EXCEPTION
26927       WHEN OTHERS THEN
26928          l_acc_rev_flag := 'N';
26929    END;
26930    --
26931    IF (l_acc_rev_flag = 'Y') THEN
26932 
26933        -- 4645092  ------------------------------------------------------------------------------
26934        -- To allow MPA report to determine if it should generate report process
26935        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26936        ------------------------------------------------------------------------------------------
26937 
26938        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26939        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26940    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
26941    -- call ADRs
26942    -- Bug 4922099
26943    --
26944    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26945         (NVL(l_actual_upg_option, 'N') = 'O') OR
26946         (NVL(l_enc_upg_option, 'N') = 'O')
26947       )
26948    THEN
26949    NULL;
26950    --
26951    --
26952    
26953   l_ccid := AcctDerRule_4(
26954            p_application_id           => p_application_id
26955          , p_ae_header_id             => l_ae_header_id 
26956 , p_source_4 => p_source_4
26957          , x_transaction_coa_id       => l_adr_transaction_coa_id
26958          , x_accounting_coa_id        => l_adr_accounting_coa_id
26959          , x_value_type_code          => l_adr_value_type_code
26960          , p_side                     => 'NA'
26961    );
26962 
26963    xla_ae_lines_pkg.set_ccid(
26964     p_code_combination_id          => l_ccid
26965   , p_value_type_code              => l_adr_value_type_code
26966   , p_transaction_coa_id           => l_adr_transaction_coa_id
26967   , p_accounting_coa_id            => l_adr_accounting_coa_id
26968   , p_adr_code                     => 'CST_DEFAULT'
26969   , p_adr_type_code                => 'S'
26970   , p_component_type               => l_component_type
26971   , p_component_code               => l_component_code
26972   , p_component_type_code          => l_component_type_code
26973   , p_component_appl_id            => l_component_appl_id
26974   , p_amb_context_code             => l_amb_context_code
26975   , p_side                         => 'NA'
26976   );
26977 
26978 
26979    --
26980    --
26981    END IF;
26982 
26983        --
26984        -- Update the line information that should be overwritten
26985        --
26986        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26987                                          p_header_num   => 1);
26988        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26989 
26990        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26991 
26992        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26993           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26994        END IF;
26995 
26996       --
26997       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26998       --
26999       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27000           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27001       ELSE
27002           ---------------------------------------------------------------------------------------------------
27003           -- 4262811a Switch Sign
27004           ---------------------------------------------------------------------------------------------------
27005           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27006           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27007                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27008           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27009                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27010           -- 5132302
27011           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27012                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27013 
27014       END IF;
27015 
27016       -- 4955764
27017       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27018       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27019 
27020 
27021       XLA_AE_LINES_PKG.ValidateCurrentLine;
27022       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27023 
27024       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27025                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27026                ,p_balance_type_code => l_balance_type_code);
27027 
27028    END IF;
27029 
27030    -----------------------------------------------------------------------------------------
27031    -- 4262811 Multiperiod Accounting
27032    -----------------------------------------------------------------------------------------
27033      -- No MPA option is assigned.
27034 
27035 
27036 END IF;
27037 END IF;
27038 --
27039 
27040 --
27041 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27042    trace
27043       (p_msg      => 'END of AcctLineType_51'
27044       ,p_level    => C_LEVEL_PROCEDURE
27045       ,p_module   => l_log_module);
27046 END IF;
27047 --
27048 EXCEPTION
27049   WHEN xla_exceptions_pkg.application_exception THEN
27050       RAISE;
27051   WHEN OTHERS THEN
27052        xla_exceptions_pkg.raise_message
27053            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_51');
27054 END AcctLineType_51;
27055 --
27056 
27057 ---------------------------------------
27058 --
27059 -- PRIVATE FUNCTION
27060 --         AcctLineType_52
27061 --
27062 ---------------------------------------
27063 PROCEDURE AcctLineType_52 (
27064   p_application_id        IN NUMBER
27065  ,p_event_id              IN NUMBER
27066  ,p_calculate_acctd_flag  IN VARCHAR2
27067  ,p_calculate_g_l_flag    IN VARCHAR2
27068  ,p_actual_flag           IN OUT VARCHAR2
27069  ,p_balance_type_code     OUT VARCHAR2
27070  ,p_gain_or_loss_ref      OUT VARCHAR2
27071  
27072 --Cost Management Default Account
27073  , p_source_4            IN NUMBER
27074 --DISTRIBUTION_IDENTIFIER
27075  , p_source_11            IN NUMBER
27076 --Distribution Type
27077  , p_source_12            IN VARCHAR2
27078  , p_source_12_meaning    IN VARCHAR2
27079 --Entered Currency Code
27080  , p_source_15            IN VARCHAR2
27081 --Entered Amount
27082  , p_source_18            IN NUMBER
27083 --Currency Conversion Date
27084  , p_source_19            IN DATE
27085 --Currency Conversion Rate
27086  , p_source_20            IN NUMBER
27087 --Currency Conversion Type
27088  , p_source_21            IN VARCHAR2
27089 --Accounted Amount
27090  , p_source_22            IN NUMBER
27091 --Accounting Line Type
27092  , p_source_24            IN NUMBER
27093 )
27094 IS
27095 
27096 l_component_type              VARCHAR2(80);
27097 l_component_code              VARCHAR2(30);
27098 l_component_type_code         VARCHAR2(1);
27099 l_component_appl_id           INTEGER;
27100 l_amb_context_code            VARCHAR2(30);
27101 l_entity_code                 VARCHAR2(30);
27102 l_event_class_code            VARCHAR2(30);
27103 l_ae_header_id                NUMBER;
27104 l_event_type_code             VARCHAR2(30);
27105 l_line_definition_code        VARCHAR2(30);
27106 l_line_definition_owner_code  VARCHAR2(1);
27107 --
27108 -- adr variables
27109 l_segment                     VARCHAR2(30);
27110 l_ccid                        NUMBER;
27111 l_adr_transaction_coa_id      NUMBER;
27112 l_adr_accounting_coa_id       NUMBER;
27113 l_adr_flexfield_segment_code  VARCHAR2(30);
27114 l_adr_flex_value_set_id       NUMBER;
27115 l_adr_value_type_code         VARCHAR2(30);
27116 l_adr_value_combination_id    NUMBER;
27117 l_adr_value_segment_code      VARCHAR2(30);
27118 
27119 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27120 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27121 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27122 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27123 
27124 -- 4262811 Variables ------------------------------------------------------------------------------------------
27125 l_entered_amt_idx             NUMBER;
27126 l_accted_amt_idx              NUMBER;
27127 l_acc_rev_flag                VARCHAR2(1);
27128 l_accrual_line_num            NUMBER;
27129 l_tmp_amt                     NUMBER;
27130 l_acc_rev_natural_side_code   VARCHAR2(1);
27131 
27132 l_num_entries                 NUMBER;
27133 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27134 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27135 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27136 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27137 l_recog_line_1                NUMBER;
27138 l_recog_line_2                NUMBER;
27139 
27140 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27141 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27142 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27143 
27144 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27145 
27146 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27147 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27148 
27149 ---------------------------------------------------------------------------------------------------------------
27150 
27151 
27152 --
27153 -- bulk performance
27154 --
27155 l_balance_type_code           VARCHAR2(1);
27156 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27157 l_log_module                  VARCHAR2(240);
27158 
27159 --
27160 -- Upgrade strategy
27161 --
27162 l_actual_upg_option           VARCHAR2(1);
27163 l_enc_upg_option           VARCHAR2(1);
27164 
27165 --
27166 BEGIN
27167 --
27168 IF g_log_enabled THEN
27169       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_52';
27170 END IF;
27171 --
27172 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27173 
27174       trace
27175          (p_msg      => 'BEGIN of AcctLineType_52'
27176          ,p_level    => C_LEVEL_PROCEDURE
27177          ,p_module   => l_log_module);
27178 
27179 END IF;
27180 --
27181 l_component_type             := 'AMB_JLT';
27182 l_component_code             := 'INTERCOMPANY_ACCRUAL';
27183 l_component_type_code        := 'S';
27184 l_component_appl_id          :=  707;
27185 l_amb_context_code           := 'DEFAULT';
27186 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
27187 l_event_class_code           := 'USER_DEFINE';
27188 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
27189 l_line_definition_owner_code := 'S';
27190 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
27191 --
27192 l_balance_type_code          := 'A';
27193 l_segment                     := NULL;
27194 l_ccid                        := NULL;
27195 l_adr_transaction_coa_id      := NULL;
27196 l_adr_accounting_coa_id       := NULL;
27197 l_adr_flexfield_segment_code  := NULL;
27198 l_adr_flex_value_set_id       := NULL;
27199 l_adr_value_type_code         := NULL;
27200 l_adr_value_combination_id    := NULL;
27201 l_adr_value_segment_code      := NULL;
27202 
27203 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27204 l_bflow_class_code           := '';    -- 4219869 Business Flow
27205 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27206 l_budgetary_control_flag     := 'N';
27207 
27208 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27209 l_bflow_applied_to_amt       := NULL; -- 5132302
27210 l_entered_amt_idx            := NULL;          -- 4262811
27211 l_accted_amt_idx             := NULL;          -- 4262811
27212 l_acc_rev_flag               := NULL;          -- 4262811
27213 l_accrual_line_num           := NULL;          -- 4262811
27214 l_tmp_amt                    := NULL;          -- 4262811
27215 --
27216  
27217 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27218     l_balance_type_code <> 'B' THEN
27219 IF NVL(p_source_24,9E125) =  2 AND 
27220 p_source_22 <  0
27221  THEN 
27222 
27223    --
27224    XLA_AE_LINES_PKG.SetNewLine;
27225 
27226    p_balance_type_code          := l_balance_type_code;
27227    -- set the flag so later we will know whether the gain loss line needs to be created
27228    
27229    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27230      p_actual_flag :='A';
27231    END IF;
27232 
27233    --
27234    -- bulk performance
27235    --
27236    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27237                                       p_header_num   => 0); -- 4262811
27238    --
27239    -- set accounting line options
27240    --
27241    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27242            p_natural_side_code          => 'D'
27243          , p_gain_or_loss_flag          => 'N'
27244          , p_gl_transfer_mode_code      => 'S'
27245          , p_acct_entry_type_code       => 'A'
27246          , p_switch_side_flag           => 'Y'
27247          , p_merge_duplicate_code       => 'N'
27248          );
27249    --
27250    l_acc_rev_natural_side_code := 'C';  -- 4262811
27251    -- 
27252    --
27253    -- set accounting line type info
27254    --
27255    xla_ae_lines_pkg.SetAcctLineType
27256       (p_component_type             => l_component_type
27257       ,p_event_type_code            => l_event_type_code
27258       ,p_line_definition_owner_code => l_line_definition_owner_code
27259       ,p_line_definition_code       => l_line_definition_code
27260       ,p_accounting_line_code       => l_component_code
27261       ,p_accounting_line_type_code  => l_component_type_code
27262       ,p_accounting_line_appl_id    => l_component_appl_id
27263       ,p_amb_context_code           => l_amb_context_code
27264       ,p_entity_code                => l_entity_code
27265       ,p_event_class_code           => l_event_class_code);
27266    --
27267    -- set accounting class
27268    --
27269    xla_ae_lines_pkg.SetAcctClass(
27270            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
27271          , p_ae_header_id           => l_ae_header_id
27272          );
27273 
27274    --
27275    -- set rounding class
27276    --
27277    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27278                       'INTERCOMPANY_ACCRUAL';
27279 
27280    --
27281    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27282    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27283    --
27284    -- bulk performance
27285    --
27286    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27287 
27288    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27289       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27290 
27291    -- 4955764
27292    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27293       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27294 
27295    -- 4458381 Public Sector Enh
27296    
27297    --
27298    -- set accounting attributes for the line type
27299    --
27300    l_entered_amt_idx := 3;
27301    l_accted_amt_idx  := 8;
27302    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27303    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
27304    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
27305    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
27306    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
27307    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
27308    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
27309    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
27310    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
27311    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
27312    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
27313    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
27314    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
27315    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
27316    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
27317    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
27318    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
27319 
27320    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27321    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27322 
27323    ---------------------------------------------------------------------------------------------------------------
27324    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27325    ---------------------------------------------------------------------------------------------------------------
27326    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27327 
27328    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27329    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27330 
27331    IF xla_accounting_cache_pkg.GetValueChar
27332          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27333          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27334    AND l_bflow_method_code = 'PRIOR_ENTRY'
27335 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27336    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27337          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27338        )
27339    THEN
27340          xla_ae_lines_pkg.BflowUpgEntry
27341            (p_business_method_code    => l_bflow_method_code
27342            ,p_business_class_code     => l_bflow_class_code
27343            ,p_balance_type            => l_balance_type_code);
27344    ELSE
27345       NULL;
27346 -- No business flow processing for business flow method of NONE.
27347    END IF;
27348 
27349    --
27350    -- call analytical criteria
27351    --
27352    
27353    --
27354    -- call description
27355    --
27356    -- No description or it is inherited.
27357    --
27358    -- call ADRs
27359    -- Bug 4922099
27360    --
27361    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27362         (NVL(l_actual_upg_option, 'N') = 'O') OR
27363         (NVL(l_enc_upg_option, 'N') = 'O')
27364       )
27365    THEN
27366    NULL;
27367    --
27368    --
27369    
27370   l_ccid := AcctDerRule_4(
27371            p_application_id           => p_application_id
27372          , p_ae_header_id             => l_ae_header_id 
27373 , p_source_4 => p_source_4
27374          , x_transaction_coa_id       => l_adr_transaction_coa_id
27375          , x_accounting_coa_id        => l_adr_accounting_coa_id
27376          , x_value_type_code          => l_adr_value_type_code
27377          , p_side                     => 'NA'
27378    );
27379 
27380    xla_ae_lines_pkg.set_ccid(
27381     p_code_combination_id          => l_ccid
27382   , p_value_type_code              => l_adr_value_type_code
27383   , p_transaction_coa_id           => l_adr_transaction_coa_id
27384   , p_accounting_coa_id            => l_adr_accounting_coa_id
27385   , p_adr_code                     => 'CST_DEFAULT'
27386   , p_adr_type_code                => 'S'
27387   , p_component_type               => l_component_type
27388   , p_component_code               => l_component_code
27389   , p_component_type_code          => l_component_type_code
27390   , p_component_appl_id            => l_component_appl_id
27391   , p_amb_context_code             => l_amb_context_code
27392   , p_side                         => 'NA'
27393   );
27394 
27395 
27396    --
27397    --
27398    END IF;
27399    --
27400    -- Bug 4922099
27401    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27402           (NVL(l_enc_upg_option, 'N') = 'O')
27403         ) AND
27404         (l_bflow_method_code = 'PRIOR_ENTRY')
27405       )
27406    THEN
27407       IF
27408       --
27409       1 = 2
27410       --
27411       THEN
27412       xla_accounting_err_pkg.build_message
27413                                     (p_appli_s_name            => 'XLA'
27414                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27415                                     ,p_token_1                 => 'LINE_NUMBER'
27416                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27417                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27418                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27419                                                                              l_component_type
27420                                                                             ,l_component_code
27421                                                                             ,l_component_type_code
27422                                                                             ,l_component_appl_id
27423                                                                             ,l_amb_context_code
27424                                                                             ,l_entity_code
27425                                                                             ,l_event_class_code
27426                                                                            )
27427                                     ,p_token_3                 => 'OWNER'
27428                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27429                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27430                                                                           ,p_lookup_code    => l_component_type_code
27431                                                                          )
27432                                     ,p_token_4                 => 'PRODUCT_NAME'
27433                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27434                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27435                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27436                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27437                                     ,p_ae_header_id            =>  NULL
27438                                        );
27439 
27440         IF (C_LEVEL_ERROR>= g_log_level) THEN
27441                  trace
27442                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27443                       ,p_level    => C_LEVEL_ERROR
27444                       ,p_module   => l_log_module);
27445         END IF;
27446       END IF;
27447    END IF;
27448    --
27449    --
27450    ------------------------------------------------------------------------------------------------
27451    -- 4219869 Business Flow
27452    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27453    -- Prior Entry.  Currently, the following code is always generated.
27454    ------------------------------------------------------------------------------------------------
27455    XLA_AE_LINES_PKG.ValidateCurrentLine;
27456 
27457    ------------------------------------------------------------------------------------
27458    -- 4219869 Business Flow
27459    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27460    ------------------------------------------------------------------------------------
27461    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27462 
27463    ----------------------------------------------------------------------------------
27464    -- 4219869 Business Flow
27465    -- Update journal entry status -- Need to generate this within IF <condition>
27466    ----------------------------------------------------------------------------------
27467    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27468          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27469          ,p_balance_type_code => l_balance_type_code
27470          );
27471 
27472    -------------------------------------------------------------------------------------------
27473    -- 4262811 - Generate the Accrual Reversal lines
27474    -------------------------------------------------------------------------------------------
27475    BEGIN
27476       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27477                               (g_array_event(p_event_id).array_value_num('header_index'));
27478       IF l_acc_rev_flag IS NULL THEN
27479          l_acc_rev_flag := 'N';
27480       END IF;
27481    EXCEPTION
27482       WHEN OTHERS THEN
27483          l_acc_rev_flag := 'N';
27484    END;
27485    --
27486    IF (l_acc_rev_flag = 'Y') THEN
27487 
27488        -- 4645092  ------------------------------------------------------------------------------
27489        -- To allow MPA report to determine if it should generate report process
27490        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27491        ------------------------------------------------------------------------------------------
27492 
27493        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27494        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27495    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
27496    -- call ADRs
27497    -- Bug 4922099
27498    --
27499    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27500         (NVL(l_actual_upg_option, 'N') = 'O') OR
27501         (NVL(l_enc_upg_option, 'N') = 'O')
27502       )
27503    THEN
27504    NULL;
27505    --
27506    --
27507    
27508   l_ccid := AcctDerRule_4(
27509            p_application_id           => p_application_id
27510          , p_ae_header_id             => l_ae_header_id 
27511 , p_source_4 => p_source_4
27512          , x_transaction_coa_id       => l_adr_transaction_coa_id
27513          , x_accounting_coa_id        => l_adr_accounting_coa_id
27514          , x_value_type_code          => l_adr_value_type_code
27515          , p_side                     => 'NA'
27516    );
27517 
27518    xla_ae_lines_pkg.set_ccid(
27519     p_code_combination_id          => l_ccid
27520   , p_value_type_code              => l_adr_value_type_code
27521   , p_transaction_coa_id           => l_adr_transaction_coa_id
27522   , p_accounting_coa_id            => l_adr_accounting_coa_id
27523   , p_adr_code                     => 'CST_DEFAULT'
27524   , p_adr_type_code                => 'S'
27525   , p_component_type               => l_component_type
27526   , p_component_code               => l_component_code
27527   , p_component_type_code          => l_component_type_code
27528   , p_component_appl_id            => l_component_appl_id
27529   , p_amb_context_code             => l_amb_context_code
27530   , p_side                         => 'NA'
27531   );
27532 
27533 
27534    --
27535    --
27536    END IF;
27537 
27538        --
27539        -- Update the line information that should be overwritten
27540        --
27541        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27542                                          p_header_num   => 1);
27543        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27544 
27545        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27546 
27547        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27548           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27549        END IF;
27550 
27551       --
27552       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27553       --
27554       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27555           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27556       ELSE
27557           ---------------------------------------------------------------------------------------------------
27558           -- 4262811a Switch Sign
27559           ---------------------------------------------------------------------------------------------------
27560           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27561           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27562                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27563           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27564                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27565           -- 5132302
27566           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27567                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27568 
27569       END IF;
27570 
27571       -- 4955764
27572       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27573       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27574 
27575 
27576       XLA_AE_LINES_PKG.ValidateCurrentLine;
27577       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27578 
27579       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27580                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27581                ,p_balance_type_code => l_balance_type_code);
27582 
27583    END IF;
27584 
27585    -----------------------------------------------------------------------------------------
27586    -- 4262811 Multiperiod Accounting
27587    -----------------------------------------------------------------------------------------
27588      -- No MPA option is assigned.
27589 
27590 
27591 END IF;
27592 END IF;
27593 --
27594 
27595 --
27596 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27597    trace
27598       (p_msg      => 'END of AcctLineType_52'
27599       ,p_level    => C_LEVEL_PROCEDURE
27600       ,p_module   => l_log_module);
27601 END IF;
27602 --
27603 EXCEPTION
27604   WHEN xla_exceptions_pkg.application_exception THEN
27605       RAISE;
27606   WHEN OTHERS THEN
27607        xla_exceptions_pkg.raise_message
27608            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_52');
27609 END AcctLineType_52;
27610 --
27611 
27612 ---------------------------------------
27613 --
27614 -- PRIVATE FUNCTION
27615 --         AcctLineType_53
27616 --
27617 ---------------------------------------
27618 PROCEDURE AcctLineType_53 (
27619   p_application_id        IN NUMBER
27620  ,p_event_id              IN NUMBER
27621  ,p_calculate_acctd_flag  IN VARCHAR2
27622  ,p_calculate_g_l_flag    IN VARCHAR2
27623  ,p_actual_flag           IN OUT VARCHAR2
27624  ,p_balance_type_code     OUT VARCHAR2
27625  ,p_gain_or_loss_ref      OUT VARCHAR2
27626  
27627 --Cost Management Default Account
27628  , p_source_4            IN NUMBER
27629 --DISTRIBUTION_IDENTIFIER
27630  , p_source_11            IN NUMBER
27631 --Distribution Type
27632  , p_source_12            IN VARCHAR2
27633  , p_source_12_meaning    IN VARCHAR2
27634 --Entered Currency Code
27635  , p_source_15            IN VARCHAR2
27636 --Entered Amount
27637  , p_source_18            IN NUMBER
27638 --Currency Conversion Date
27639  , p_source_19            IN DATE
27640 --Currency Conversion Rate
27641  , p_source_20            IN NUMBER
27642 --Currency Conversion Type
27643  , p_source_21            IN VARCHAR2
27644 --Accounted Amount
27645  , p_source_22            IN NUMBER
27646 --Accounting Line Type
27647  , p_source_24            IN NUMBER
27648 )
27649 IS
27650 
27651 l_component_type              VARCHAR2(80);
27652 l_component_code              VARCHAR2(30);
27653 l_component_type_code         VARCHAR2(1);
27654 l_component_appl_id           INTEGER;
27655 l_amb_context_code            VARCHAR2(30);
27656 l_entity_code                 VARCHAR2(30);
27657 l_event_class_code            VARCHAR2(30);
27658 l_ae_header_id                NUMBER;
27659 l_event_type_code             VARCHAR2(30);
27660 l_line_definition_code        VARCHAR2(30);
27661 l_line_definition_owner_code  VARCHAR2(1);
27662 --
27663 -- adr variables
27664 l_segment                     VARCHAR2(30);
27665 l_ccid                        NUMBER;
27666 l_adr_transaction_coa_id      NUMBER;
27667 l_adr_accounting_coa_id       NUMBER;
27668 l_adr_flexfield_segment_code  VARCHAR2(30);
27669 l_adr_flex_value_set_id       NUMBER;
27670 l_adr_value_type_code         VARCHAR2(30);
27671 l_adr_value_combination_id    NUMBER;
27672 l_adr_value_segment_code      VARCHAR2(30);
27673 
27674 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27675 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27676 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27677 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27678 
27679 -- 4262811 Variables ------------------------------------------------------------------------------------------
27680 l_entered_amt_idx             NUMBER;
27681 l_accted_amt_idx              NUMBER;
27682 l_acc_rev_flag                VARCHAR2(1);
27683 l_accrual_line_num            NUMBER;
27684 l_tmp_amt                     NUMBER;
27685 l_acc_rev_natural_side_code   VARCHAR2(1);
27686 
27687 l_num_entries                 NUMBER;
27688 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27689 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27690 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27691 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27692 l_recog_line_1                NUMBER;
27693 l_recog_line_2                NUMBER;
27694 
27695 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27696 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27697 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27698 
27699 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27700 
27701 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27702 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27703 
27704 ---------------------------------------------------------------------------------------------------------------
27705 
27706 
27707 --
27708 -- bulk performance
27709 --
27710 l_balance_type_code           VARCHAR2(1);
27711 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27712 l_log_module                  VARCHAR2(240);
27713 
27714 --
27715 -- Upgrade strategy
27716 --
27717 l_actual_upg_option           VARCHAR2(1);
27718 l_enc_upg_option           VARCHAR2(1);
27719 
27720 --
27721 BEGIN
27722 --
27723 IF g_log_enabled THEN
27724       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_53';
27725 END IF;
27726 --
27727 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27728 
27729       trace
27730          (p_msg      => 'BEGIN of AcctLineType_53'
27731          ,p_level    => C_LEVEL_PROCEDURE
27732          ,p_module   => l_log_module);
27733 
27734 END IF;
27735 --
27736 l_component_type             := 'AMB_JLT';
27737 l_component_code             := 'INTERCOMPANY_ACCRUAL';
27738 l_component_type_code        := 'S';
27739 l_component_appl_id          :=  707;
27740 l_amb_context_code           := 'DEFAULT';
27741 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
27742 l_event_class_code           := 'USER_DEFINE';
27743 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
27744 l_line_definition_owner_code := 'S';
27745 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
27746 --
27747 l_balance_type_code          := 'A';
27748 l_segment                     := NULL;
27749 l_ccid                        := NULL;
27750 l_adr_transaction_coa_id      := NULL;
27751 l_adr_accounting_coa_id       := NULL;
27752 l_adr_flexfield_segment_code  := NULL;
27753 l_adr_flex_value_set_id       := NULL;
27754 l_adr_value_type_code         := NULL;
27755 l_adr_value_combination_id    := NULL;
27756 l_adr_value_segment_code      := NULL;
27757 
27758 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27759 l_bflow_class_code           := '';    -- 4219869 Business Flow
27760 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27761 l_budgetary_control_flag     := 'N';
27762 
27763 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27764 l_bflow_applied_to_amt       := NULL; -- 5132302
27765 l_entered_amt_idx            := NULL;          -- 4262811
27766 l_accted_amt_idx             := NULL;          -- 4262811
27767 l_acc_rev_flag               := NULL;          -- 4262811
27768 l_accrual_line_num           := NULL;          -- 4262811
27769 l_tmp_amt                    := NULL;          -- 4262811
27770 --
27771  
27772 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27773     l_balance_type_code <> 'B' THEN
27774 IF NVL(p_source_24,9E125) =  2 AND 
27775 p_source_22 <  0
27776  THEN 
27777 
27778    --
27779    XLA_AE_LINES_PKG.SetNewLine;
27780 
27781    p_balance_type_code          := l_balance_type_code;
27782    -- set the flag so later we will know whether the gain loss line needs to be created
27783    
27784    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27785      p_actual_flag :='A';
27786    END IF;
27787 
27788    --
27789    -- bulk performance
27790    --
27791    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27792                                       p_header_num   => 0); -- 4262811
27793    --
27794    -- set accounting line options
27795    --
27796    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27797            p_natural_side_code          => 'D'
27798          , p_gain_or_loss_flag          => 'N'
27799          , p_gl_transfer_mode_code      => 'S'
27800          , p_acct_entry_type_code       => 'A'
27801          , p_switch_side_flag           => 'Y'
27802          , p_merge_duplicate_code       => 'N'
27803          );
27804    --
27805    l_acc_rev_natural_side_code := 'C';  -- 4262811
27806    -- 
27807    --
27808    -- set accounting line type info
27809    --
27810    xla_ae_lines_pkg.SetAcctLineType
27811       (p_component_type             => l_component_type
27812       ,p_event_type_code            => l_event_type_code
27813       ,p_line_definition_owner_code => l_line_definition_owner_code
27814       ,p_line_definition_code       => l_line_definition_code
27815       ,p_accounting_line_code       => l_component_code
27816       ,p_accounting_line_type_code  => l_component_type_code
27817       ,p_accounting_line_appl_id    => l_component_appl_id
27818       ,p_amb_context_code           => l_amb_context_code
27819       ,p_entity_code                => l_entity_code
27820       ,p_event_class_code           => l_event_class_code);
27821    --
27822    -- set accounting class
27823    --
27824    xla_ae_lines_pkg.SetAcctClass(
27825            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
27826          , p_ae_header_id           => l_ae_header_id
27827          );
27828 
27829    --
27830    -- set rounding class
27831    --
27832    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27833                       'INTERCOMPANY_ACCRUAL';
27834 
27835    --
27836    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27837    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27838    --
27839    -- bulk performance
27840    --
27841    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27842 
27843    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27844       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27845 
27846    -- 4955764
27847    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27848       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27849 
27850    -- 4458381 Public Sector Enh
27851    
27852    --
27853    -- set accounting attributes for the line type
27854    --
27855    l_entered_amt_idx := 3;
27856    l_accted_amt_idx  := 8;
27857    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27858    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
27859    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
27860    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
27861    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
27862    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
27863    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
27864    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
27865    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
27866    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
27867    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
27868    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
27869    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
27870    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
27871    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
27872    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
27873    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
27874 
27875    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27876    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27877 
27878    ---------------------------------------------------------------------------------------------------------------
27879    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27880    ---------------------------------------------------------------------------------------------------------------
27881    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27882 
27883    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27884    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27885 
27886    IF xla_accounting_cache_pkg.GetValueChar
27887          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27888          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27889    AND l_bflow_method_code = 'PRIOR_ENTRY'
27890 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27891    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27892          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27893        )
27894    THEN
27895          xla_ae_lines_pkg.BflowUpgEntry
27896            (p_business_method_code    => l_bflow_method_code
27897            ,p_business_class_code     => l_bflow_class_code
27898            ,p_balance_type            => l_balance_type_code);
27899    ELSE
27900       NULL;
27901 -- No business flow processing for business flow method of NONE.
27902    END IF;
27903 
27904    --
27905    -- call analytical criteria
27906    --
27907    
27908    --
27909    -- call description
27910    --
27911    -- No description or it is inherited.
27912    --
27913    -- call ADRs
27914    -- Bug 4922099
27915    --
27916    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27917         (NVL(l_actual_upg_option, 'N') = 'O') OR
27918         (NVL(l_enc_upg_option, 'N') = 'O')
27919       )
27920    THEN
27921    NULL;
27922    --
27923    --
27924    
27925   l_ccid := AcctDerRule_4(
27926            p_application_id           => p_application_id
27927          , p_ae_header_id             => l_ae_header_id 
27928 , p_source_4 => p_source_4
27929          , x_transaction_coa_id       => l_adr_transaction_coa_id
27930          , x_accounting_coa_id        => l_adr_accounting_coa_id
27931          , x_value_type_code          => l_adr_value_type_code
27932          , p_side                     => 'NA'
27933    );
27934 
27935    xla_ae_lines_pkg.set_ccid(
27936     p_code_combination_id          => l_ccid
27937   , p_value_type_code              => l_adr_value_type_code
27938   , p_transaction_coa_id           => l_adr_transaction_coa_id
27939   , p_accounting_coa_id            => l_adr_accounting_coa_id
27940   , p_adr_code                     => 'CST_DEFAULT'
27941   , p_adr_type_code                => 'S'
27942   , p_component_type               => l_component_type
27943   , p_component_code               => l_component_code
27944   , p_component_type_code          => l_component_type_code
27945   , p_component_appl_id            => l_component_appl_id
27946   , p_amb_context_code             => l_amb_context_code
27947   , p_side                         => 'NA'
27948   );
27949 
27950 
27951    --
27952    --
27953    END IF;
27954    --
27955    -- Bug 4922099
27956    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27957           (NVL(l_enc_upg_option, 'N') = 'O')
27958         ) AND
27959         (l_bflow_method_code = 'PRIOR_ENTRY')
27960       )
27961    THEN
27962       IF
27963       --
27964       1 = 2
27965       --
27966       THEN
27967       xla_accounting_err_pkg.build_message
27968                                     (p_appli_s_name            => 'XLA'
27969                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27970                                     ,p_token_1                 => 'LINE_NUMBER'
27971                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27972                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27973                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27974                                                                              l_component_type
27975                                                                             ,l_component_code
27976                                                                             ,l_component_type_code
27977                                                                             ,l_component_appl_id
27978                                                                             ,l_amb_context_code
27979                                                                             ,l_entity_code
27980                                                                             ,l_event_class_code
27981                                                                            )
27982                                     ,p_token_3                 => 'OWNER'
27983                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27984                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27985                                                                           ,p_lookup_code    => l_component_type_code
27986                                                                          )
27987                                     ,p_token_4                 => 'PRODUCT_NAME'
27988                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27989                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27990                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27991                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27992                                     ,p_ae_header_id            =>  NULL
27993                                        );
27994 
27995         IF (C_LEVEL_ERROR>= g_log_level) THEN
27996                  trace
27997                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27998                       ,p_level    => C_LEVEL_ERROR
27999                       ,p_module   => l_log_module);
28000         END IF;
28001       END IF;
28002    END IF;
28003    --
28004    --
28005    ------------------------------------------------------------------------------------------------
28006    -- 4219869 Business Flow
28007    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28008    -- Prior Entry.  Currently, the following code is always generated.
28009    ------------------------------------------------------------------------------------------------
28010    XLA_AE_LINES_PKG.ValidateCurrentLine;
28011 
28012    ------------------------------------------------------------------------------------
28013    -- 4219869 Business Flow
28014    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28015    ------------------------------------------------------------------------------------
28016    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28017 
28018    ----------------------------------------------------------------------------------
28019    -- 4219869 Business Flow
28020    -- Update journal entry status -- Need to generate this within IF <condition>
28021    ----------------------------------------------------------------------------------
28022    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28023          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28024          ,p_balance_type_code => l_balance_type_code
28025          );
28026 
28027    -------------------------------------------------------------------------------------------
28028    -- 4262811 - Generate the Accrual Reversal lines
28029    -------------------------------------------------------------------------------------------
28030    BEGIN
28031       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28032                               (g_array_event(p_event_id).array_value_num('header_index'));
28033       IF l_acc_rev_flag IS NULL THEN
28034          l_acc_rev_flag := 'N';
28035       END IF;
28036    EXCEPTION
28037       WHEN OTHERS THEN
28038          l_acc_rev_flag := 'N';
28039    END;
28040    --
28041    IF (l_acc_rev_flag = 'Y') THEN
28042 
28043        -- 4645092  ------------------------------------------------------------------------------
28044        -- To allow MPA report to determine if it should generate report process
28045        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28046        ------------------------------------------------------------------------------------------
28047 
28048        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28049        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28050    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
28051    -- call ADRs
28052    -- Bug 4922099
28053    --
28054    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28055         (NVL(l_actual_upg_option, 'N') = 'O') OR
28056         (NVL(l_enc_upg_option, 'N') = 'O')
28057       )
28058    THEN
28059    NULL;
28060    --
28061    --
28062    
28063   l_ccid := AcctDerRule_4(
28064            p_application_id           => p_application_id
28065          , p_ae_header_id             => l_ae_header_id 
28066 , p_source_4 => p_source_4
28067          , x_transaction_coa_id       => l_adr_transaction_coa_id
28068          , x_accounting_coa_id        => l_adr_accounting_coa_id
28069          , x_value_type_code          => l_adr_value_type_code
28070          , p_side                     => 'NA'
28071    );
28072 
28073    xla_ae_lines_pkg.set_ccid(
28074     p_code_combination_id          => l_ccid
28075   , p_value_type_code              => l_adr_value_type_code
28076   , p_transaction_coa_id           => l_adr_transaction_coa_id
28077   , p_accounting_coa_id            => l_adr_accounting_coa_id
28078   , p_adr_code                     => 'CST_DEFAULT'
28079   , p_adr_type_code                => 'S'
28080   , p_component_type               => l_component_type
28081   , p_component_code               => l_component_code
28082   , p_component_type_code          => l_component_type_code
28083   , p_component_appl_id            => l_component_appl_id
28084   , p_amb_context_code             => l_amb_context_code
28085   , p_side                         => 'NA'
28086   );
28087 
28088 
28089    --
28090    --
28091    END IF;
28092 
28093        --
28094        -- Update the line information that should be overwritten
28095        --
28096        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28097                                          p_header_num   => 1);
28098        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28099 
28100        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28101 
28102        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28103           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28104        END IF;
28105 
28106       --
28107       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28108       --
28109       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28110           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28111       ELSE
28112           ---------------------------------------------------------------------------------------------------
28113           -- 4262811a Switch Sign
28114           ---------------------------------------------------------------------------------------------------
28115           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28116           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28117                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28118           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28119                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28120           -- 5132302
28121           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28122                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28123 
28124       END IF;
28125 
28126       -- 4955764
28127       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28128       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28129 
28130 
28131       XLA_AE_LINES_PKG.ValidateCurrentLine;
28132       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28133 
28134       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28135                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28136                ,p_balance_type_code => l_balance_type_code);
28137 
28138    END IF;
28139 
28140    -----------------------------------------------------------------------------------------
28141    -- 4262811 Multiperiod Accounting
28142    -----------------------------------------------------------------------------------------
28143      -- No MPA option is assigned.
28144 
28145 
28146 END IF;
28147 END IF;
28148 --
28149 
28150 --
28151 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28152    trace
28153       (p_msg      => 'END of AcctLineType_53'
28154       ,p_level    => C_LEVEL_PROCEDURE
28155       ,p_module   => l_log_module);
28156 END IF;
28157 --
28158 EXCEPTION
28159   WHEN xla_exceptions_pkg.application_exception THEN
28160       RAISE;
28161   WHEN OTHERS THEN
28162        xla_exceptions_pkg.raise_message
28163            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_53');
28164 END AcctLineType_53;
28165 --
28166 
28167 ---------------------------------------
28168 --
28169 -- PRIVATE FUNCTION
28170 --         AcctLineType_54
28171 --
28172 ---------------------------------------
28173 PROCEDURE AcctLineType_54 (
28174   p_application_id        IN NUMBER
28175  ,p_event_id              IN NUMBER
28176  ,p_calculate_acctd_flag  IN VARCHAR2
28177  ,p_calculate_g_l_flag    IN VARCHAR2
28178  ,p_actual_flag           IN OUT VARCHAR2
28179  ,p_balance_type_code     OUT VARCHAR2
28180  ,p_gain_or_loss_ref      OUT VARCHAR2
28181  
28182 --Cost Management Default Account
28183  , p_source_4            IN NUMBER
28184 --Applied to Application ID
28185  , p_source_6            IN NUMBER
28186 --Applied to Distribution Link Type
28187  , p_source_7            IN VARCHAR2
28188 --Applied to Entity Code
28189  , p_source_8            IN VARCHAR2
28190 --DISTRIBUTION_IDENTIFIER
28191  , p_source_11            IN NUMBER
28192 --Distribution Type
28193  , p_source_12            IN VARCHAR2
28194  , p_source_12_meaning    IN VARCHAR2
28195 --Encumbrance Reversal Amount Entered
28196  , p_source_14            IN NUMBER
28197 --Entered Currency Code
28198  , p_source_15            IN VARCHAR2
28199 --Transaction Encumbrance Reversal Amount
28200  , p_source_16            IN NUMBER
28201 --Entered Amount
28202  , p_source_18            IN NUMBER
28203 --Currency Conversion Date
28204  , p_source_19            IN DATE
28205 --Currency Conversion Rate
28206  , p_source_20            IN NUMBER
28207 --Currency Conversion Type
28208  , p_source_21            IN VARCHAR2
28209 --Accounted Amount
28210  , p_source_22            IN NUMBER
28211 --Accounting Line Type
28212  , p_source_24            IN NUMBER
28213 --Costing Encumbrance Upgrade Option
28214  , p_source_27            IN VARCHAR2
28215 --TXN_PO_DISTRIBUTION_ID
28216  , p_source_28            IN NUMBER
28217 --TXN_PO_HEADER_ID
28218  , p_source_29            IN NUMBER
28219 --Requisition Budget Account
28220  , p_source_30            IN NUMBER
28221 --Requisition Encumbrance Type Identifier
28222  , p_source_31            IN NUMBER
28223 )
28224 IS
28225 
28226 l_component_type              VARCHAR2(80);
28227 l_component_code              VARCHAR2(30);
28228 l_component_type_code         VARCHAR2(1);
28229 l_component_appl_id           INTEGER;
28230 l_amb_context_code            VARCHAR2(30);
28231 l_entity_code                 VARCHAR2(30);
28232 l_event_class_code            VARCHAR2(30);
28233 l_ae_header_id                NUMBER;
28234 l_event_type_code             VARCHAR2(30);
28235 l_line_definition_code        VARCHAR2(30);
28236 l_line_definition_owner_code  VARCHAR2(1);
28237 --
28238 -- adr variables
28239 l_segment                     VARCHAR2(30);
28240 l_ccid                        NUMBER;
28241 l_adr_transaction_coa_id      NUMBER;
28242 l_adr_accounting_coa_id       NUMBER;
28243 l_adr_flexfield_segment_code  VARCHAR2(30);
28244 l_adr_flex_value_set_id       NUMBER;
28245 l_adr_value_type_code         VARCHAR2(30);
28246 l_adr_value_combination_id    NUMBER;
28247 l_adr_value_segment_code      VARCHAR2(30);
28248 
28249 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28250 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28251 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28252 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28253 
28254 -- 4262811 Variables ------------------------------------------------------------------------------------------
28255 l_entered_amt_idx             NUMBER;
28256 l_accted_amt_idx              NUMBER;
28257 l_acc_rev_flag                VARCHAR2(1);
28258 l_accrual_line_num            NUMBER;
28259 l_tmp_amt                     NUMBER;
28260 l_acc_rev_natural_side_code   VARCHAR2(1);
28261 
28262 l_num_entries                 NUMBER;
28263 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28264 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28265 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28266 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28267 l_recog_line_1                NUMBER;
28268 l_recog_line_2                NUMBER;
28269 
28270 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28271 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28272 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28273 
28274 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28275 
28276 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28277 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28278 
28279 ---------------------------------------------------------------------------------------------------------------
28280 
28281 
28282 --
28283 -- bulk performance
28284 --
28285 l_balance_type_code           VARCHAR2(1);
28286 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28287 l_log_module                  VARCHAR2(240);
28288 
28289 --
28290 -- Upgrade strategy
28291 --
28292 l_actual_upg_option           VARCHAR2(1);
28293 l_enc_upg_option           VARCHAR2(1);
28294 
28295 --
28296 BEGIN
28297 --
28298 IF g_log_enabled THEN
28299       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_54';
28300 END IF;
28301 --
28302 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28303 
28304       trace
28305          (p_msg      => 'BEGIN of AcctLineType_54'
28306          ,p_level    => C_LEVEL_PROCEDURE
28307          ,p_module   => l_log_module);
28308 
28309 END IF;
28310 --
28311 l_component_type             := 'AMB_JLT';
28312 l_component_code             := 'INTERCOMPANY_ACCRUAL';
28313 l_component_type_code        := 'S';
28314 l_component_appl_id          :=  707;
28315 l_amb_context_code           := 'DEFAULT';
28316 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
28317 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
28318 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
28319 l_line_definition_owner_code := 'S';
28320 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT';
28321 --
28322 l_balance_type_code          := 'A';
28323 l_segment                     := NULL;
28324 l_ccid                        := NULL;
28325 l_adr_transaction_coa_id      := NULL;
28326 l_adr_accounting_coa_id       := NULL;
28327 l_adr_flexfield_segment_code  := NULL;
28328 l_adr_flex_value_set_id       := NULL;
28329 l_adr_value_type_code         := NULL;
28330 l_adr_value_combination_id    := NULL;
28331 l_adr_value_segment_code      := NULL;
28332 
28333 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28334 l_bflow_class_code           := '';    -- 4219869 Business Flow
28335 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28336 l_budgetary_control_flag     := 'N';
28337 
28338 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28339 l_bflow_applied_to_amt       := NULL; -- 5132302
28340 l_entered_amt_idx            := NULL;          -- 4262811
28341 l_accted_amt_idx             := NULL;          -- 4262811
28342 l_acc_rev_flag               := NULL;          -- 4262811
28343 l_accrual_line_num           := NULL;          -- 4262811
28344 l_tmp_amt                    := NULL;          -- 4262811
28345 --
28346  
28347 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28348     l_balance_type_code <> 'B' THEN
28349 IF NVL(p_source_24,9E125) =  2 AND 
28350 p_source_22 <  0
28351  THEN 
28352 
28353    --
28354    XLA_AE_LINES_PKG.SetNewLine;
28355 
28356    p_balance_type_code          := l_balance_type_code;
28357    -- set the flag so later we will know whether the gain loss line needs to be created
28358    
28359    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28360      p_actual_flag :='A';
28361    END IF;
28362 
28363    --
28364    -- bulk performance
28365    --
28366    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28367                                       p_header_num   => 0); -- 4262811
28368    --
28369    -- set accounting line options
28370    --
28371    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28372            p_natural_side_code          => 'D'
28373          , p_gain_or_loss_flag          => 'N'
28374          , p_gl_transfer_mode_code      => 'S'
28375          , p_acct_entry_type_code       => 'A'
28376          , p_switch_side_flag           => 'Y'
28377          , p_merge_duplicate_code       => 'N'
28378          );
28379    --
28380    l_acc_rev_natural_side_code := 'C';  -- 4262811
28381    -- 
28382    --
28383    -- set accounting line type info
28384    --
28385    xla_ae_lines_pkg.SetAcctLineType
28386       (p_component_type             => l_component_type
28387       ,p_event_type_code            => l_event_type_code
28388       ,p_line_definition_owner_code => l_line_definition_owner_code
28389       ,p_line_definition_code       => l_line_definition_code
28390       ,p_accounting_line_code       => l_component_code
28391       ,p_accounting_line_type_code  => l_component_type_code
28392       ,p_accounting_line_appl_id    => l_component_appl_id
28393       ,p_amb_context_code           => l_amb_context_code
28394       ,p_entity_code                => l_entity_code
28395       ,p_event_class_code           => l_event_class_code);
28396    --
28397    -- set accounting class
28398    --
28399    xla_ae_lines_pkg.SetAcctClass(
28400            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
28401          , p_ae_header_id           => l_ae_header_id
28402          );
28403 
28404    --
28405    -- set rounding class
28406    --
28407    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28408                       'INTERCOMPANY_ACCRUAL';
28409 
28410    --
28411    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28412    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28413    --
28414    -- bulk performance
28415    --
28416    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28417 
28418    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28419       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28420 
28421    -- 4955764
28422    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28423       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28424 
28425    -- 4458381 Public Sector Enh
28426    
28427    --
28428    -- set accounting attributes for the line type
28429    --
28430    l_entered_amt_idx := 17;
28431    l_accted_amt_idx  := 22;
28432    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28433    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
28434    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
28435    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
28436    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
28437    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
28438    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
28439    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
28440    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
28441    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
28442    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
28443    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
28444    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
28445    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
28446    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
28447    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
28448    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
28449    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
28450    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
28451    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
28452    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
28453    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
28454    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
28455    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
28456    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
28457    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
28458    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
28459    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
28460    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
28461    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
28462    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
28463    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
28464    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
28465    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
28466    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
28467    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
28468    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
28469    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
28470    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
28471    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
28472    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
28473    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
28474    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
28475    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
28476    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
28477    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
28478    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
28479    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
28480    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
28481 
28482    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28483    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28484 
28485    ---------------------------------------------------------------------------------------------------------------
28486    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28487    ---------------------------------------------------------------------------------------------------------------
28488    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28489 
28490    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28491    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28492 
28493    IF xla_accounting_cache_pkg.GetValueChar
28494          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28495          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28496    AND l_bflow_method_code = 'PRIOR_ENTRY'
28497 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28498    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28499          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28500        )
28501    THEN
28502          xla_ae_lines_pkg.BflowUpgEntry
28503            (p_business_method_code    => l_bflow_method_code
28504            ,p_business_class_code     => l_bflow_class_code
28505            ,p_balance_type            => l_balance_type_code);
28506    ELSE
28507       NULL;
28508 -- No business flow processing for business flow method of NONE.
28509    END IF;
28510 
28511    --
28512    -- call analytical criteria
28513    --
28514    
28515    --
28516    -- call description
28517    --
28518    -- No description or it is inherited.
28519    --
28520    -- call ADRs
28521    -- Bug 4922099
28522    --
28523    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28524         (NVL(l_actual_upg_option, 'N') = 'O') OR
28525         (NVL(l_enc_upg_option, 'N') = 'O')
28526       )
28527    THEN
28528    NULL;
28529    --
28530    --
28531    
28532   l_ccid := AcctDerRule_4(
28533            p_application_id           => p_application_id
28534          , p_ae_header_id             => l_ae_header_id 
28535 , p_source_4 => p_source_4
28536          , x_transaction_coa_id       => l_adr_transaction_coa_id
28537          , x_accounting_coa_id        => l_adr_accounting_coa_id
28538          , x_value_type_code          => l_adr_value_type_code
28539          , p_side                     => 'NA'
28540    );
28541 
28542    xla_ae_lines_pkg.set_ccid(
28543     p_code_combination_id          => l_ccid
28544   , p_value_type_code              => l_adr_value_type_code
28545   , p_transaction_coa_id           => l_adr_transaction_coa_id
28546   , p_accounting_coa_id            => l_adr_accounting_coa_id
28547   , p_adr_code                     => 'CST_DEFAULT'
28548   , p_adr_type_code                => 'S'
28549   , p_component_type               => l_component_type
28550   , p_component_code               => l_component_code
28551   , p_component_type_code          => l_component_type_code
28552   , p_component_appl_id            => l_component_appl_id
28553   , p_amb_context_code             => l_amb_context_code
28554   , p_side                         => 'NA'
28555   );
28556 
28557 
28558    --
28559    --
28560    END IF;
28561    --
28562    -- Bug 4922099
28563    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28564           (NVL(l_enc_upg_option, 'N') = 'O')
28565         ) AND
28566         (l_bflow_method_code = 'PRIOR_ENTRY')
28567       )
28568    THEN
28569       IF
28570       --
28571       1 = 2
28572       --
28573       THEN
28574       xla_accounting_err_pkg.build_message
28575                                     (p_appli_s_name            => 'XLA'
28576                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28577                                     ,p_token_1                 => 'LINE_NUMBER'
28578                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28579                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28580                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28581                                                                              l_component_type
28582                                                                             ,l_component_code
28583                                                                             ,l_component_type_code
28584                                                                             ,l_component_appl_id
28585                                                                             ,l_amb_context_code
28586                                                                             ,l_entity_code
28587                                                                             ,l_event_class_code
28588                                                                            )
28589                                     ,p_token_3                 => 'OWNER'
28590                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28591                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28592                                                                           ,p_lookup_code    => l_component_type_code
28593                                                                          )
28594                                     ,p_token_4                 => 'PRODUCT_NAME'
28595                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28596                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28597                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28598                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28599                                     ,p_ae_header_id            =>  NULL
28600                                        );
28601 
28602         IF (C_LEVEL_ERROR>= g_log_level) THEN
28603                  trace
28604                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28605                       ,p_level    => C_LEVEL_ERROR
28606                       ,p_module   => l_log_module);
28607         END IF;
28608       END IF;
28609    END IF;
28610    --
28611    --
28612    ------------------------------------------------------------------------------------------------
28613    -- 4219869 Business Flow
28614    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28615    -- Prior Entry.  Currently, the following code is always generated.
28616    ------------------------------------------------------------------------------------------------
28617    XLA_AE_LINES_PKG.ValidateCurrentLine;
28618 
28619    ------------------------------------------------------------------------------------
28620    -- 4219869 Business Flow
28621    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28622    ------------------------------------------------------------------------------------
28623    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28624 
28625    ----------------------------------------------------------------------------------
28626    -- 4219869 Business Flow
28627    -- Update journal entry status -- Need to generate this within IF <condition>
28628    ----------------------------------------------------------------------------------
28629    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28630          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28631          ,p_balance_type_code => l_balance_type_code
28632          );
28633 
28634    -------------------------------------------------------------------------------------------
28635    -- 4262811 - Generate the Accrual Reversal lines
28636    -------------------------------------------------------------------------------------------
28637    BEGIN
28638       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28639                               (g_array_event(p_event_id).array_value_num('header_index'));
28640       IF l_acc_rev_flag IS NULL THEN
28641          l_acc_rev_flag := 'N';
28642       END IF;
28643    EXCEPTION
28644       WHEN OTHERS THEN
28645          l_acc_rev_flag := 'N';
28646    END;
28647    --
28648    IF (l_acc_rev_flag = 'Y') THEN
28649 
28650        -- 4645092  ------------------------------------------------------------------------------
28651        -- To allow MPA report to determine if it should generate report process
28652        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28653        ------------------------------------------------------------------------------------------
28654 
28655        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28656        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28657    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
28658    -- call ADRs
28659    -- Bug 4922099
28660    --
28661    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28662         (NVL(l_actual_upg_option, 'N') = 'O') OR
28663         (NVL(l_enc_upg_option, 'N') = 'O')
28664       )
28665    THEN
28666    NULL;
28667    --
28668    --
28669    
28670   l_ccid := AcctDerRule_4(
28671            p_application_id           => p_application_id
28672          , p_ae_header_id             => l_ae_header_id 
28673 , p_source_4 => p_source_4
28674          , x_transaction_coa_id       => l_adr_transaction_coa_id
28675          , x_accounting_coa_id        => l_adr_accounting_coa_id
28676          , x_value_type_code          => l_adr_value_type_code
28677          , p_side                     => 'NA'
28678    );
28679 
28680    xla_ae_lines_pkg.set_ccid(
28681     p_code_combination_id          => l_ccid
28682   , p_value_type_code              => l_adr_value_type_code
28683   , p_transaction_coa_id           => l_adr_transaction_coa_id
28684   , p_accounting_coa_id            => l_adr_accounting_coa_id
28685   , p_adr_code                     => 'CST_DEFAULT'
28686   , p_adr_type_code                => 'S'
28687   , p_component_type               => l_component_type
28688   , p_component_code               => l_component_code
28689   , p_component_type_code          => l_component_type_code
28690   , p_component_appl_id            => l_component_appl_id
28691   , p_amb_context_code             => l_amb_context_code
28692   , p_side                         => 'NA'
28693   );
28694 
28695 
28696    --
28697    --
28698    END IF;
28699 
28700        --
28701        -- Update the line information that should be overwritten
28702        --
28703        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28704                                          p_header_num   => 1);
28705        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28706 
28707        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28708 
28709        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28710           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28711        END IF;
28712 
28713       --
28714       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28715       --
28716       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28717           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28718       ELSE
28719           ---------------------------------------------------------------------------------------------------
28720           -- 4262811a Switch Sign
28721           ---------------------------------------------------------------------------------------------------
28722           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28723           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28724                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28725           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28726                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28727           -- 5132302
28728           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28729                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28730 
28731       END IF;
28732 
28733       -- 4955764
28734       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28735       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28736 
28737 
28738       XLA_AE_LINES_PKG.ValidateCurrentLine;
28739       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28740 
28741       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28742                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28743                ,p_balance_type_code => l_balance_type_code);
28744 
28745    END IF;
28746 
28747    -----------------------------------------------------------------------------------------
28748    -- 4262811 Multiperiod Accounting
28749    -----------------------------------------------------------------------------------------
28750      -- No MPA option is assigned.
28751 
28752 
28753 END IF;
28754 END IF;
28755 --
28756 
28757 --
28758 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28759    trace
28760       (p_msg      => 'END of AcctLineType_54'
28761       ,p_level    => C_LEVEL_PROCEDURE
28762       ,p_module   => l_log_module);
28763 END IF;
28764 --
28765 EXCEPTION
28766   WHEN xla_exceptions_pkg.application_exception THEN
28767       RAISE;
28768   WHEN OTHERS THEN
28769        xla_exceptions_pkg.raise_message
28770            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_54');
28771 END AcctLineType_54;
28772 --
28773 
28774 ---------------------------------------
28775 --
28776 -- PRIVATE FUNCTION
28777 --         AcctLineType_55
28778 --
28779 ---------------------------------------
28780 PROCEDURE AcctLineType_55 (
28781   p_application_id        IN NUMBER
28782  ,p_event_id              IN NUMBER
28783  ,p_calculate_acctd_flag  IN VARCHAR2
28784  ,p_calculate_g_l_flag    IN VARCHAR2
28785  ,p_actual_flag           IN OUT VARCHAR2
28786  ,p_balance_type_code     OUT VARCHAR2
28787  ,p_gain_or_loss_ref      OUT VARCHAR2
28788  
28789 --Cost Management Default Account
28790  , p_source_4            IN NUMBER
28791 --DISTRIBUTION_IDENTIFIER
28792  , p_source_11            IN NUMBER
28793 --Distribution Type
28794  , p_source_12            IN VARCHAR2
28795  , p_source_12_meaning    IN VARCHAR2
28796 --Entered Currency Code
28797  , p_source_15            IN VARCHAR2
28798 --Entered Amount
28799  , p_source_18            IN NUMBER
28800 --Currency Conversion Date
28801  , p_source_19            IN DATE
28802 --Currency Conversion Rate
28803  , p_source_20            IN NUMBER
28804 --Currency Conversion Type
28805  , p_source_21            IN VARCHAR2
28806 --Accounted Amount
28807  , p_source_22            IN NUMBER
28808 --Accounting Line Type
28809  , p_source_24            IN NUMBER
28810 --Transaction Action Name
28811  , p_source_35            IN NUMBER
28812  , p_source_35_meaning    IN VARCHAR2
28813 )
28814 IS
28815 
28816 l_component_type              VARCHAR2(80);
28817 l_component_code              VARCHAR2(30);
28818 l_component_type_code         VARCHAR2(1);
28819 l_component_appl_id           INTEGER;
28820 l_amb_context_code            VARCHAR2(30);
28821 l_entity_code                 VARCHAR2(30);
28822 l_event_class_code            VARCHAR2(30);
28823 l_ae_header_id                NUMBER;
28824 l_event_type_code             VARCHAR2(30);
28825 l_line_definition_code        VARCHAR2(30);
28826 l_line_definition_owner_code  VARCHAR2(1);
28827 --
28828 -- adr variables
28829 l_segment                     VARCHAR2(30);
28830 l_ccid                        NUMBER;
28831 l_adr_transaction_coa_id      NUMBER;
28832 l_adr_accounting_coa_id       NUMBER;
28833 l_adr_flexfield_segment_code  VARCHAR2(30);
28834 l_adr_flex_value_set_id       NUMBER;
28835 l_adr_value_type_code         VARCHAR2(30);
28836 l_adr_value_combination_id    NUMBER;
28837 l_adr_value_segment_code      VARCHAR2(30);
28838 
28839 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28840 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28841 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28842 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28843 
28844 -- 4262811 Variables ------------------------------------------------------------------------------------------
28845 l_entered_amt_idx             NUMBER;
28846 l_accted_amt_idx              NUMBER;
28847 l_acc_rev_flag                VARCHAR2(1);
28848 l_accrual_line_num            NUMBER;
28849 l_tmp_amt                     NUMBER;
28850 l_acc_rev_natural_side_code   VARCHAR2(1);
28851 
28852 l_num_entries                 NUMBER;
28853 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28854 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28855 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28856 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28857 l_recog_line_1                NUMBER;
28858 l_recog_line_2                NUMBER;
28859 
28860 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28861 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28862 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28863 
28864 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28865 
28866 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28867 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28868 
28869 ---------------------------------------------------------------------------------------------------------------
28870 
28871 
28872 --
28873 -- bulk performance
28874 --
28875 l_balance_type_code           VARCHAR2(1);
28876 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28877 l_log_module                  VARCHAR2(240);
28878 
28879 --
28880 -- Upgrade strategy
28881 --
28882 l_actual_upg_option           VARCHAR2(1);
28883 l_enc_upg_option           VARCHAR2(1);
28884 
28885 --
28886 BEGIN
28887 --
28888 IF g_log_enabled THEN
28889       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_55';
28890 END IF;
28891 --
28892 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28893 
28894       trace
28895          (p_msg      => 'BEGIN of AcctLineType_55'
28896          ,p_level    => C_LEVEL_PROCEDURE
28897          ,p_module   => l_log_module);
28898 
28899 END IF;
28900 --
28901 l_component_type             := 'AMB_JLT';
28902 l_component_code             := 'INTERCOMPANY_COGS';
28903 l_component_type_code        := 'S';
28904 l_component_appl_id          :=  707;
28905 l_amb_context_code           := 'DEFAULT';
28906 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
28907 l_event_class_code           := 'LOG_INTERCOMPANY';
28908 l_event_type_code            := 'LOG_INTERCOMPANY_ALL';
28909 l_line_definition_owner_code := 'S';
28910 l_line_definition_code       := 'LOG_INTERCOMPANY';
28911 --
28912 l_balance_type_code          := 'A';
28913 l_segment                     := NULL;
28914 l_ccid                        := NULL;
28915 l_adr_transaction_coa_id      := NULL;
28916 l_adr_accounting_coa_id       := NULL;
28917 l_adr_flexfield_segment_code  := NULL;
28918 l_adr_flex_value_set_id       := NULL;
28919 l_adr_value_type_code         := NULL;
28920 l_adr_value_combination_id    := NULL;
28921 l_adr_value_segment_code      := NULL;
28922 
28923 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28924 l_bflow_class_code           := '';    -- 4219869 Business Flow
28925 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28926 l_budgetary_control_flag     := 'N';
28927 
28928 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28929 l_bflow_applied_to_amt       := NULL; -- 5132302
28930 l_entered_amt_idx            := NULL;          -- 4262811
28931 l_accted_amt_idx             := NULL;          -- 4262811
28932 l_acc_rev_flag               := NULL;          -- 4262811
28933 l_accrual_line_num           := NULL;          -- 4262811
28934 l_tmp_amt                    := NULL;          -- 4262811
28935 --
28936  
28937 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28938     l_balance_type_code <> 'B' THEN
28939 IF NVL(p_source_24,9E125) =  2 AND 
28940 ((p_source_22 >=  0 AND 
28941 NVL(p_source_35,9E125) =  9) OR 
28942 (p_source_22 <=  0 AND 
28943 NVL(p_source_35,9E125) =  14)
28944 ) THEN 
28945 
28946    --
28947    XLA_AE_LINES_PKG.SetNewLine;
28948 
28949    p_balance_type_code          := l_balance_type_code;
28950    -- set the flag so later we will know whether the gain loss line needs to be created
28951    
28952    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28953      p_actual_flag :='A';
28954    END IF;
28955 
28956    --
28957    -- bulk performance
28958    --
28959    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28960                                       p_header_num   => 0); -- 4262811
28961    --
28962    -- set accounting line options
28963    --
28964    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28965            p_natural_side_code          => 'D'
28966          , p_gain_or_loss_flag          => 'N'
28967          , p_gl_transfer_mode_code      => 'S'
28968          , p_acct_entry_type_code       => 'A'
28969          , p_switch_side_flag           => 'Y'
28970          , p_merge_duplicate_code       => 'N'
28971          );
28972    --
28973    l_acc_rev_natural_side_code := 'C';  -- 4262811
28974    -- 
28975    --
28976    -- set accounting line type info
28977    --
28978    xla_ae_lines_pkg.SetAcctLineType
28979       (p_component_type             => l_component_type
28980       ,p_event_type_code            => l_event_type_code
28981       ,p_line_definition_owner_code => l_line_definition_owner_code
28982       ,p_line_definition_code       => l_line_definition_code
28983       ,p_accounting_line_code       => l_component_code
28984       ,p_accounting_line_type_code  => l_component_type_code
28985       ,p_accounting_line_appl_id    => l_component_appl_id
28986       ,p_amb_context_code           => l_amb_context_code
28987       ,p_entity_code                => l_entity_code
28988       ,p_event_class_code           => l_event_class_code);
28989    --
28990    -- set accounting class
28991    --
28992    xla_ae_lines_pkg.SetAcctClass(
28993            p_accounting_class_code  => 'INTERCOMPANY_COGS'
28994          , p_ae_header_id           => l_ae_header_id
28995          );
28996 
28997    --
28998    -- set rounding class
28999    --
29000    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29001                       'INTERCOMPANY_COGS';
29002 
29003    --
29004    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29005    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29006    --
29007    -- bulk performance
29008    --
29009    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29010 
29011    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29012       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29013 
29014    -- 4955764
29015    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29016       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29017 
29018    -- 4458381 Public Sector Enh
29019    
29020    --
29021    -- set accounting attributes for the line type
29022    --
29023    l_entered_amt_idx := 3;
29024    l_accted_amt_idx  := 8;
29025    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29026    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
29027    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
29028    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
29029    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
29030    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
29031    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
29032    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
29033    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
29034    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
29035    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
29036    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
29037    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
29038    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
29039    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
29040    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
29041    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
29042 
29043    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29044    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29045 
29046    ---------------------------------------------------------------------------------------------------------------
29047    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29048    ---------------------------------------------------------------------------------------------------------------
29049    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29050 
29051    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29052    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29053 
29054    IF xla_accounting_cache_pkg.GetValueChar
29055          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29056          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29057    AND l_bflow_method_code = 'PRIOR_ENTRY'
29058 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29059    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29060          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29061        )
29062    THEN
29063          xla_ae_lines_pkg.BflowUpgEntry
29064            (p_business_method_code    => l_bflow_method_code
29065            ,p_business_class_code     => l_bflow_class_code
29066            ,p_balance_type            => l_balance_type_code);
29067    ELSE
29068       NULL;
29069 -- No business flow processing for business flow method of NONE.
29070    END IF;
29071 
29072    --
29073    -- call analytical criteria
29074    --
29075    
29076    --
29077    -- call description
29078    --
29079    -- No description or it is inherited.
29080    --
29081    -- call ADRs
29082    -- Bug 4922099
29083    --
29084    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29085         (NVL(l_actual_upg_option, 'N') = 'O') OR
29086         (NVL(l_enc_upg_option, 'N') = 'O')
29087       )
29088    THEN
29089    NULL;
29090    --
29091    --
29092    
29093   l_ccid := AcctDerRule_4(
29094            p_application_id           => p_application_id
29095          , p_ae_header_id             => l_ae_header_id 
29096 , p_source_4 => p_source_4
29097          , x_transaction_coa_id       => l_adr_transaction_coa_id
29098          , x_accounting_coa_id        => l_adr_accounting_coa_id
29099          , x_value_type_code          => l_adr_value_type_code
29100          , p_side                     => 'NA'
29101    );
29102 
29103    xla_ae_lines_pkg.set_ccid(
29104     p_code_combination_id          => l_ccid
29105   , p_value_type_code              => l_adr_value_type_code
29106   , p_transaction_coa_id           => l_adr_transaction_coa_id
29107   , p_accounting_coa_id            => l_adr_accounting_coa_id
29108   , p_adr_code                     => 'CST_DEFAULT'
29109   , p_adr_type_code                => 'S'
29110   , p_component_type               => l_component_type
29111   , p_component_code               => l_component_code
29112   , p_component_type_code          => l_component_type_code
29113   , p_component_appl_id            => l_component_appl_id
29114   , p_amb_context_code             => l_amb_context_code
29115   , p_side                         => 'NA'
29116   );
29117 
29118 
29119    --
29120    --
29121    END IF;
29122    --
29123    -- Bug 4922099
29124    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29125           (NVL(l_enc_upg_option, 'N') = 'O')
29126         ) AND
29127         (l_bflow_method_code = 'PRIOR_ENTRY')
29128       )
29129    THEN
29130       IF
29131       --
29132       1 = 2
29133       --
29134       THEN
29135       xla_accounting_err_pkg.build_message
29136                                     (p_appli_s_name            => 'XLA'
29137                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29138                                     ,p_token_1                 => 'LINE_NUMBER'
29139                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29140                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29141                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29142                                                                              l_component_type
29143                                                                             ,l_component_code
29144                                                                             ,l_component_type_code
29145                                                                             ,l_component_appl_id
29146                                                                             ,l_amb_context_code
29147                                                                             ,l_entity_code
29148                                                                             ,l_event_class_code
29149                                                                            )
29150                                     ,p_token_3                 => 'OWNER'
29151                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29152                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29153                                                                           ,p_lookup_code    => l_component_type_code
29154                                                                          )
29155                                     ,p_token_4                 => 'PRODUCT_NAME'
29156                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29157                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29158                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29159                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29160                                     ,p_ae_header_id            =>  NULL
29161                                        );
29162 
29163         IF (C_LEVEL_ERROR>= g_log_level) THEN
29164                  trace
29165                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29166                       ,p_level    => C_LEVEL_ERROR
29167                       ,p_module   => l_log_module);
29168         END IF;
29169       END IF;
29170    END IF;
29171    --
29172    --
29173    ------------------------------------------------------------------------------------------------
29174    -- 4219869 Business Flow
29175    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29176    -- Prior Entry.  Currently, the following code is always generated.
29177    ------------------------------------------------------------------------------------------------
29178    XLA_AE_LINES_PKG.ValidateCurrentLine;
29179 
29180    ------------------------------------------------------------------------------------
29181    -- 4219869 Business Flow
29182    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29183    ------------------------------------------------------------------------------------
29184    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29185 
29186    ----------------------------------------------------------------------------------
29187    -- 4219869 Business Flow
29188    -- Update journal entry status -- Need to generate this within IF <condition>
29189    ----------------------------------------------------------------------------------
29190    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29191          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29192          ,p_balance_type_code => l_balance_type_code
29193          );
29194 
29195    -------------------------------------------------------------------------------------------
29196    -- 4262811 - Generate the Accrual Reversal lines
29197    -------------------------------------------------------------------------------------------
29198    BEGIN
29199       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29200                               (g_array_event(p_event_id).array_value_num('header_index'));
29201       IF l_acc_rev_flag IS NULL THEN
29202          l_acc_rev_flag := 'N';
29203       END IF;
29204    EXCEPTION
29205       WHEN OTHERS THEN
29206          l_acc_rev_flag := 'N';
29207    END;
29208    --
29209    IF (l_acc_rev_flag = 'Y') THEN
29210 
29211        -- 4645092  ------------------------------------------------------------------------------
29212        -- To allow MPA report to determine if it should generate report process
29213        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29214        ------------------------------------------------------------------------------------------
29215 
29216        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29217        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29218    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
29219    -- call ADRs
29220    -- Bug 4922099
29221    --
29222    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29223         (NVL(l_actual_upg_option, 'N') = 'O') OR
29224         (NVL(l_enc_upg_option, 'N') = 'O')
29225       )
29226    THEN
29227    NULL;
29228    --
29229    --
29230    
29231   l_ccid := AcctDerRule_4(
29232            p_application_id           => p_application_id
29233          , p_ae_header_id             => l_ae_header_id 
29234 , p_source_4 => p_source_4
29235          , x_transaction_coa_id       => l_adr_transaction_coa_id
29236          , x_accounting_coa_id        => l_adr_accounting_coa_id
29237          , x_value_type_code          => l_adr_value_type_code
29238          , p_side                     => 'NA'
29239    );
29240 
29241    xla_ae_lines_pkg.set_ccid(
29242     p_code_combination_id          => l_ccid
29243   , p_value_type_code              => l_adr_value_type_code
29244   , p_transaction_coa_id           => l_adr_transaction_coa_id
29245   , p_accounting_coa_id            => l_adr_accounting_coa_id
29246   , p_adr_code                     => 'CST_DEFAULT'
29247   , p_adr_type_code                => 'S'
29248   , p_component_type               => l_component_type
29249   , p_component_code               => l_component_code
29250   , p_component_type_code          => l_component_type_code
29251   , p_component_appl_id            => l_component_appl_id
29252   , p_amb_context_code             => l_amb_context_code
29253   , p_side                         => 'NA'
29254   );
29255 
29256 
29257    --
29258    --
29259    END IF;
29260 
29261        --
29262        -- Update the line information that should be overwritten
29263        --
29264        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29265                                          p_header_num   => 1);
29266        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29267 
29268        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29269 
29270        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29271           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29272        END IF;
29273 
29274       --
29275       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29276       --
29277       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29278           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29279       ELSE
29280           ---------------------------------------------------------------------------------------------------
29281           -- 4262811a Switch Sign
29282           ---------------------------------------------------------------------------------------------------
29283           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29284           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29285                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29286           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29287                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29288           -- 5132302
29289           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29290                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29291 
29292       END IF;
29293 
29294       -- 4955764
29295       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29296       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29297 
29298 
29299       XLA_AE_LINES_PKG.ValidateCurrentLine;
29300       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29301 
29302       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29303                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29304                ,p_balance_type_code => l_balance_type_code);
29305 
29306    END IF;
29307 
29308    -----------------------------------------------------------------------------------------
29309    -- 4262811 Multiperiod Accounting
29310    -----------------------------------------------------------------------------------------
29311      -- No MPA option is assigned.
29312 
29313 
29314 END IF;
29315 END IF;
29316 --
29317 
29318 --
29319 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29320    trace
29321       (p_msg      => 'END of AcctLineType_55'
29322       ,p_level    => C_LEVEL_PROCEDURE
29323       ,p_module   => l_log_module);
29324 END IF;
29325 --
29326 EXCEPTION
29327   WHEN xla_exceptions_pkg.application_exception THEN
29328       RAISE;
29329   WHEN OTHERS THEN
29330        xla_exceptions_pkg.raise_message
29331            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_55');
29332 END AcctLineType_55;
29333 --
29334 
29335 ---------------------------------------
29336 --
29337 -- PRIVATE FUNCTION
29338 --         AcctLineType_56
29339 --
29340 ---------------------------------------
29341 PROCEDURE AcctLineType_56 (
29342   p_application_id        IN NUMBER
29343  ,p_event_id              IN NUMBER
29344  ,p_calculate_acctd_flag  IN VARCHAR2
29345  ,p_calculate_g_l_flag    IN VARCHAR2
29346  ,p_actual_flag           IN OUT VARCHAR2
29347  ,p_balance_type_code     OUT VARCHAR2
29348  ,p_gain_or_loss_ref      OUT VARCHAR2
29349  
29350 --Cost Management Default Account
29351  , p_source_4            IN NUMBER
29352 --Receiving Accounting Line Type
29353  , p_source_5            IN VARCHAR2
29354 --DISTRIBUTION_IDENTIFIER
29355  , p_source_11            IN NUMBER
29356 --Distribution Type
29357  , p_source_12            IN VARCHAR2
29358  , p_source_12_meaning    IN VARCHAR2
29359 --Entered Currency Code
29360  , p_source_15            IN VARCHAR2
29361 --Entered Amount
29362  , p_source_18            IN NUMBER
29363 --Currency Conversion Date
29364  , p_source_19            IN DATE
29365 --Currency Conversion Rate
29366  , p_source_20            IN NUMBER
29367 --Currency Conversion Type
29368  , p_source_21            IN VARCHAR2
29369 --Accounted Amount
29370  , p_source_22            IN NUMBER
29371 )
29372 IS
29373 
29374 l_component_type              VARCHAR2(80);
29375 l_component_code              VARCHAR2(30);
29376 l_component_type_code         VARCHAR2(1);
29377 l_component_appl_id           INTEGER;
29378 l_amb_context_code            VARCHAR2(30);
29379 l_entity_code                 VARCHAR2(30);
29380 l_event_class_code            VARCHAR2(30);
29381 l_ae_header_id                NUMBER;
29382 l_event_type_code             VARCHAR2(30);
29383 l_line_definition_code        VARCHAR2(30);
29384 l_line_definition_owner_code  VARCHAR2(1);
29385 --
29386 -- adr variables
29387 l_segment                     VARCHAR2(30);
29388 l_ccid                        NUMBER;
29389 l_adr_transaction_coa_id      NUMBER;
29390 l_adr_accounting_coa_id       NUMBER;
29391 l_adr_flexfield_segment_code  VARCHAR2(30);
29392 l_adr_flex_value_set_id       NUMBER;
29393 l_adr_value_type_code         VARCHAR2(30);
29394 l_adr_value_combination_id    NUMBER;
29395 l_adr_value_segment_code      VARCHAR2(30);
29396 
29397 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29398 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29399 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29400 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29401 
29402 -- 4262811 Variables ------------------------------------------------------------------------------------------
29403 l_entered_amt_idx             NUMBER;
29404 l_accted_amt_idx              NUMBER;
29405 l_acc_rev_flag                VARCHAR2(1);
29406 l_accrual_line_num            NUMBER;
29407 l_tmp_amt                     NUMBER;
29408 l_acc_rev_natural_side_code   VARCHAR2(1);
29409 
29410 l_num_entries                 NUMBER;
29411 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29412 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29413 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29414 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29415 l_recog_line_1                NUMBER;
29416 l_recog_line_2                NUMBER;
29417 
29418 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29419 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29420 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29421 
29422 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29423 
29424 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29425 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29426 
29427 ---------------------------------------------------------------------------------------------------------------
29428 
29429 
29430 --
29431 -- bulk performance
29432 --
29433 l_balance_type_code           VARCHAR2(1);
29434 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29435 l_log_module                  VARCHAR2(240);
29436 
29437 --
29438 -- Upgrade strategy
29439 --
29440 l_actual_upg_option           VARCHAR2(1);
29441 l_enc_upg_option           VARCHAR2(1);
29442 
29443 --
29444 BEGIN
29445 --
29446 IF g_log_enabled THEN
29447       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_56';
29448 END IF;
29449 --
29450 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29451 
29452       trace
29453          (p_msg      => 'BEGIN of AcctLineType_56'
29454          ,p_level    => C_LEVEL_PROCEDURE
29455          ,p_module   => l_log_module);
29456 
29457 END IF;
29458 --
29459 l_component_type             := 'AMB_JLT';
29460 l_component_code             := 'INTERCOMPANY_COGS';
29461 l_component_type_code        := 'S';
29462 l_component_appl_id          :=  707;
29463 l_amb_context_code           := 'DEFAULT';
29464 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
29465 l_event_class_code           := 'RETR_PRICE_ADJ_RCV';
29466 l_event_type_code            := 'RETR_PRICE_ADJ_RCV_ALL';
29467 l_line_definition_owner_code := 'S';
29468 l_line_definition_code       := 'RETR_PRICE_ADJ_RCV';
29469 --
29470 l_balance_type_code          := 'A';
29471 l_segment                     := NULL;
29472 l_ccid                        := NULL;
29473 l_adr_transaction_coa_id      := NULL;
29474 l_adr_accounting_coa_id       := NULL;
29475 l_adr_flexfield_segment_code  := NULL;
29476 l_adr_flex_value_set_id       := NULL;
29477 l_adr_value_type_code         := NULL;
29478 l_adr_value_combination_id    := NULL;
29479 l_adr_value_segment_code      := NULL;
29480 
29481 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
29482 l_bflow_class_code           := '';    -- 4219869 Business Flow
29483 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
29484 l_budgetary_control_flag     := 'N';
29485 
29486 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
29487 l_bflow_applied_to_amt       := NULL; -- 5132302
29488 l_entered_amt_idx            := NULL;          -- 4262811
29489 l_accted_amt_idx             := NULL;          -- 4262811
29490 l_acc_rev_flag               := NULL;          -- 4262811
29491 l_accrual_line_num           := NULL;          -- 4262811
29492 l_tmp_amt                    := NULL;          -- 4262811
29493 --
29494  
29495 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29496     l_balance_type_code <> 'B' THEN
29497 IF NVL(p_source_5,'
29498 ') =  'IC Cost of Sales'
29499  THEN 
29500 
29501    --
29502    XLA_AE_LINES_PKG.SetNewLine;
29503 
29504    p_balance_type_code          := l_balance_type_code;
29505    -- set the flag so later we will know whether the gain loss line needs to be created
29506    
29507    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29508      p_actual_flag :='A';
29509    END IF;
29510 
29511    --
29512    -- bulk performance
29513    --
29514    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29515                                       p_header_num   => 0); -- 4262811
29516    --
29517    -- set accounting line options
29518    --
29519    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29520            p_natural_side_code          => 'D'
29521          , p_gain_or_loss_flag          => 'N'
29522          , p_gl_transfer_mode_code      => 'S'
29523          , p_acct_entry_type_code       => 'A'
29524          , p_switch_side_flag           => 'Y'
29525          , p_merge_duplicate_code       => 'N'
29526          );
29527    --
29528    l_acc_rev_natural_side_code := 'C';  -- 4262811
29529    -- 
29530    --
29531    -- set accounting line type info
29532    --
29533    xla_ae_lines_pkg.SetAcctLineType
29534       (p_component_type             => l_component_type
29535       ,p_event_type_code            => l_event_type_code
29536       ,p_line_definition_owner_code => l_line_definition_owner_code
29537       ,p_line_definition_code       => l_line_definition_code
29538       ,p_accounting_line_code       => l_component_code
29539       ,p_accounting_line_type_code  => l_component_type_code
29540       ,p_accounting_line_appl_id    => l_component_appl_id
29541       ,p_amb_context_code           => l_amb_context_code
29542       ,p_entity_code                => l_entity_code
29543       ,p_event_class_code           => l_event_class_code);
29544    --
29545    -- set accounting class
29546    --
29547    xla_ae_lines_pkg.SetAcctClass(
29548            p_accounting_class_code  => 'INTERCOMPANY_COGS'
29549          , p_ae_header_id           => l_ae_header_id
29550          );
29551 
29552    --
29553    -- set rounding class
29554    --
29555    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29556                       'INTERCOMPANY_COGS';
29557 
29558    --
29559    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29560    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29561    --
29562    -- bulk performance
29563    --
29564    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29565 
29566    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29567       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29568 
29569    -- 4955764
29570    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29571       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29572 
29573    -- 4458381 Public Sector Enh
29574    
29575    --
29576    -- set accounting attributes for the line type
29577    --
29578    l_entered_amt_idx := 3;
29579    l_accted_amt_idx  := 8;
29580    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29581    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
29582    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
29583    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
29584    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
29585    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
29586    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
29587    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
29588    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
29589    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
29590    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
29591    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
29592    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
29593    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
29594    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
29595    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
29596    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
29597 
29598    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29599    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29600 
29601    ---------------------------------------------------------------------------------------------------------------
29602    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29603    ---------------------------------------------------------------------------------------------------------------
29604    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29605 
29606    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29607    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29608 
29609    IF xla_accounting_cache_pkg.GetValueChar
29610          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29611          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29612    AND l_bflow_method_code = 'PRIOR_ENTRY'
29613 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29614    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29615          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29616        )
29617    THEN
29618          xla_ae_lines_pkg.BflowUpgEntry
29619            (p_business_method_code    => l_bflow_method_code
29620            ,p_business_class_code     => l_bflow_class_code
29621            ,p_balance_type            => l_balance_type_code);
29622    ELSE
29623       NULL;
29624 -- No business flow processing for business flow method of NONE.
29625    END IF;
29626 
29627    --
29628    -- call analytical criteria
29629    --
29630    
29631    --
29632    -- call description
29633    --
29634    -- No description or it is inherited.
29635    --
29636    -- call ADRs
29637    -- Bug 4922099
29638    --
29639    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29640         (NVL(l_actual_upg_option, 'N') = 'O') OR
29641         (NVL(l_enc_upg_option, 'N') = 'O')
29642       )
29643    THEN
29644    NULL;
29645    --
29646    --
29647    
29648   l_ccid := AcctDerRule_4(
29649            p_application_id           => p_application_id
29650          , p_ae_header_id             => l_ae_header_id 
29651 , p_source_4 => p_source_4
29652          , x_transaction_coa_id       => l_adr_transaction_coa_id
29653          , x_accounting_coa_id        => l_adr_accounting_coa_id
29654          , x_value_type_code          => l_adr_value_type_code
29655          , p_side                     => 'NA'
29656    );
29657 
29658    xla_ae_lines_pkg.set_ccid(
29659     p_code_combination_id          => l_ccid
29660   , p_value_type_code              => l_adr_value_type_code
29661   , p_transaction_coa_id           => l_adr_transaction_coa_id
29662   , p_accounting_coa_id            => l_adr_accounting_coa_id
29663   , p_adr_code                     => 'CST_DEFAULT'
29664   , p_adr_type_code                => 'S'
29665   , p_component_type               => l_component_type
29666   , p_component_code               => l_component_code
29667   , p_component_type_code          => l_component_type_code
29668   , p_component_appl_id            => l_component_appl_id
29669   , p_amb_context_code             => l_amb_context_code
29670   , p_side                         => 'NA'
29671   );
29672 
29673 
29674    --
29675    --
29676    END IF;
29677    --
29678    -- Bug 4922099
29679    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29680           (NVL(l_enc_upg_option, 'N') = 'O')
29681         ) AND
29682         (l_bflow_method_code = 'PRIOR_ENTRY')
29683       )
29684    THEN
29685       IF
29686       --
29687       1 = 2
29688       --
29689       THEN
29690       xla_accounting_err_pkg.build_message
29691                                     (p_appli_s_name            => 'XLA'
29692                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29693                                     ,p_token_1                 => 'LINE_NUMBER'
29694                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29695                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29696                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29697                                                                              l_component_type
29698                                                                             ,l_component_code
29699                                                                             ,l_component_type_code
29700                                                                             ,l_component_appl_id
29701                                                                             ,l_amb_context_code
29702                                                                             ,l_entity_code
29703                                                                             ,l_event_class_code
29704                                                                            )
29705                                     ,p_token_3                 => 'OWNER'
29706                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29707                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29708                                                                           ,p_lookup_code    => l_component_type_code
29709                                                                          )
29710                                     ,p_token_4                 => 'PRODUCT_NAME'
29711                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29712                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29713                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29714                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29715                                     ,p_ae_header_id            =>  NULL
29716                                        );
29717 
29718         IF (C_LEVEL_ERROR>= g_log_level) THEN
29719                  trace
29720                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29721                       ,p_level    => C_LEVEL_ERROR
29722                       ,p_module   => l_log_module);
29723         END IF;
29724       END IF;
29725    END IF;
29726    --
29727    --
29728    ------------------------------------------------------------------------------------------------
29729    -- 4219869 Business Flow
29730    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29731    -- Prior Entry.  Currently, the following code is always generated.
29732    ------------------------------------------------------------------------------------------------
29733    XLA_AE_LINES_PKG.ValidateCurrentLine;
29734 
29735    ------------------------------------------------------------------------------------
29736    -- 4219869 Business Flow
29737    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29738    ------------------------------------------------------------------------------------
29739    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29740 
29741    ----------------------------------------------------------------------------------
29742    -- 4219869 Business Flow
29743    -- Update journal entry status -- Need to generate this within IF <condition>
29744    ----------------------------------------------------------------------------------
29745    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29746          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29747          ,p_balance_type_code => l_balance_type_code
29748          );
29749 
29750    -------------------------------------------------------------------------------------------
29751    -- 4262811 - Generate the Accrual Reversal lines
29752    -------------------------------------------------------------------------------------------
29753    BEGIN
29754       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29755                               (g_array_event(p_event_id).array_value_num('header_index'));
29756       IF l_acc_rev_flag IS NULL THEN
29757          l_acc_rev_flag := 'N';
29758       END IF;
29759    EXCEPTION
29760       WHEN OTHERS THEN
29761          l_acc_rev_flag := 'N';
29762    END;
29763    --
29764    IF (l_acc_rev_flag = 'Y') THEN
29765 
29766        -- 4645092  ------------------------------------------------------------------------------
29767        -- To allow MPA report to determine if it should generate report process
29768        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29769        ------------------------------------------------------------------------------------------
29770 
29771        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29772        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29773    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
29774    -- call ADRs
29775    -- Bug 4922099
29776    --
29777    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29778         (NVL(l_actual_upg_option, 'N') = 'O') OR
29779         (NVL(l_enc_upg_option, 'N') = 'O')
29780       )
29781    THEN
29782    NULL;
29783    --
29784    --
29785    
29786   l_ccid := AcctDerRule_4(
29787            p_application_id           => p_application_id
29788          , p_ae_header_id             => l_ae_header_id 
29789 , p_source_4 => p_source_4
29790          , x_transaction_coa_id       => l_adr_transaction_coa_id
29791          , x_accounting_coa_id        => l_adr_accounting_coa_id
29792          , x_value_type_code          => l_adr_value_type_code
29793          , p_side                     => 'NA'
29794    );
29795 
29796    xla_ae_lines_pkg.set_ccid(
29797     p_code_combination_id          => l_ccid
29798   , p_value_type_code              => l_adr_value_type_code
29799   , p_transaction_coa_id           => l_adr_transaction_coa_id
29800   , p_accounting_coa_id            => l_adr_accounting_coa_id
29801   , p_adr_code                     => 'CST_DEFAULT'
29802   , p_adr_type_code                => 'S'
29803   , p_component_type               => l_component_type
29804   , p_component_code               => l_component_code
29805   , p_component_type_code          => l_component_type_code
29806   , p_component_appl_id            => l_component_appl_id
29807   , p_amb_context_code             => l_amb_context_code
29808   , p_side                         => 'NA'
29809   );
29810 
29811 
29812    --
29813    --
29814    END IF;
29815 
29816        --
29817        -- Update the line information that should be overwritten
29818        --
29819        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29820                                          p_header_num   => 1);
29821        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29822 
29823        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29824 
29825        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29826           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29827        END IF;
29828 
29829       --
29830       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29831       --
29832       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29833           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29834       ELSE
29835           ---------------------------------------------------------------------------------------------------
29836           -- 4262811a Switch Sign
29837           ---------------------------------------------------------------------------------------------------
29838           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29839           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29840                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29841           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29842                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29843           -- 5132302
29844           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29845                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29846 
29847       END IF;
29848 
29849       -- 4955764
29850       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29851       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29852 
29853 
29854       XLA_AE_LINES_PKG.ValidateCurrentLine;
29855       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29856 
29857       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29858                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29859                ,p_balance_type_code => l_balance_type_code);
29860 
29861    END IF;
29862 
29863    -----------------------------------------------------------------------------------------
29864    -- 4262811 Multiperiod Accounting
29865    -----------------------------------------------------------------------------------------
29866      -- No MPA option is assigned.
29867 
29868 
29869 END IF;
29870 END IF;
29871 --
29872 
29873 --
29874 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29875    trace
29876       (p_msg      => 'END of AcctLineType_56'
29877       ,p_level    => C_LEVEL_PROCEDURE
29878       ,p_module   => l_log_module);
29879 END IF;
29880 --
29881 EXCEPTION
29882   WHEN xla_exceptions_pkg.application_exception THEN
29883       RAISE;
29884   WHEN OTHERS THEN
29885        xla_exceptions_pkg.raise_message
29886            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_56');
29887 END AcctLineType_56;
29888 --
29889 
29890 ---------------------------------------
29891 --
29892 -- PRIVATE FUNCTION
29893 --         AcctLineType_57
29894 --
29895 ---------------------------------------
29896 PROCEDURE AcctLineType_57 (
29897   p_application_id        IN NUMBER
29898  ,p_event_id              IN NUMBER
29899  ,p_calculate_acctd_flag  IN VARCHAR2
29900  ,p_calculate_g_l_flag    IN VARCHAR2
29901  ,p_actual_flag           IN OUT VARCHAR2
29902  ,p_balance_type_code     OUT VARCHAR2
29903  ,p_gain_or_loss_ref      OUT VARCHAR2
29904  
29905 --Cost Management Default Account
29906  , p_source_4            IN NUMBER
29907 --Receiving Accounting Line Type
29908  , p_source_5            IN VARCHAR2
29909 --DISTRIBUTION_IDENTIFIER
29910  , p_source_11            IN NUMBER
29911 --Distribution Type
29912  , p_source_12            IN VARCHAR2
29913  , p_source_12_meaning    IN VARCHAR2
29914 --Entered Currency Code
29915  , p_source_15            IN VARCHAR2
29916 --Entered Amount
29917  , p_source_18            IN NUMBER
29918 --Currency Conversion Date
29919  , p_source_19            IN DATE
29920 --Currency Conversion Rate
29921  , p_source_20            IN NUMBER
29922 --Currency Conversion Type
29923  , p_source_21            IN VARCHAR2
29924 --Accounted Amount
29925  , p_source_22            IN NUMBER
29926 )
29927 IS
29928 
29929 l_component_type              VARCHAR2(80);
29930 l_component_code              VARCHAR2(30);
29931 l_component_type_code         VARCHAR2(1);
29932 l_component_appl_id           INTEGER;
29933 l_amb_context_code            VARCHAR2(30);
29934 l_entity_code                 VARCHAR2(30);
29935 l_event_class_code            VARCHAR2(30);
29936 l_ae_header_id                NUMBER;
29937 l_event_type_code             VARCHAR2(30);
29938 l_line_definition_code        VARCHAR2(30);
29939 l_line_definition_owner_code  VARCHAR2(1);
29940 --
29941 -- adr variables
29942 l_segment                     VARCHAR2(30);
29943 l_ccid                        NUMBER;
29944 l_adr_transaction_coa_id      NUMBER;
29945 l_adr_accounting_coa_id       NUMBER;
29946 l_adr_flexfield_segment_code  VARCHAR2(30);
29947 l_adr_flex_value_set_id       NUMBER;
29948 l_adr_value_type_code         VARCHAR2(30);
29949 l_adr_value_combination_id    NUMBER;
29950 l_adr_value_segment_code      VARCHAR2(30);
29951 
29952 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29953 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29954 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29955 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29956 
29957 -- 4262811 Variables ------------------------------------------------------------------------------------------
29958 l_entered_amt_idx             NUMBER;
29959 l_accted_amt_idx              NUMBER;
29960 l_acc_rev_flag                VARCHAR2(1);
29961 l_accrual_line_num            NUMBER;
29962 l_tmp_amt                     NUMBER;
29963 l_acc_rev_natural_side_code   VARCHAR2(1);
29964 
29965 l_num_entries                 NUMBER;
29966 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29967 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29968 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29969 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29970 l_recog_line_1                NUMBER;
29971 l_recog_line_2                NUMBER;
29972 
29973 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29974 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29975 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29976 
29977 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29978 
29979 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29980 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29981 
29982 ---------------------------------------------------------------------------------------------------------------
29983 
29984 
29985 --
29986 -- bulk performance
29987 --
29988 l_balance_type_code           VARCHAR2(1);
29989 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29990 l_log_module                  VARCHAR2(240);
29991 
29992 --
29993 -- Upgrade strategy
29994 --
29995 l_actual_upg_option           VARCHAR2(1);
29996 l_enc_upg_option           VARCHAR2(1);
29997 
29998 --
29999 BEGIN
30000 --
30001 IF g_log_enabled THEN
30002       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_57';
30003 END IF;
30004 --
30005 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30006 
30007       trace
30008          (p_msg      => 'BEGIN of AcctLineType_57'
30009          ,p_level    => C_LEVEL_PROCEDURE
30010          ,p_module   => l_log_module);
30011 
30012 END IF;
30013 --
30014 l_component_type             := 'AMB_JLT';
30015 l_component_code             := 'INTERCOMPANY_COGS';
30016 l_component_type_code        := 'S';
30017 l_component_appl_id          :=  707;
30018 l_amb_context_code           := 'DEFAULT';
30019 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
30020 l_event_class_code           := 'RCPT_REC_INSP';
30021 l_event_type_code            := 'RCPT_REC_INSP_ALL';
30022 l_line_definition_owner_code := 'S';
30023 l_line_definition_code       := 'RCPT_REC_INSP';
30024 --
30025 l_balance_type_code          := 'A';
30026 l_segment                     := NULL;
30027 l_ccid                        := NULL;
30028 l_adr_transaction_coa_id      := NULL;
30029 l_adr_accounting_coa_id       := NULL;
30030 l_adr_flexfield_segment_code  := NULL;
30031 l_adr_flex_value_set_id       := NULL;
30032 l_adr_value_type_code         := NULL;
30033 l_adr_value_combination_id    := NULL;
30034 l_adr_value_segment_code      := NULL;
30035 
30036 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30037 l_bflow_class_code           := '';    -- 4219869 Business Flow
30038 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30039 l_budgetary_control_flag     := 'N';
30040 
30041 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30042 l_bflow_applied_to_amt       := NULL; -- 5132302
30043 l_entered_amt_idx            := NULL;          -- 4262811
30044 l_accted_amt_idx             := NULL;          -- 4262811
30045 l_acc_rev_flag               := NULL;          -- 4262811
30046 l_accrual_line_num           := NULL;          -- 4262811
30047 l_tmp_amt                    := NULL;          -- 4262811
30048 --
30049  
30050 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30051     l_balance_type_code <> 'B' THEN
30052 IF NVL(p_source_5,'
30053 ') =  'IC Cost of Sales'
30054  THEN 
30055 
30056    --
30057    XLA_AE_LINES_PKG.SetNewLine;
30058 
30059    p_balance_type_code          := l_balance_type_code;
30060    -- set the flag so later we will know whether the gain loss line needs to be created
30061    
30062    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30063      p_actual_flag :='A';
30064    END IF;
30065 
30066    --
30067    -- bulk performance
30068    --
30069    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30070                                       p_header_num   => 0); -- 4262811
30071    --
30072    -- set accounting line options
30073    --
30074    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30075            p_natural_side_code          => 'D'
30076          , p_gain_or_loss_flag          => 'N'
30077          , p_gl_transfer_mode_code      => 'S'
30078          , p_acct_entry_type_code       => 'A'
30079          , p_switch_side_flag           => 'Y'
30080          , p_merge_duplicate_code       => 'N'
30081          );
30082    --
30083    l_acc_rev_natural_side_code := 'C';  -- 4262811
30084    -- 
30085    --
30086    -- set accounting line type info
30087    --
30088    xla_ae_lines_pkg.SetAcctLineType
30089       (p_component_type             => l_component_type
30090       ,p_event_type_code            => l_event_type_code
30091       ,p_line_definition_owner_code => l_line_definition_owner_code
30092       ,p_line_definition_code       => l_line_definition_code
30093       ,p_accounting_line_code       => l_component_code
30094       ,p_accounting_line_type_code  => l_component_type_code
30095       ,p_accounting_line_appl_id    => l_component_appl_id
30096       ,p_amb_context_code           => l_amb_context_code
30097       ,p_entity_code                => l_entity_code
30098       ,p_event_class_code           => l_event_class_code);
30099    --
30100    -- set accounting class
30101    --
30102    xla_ae_lines_pkg.SetAcctClass(
30103            p_accounting_class_code  => 'INTERCOMPANY_COGS'
30104          , p_ae_header_id           => l_ae_header_id
30105          );
30106 
30107    --
30108    -- set rounding class
30109    --
30110    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30111                       'INTERCOMPANY_COGS';
30112 
30113    --
30114    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30115    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30116    --
30117    -- bulk performance
30118    --
30119    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30120 
30121    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30122       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30123 
30124    -- 4955764
30125    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30126       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30127 
30128    -- 4458381 Public Sector Enh
30129    
30130    --
30131    -- set accounting attributes for the line type
30132    --
30133    l_entered_amt_idx := 3;
30134    l_accted_amt_idx  := 8;
30135    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30136    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
30137    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
30138    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
30139    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
30140    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
30141    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
30142    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
30143    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
30144    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
30145    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
30146    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
30147    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
30148    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
30149    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
30150    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
30151    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
30152 
30153    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30154    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30155 
30156    ---------------------------------------------------------------------------------------------------------------
30157    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30158    ---------------------------------------------------------------------------------------------------------------
30159    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30160 
30161    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30162    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30163 
30164    IF xla_accounting_cache_pkg.GetValueChar
30165          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30166          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30167    AND l_bflow_method_code = 'PRIOR_ENTRY'
30168 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30169    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30170          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30171        )
30172    THEN
30173          xla_ae_lines_pkg.BflowUpgEntry
30174            (p_business_method_code    => l_bflow_method_code
30175            ,p_business_class_code     => l_bflow_class_code
30176            ,p_balance_type            => l_balance_type_code);
30177    ELSE
30178       NULL;
30179 -- No business flow processing for business flow method of NONE.
30180    END IF;
30181 
30182    --
30183    -- call analytical criteria
30184    --
30185    
30186    --
30187    -- call description
30188    --
30189    -- No description or it is inherited.
30190    --
30191    -- call ADRs
30192    -- Bug 4922099
30193    --
30194    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30195         (NVL(l_actual_upg_option, 'N') = 'O') OR
30196         (NVL(l_enc_upg_option, 'N') = 'O')
30197       )
30198    THEN
30199    NULL;
30200    --
30201    --
30202    
30203   l_ccid := AcctDerRule_4(
30204            p_application_id           => p_application_id
30205          , p_ae_header_id             => l_ae_header_id 
30206 , p_source_4 => p_source_4
30207          , x_transaction_coa_id       => l_adr_transaction_coa_id
30208          , x_accounting_coa_id        => l_adr_accounting_coa_id
30209          , x_value_type_code          => l_adr_value_type_code
30210          , p_side                     => 'NA'
30211    );
30212 
30213    xla_ae_lines_pkg.set_ccid(
30214     p_code_combination_id          => l_ccid
30215   , p_value_type_code              => l_adr_value_type_code
30216   , p_transaction_coa_id           => l_adr_transaction_coa_id
30217   , p_accounting_coa_id            => l_adr_accounting_coa_id
30218   , p_adr_code                     => 'CST_DEFAULT'
30219   , p_adr_type_code                => 'S'
30220   , p_component_type               => l_component_type
30221   , p_component_code               => l_component_code
30222   , p_component_type_code          => l_component_type_code
30223   , p_component_appl_id            => l_component_appl_id
30224   , p_amb_context_code             => l_amb_context_code
30225   , p_side                         => 'NA'
30226   );
30227 
30228 
30229    --
30230    --
30231    END IF;
30232    --
30233    -- Bug 4922099
30234    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30235           (NVL(l_enc_upg_option, 'N') = 'O')
30236         ) AND
30237         (l_bflow_method_code = 'PRIOR_ENTRY')
30238       )
30239    THEN
30240       IF
30241       --
30242       1 = 2
30243       --
30244       THEN
30245       xla_accounting_err_pkg.build_message
30246                                     (p_appli_s_name            => 'XLA'
30247                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30248                                     ,p_token_1                 => 'LINE_NUMBER'
30249                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30250                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30251                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30252                                                                              l_component_type
30253                                                                             ,l_component_code
30254                                                                             ,l_component_type_code
30255                                                                             ,l_component_appl_id
30256                                                                             ,l_amb_context_code
30257                                                                             ,l_entity_code
30258                                                                             ,l_event_class_code
30259                                                                            )
30260                                     ,p_token_3                 => 'OWNER'
30261                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30262                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30263                                                                           ,p_lookup_code    => l_component_type_code
30264                                                                          )
30265                                     ,p_token_4                 => 'PRODUCT_NAME'
30266                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30267                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30268                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30269                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30270                                     ,p_ae_header_id            =>  NULL
30271                                        );
30272 
30273         IF (C_LEVEL_ERROR>= g_log_level) THEN
30274                  trace
30275                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30276                       ,p_level    => C_LEVEL_ERROR
30277                       ,p_module   => l_log_module);
30278         END IF;
30279       END IF;
30280    END IF;
30281    --
30282    --
30283    ------------------------------------------------------------------------------------------------
30284    -- 4219869 Business Flow
30285    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30286    -- Prior Entry.  Currently, the following code is always generated.
30287    ------------------------------------------------------------------------------------------------
30288    XLA_AE_LINES_PKG.ValidateCurrentLine;
30289 
30290    ------------------------------------------------------------------------------------
30291    -- 4219869 Business Flow
30292    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30293    ------------------------------------------------------------------------------------
30294    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30295 
30296    ----------------------------------------------------------------------------------
30297    -- 4219869 Business Flow
30298    -- Update journal entry status -- Need to generate this within IF <condition>
30299    ----------------------------------------------------------------------------------
30300    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30301          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30302          ,p_balance_type_code => l_balance_type_code
30303          );
30304 
30305    -------------------------------------------------------------------------------------------
30306    -- 4262811 - Generate the Accrual Reversal lines
30307    -------------------------------------------------------------------------------------------
30308    BEGIN
30309       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30310                               (g_array_event(p_event_id).array_value_num('header_index'));
30311       IF l_acc_rev_flag IS NULL THEN
30312          l_acc_rev_flag := 'N';
30313       END IF;
30314    EXCEPTION
30315       WHEN OTHERS THEN
30316          l_acc_rev_flag := 'N';
30317    END;
30318    --
30319    IF (l_acc_rev_flag = 'Y') THEN
30320 
30321        -- 4645092  ------------------------------------------------------------------------------
30322        -- To allow MPA report to determine if it should generate report process
30323        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30324        ------------------------------------------------------------------------------------------
30325 
30326        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30327        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30328    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
30329    -- call ADRs
30330    -- Bug 4922099
30331    --
30332    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30333         (NVL(l_actual_upg_option, 'N') = 'O') OR
30334         (NVL(l_enc_upg_option, 'N') = 'O')
30335       )
30336    THEN
30337    NULL;
30338    --
30339    --
30340    
30341   l_ccid := AcctDerRule_4(
30342            p_application_id           => p_application_id
30343          , p_ae_header_id             => l_ae_header_id 
30344 , p_source_4 => p_source_4
30345          , x_transaction_coa_id       => l_adr_transaction_coa_id
30346          , x_accounting_coa_id        => l_adr_accounting_coa_id
30347          , x_value_type_code          => l_adr_value_type_code
30348          , p_side                     => 'NA'
30349    );
30350 
30351    xla_ae_lines_pkg.set_ccid(
30352     p_code_combination_id          => l_ccid
30353   , p_value_type_code              => l_adr_value_type_code
30354   , p_transaction_coa_id           => l_adr_transaction_coa_id
30355   , p_accounting_coa_id            => l_adr_accounting_coa_id
30356   , p_adr_code                     => 'CST_DEFAULT'
30357   , p_adr_type_code                => 'S'
30358   , p_component_type               => l_component_type
30359   , p_component_code               => l_component_code
30360   , p_component_type_code          => l_component_type_code
30361   , p_component_appl_id            => l_component_appl_id
30362   , p_amb_context_code             => l_amb_context_code
30363   , p_side                         => 'NA'
30364   );
30365 
30366 
30367    --
30368    --
30369    END IF;
30370 
30371        --
30372        -- Update the line information that should be overwritten
30373        --
30374        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30375                                          p_header_num   => 1);
30376        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30377 
30378        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30379 
30380        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30381           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30382        END IF;
30383 
30384       --
30385       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30386       --
30387       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30388           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30389       ELSE
30390           ---------------------------------------------------------------------------------------------------
30391           -- 4262811a Switch Sign
30392           ---------------------------------------------------------------------------------------------------
30393           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30394           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30395                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30396           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30397                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30398           -- 5132302
30399           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30400                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30401 
30402       END IF;
30403 
30404       -- 4955764
30405       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30406       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30407 
30408 
30409       XLA_AE_LINES_PKG.ValidateCurrentLine;
30410       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30411 
30412       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30413                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30414                ,p_balance_type_code => l_balance_type_code);
30415 
30416    END IF;
30417 
30418    -----------------------------------------------------------------------------------------
30419    -- 4262811 Multiperiod Accounting
30420    -----------------------------------------------------------------------------------------
30421      -- No MPA option is assigned.
30422 
30423 
30424 END IF;
30425 END IF;
30426 --
30427 
30428 --
30429 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30430    trace
30431       (p_msg      => 'END of AcctLineType_57'
30432       ,p_level    => C_LEVEL_PROCEDURE
30433       ,p_module   => l_log_module);
30434 END IF;
30435 --
30436 EXCEPTION
30437   WHEN xla_exceptions_pkg.application_exception THEN
30438       RAISE;
30439   WHEN OTHERS THEN
30440        xla_exceptions_pkg.raise_message
30441            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_57');
30442 END AcctLineType_57;
30443 --
30444 
30445 ---------------------------------------
30446 --
30447 -- PRIVATE FUNCTION
30448 --         AcctLineType_58
30449 --
30450 ---------------------------------------
30451 PROCEDURE AcctLineType_58 (
30452   p_application_id        IN NUMBER
30453  ,p_event_id              IN NUMBER
30454  ,p_calculate_acctd_flag  IN VARCHAR2
30455  ,p_calculate_g_l_flag    IN VARCHAR2
30456  ,p_actual_flag           IN OUT VARCHAR2
30457  ,p_balance_type_code     OUT VARCHAR2
30458  ,p_gain_or_loss_ref      OUT VARCHAR2
30459  
30460 --Cost Management Default Account
30461  , p_source_4            IN NUMBER
30462 --DISTRIBUTION_IDENTIFIER
30463  , p_source_11            IN NUMBER
30464 --Distribution Type
30465  , p_source_12            IN VARCHAR2
30466  , p_source_12_meaning    IN VARCHAR2
30467 --Entered Currency Code
30468  , p_source_15            IN VARCHAR2
30469 --Entered Amount
30470  , p_source_18            IN NUMBER
30471 --Currency Conversion Date
30472  , p_source_19            IN DATE
30473 --Currency Conversion Rate
30474  , p_source_20            IN NUMBER
30475 --Currency Conversion Type
30476  , p_source_21            IN VARCHAR2
30477 --Accounted Amount
30478  , p_source_22            IN NUMBER
30479 --Accounting Line Type
30480  , p_source_24            IN NUMBER
30481 )
30482 IS
30483 
30484 l_component_type              VARCHAR2(80);
30485 l_component_code              VARCHAR2(30);
30486 l_component_type_code         VARCHAR2(1);
30487 l_component_appl_id           INTEGER;
30488 l_amb_context_code            VARCHAR2(30);
30489 l_entity_code                 VARCHAR2(30);
30490 l_event_class_code            VARCHAR2(30);
30491 l_ae_header_id                NUMBER;
30492 l_event_type_code             VARCHAR2(30);
30493 l_line_definition_code        VARCHAR2(30);
30494 l_line_definition_owner_code  VARCHAR2(1);
30495 --
30496 -- adr variables
30497 l_segment                     VARCHAR2(30);
30498 l_ccid                        NUMBER;
30499 l_adr_transaction_coa_id      NUMBER;
30500 l_adr_accounting_coa_id       NUMBER;
30501 l_adr_flexfield_segment_code  VARCHAR2(30);
30502 l_adr_flex_value_set_id       NUMBER;
30503 l_adr_value_type_code         VARCHAR2(30);
30504 l_adr_value_combination_id    NUMBER;
30505 l_adr_value_segment_code      VARCHAR2(30);
30506 
30507 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
30508 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
30509 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
30510 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
30511 
30512 -- 4262811 Variables ------------------------------------------------------------------------------------------
30513 l_entered_amt_idx             NUMBER;
30514 l_accted_amt_idx              NUMBER;
30515 l_acc_rev_flag                VARCHAR2(1);
30516 l_accrual_line_num            NUMBER;
30517 l_tmp_amt                     NUMBER;
30518 l_acc_rev_natural_side_code   VARCHAR2(1);
30519 
30520 l_num_entries                 NUMBER;
30521 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
30522 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
30523 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
30524 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
30525 l_recog_line_1                NUMBER;
30526 l_recog_line_2                NUMBER;
30527 
30528 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
30529 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
30530 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
30531 
30532 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30533 
30534 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30535 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30536 
30537 ---------------------------------------------------------------------------------------------------------------
30538 
30539 
30540 --
30541 -- bulk performance
30542 --
30543 l_balance_type_code           VARCHAR2(1);
30544 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30545 l_log_module                  VARCHAR2(240);
30546 
30547 --
30548 -- Upgrade strategy
30549 --
30550 l_actual_upg_option           VARCHAR2(1);
30551 l_enc_upg_option           VARCHAR2(1);
30552 
30553 --
30554 BEGIN
30555 --
30556 IF g_log_enabled THEN
30557       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_58';
30558 END IF;
30559 --
30560 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30561 
30562       trace
30563          (p_msg      => 'BEGIN of AcctLineType_58'
30564          ,p_level    => C_LEVEL_PROCEDURE
30565          ,p_module   => l_log_module);
30566 
30567 END IF;
30568 --
30569 l_component_type             := 'AMB_JLT';
30570 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
30571 l_component_type_code        := 'S';
30572 l_component_appl_id          :=  707;
30573 l_amb_context_code           := 'DEFAULT';
30574 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
30575 l_event_class_code           := 'USER_DEFINE';
30576 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
30577 l_line_definition_owner_code := 'S';
30578 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
30579 --
30580 l_balance_type_code          := 'A';
30581 l_segment                     := NULL;
30582 l_ccid                        := NULL;
30583 l_adr_transaction_coa_id      := NULL;
30584 l_adr_accounting_coa_id       := NULL;
30585 l_adr_flexfield_segment_code  := NULL;
30586 l_adr_flex_value_set_id       := NULL;
30587 l_adr_value_type_code         := NULL;
30588 l_adr_value_combination_id    := NULL;
30589 l_adr_value_segment_code      := NULL;
30590 
30591 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30592 l_bflow_class_code           := '';    -- 4219869 Business Flow
30593 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30594 l_budgetary_control_flag     := 'N';
30595 
30596 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30597 l_bflow_applied_to_amt       := NULL; -- 5132302
30598 l_entered_amt_idx            := NULL;          -- 4262811
30599 l_accted_amt_idx             := NULL;          -- 4262811
30600 l_acc_rev_flag               := NULL;          -- 4262811
30601 l_accrual_line_num           := NULL;          -- 4262811
30602 l_tmp_amt                    := NULL;          -- 4262811
30603 --
30604  
30605 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30606     l_balance_type_code <> 'B' THEN
30607 IF NVL(p_source_24,9E125) =  12
30608  THEN 
30609 
30610    --
30611    XLA_AE_LINES_PKG.SetNewLine;
30612 
30613    p_balance_type_code          := l_balance_type_code;
30614    -- set the flag so later we will know whether the gain loss line needs to be created
30615    
30616    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30617      p_actual_flag :='A';
30618    END IF;
30619 
30620    --
30621    -- bulk performance
30622    --
30623    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30624                                       p_header_num   => 0); -- 4262811
30625    --
30626    -- set accounting line options
30627    --
30628    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30629            p_natural_side_code          => 'D'
30630          , p_gain_or_loss_flag          => 'N'
30631          , p_gl_transfer_mode_code      => 'S'
30632          , p_acct_entry_type_code       => 'A'
30633          , p_switch_side_flag           => 'Y'
30634          , p_merge_duplicate_code       => 'N'
30635          );
30636    --
30637    l_acc_rev_natural_side_code := 'C';  -- 4262811
30638    -- 
30639    --
30640    -- set accounting line type info
30641    --
30642    xla_ae_lines_pkg.SetAcctLineType
30643       (p_component_type             => l_component_type
30644       ,p_event_type_code            => l_event_type_code
30645       ,p_line_definition_owner_code => l_line_definition_owner_code
30646       ,p_line_definition_code       => l_line_definition_code
30647       ,p_accounting_line_code       => l_component_code
30648       ,p_accounting_line_type_code  => l_component_type_code
30649       ,p_accounting_line_appl_id    => l_component_appl_id
30650       ,p_amb_context_code           => l_amb_context_code
30651       ,p_entity_code                => l_entity_code
30652       ,p_event_class_code           => l_event_class_code);
30653    --
30654    -- set accounting class
30655    --
30656    xla_ae_lines_pkg.SetAcctClass(
30657            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
30658          , p_ae_header_id           => l_ae_header_id
30659          );
30660 
30661    --
30662    -- set rounding class
30663    --
30664    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30665                       'INTERORG_FREIGHT_CHARGE';
30666 
30667    --
30668    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30669    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30670    --
30671    -- bulk performance
30672    --
30673    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30674 
30675    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30676       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30677 
30678    -- 4955764
30679    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30680       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30681 
30682    -- 4458381 Public Sector Enh
30683    
30684    --
30685    -- set accounting attributes for the line type
30686    --
30687    l_entered_amt_idx := 3;
30688    l_accted_amt_idx  := 8;
30689    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30690    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
30691    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
30692    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
30693    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
30694    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
30695    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
30696    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
30697    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
30698    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
30699    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
30700    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
30701    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
30702    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
30703    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
30704    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
30705    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
30706 
30707    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30708    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30709 
30710    ---------------------------------------------------------------------------------------------------------------
30711    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30712    ---------------------------------------------------------------------------------------------------------------
30713    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30714 
30715    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30716    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30717 
30718    IF xla_accounting_cache_pkg.GetValueChar
30719          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30720          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30721    AND l_bflow_method_code = 'PRIOR_ENTRY'
30722 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30723    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30724          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30725        )
30726    THEN
30727          xla_ae_lines_pkg.BflowUpgEntry
30728            (p_business_method_code    => l_bflow_method_code
30729            ,p_business_class_code     => l_bflow_class_code
30730            ,p_balance_type            => l_balance_type_code);
30731    ELSE
30732       NULL;
30733 -- No business flow processing for business flow method of NONE.
30734    END IF;
30735 
30736    --
30737    -- call analytical criteria
30738    --
30739    
30740    --
30741    -- call description
30742    --
30743    -- No description or it is inherited.
30744    --
30745    -- call ADRs
30746    -- Bug 4922099
30747    --
30748    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30749         (NVL(l_actual_upg_option, 'N') = 'O') OR
30750         (NVL(l_enc_upg_option, 'N') = 'O')
30751       )
30752    THEN
30753    NULL;
30754    --
30755    --
30756    
30757   l_ccid := AcctDerRule_4(
30758            p_application_id           => p_application_id
30759          , p_ae_header_id             => l_ae_header_id 
30760 , p_source_4 => p_source_4
30761          , x_transaction_coa_id       => l_adr_transaction_coa_id
30762          , x_accounting_coa_id        => l_adr_accounting_coa_id
30763          , x_value_type_code          => l_adr_value_type_code
30764          , p_side                     => 'NA'
30765    );
30766 
30767    xla_ae_lines_pkg.set_ccid(
30768     p_code_combination_id          => l_ccid
30769   , p_value_type_code              => l_adr_value_type_code
30770   , p_transaction_coa_id           => l_adr_transaction_coa_id
30771   , p_accounting_coa_id            => l_adr_accounting_coa_id
30772   , p_adr_code                     => 'CST_DEFAULT'
30773   , p_adr_type_code                => 'S'
30774   , p_component_type               => l_component_type
30775   , p_component_code               => l_component_code
30776   , p_component_type_code          => l_component_type_code
30777   , p_component_appl_id            => l_component_appl_id
30778   , p_amb_context_code             => l_amb_context_code
30779   , p_side                         => 'NA'
30780   );
30781 
30782 
30783    --
30784    --
30785    END IF;
30786    --
30787    -- Bug 4922099
30788    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30789           (NVL(l_enc_upg_option, 'N') = 'O')
30790         ) AND
30791         (l_bflow_method_code = 'PRIOR_ENTRY')
30792       )
30793    THEN
30794       IF
30795       --
30796       1 = 2
30797       --
30798       THEN
30799       xla_accounting_err_pkg.build_message
30800                                     (p_appli_s_name            => 'XLA'
30801                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30802                                     ,p_token_1                 => 'LINE_NUMBER'
30803                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30804                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30805                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30806                                                                              l_component_type
30807                                                                             ,l_component_code
30808                                                                             ,l_component_type_code
30809                                                                             ,l_component_appl_id
30810                                                                             ,l_amb_context_code
30811                                                                             ,l_entity_code
30812                                                                             ,l_event_class_code
30813                                                                            )
30814                                     ,p_token_3                 => 'OWNER'
30815                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30816                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30817                                                                           ,p_lookup_code    => l_component_type_code
30818                                                                          )
30819                                     ,p_token_4                 => 'PRODUCT_NAME'
30820                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30821                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30822                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30823                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30824                                     ,p_ae_header_id            =>  NULL
30825                                        );
30826 
30827         IF (C_LEVEL_ERROR>= g_log_level) THEN
30828                  trace
30829                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30830                       ,p_level    => C_LEVEL_ERROR
30831                       ,p_module   => l_log_module);
30832         END IF;
30833       END IF;
30834    END IF;
30835    --
30836    --
30837    ------------------------------------------------------------------------------------------------
30838    -- 4219869 Business Flow
30839    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30840    -- Prior Entry.  Currently, the following code is always generated.
30841    ------------------------------------------------------------------------------------------------
30842    XLA_AE_LINES_PKG.ValidateCurrentLine;
30843 
30844    ------------------------------------------------------------------------------------
30845    -- 4219869 Business Flow
30846    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30847    ------------------------------------------------------------------------------------
30848    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30849 
30850    ----------------------------------------------------------------------------------
30851    -- 4219869 Business Flow
30852    -- Update journal entry status -- Need to generate this within IF <condition>
30853    ----------------------------------------------------------------------------------
30854    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30855          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30856          ,p_balance_type_code => l_balance_type_code
30857          );
30858 
30859    -------------------------------------------------------------------------------------------
30860    -- 4262811 - Generate the Accrual Reversal lines
30861    -------------------------------------------------------------------------------------------
30862    BEGIN
30863       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30864                               (g_array_event(p_event_id).array_value_num('header_index'));
30865       IF l_acc_rev_flag IS NULL THEN
30866          l_acc_rev_flag := 'N';
30867       END IF;
30868    EXCEPTION
30869       WHEN OTHERS THEN
30870          l_acc_rev_flag := 'N';
30871    END;
30872    --
30873    IF (l_acc_rev_flag = 'Y') THEN
30874 
30875        -- 4645092  ------------------------------------------------------------------------------
30876        -- To allow MPA report to determine if it should generate report process
30877        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30878        ------------------------------------------------------------------------------------------
30879 
30880        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30881        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30882    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
30883    -- call ADRs
30884    -- Bug 4922099
30885    --
30886    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30887         (NVL(l_actual_upg_option, 'N') = 'O') OR
30888         (NVL(l_enc_upg_option, 'N') = 'O')
30889       )
30890    THEN
30891    NULL;
30892    --
30893    --
30894    
30895   l_ccid := AcctDerRule_4(
30896            p_application_id           => p_application_id
30897          , p_ae_header_id             => l_ae_header_id 
30898 , p_source_4 => p_source_4
30899          , x_transaction_coa_id       => l_adr_transaction_coa_id
30900          , x_accounting_coa_id        => l_adr_accounting_coa_id
30901          , x_value_type_code          => l_adr_value_type_code
30902          , p_side                     => 'NA'
30903    );
30904 
30905    xla_ae_lines_pkg.set_ccid(
30906     p_code_combination_id          => l_ccid
30907   , p_value_type_code              => l_adr_value_type_code
30908   , p_transaction_coa_id           => l_adr_transaction_coa_id
30909   , p_accounting_coa_id            => l_adr_accounting_coa_id
30910   , p_adr_code                     => 'CST_DEFAULT'
30911   , p_adr_type_code                => 'S'
30912   , p_component_type               => l_component_type
30913   , p_component_code               => l_component_code
30914   , p_component_type_code          => l_component_type_code
30915   , p_component_appl_id            => l_component_appl_id
30916   , p_amb_context_code             => l_amb_context_code
30917   , p_side                         => 'NA'
30918   );
30919 
30920 
30921    --
30922    --
30923    END IF;
30924 
30925        --
30926        -- Update the line information that should be overwritten
30927        --
30928        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30929                                          p_header_num   => 1);
30930        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30931 
30932        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30933 
30934        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30935           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30936        END IF;
30937 
30938       --
30939       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30940       --
30941       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30942           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30943       ELSE
30944           ---------------------------------------------------------------------------------------------------
30945           -- 4262811a Switch Sign
30946           ---------------------------------------------------------------------------------------------------
30947           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30948           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30949                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30950           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30951                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30952           -- 5132302
30953           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30954                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30955 
30956       END IF;
30957 
30958       -- 4955764
30959       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30960       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30961 
30962 
30963       XLA_AE_LINES_PKG.ValidateCurrentLine;
30964       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30965 
30966       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30967                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30968                ,p_balance_type_code => l_balance_type_code);
30969 
30970    END IF;
30971 
30972    -----------------------------------------------------------------------------------------
30973    -- 4262811 Multiperiod Accounting
30974    -----------------------------------------------------------------------------------------
30975      -- No MPA option is assigned.
30976 
30977 
30978 END IF;
30979 END IF;
30980 --
30981 
30982 --
30983 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30984    trace
30985       (p_msg      => 'END of AcctLineType_58'
30986       ,p_level    => C_LEVEL_PROCEDURE
30987       ,p_module   => l_log_module);
30988 END IF;
30989 --
30990 EXCEPTION
30991   WHEN xla_exceptions_pkg.application_exception THEN
30992       RAISE;
30993   WHEN OTHERS THEN
30994        xla_exceptions_pkg.raise_message
30995            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_58');
30996 END AcctLineType_58;
30997 --
30998 
30999 ---------------------------------------
31000 --
31001 -- PRIVATE FUNCTION
31002 --         AcctLineType_59
31003 --
31004 ---------------------------------------
31005 PROCEDURE AcctLineType_59 (
31006   p_application_id        IN NUMBER
31007  ,p_event_id              IN NUMBER
31008  ,p_calculate_acctd_flag  IN VARCHAR2
31009  ,p_calculate_g_l_flag    IN VARCHAR2
31010  ,p_actual_flag           IN OUT VARCHAR2
31011  ,p_balance_type_code     OUT VARCHAR2
31012  ,p_gain_or_loss_ref      OUT VARCHAR2
31013  
31014 --Cost Management Default Account
31015  , p_source_4            IN NUMBER
31016 --DISTRIBUTION_IDENTIFIER
31017  , p_source_11            IN NUMBER
31018 --Distribution Type
31019  , p_source_12            IN VARCHAR2
31020  , p_source_12_meaning    IN VARCHAR2
31021 --Entered Currency Code
31022  , p_source_15            IN VARCHAR2
31023 --Entered Amount
31024  , p_source_18            IN NUMBER
31025 --Currency Conversion Date
31026  , p_source_19            IN DATE
31027 --Currency Conversion Rate
31028  , p_source_20            IN NUMBER
31029 --Currency Conversion Type
31030  , p_source_21            IN VARCHAR2
31031 --Accounted Amount
31032  , p_source_22            IN NUMBER
31033 --Accounting Line Type
31034  , p_source_24            IN NUMBER
31035 )
31036 IS
31037 
31038 l_component_type              VARCHAR2(80);
31039 l_component_code              VARCHAR2(30);
31040 l_component_type_code         VARCHAR2(1);
31041 l_component_appl_id           INTEGER;
31042 l_amb_context_code            VARCHAR2(30);
31043 l_entity_code                 VARCHAR2(30);
31044 l_event_class_code            VARCHAR2(30);
31045 l_ae_header_id                NUMBER;
31046 l_event_type_code             VARCHAR2(30);
31047 l_line_definition_code        VARCHAR2(30);
31048 l_line_definition_owner_code  VARCHAR2(1);
31049 --
31050 -- adr variables
31051 l_segment                     VARCHAR2(30);
31052 l_ccid                        NUMBER;
31053 l_adr_transaction_coa_id      NUMBER;
31054 l_adr_accounting_coa_id       NUMBER;
31055 l_adr_flexfield_segment_code  VARCHAR2(30);
31056 l_adr_flex_value_set_id       NUMBER;
31057 l_adr_value_type_code         VARCHAR2(30);
31058 l_adr_value_combination_id    NUMBER;
31059 l_adr_value_segment_code      VARCHAR2(30);
31060 
31061 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31062 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31063 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31064 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31065 
31066 -- 4262811 Variables ------------------------------------------------------------------------------------------
31067 l_entered_amt_idx             NUMBER;
31068 l_accted_amt_idx              NUMBER;
31069 l_acc_rev_flag                VARCHAR2(1);
31070 l_accrual_line_num            NUMBER;
31071 l_tmp_amt                     NUMBER;
31072 l_acc_rev_natural_side_code   VARCHAR2(1);
31073 
31074 l_num_entries                 NUMBER;
31075 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31076 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31077 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31078 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31079 l_recog_line_1                NUMBER;
31080 l_recog_line_2                NUMBER;
31081 
31082 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31083 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31084 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31085 
31086 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31087 
31088 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31089 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31090 
31091 ---------------------------------------------------------------------------------------------------------------
31092 
31093 
31094 --
31095 -- bulk performance
31096 --
31097 l_balance_type_code           VARCHAR2(1);
31098 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31099 l_log_module                  VARCHAR2(240);
31100 
31101 --
31102 -- Upgrade strategy
31103 --
31104 l_actual_upg_option           VARCHAR2(1);
31105 l_enc_upg_option           VARCHAR2(1);
31106 
31107 --
31108 BEGIN
31109 --
31110 IF g_log_enabled THEN
31111       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_59';
31112 END IF;
31113 --
31114 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31115 
31116       trace
31117          (p_msg      => 'BEGIN of AcctLineType_59'
31118          ,p_level    => C_LEVEL_PROCEDURE
31119          ,p_module   => l_log_module);
31120 
31121 END IF;
31122 --
31123 l_component_type             := 'AMB_JLT';
31124 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
31125 l_component_type_code        := 'S';
31126 l_component_appl_id          :=  707;
31127 l_amb_context_code           := 'DEFAULT';
31128 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
31129 l_event_class_code           := 'USER_DEFINE';
31130 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
31131 l_line_definition_owner_code := 'S';
31132 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
31133 --
31134 l_balance_type_code          := 'A';
31135 l_segment                     := NULL;
31136 l_ccid                        := NULL;
31137 l_adr_transaction_coa_id      := NULL;
31138 l_adr_accounting_coa_id       := NULL;
31139 l_adr_flexfield_segment_code  := NULL;
31140 l_adr_flex_value_set_id       := NULL;
31141 l_adr_value_type_code         := NULL;
31142 l_adr_value_combination_id    := NULL;
31143 l_adr_value_segment_code      := NULL;
31144 
31145 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31146 l_bflow_class_code           := '';    -- 4219869 Business Flow
31147 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31148 l_budgetary_control_flag     := 'N';
31149 
31150 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31151 l_bflow_applied_to_amt       := NULL; -- 5132302
31152 l_entered_amt_idx            := NULL;          -- 4262811
31153 l_accted_amt_idx             := NULL;          -- 4262811
31154 l_acc_rev_flag               := NULL;          -- 4262811
31155 l_accrual_line_num           := NULL;          -- 4262811
31156 l_tmp_amt                    := NULL;          -- 4262811
31157 --
31158  
31159 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31160     l_balance_type_code <> 'B' THEN
31161 IF NVL(p_source_24,9E125) =  12
31162  THEN 
31163 
31164    --
31165    XLA_AE_LINES_PKG.SetNewLine;
31166 
31167    p_balance_type_code          := l_balance_type_code;
31168    -- set the flag so later we will know whether the gain loss line needs to be created
31169    
31170    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31171      p_actual_flag :='A';
31172    END IF;
31173 
31174    --
31175    -- bulk performance
31176    --
31177    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31178                                       p_header_num   => 0); -- 4262811
31179    --
31180    -- set accounting line options
31181    --
31182    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31183            p_natural_side_code          => 'D'
31184          , p_gain_or_loss_flag          => 'N'
31185          , p_gl_transfer_mode_code      => 'S'
31186          , p_acct_entry_type_code       => 'A'
31187          , p_switch_side_flag           => 'Y'
31188          , p_merge_duplicate_code       => 'N'
31189          );
31190    --
31191    l_acc_rev_natural_side_code := 'C';  -- 4262811
31192    -- 
31193    --
31194    -- set accounting line type info
31195    --
31196    xla_ae_lines_pkg.SetAcctLineType
31197       (p_component_type             => l_component_type
31198       ,p_event_type_code            => l_event_type_code
31199       ,p_line_definition_owner_code => l_line_definition_owner_code
31200       ,p_line_definition_code       => l_line_definition_code
31201       ,p_accounting_line_code       => l_component_code
31202       ,p_accounting_line_type_code  => l_component_type_code
31203       ,p_accounting_line_appl_id    => l_component_appl_id
31204       ,p_amb_context_code           => l_amb_context_code
31205       ,p_entity_code                => l_entity_code
31206       ,p_event_class_code           => l_event_class_code);
31207    --
31208    -- set accounting class
31209    --
31210    xla_ae_lines_pkg.SetAcctClass(
31211            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
31212          , p_ae_header_id           => l_ae_header_id
31213          );
31214 
31215    --
31216    -- set rounding class
31217    --
31218    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31219                       'INTERORG_FREIGHT_CHARGE';
31220 
31221    --
31222    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31223    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31224    --
31225    -- bulk performance
31226    --
31227    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31228 
31229    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31230       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31231 
31232    -- 4955764
31233    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31234       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31235 
31236    -- 4458381 Public Sector Enh
31237    
31238    --
31239    -- set accounting attributes for the line type
31240    --
31241    l_entered_amt_idx := 3;
31242    l_accted_amt_idx  := 8;
31243    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31244    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
31245    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
31246    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
31247    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
31248    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
31249    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
31250    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
31251    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
31252    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
31253    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
31254    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
31255    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
31256    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
31257    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
31258    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
31259    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
31260 
31261    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31262    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31263 
31264    ---------------------------------------------------------------------------------------------------------------
31265    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31266    ---------------------------------------------------------------------------------------------------------------
31267    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31268 
31269    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31270    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31271 
31272    IF xla_accounting_cache_pkg.GetValueChar
31273          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31274          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31275    AND l_bflow_method_code = 'PRIOR_ENTRY'
31276 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31277    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31278          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31279        )
31280    THEN
31281          xla_ae_lines_pkg.BflowUpgEntry
31282            (p_business_method_code    => l_bflow_method_code
31283            ,p_business_class_code     => l_bflow_class_code
31284            ,p_balance_type            => l_balance_type_code);
31285    ELSE
31286       NULL;
31287 -- No business flow processing for business flow method of NONE.
31288    END IF;
31289 
31290    --
31291    -- call analytical criteria
31292    --
31293    
31294    --
31295    -- call description
31296    --
31297    -- No description or it is inherited.
31298    --
31299    -- call ADRs
31300    -- Bug 4922099
31301    --
31302    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31303         (NVL(l_actual_upg_option, 'N') = 'O') OR
31304         (NVL(l_enc_upg_option, 'N') = 'O')
31305       )
31306    THEN
31307    NULL;
31308    --
31309    --
31310    
31311   l_ccid := AcctDerRule_4(
31312            p_application_id           => p_application_id
31313          , p_ae_header_id             => l_ae_header_id 
31314 , p_source_4 => p_source_4
31315          , x_transaction_coa_id       => l_adr_transaction_coa_id
31316          , x_accounting_coa_id        => l_adr_accounting_coa_id
31317          , x_value_type_code          => l_adr_value_type_code
31318          , p_side                     => 'NA'
31319    );
31320 
31321    xla_ae_lines_pkg.set_ccid(
31322     p_code_combination_id          => l_ccid
31323   , p_value_type_code              => l_adr_value_type_code
31324   , p_transaction_coa_id           => l_adr_transaction_coa_id
31325   , p_accounting_coa_id            => l_adr_accounting_coa_id
31326   , p_adr_code                     => 'CST_DEFAULT'
31327   , p_adr_type_code                => 'S'
31328   , p_component_type               => l_component_type
31329   , p_component_code               => l_component_code
31330   , p_component_type_code          => l_component_type_code
31331   , p_component_appl_id            => l_component_appl_id
31332   , p_amb_context_code             => l_amb_context_code
31333   , p_side                         => 'NA'
31334   );
31335 
31336 
31337    --
31338    --
31339    END IF;
31340    --
31341    -- Bug 4922099
31342    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31343           (NVL(l_enc_upg_option, 'N') = 'O')
31344         ) AND
31345         (l_bflow_method_code = 'PRIOR_ENTRY')
31346       )
31347    THEN
31348       IF
31349       --
31350       1 = 2
31351       --
31352       THEN
31353       xla_accounting_err_pkg.build_message
31354                                     (p_appli_s_name            => 'XLA'
31355                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31356                                     ,p_token_1                 => 'LINE_NUMBER'
31357                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31358                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31359                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31360                                                                              l_component_type
31361                                                                             ,l_component_code
31362                                                                             ,l_component_type_code
31363                                                                             ,l_component_appl_id
31364                                                                             ,l_amb_context_code
31365                                                                             ,l_entity_code
31366                                                                             ,l_event_class_code
31367                                                                            )
31368                                     ,p_token_3                 => 'OWNER'
31369                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31370                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31371                                                                           ,p_lookup_code    => l_component_type_code
31372                                                                          )
31373                                     ,p_token_4                 => 'PRODUCT_NAME'
31374                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31375                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31376                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31377                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31378                                     ,p_ae_header_id            =>  NULL
31379                                        );
31380 
31381         IF (C_LEVEL_ERROR>= g_log_level) THEN
31382                  trace
31383                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31384                       ,p_level    => C_LEVEL_ERROR
31385                       ,p_module   => l_log_module);
31386         END IF;
31387       END IF;
31388    END IF;
31389    --
31390    --
31391    ------------------------------------------------------------------------------------------------
31392    -- 4219869 Business Flow
31393    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31394    -- Prior Entry.  Currently, the following code is always generated.
31395    ------------------------------------------------------------------------------------------------
31396    XLA_AE_LINES_PKG.ValidateCurrentLine;
31397 
31398    ------------------------------------------------------------------------------------
31399    -- 4219869 Business Flow
31400    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31401    ------------------------------------------------------------------------------------
31402    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31403 
31404    ----------------------------------------------------------------------------------
31405    -- 4219869 Business Flow
31406    -- Update journal entry status -- Need to generate this within IF <condition>
31407    ----------------------------------------------------------------------------------
31408    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31409          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31410          ,p_balance_type_code => l_balance_type_code
31411          );
31412 
31413    -------------------------------------------------------------------------------------------
31414    -- 4262811 - Generate the Accrual Reversal lines
31415    -------------------------------------------------------------------------------------------
31416    BEGIN
31417       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31418                               (g_array_event(p_event_id).array_value_num('header_index'));
31419       IF l_acc_rev_flag IS NULL THEN
31420          l_acc_rev_flag := 'N';
31421       END IF;
31422    EXCEPTION
31423       WHEN OTHERS THEN
31424          l_acc_rev_flag := 'N';
31425    END;
31426    --
31427    IF (l_acc_rev_flag = 'Y') THEN
31428 
31429        -- 4645092  ------------------------------------------------------------------------------
31430        -- To allow MPA report to determine if it should generate report process
31431        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31432        ------------------------------------------------------------------------------------------
31433 
31434        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31435        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31436    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
31437    -- call ADRs
31438    -- Bug 4922099
31439    --
31440    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31441         (NVL(l_actual_upg_option, 'N') = 'O') OR
31442         (NVL(l_enc_upg_option, 'N') = 'O')
31443       )
31444    THEN
31445    NULL;
31446    --
31447    --
31448    
31449   l_ccid := AcctDerRule_4(
31450            p_application_id           => p_application_id
31451          , p_ae_header_id             => l_ae_header_id 
31452 , p_source_4 => p_source_4
31453          , x_transaction_coa_id       => l_adr_transaction_coa_id
31454          , x_accounting_coa_id        => l_adr_accounting_coa_id
31455          , x_value_type_code          => l_adr_value_type_code
31456          , p_side                     => 'NA'
31457    );
31458 
31459    xla_ae_lines_pkg.set_ccid(
31460     p_code_combination_id          => l_ccid
31461   , p_value_type_code              => l_adr_value_type_code
31462   , p_transaction_coa_id           => l_adr_transaction_coa_id
31463   , p_accounting_coa_id            => l_adr_accounting_coa_id
31464   , p_adr_code                     => 'CST_DEFAULT'
31465   , p_adr_type_code                => 'S'
31466   , p_component_type               => l_component_type
31467   , p_component_code               => l_component_code
31468   , p_component_type_code          => l_component_type_code
31469   , p_component_appl_id            => l_component_appl_id
31470   , p_amb_context_code             => l_amb_context_code
31471   , p_side                         => 'NA'
31472   );
31473 
31474 
31475    --
31476    --
31477    END IF;
31478 
31479        --
31480        -- Update the line information that should be overwritten
31481        --
31482        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31483                                          p_header_num   => 1);
31484        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
31485 
31486        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31487 
31488        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
31489           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31490        END IF;
31491 
31492       --
31493       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31494       --
31495       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31496           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
31497       ELSE
31498           ---------------------------------------------------------------------------------------------------
31499           -- 4262811a Switch Sign
31500           ---------------------------------------------------------------------------------------------------
31501           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
31502           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31503                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31504           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31505                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31506           -- 5132302
31507           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31508                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31509 
31510       END IF;
31511 
31512       -- 4955764
31513       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31514       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31515 
31516 
31517       XLA_AE_LINES_PKG.ValidateCurrentLine;
31518       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31519 
31520       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31521                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31522                ,p_balance_type_code => l_balance_type_code);
31523 
31524    END IF;
31525 
31526    -----------------------------------------------------------------------------------------
31527    -- 4262811 Multiperiod Accounting
31528    -----------------------------------------------------------------------------------------
31529      -- No MPA option is assigned.
31530 
31531 
31532 END IF;
31533 END IF;
31534 --
31535 
31536 --
31537 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31538    trace
31539       (p_msg      => 'END of AcctLineType_59'
31540       ,p_level    => C_LEVEL_PROCEDURE
31541       ,p_module   => l_log_module);
31542 END IF;
31543 --
31544 EXCEPTION
31545   WHEN xla_exceptions_pkg.application_exception THEN
31546       RAISE;
31547   WHEN OTHERS THEN
31548        xla_exceptions_pkg.raise_message
31549            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_59');
31550 END AcctLineType_59;
31551 --
31552 
31553 ---------------------------------------
31554 --
31555 -- PRIVATE FUNCTION
31556 --         AcctLineType_60
31557 --
31558 ---------------------------------------
31559 PROCEDURE AcctLineType_60 (
31560   p_application_id        IN NUMBER
31561  ,p_event_id              IN NUMBER
31562  ,p_calculate_acctd_flag  IN VARCHAR2
31563  ,p_calculate_g_l_flag    IN VARCHAR2
31564  ,p_actual_flag           IN OUT VARCHAR2
31565  ,p_balance_type_code     OUT VARCHAR2
31566  ,p_gain_or_loss_ref      OUT VARCHAR2
31567  
31568 --Cost Management Default Account
31569  , p_source_4            IN NUMBER
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 --Accounting Line Type
31588  , p_source_24            IN NUMBER
31589 )
31590 IS
31591 
31592 l_component_type              VARCHAR2(80);
31593 l_component_code              VARCHAR2(30);
31594 l_component_type_code         VARCHAR2(1);
31595 l_component_appl_id           INTEGER;
31596 l_amb_context_code            VARCHAR2(30);
31597 l_entity_code                 VARCHAR2(30);
31598 l_event_class_code            VARCHAR2(30);
31599 l_ae_header_id                NUMBER;
31600 l_event_type_code             VARCHAR2(30);
31601 l_line_definition_code        VARCHAR2(30);
31602 l_line_definition_owner_code  VARCHAR2(1);
31603 --
31604 -- adr variables
31605 l_segment                     VARCHAR2(30);
31606 l_ccid                        NUMBER;
31607 l_adr_transaction_coa_id      NUMBER;
31608 l_adr_accounting_coa_id       NUMBER;
31609 l_adr_flexfield_segment_code  VARCHAR2(30);
31610 l_adr_flex_value_set_id       NUMBER;
31611 l_adr_value_type_code         VARCHAR2(30);
31612 l_adr_value_combination_id    NUMBER;
31613 l_adr_value_segment_code      VARCHAR2(30);
31614 
31615 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31616 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31617 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31618 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31619 
31620 -- 4262811 Variables ------------------------------------------------------------------------------------------
31621 l_entered_amt_idx             NUMBER;
31622 l_accted_amt_idx              NUMBER;
31623 l_acc_rev_flag                VARCHAR2(1);
31624 l_accrual_line_num            NUMBER;
31625 l_tmp_amt                     NUMBER;
31626 l_acc_rev_natural_side_code   VARCHAR2(1);
31627 
31628 l_num_entries                 NUMBER;
31629 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31630 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31631 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31632 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31633 l_recog_line_1                NUMBER;
31634 l_recog_line_2                NUMBER;
31635 
31636 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31637 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31638 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31639 
31640 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31641 
31642 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31643 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31644 
31645 ---------------------------------------------------------------------------------------------------------------
31646 
31647 
31648 --
31649 -- bulk performance
31650 --
31651 l_balance_type_code           VARCHAR2(1);
31652 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31653 l_log_module                  VARCHAR2(240);
31654 
31655 --
31656 -- Upgrade strategy
31657 --
31658 l_actual_upg_option           VARCHAR2(1);
31659 l_enc_upg_option           VARCHAR2(1);
31660 
31661 --
31662 BEGIN
31663 --
31664 IF g_log_enabled THEN
31665       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_60';
31666 END IF;
31667 --
31668 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31669 
31670       trace
31671          (p_msg      => 'BEGIN of AcctLineType_60'
31672          ,p_level    => C_LEVEL_PROCEDURE
31673          ,p_module   => l_log_module);
31674 
31675 END IF;
31676 --
31677 l_component_type             := 'AMB_JLT';
31678 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
31679 l_component_type_code        := 'S';
31680 l_component_appl_id          :=  707;
31681 l_amb_context_code           := 'DEFAULT';
31682 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
31683 l_event_class_code           := 'DIR_INTERORG_SHIP';
31684 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
31685 l_line_definition_owner_code := 'S';
31686 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
31687 --
31688 l_balance_type_code          := 'A';
31689 l_segment                     := NULL;
31690 l_ccid                        := NULL;
31691 l_adr_transaction_coa_id      := NULL;
31692 l_adr_accounting_coa_id       := NULL;
31693 l_adr_flexfield_segment_code  := NULL;
31694 l_adr_flex_value_set_id       := NULL;
31695 l_adr_value_type_code         := NULL;
31696 l_adr_value_combination_id    := NULL;
31697 l_adr_value_segment_code      := NULL;
31698 
31699 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31700 l_bflow_class_code           := '';    -- 4219869 Business Flow
31701 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31702 l_budgetary_control_flag     := 'N';
31703 
31704 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31705 l_bflow_applied_to_amt       := NULL; -- 5132302
31706 l_entered_amt_idx            := NULL;          -- 4262811
31707 l_accted_amt_idx             := NULL;          -- 4262811
31708 l_acc_rev_flag               := NULL;          -- 4262811
31709 l_accrual_line_num           := NULL;          -- 4262811
31710 l_tmp_amt                    := NULL;          -- 4262811
31711 --
31712  
31713 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31714     l_balance_type_code <> 'B' THEN
31715 IF NVL(p_source_24,9E125) =  12
31716  THEN 
31717 
31718    --
31719    XLA_AE_LINES_PKG.SetNewLine;
31720 
31721    p_balance_type_code          := l_balance_type_code;
31722    -- set the flag so later we will know whether the gain loss line needs to be created
31723    
31724    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31725      p_actual_flag :='A';
31726    END IF;
31727 
31728    --
31729    -- bulk performance
31730    --
31731    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31732                                       p_header_num   => 0); -- 4262811
31733    --
31734    -- set accounting line options
31735    --
31736    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31737            p_natural_side_code          => 'D'
31738          , p_gain_or_loss_flag          => 'N'
31739          , p_gl_transfer_mode_code      => 'S'
31740          , p_acct_entry_type_code       => 'A'
31741          , p_switch_side_flag           => 'Y'
31742          , p_merge_duplicate_code       => 'N'
31743          );
31744    --
31745    l_acc_rev_natural_side_code := 'C';  -- 4262811
31746    -- 
31747    --
31748    -- set accounting line type info
31749    --
31750    xla_ae_lines_pkg.SetAcctLineType
31751       (p_component_type             => l_component_type
31752       ,p_event_type_code            => l_event_type_code
31753       ,p_line_definition_owner_code => l_line_definition_owner_code
31754       ,p_line_definition_code       => l_line_definition_code
31755       ,p_accounting_line_code       => l_component_code
31756       ,p_accounting_line_type_code  => l_component_type_code
31757       ,p_accounting_line_appl_id    => l_component_appl_id
31758       ,p_amb_context_code           => l_amb_context_code
31759       ,p_entity_code                => l_entity_code
31760       ,p_event_class_code           => l_event_class_code);
31761    --
31762    -- set accounting class
31763    --
31764    xla_ae_lines_pkg.SetAcctClass(
31765            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
31766          , p_ae_header_id           => l_ae_header_id
31767          );
31768 
31769    --
31770    -- set rounding class
31771    --
31772    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31773                       'INTERORG_FREIGHT_CHARGE';
31774 
31775    --
31776    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31777    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31778    --
31779    -- bulk performance
31780    --
31781    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31782 
31783    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31784       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31785 
31786    -- 4955764
31787    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31788       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31789 
31790    -- 4458381 Public Sector Enh
31791    
31792    --
31793    -- set accounting attributes for the line type
31794    --
31795    l_entered_amt_idx := 3;
31796    l_accted_amt_idx  := 8;
31797    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31798    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
31799    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
31800    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
31801    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
31802    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
31803    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
31804    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
31805    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
31806    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
31807    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
31808    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
31809    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
31810    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
31811    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
31812    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
31813    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
31814 
31815    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31816    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31817 
31818    ---------------------------------------------------------------------------------------------------------------
31819    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31820    ---------------------------------------------------------------------------------------------------------------
31821    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31822 
31823    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31824    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31825 
31826    IF xla_accounting_cache_pkg.GetValueChar
31827          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31828          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31829    AND l_bflow_method_code = 'PRIOR_ENTRY'
31830 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31831    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31832          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31833        )
31834    THEN
31835          xla_ae_lines_pkg.BflowUpgEntry
31836            (p_business_method_code    => l_bflow_method_code
31837            ,p_business_class_code     => l_bflow_class_code
31838            ,p_balance_type            => l_balance_type_code);
31839    ELSE
31840       NULL;
31841 -- No business flow processing for business flow method of NONE.
31842    END IF;
31843 
31844    --
31845    -- call analytical criteria
31846    --
31847    
31848    --
31849    -- call description
31850    --
31851    -- No description or it is inherited.
31852    --
31853    -- call ADRs
31854    -- Bug 4922099
31855    --
31856    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31857         (NVL(l_actual_upg_option, 'N') = 'O') OR
31858         (NVL(l_enc_upg_option, 'N') = 'O')
31859       )
31860    THEN
31861    NULL;
31862    --
31863    --
31864    
31865   l_ccid := AcctDerRule_4(
31866            p_application_id           => p_application_id
31867          , p_ae_header_id             => l_ae_header_id 
31868 , p_source_4 => p_source_4
31869          , x_transaction_coa_id       => l_adr_transaction_coa_id
31870          , x_accounting_coa_id        => l_adr_accounting_coa_id
31871          , x_value_type_code          => l_adr_value_type_code
31872          , p_side                     => 'NA'
31873    );
31874 
31875    xla_ae_lines_pkg.set_ccid(
31876     p_code_combination_id          => l_ccid
31877   , p_value_type_code              => l_adr_value_type_code
31878   , p_transaction_coa_id           => l_adr_transaction_coa_id
31879   , p_accounting_coa_id            => l_adr_accounting_coa_id
31880   , p_adr_code                     => 'CST_DEFAULT'
31881   , p_adr_type_code                => 'S'
31882   , p_component_type               => l_component_type
31883   , p_component_code               => l_component_code
31884   , p_component_type_code          => l_component_type_code
31885   , p_component_appl_id            => l_component_appl_id
31886   , p_amb_context_code             => l_amb_context_code
31887   , p_side                         => 'NA'
31888   );
31889 
31890 
31891    --
31892    --
31893    END IF;
31894    --
31895    -- Bug 4922099
31896    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31897           (NVL(l_enc_upg_option, 'N') = 'O')
31898         ) AND
31899         (l_bflow_method_code = 'PRIOR_ENTRY')
31900       )
31901    THEN
31902       IF
31903       --
31904       1 = 2
31905       --
31906       THEN
31907       xla_accounting_err_pkg.build_message
31908                                     (p_appli_s_name            => 'XLA'
31909                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31910                                     ,p_token_1                 => 'LINE_NUMBER'
31911                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31912                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31913                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31914                                                                              l_component_type
31915                                                                             ,l_component_code
31916                                                                             ,l_component_type_code
31917                                                                             ,l_component_appl_id
31918                                                                             ,l_amb_context_code
31919                                                                             ,l_entity_code
31920                                                                             ,l_event_class_code
31921                                                                            )
31922                                     ,p_token_3                 => 'OWNER'
31923                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31924                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31925                                                                           ,p_lookup_code    => l_component_type_code
31926                                                                          )
31927                                     ,p_token_4                 => 'PRODUCT_NAME'
31928                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31929                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31930                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31931                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31932                                     ,p_ae_header_id            =>  NULL
31933                                        );
31934 
31935         IF (C_LEVEL_ERROR>= g_log_level) THEN
31936                  trace
31937                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31938                       ,p_level    => C_LEVEL_ERROR
31939                       ,p_module   => l_log_module);
31940         END IF;
31941       END IF;
31942    END IF;
31943    --
31944    --
31945    ------------------------------------------------------------------------------------------------
31946    -- 4219869 Business Flow
31947    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31948    -- Prior Entry.  Currently, the following code is always generated.
31949    ------------------------------------------------------------------------------------------------
31950    XLA_AE_LINES_PKG.ValidateCurrentLine;
31951 
31952    ------------------------------------------------------------------------------------
31953    -- 4219869 Business Flow
31954    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31955    ------------------------------------------------------------------------------------
31956    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31957 
31958    ----------------------------------------------------------------------------------
31959    -- 4219869 Business Flow
31960    -- Update journal entry status -- Need to generate this within IF <condition>
31961    ----------------------------------------------------------------------------------
31962    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31963          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31964          ,p_balance_type_code => l_balance_type_code
31965          );
31966 
31967    -------------------------------------------------------------------------------------------
31968    -- 4262811 - Generate the Accrual Reversal lines
31969    -------------------------------------------------------------------------------------------
31970    BEGIN
31971       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31972                               (g_array_event(p_event_id).array_value_num('header_index'));
31973       IF l_acc_rev_flag IS NULL THEN
31974          l_acc_rev_flag := 'N';
31975       END IF;
31976    EXCEPTION
31977       WHEN OTHERS THEN
31978          l_acc_rev_flag := 'N';
31979    END;
31980    --
31981    IF (l_acc_rev_flag = 'Y') THEN
31982 
31983        -- 4645092  ------------------------------------------------------------------------------
31984        -- To allow MPA report to determine if it should generate report process
31985        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31986        ------------------------------------------------------------------------------------------
31987 
31988        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31989        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31990    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
31991    -- call ADRs
31992    -- Bug 4922099
31993    --
31994    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31995         (NVL(l_actual_upg_option, 'N') = 'O') OR
31996         (NVL(l_enc_upg_option, 'N') = 'O')
31997       )
31998    THEN
31999    NULL;
32000    --
32001    --
32002    
32003   l_ccid := AcctDerRule_4(
32004            p_application_id           => p_application_id
32005          , p_ae_header_id             => l_ae_header_id 
32006 , p_source_4 => p_source_4
32007          , x_transaction_coa_id       => l_adr_transaction_coa_id
32008          , x_accounting_coa_id        => l_adr_accounting_coa_id
32009          , x_value_type_code          => l_adr_value_type_code
32010          , p_side                     => 'NA'
32011    );
32012 
32013    xla_ae_lines_pkg.set_ccid(
32014     p_code_combination_id          => l_ccid
32015   , p_value_type_code              => l_adr_value_type_code
32016   , p_transaction_coa_id           => l_adr_transaction_coa_id
32017   , p_accounting_coa_id            => l_adr_accounting_coa_id
32018   , p_adr_code                     => 'CST_DEFAULT'
32019   , p_adr_type_code                => 'S'
32020   , p_component_type               => l_component_type
32021   , p_component_code               => l_component_code
32022   , p_component_type_code          => l_component_type_code
32023   , p_component_appl_id            => l_component_appl_id
32024   , p_amb_context_code             => l_amb_context_code
32025   , p_side                         => 'NA'
32026   );
32027 
32028 
32029    --
32030    --
32031    END IF;
32032 
32033        --
32034        -- Update the line information that should be overwritten
32035        --
32036        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32037                                          p_header_num   => 1);
32038        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32039 
32040        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32041 
32042        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32043           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32044        END IF;
32045 
32046       --
32047       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32048       --
32049       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32050           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32051       ELSE
32052           ---------------------------------------------------------------------------------------------------
32053           -- 4262811a Switch Sign
32054           ---------------------------------------------------------------------------------------------------
32055           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32056           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32057                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32058           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32059                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32060           -- 5132302
32061           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32062                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32063 
32064       END IF;
32065 
32066       -- 4955764
32067       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32068       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32069 
32070 
32071       XLA_AE_LINES_PKG.ValidateCurrentLine;
32072       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32073 
32074       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32075                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32076                ,p_balance_type_code => l_balance_type_code);
32077 
32078    END IF;
32079 
32080    -----------------------------------------------------------------------------------------
32081    -- 4262811 Multiperiod Accounting
32082    -----------------------------------------------------------------------------------------
32083      -- No MPA option is assigned.
32084 
32085 
32086 END IF;
32087 END IF;
32088 --
32089 
32090 --
32091 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32092    trace
32093       (p_msg      => 'END of AcctLineType_60'
32094       ,p_level    => C_LEVEL_PROCEDURE
32095       ,p_module   => l_log_module);
32096 END IF;
32097 --
32098 EXCEPTION
32099   WHEN xla_exceptions_pkg.application_exception THEN
32100       RAISE;
32101   WHEN OTHERS THEN
32102        xla_exceptions_pkg.raise_message
32103            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_60');
32104 END AcctLineType_60;
32105 --
32106 
32107 ---------------------------------------
32108 --
32109 -- PRIVATE FUNCTION
32110 --         AcctLineType_61
32111 --
32112 ---------------------------------------
32113 PROCEDURE AcctLineType_61 (
32114   p_application_id        IN NUMBER
32115  ,p_event_id              IN NUMBER
32116  ,p_calculate_acctd_flag  IN VARCHAR2
32117  ,p_calculate_g_l_flag    IN VARCHAR2
32118  ,p_actual_flag           IN OUT VARCHAR2
32119  ,p_balance_type_code     OUT VARCHAR2
32120  ,p_gain_or_loss_ref      OUT VARCHAR2
32121  
32122 --Cost Management Default Account
32123  , p_source_4            IN NUMBER
32124 --DISTRIBUTION_IDENTIFIER
32125  , p_source_11            IN NUMBER
32126 --Distribution Type
32127  , p_source_12            IN VARCHAR2
32128  , p_source_12_meaning    IN VARCHAR2
32129 --Entered Currency Code
32130  , p_source_15            IN VARCHAR2
32131 --Entered Amount
32132  , p_source_18            IN NUMBER
32133 --Currency Conversion Date
32134  , p_source_19            IN DATE
32135 --Currency Conversion Rate
32136  , p_source_20            IN NUMBER
32137 --Currency Conversion Type
32138  , p_source_21            IN VARCHAR2
32139 --Accounted Amount
32140  , p_source_22            IN NUMBER
32141 --Accounting Line Type
32142  , p_source_24            IN NUMBER
32143 )
32144 IS
32145 
32146 l_component_type              VARCHAR2(80);
32147 l_component_code              VARCHAR2(30);
32148 l_component_type_code         VARCHAR2(1);
32149 l_component_appl_id           INTEGER;
32150 l_amb_context_code            VARCHAR2(30);
32151 l_entity_code                 VARCHAR2(30);
32152 l_event_class_code            VARCHAR2(30);
32153 l_ae_header_id                NUMBER;
32154 l_event_type_code             VARCHAR2(30);
32155 l_line_definition_code        VARCHAR2(30);
32156 l_line_definition_owner_code  VARCHAR2(1);
32157 --
32158 -- adr variables
32159 l_segment                     VARCHAR2(30);
32160 l_ccid                        NUMBER;
32161 l_adr_transaction_coa_id      NUMBER;
32162 l_adr_accounting_coa_id       NUMBER;
32163 l_adr_flexfield_segment_code  VARCHAR2(30);
32164 l_adr_flex_value_set_id       NUMBER;
32165 l_adr_value_type_code         VARCHAR2(30);
32166 l_adr_value_combination_id    NUMBER;
32167 l_adr_value_segment_code      VARCHAR2(30);
32168 
32169 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32170 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32171 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32172 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32173 
32174 -- 4262811 Variables ------------------------------------------------------------------------------------------
32175 l_entered_amt_idx             NUMBER;
32176 l_accted_amt_idx              NUMBER;
32177 l_acc_rev_flag                VARCHAR2(1);
32178 l_accrual_line_num            NUMBER;
32179 l_tmp_amt                     NUMBER;
32180 l_acc_rev_natural_side_code   VARCHAR2(1);
32181 
32182 l_num_entries                 NUMBER;
32183 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32184 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32185 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32186 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32187 l_recog_line_1                NUMBER;
32188 l_recog_line_2                NUMBER;
32189 
32190 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32191 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32192 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32193 
32194 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32195 
32196 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32197 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32198 
32199 ---------------------------------------------------------------------------------------------------------------
32200 
32201 
32202 --
32203 -- bulk performance
32204 --
32205 l_balance_type_code           VARCHAR2(1);
32206 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32207 l_log_module                  VARCHAR2(240);
32208 
32209 --
32210 -- Upgrade strategy
32211 --
32212 l_actual_upg_option           VARCHAR2(1);
32213 l_enc_upg_option           VARCHAR2(1);
32214 
32215 --
32216 BEGIN
32217 --
32218 IF g_log_enabled THEN
32219       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_61';
32220 END IF;
32221 --
32222 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32223 
32224       trace
32225          (p_msg      => 'BEGIN of AcctLineType_61'
32226          ,p_level    => C_LEVEL_PROCEDURE
32227          ,p_module   => l_log_module);
32228 
32229 END IF;
32230 --
32231 l_component_type             := 'AMB_JLT';
32232 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
32233 l_component_type_code        := 'S';
32234 l_component_appl_id          :=  707;
32235 l_amb_context_code           := 'DEFAULT';
32236 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
32237 l_event_class_code           := 'USER_DEFINE';
32238 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
32239 l_line_definition_owner_code := 'S';
32240 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_NO_TP';
32241 --
32242 l_balance_type_code          := 'A';
32243 l_segment                     := NULL;
32244 l_ccid                        := NULL;
32245 l_adr_transaction_coa_id      := NULL;
32246 l_adr_accounting_coa_id       := NULL;
32247 l_adr_flexfield_segment_code  := NULL;
32248 l_adr_flex_value_set_id       := NULL;
32249 l_adr_value_type_code         := NULL;
32250 l_adr_value_combination_id    := NULL;
32251 l_adr_value_segment_code      := NULL;
32252 
32253 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
32254 l_bflow_class_code           := '';    -- 4219869 Business Flow
32255 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
32256 l_budgetary_control_flag     := 'N';
32257 
32258 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32259 l_bflow_applied_to_amt       := NULL; -- 5132302
32260 l_entered_amt_idx            := NULL;          -- 4262811
32261 l_accted_amt_idx             := NULL;          -- 4262811
32262 l_acc_rev_flag               := NULL;          -- 4262811
32263 l_accrual_line_num           := NULL;          -- 4262811
32264 l_tmp_amt                    := NULL;          -- 4262811
32265 --
32266  
32267 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32268     l_balance_type_code <> 'B' THEN
32269 IF NVL(p_source_24,9E125) =  12
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  => 'INTERORG_FREIGHT_CHARGE'
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                       'INTERORG_FREIGHT_CHARGE';
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_000007_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           := 'FOB_RCPT_SENDER_RCPT';
32792 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_ALL';
32793 l_line_definition_owner_code := 'S';
32794 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT';
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_000007_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            := 'UDIR_INTERORG_SHIP';
33347 l_line_definition_owner_code := 'S';
33348 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
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_000007_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_RCPT';
33901 l_line_definition_owner_code := 'S';
33902 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
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_000007_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 --DISTRIBUTION_IDENTIFIER
34341  , p_source_11            IN NUMBER
34342 --Distribution Type
34343  , p_source_12            IN VARCHAR2
34344  , p_source_12_meaning    IN VARCHAR2
34345 --Entered Currency Code
34346  , p_source_15            IN VARCHAR2
34347 --Entered Amount
34348  , p_source_18            IN NUMBER
34349 --Currency Conversion Date
34350  , p_source_19            IN DATE
34351 --Currency Conversion Rate
34352  , p_source_20            IN NUMBER
34353 --Currency Conversion Type
34354  , p_source_21            IN VARCHAR2
34355 --Accounted Amount
34356  , p_source_22            IN NUMBER
34357 --Accounting Line Type
34358  , p_source_24            IN NUMBER
34359 )
34360 IS
34361 
34362 l_component_type              VARCHAR2(80);
34363 l_component_code              VARCHAR2(30);
34364 l_component_type_code         VARCHAR2(1);
34365 l_component_appl_id           INTEGER;
34366 l_amb_context_code            VARCHAR2(30);
34367 l_entity_code                 VARCHAR2(30);
34368 l_event_class_code            VARCHAR2(30);
34369 l_ae_header_id                NUMBER;
34370 l_event_type_code             VARCHAR2(30);
34371 l_line_definition_code        VARCHAR2(30);
34372 l_line_definition_owner_code  VARCHAR2(1);
34373 --
34374 -- adr variables
34375 l_segment                     VARCHAR2(30);
34376 l_ccid                        NUMBER;
34377 l_adr_transaction_coa_id      NUMBER;
34378 l_adr_accounting_coa_id       NUMBER;
34379 l_adr_flexfield_segment_code  VARCHAR2(30);
34380 l_adr_flex_value_set_id       NUMBER;
34381 l_adr_value_type_code         VARCHAR2(30);
34382 l_adr_value_combination_id    NUMBER;
34383 l_adr_value_segment_code      VARCHAR2(30);
34384 
34385 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34386 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34387 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34388 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34389 
34390 -- 4262811 Variables ------------------------------------------------------------------------------------------
34391 l_entered_amt_idx             NUMBER;
34392 l_accted_amt_idx              NUMBER;
34393 l_acc_rev_flag                VARCHAR2(1);
34394 l_accrual_line_num            NUMBER;
34395 l_tmp_amt                     NUMBER;
34396 l_acc_rev_natural_side_code   VARCHAR2(1);
34397 
34398 l_num_entries                 NUMBER;
34399 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34400 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34401 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34402 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34403 l_recog_line_1                NUMBER;
34404 l_recog_line_2                NUMBER;
34405 
34406 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34407 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34408 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34409 
34410 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34411 
34412 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34413 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34414 
34415 ---------------------------------------------------------------------------------------------------------------
34416 
34417 
34418 --
34419 -- bulk performance
34420 --
34421 l_balance_type_code           VARCHAR2(1);
34422 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34423 l_log_module                  VARCHAR2(240);
34424 
34425 --
34426 -- Upgrade strategy
34427 --
34428 l_actual_upg_option           VARCHAR2(1);
34429 l_enc_upg_option           VARCHAR2(1);
34430 
34431 --
34432 BEGIN
34433 --
34434 IF g_log_enabled THEN
34435       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_65';
34436 END IF;
34437 --
34438 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34439 
34440       trace
34441          (p_msg      => 'BEGIN of AcctLineType_65'
34442          ,p_level    => C_LEVEL_PROCEDURE
34443          ,p_module   => l_log_module);
34444 
34445 END IF;
34446 --
34447 l_component_type             := 'AMB_JLT';
34448 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
34449 l_component_type_code        := 'S';
34450 l_component_appl_id          :=  707;
34451 l_amb_context_code           := 'DEFAULT';
34452 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
34453 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
34454 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
34455 l_line_definition_owner_code := 'S';
34456 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
34457 --
34458 l_balance_type_code          := 'A';
34459 l_segment                     := NULL;
34460 l_ccid                        := NULL;
34461 l_adr_transaction_coa_id      := NULL;
34462 l_adr_accounting_coa_id       := NULL;
34463 l_adr_flexfield_segment_code  := NULL;
34464 l_adr_flex_value_set_id       := NULL;
34465 l_adr_value_type_code         := NULL;
34466 l_adr_value_combination_id    := NULL;
34467 l_adr_value_segment_code      := NULL;
34468 
34469 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34470 l_bflow_class_code           := '';    -- 4219869 Business Flow
34471 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34472 l_budgetary_control_flag     := 'N';
34473 
34474 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34475 l_bflow_applied_to_amt       := NULL; -- 5132302
34476 l_entered_amt_idx            := NULL;          -- 4262811
34477 l_accted_amt_idx             := NULL;          -- 4262811
34478 l_acc_rev_flag               := NULL;          -- 4262811
34479 l_accrual_line_num           := NULL;          -- 4262811
34480 l_tmp_amt                    := NULL;          -- 4262811
34481 --
34482  
34483 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34484     l_balance_type_code <> 'B' THEN
34485 IF NVL(p_source_24,9E125) =  12
34486  THEN 
34487 
34488    --
34489    XLA_AE_LINES_PKG.SetNewLine;
34490 
34491    p_balance_type_code          := l_balance_type_code;
34492    -- set the flag so later we will know whether the gain loss line needs to be created
34493    
34494    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34495      p_actual_flag :='A';
34496    END IF;
34497 
34498    --
34499    -- bulk performance
34500    --
34501    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34502                                       p_header_num   => 0); -- 4262811
34503    --
34504    -- set accounting line options
34505    --
34506    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34507            p_natural_side_code          => 'D'
34508          , p_gain_or_loss_flag          => 'N'
34509          , p_gl_transfer_mode_code      => 'S'
34510          , p_acct_entry_type_code       => 'A'
34511          , p_switch_side_flag           => 'Y'
34512          , p_merge_duplicate_code       => 'N'
34513          );
34514    --
34515    l_acc_rev_natural_side_code := 'C';  -- 4262811
34516    -- 
34517    --
34518    -- set accounting line type info
34519    --
34520    xla_ae_lines_pkg.SetAcctLineType
34521       (p_component_type             => l_component_type
34522       ,p_event_type_code            => l_event_type_code
34523       ,p_line_definition_owner_code => l_line_definition_owner_code
34524       ,p_line_definition_code       => l_line_definition_code
34525       ,p_accounting_line_code       => l_component_code
34526       ,p_accounting_line_type_code  => l_component_type_code
34527       ,p_accounting_line_appl_id    => l_component_appl_id
34528       ,p_amb_context_code           => l_amb_context_code
34529       ,p_entity_code                => l_entity_code
34530       ,p_event_class_code           => l_event_class_code);
34531    --
34532    -- set accounting class
34533    --
34534    xla_ae_lines_pkg.SetAcctClass(
34535            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
34536          , p_ae_header_id           => l_ae_header_id
34537          );
34538 
34539    --
34540    -- set rounding class
34541    --
34542    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34543                       'INTERORG_FREIGHT_CHARGE';
34544 
34545    --
34546    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34547    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34548    --
34549    -- bulk performance
34550    --
34551    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34552 
34553    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34554       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34555 
34556    -- 4955764
34557    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34558       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34559 
34560    -- 4458381 Public Sector Enh
34561    
34562    --
34563    -- set accounting attributes for the line type
34564    --
34565    l_entered_amt_idx := 3;
34566    l_accted_amt_idx  := 8;
34567    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34568    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
34569    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
34570    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
34571    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
34572    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
34573    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
34574    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
34575    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
34576    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
34577    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
34578    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
34579    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
34580    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
34581    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
34582    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
34583    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
34584 
34585    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34586    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34587 
34588    ---------------------------------------------------------------------------------------------------------------
34589    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34590    ---------------------------------------------------------------------------------------------------------------
34591    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34592 
34593    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34594    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34595 
34596    IF xla_accounting_cache_pkg.GetValueChar
34597          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34598          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34599    AND l_bflow_method_code = 'PRIOR_ENTRY'
34600 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34601    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34602          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34603        )
34604    THEN
34605          xla_ae_lines_pkg.BflowUpgEntry
34606            (p_business_method_code    => l_bflow_method_code
34607            ,p_business_class_code     => l_bflow_class_code
34608            ,p_balance_type            => l_balance_type_code);
34609    ELSE
34610       NULL;
34611 -- No business flow processing for business flow method of NONE.
34612    END IF;
34613 
34614    --
34615    -- call analytical criteria
34616    --
34617    
34618    --
34619    -- call description
34620    --
34621    -- No description or it is inherited.
34622    --
34623    -- call ADRs
34624    -- Bug 4922099
34625    --
34626    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34627         (NVL(l_actual_upg_option, 'N') = 'O') OR
34628         (NVL(l_enc_upg_option, 'N') = 'O')
34629       )
34630    THEN
34631    NULL;
34632    --
34633    --
34634    
34635   l_ccid := AcctDerRule_4(
34636            p_application_id           => p_application_id
34637          , p_ae_header_id             => l_ae_header_id 
34638 , p_source_4 => p_source_4
34639          , x_transaction_coa_id       => l_adr_transaction_coa_id
34640          , x_accounting_coa_id        => l_adr_accounting_coa_id
34641          , x_value_type_code          => l_adr_value_type_code
34642          , p_side                     => 'NA'
34643    );
34644 
34645    xla_ae_lines_pkg.set_ccid(
34646     p_code_combination_id          => l_ccid
34647   , p_value_type_code              => l_adr_value_type_code
34648   , p_transaction_coa_id           => l_adr_transaction_coa_id
34649   , p_accounting_coa_id            => l_adr_accounting_coa_id
34650   , p_adr_code                     => 'CST_DEFAULT'
34651   , p_adr_type_code                => 'S'
34652   , p_component_type               => l_component_type
34653   , p_component_code               => l_component_code
34654   , p_component_type_code          => l_component_type_code
34655   , p_component_appl_id            => l_component_appl_id
34656   , p_amb_context_code             => l_amb_context_code
34657   , p_side                         => 'NA'
34658   );
34659 
34660 
34661    --
34662    --
34663    END IF;
34664    --
34665    -- Bug 4922099
34666    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34667           (NVL(l_enc_upg_option, 'N') = 'O')
34668         ) AND
34669         (l_bflow_method_code = 'PRIOR_ENTRY')
34670       )
34671    THEN
34672       IF
34673       --
34674       1 = 2
34675       --
34676       THEN
34677       xla_accounting_err_pkg.build_message
34678                                     (p_appli_s_name            => 'XLA'
34679                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34680                                     ,p_token_1                 => 'LINE_NUMBER'
34681                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34682                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34683                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34684                                                                              l_component_type
34685                                                                             ,l_component_code
34686                                                                             ,l_component_type_code
34687                                                                             ,l_component_appl_id
34688                                                                             ,l_amb_context_code
34689                                                                             ,l_entity_code
34690                                                                             ,l_event_class_code
34691                                                                            )
34692                                     ,p_token_3                 => 'OWNER'
34693                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34694                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34695                                                                           ,p_lookup_code    => l_component_type_code
34696                                                                          )
34697                                     ,p_token_4                 => 'PRODUCT_NAME'
34698                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34699                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34700                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34701                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34702                                     ,p_ae_header_id            =>  NULL
34703                                        );
34704 
34705         IF (C_LEVEL_ERROR>= g_log_level) THEN
34706                  trace
34707                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34708                       ,p_level    => C_LEVEL_ERROR
34709                       ,p_module   => l_log_module);
34710         END IF;
34711       END IF;
34712    END IF;
34713    --
34714    --
34715    ------------------------------------------------------------------------------------------------
34716    -- 4219869 Business Flow
34717    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34718    -- Prior Entry.  Currently, the following code is always generated.
34719    ------------------------------------------------------------------------------------------------
34720    XLA_AE_LINES_PKG.ValidateCurrentLine;
34721 
34722    ------------------------------------------------------------------------------------
34723    -- 4219869 Business Flow
34724    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34725    ------------------------------------------------------------------------------------
34726    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34727 
34728    ----------------------------------------------------------------------------------
34729    -- 4219869 Business Flow
34730    -- Update journal entry status -- Need to generate this within IF <condition>
34731    ----------------------------------------------------------------------------------
34732    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34733          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34734          ,p_balance_type_code => l_balance_type_code
34735          );
34736 
34737    -------------------------------------------------------------------------------------------
34738    -- 4262811 - Generate the Accrual Reversal lines
34739    -------------------------------------------------------------------------------------------
34740    BEGIN
34741       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34742                               (g_array_event(p_event_id).array_value_num('header_index'));
34743       IF l_acc_rev_flag IS NULL THEN
34744          l_acc_rev_flag := 'N';
34745       END IF;
34746    EXCEPTION
34747       WHEN OTHERS THEN
34748          l_acc_rev_flag := 'N';
34749    END;
34750    --
34751    IF (l_acc_rev_flag = 'Y') THEN
34752 
34753        -- 4645092  ------------------------------------------------------------------------------
34754        -- To allow MPA report to determine if it should generate report process
34755        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34756        ------------------------------------------------------------------------------------------
34757 
34758        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34759        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34760    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
34761    -- call ADRs
34762    -- Bug 4922099
34763    --
34764    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34765         (NVL(l_actual_upg_option, 'N') = 'O') OR
34766         (NVL(l_enc_upg_option, 'N') = 'O')
34767       )
34768    THEN
34769    NULL;
34770    --
34771    --
34772    
34773   l_ccid := AcctDerRule_4(
34774            p_application_id           => p_application_id
34775          , p_ae_header_id             => l_ae_header_id 
34776 , p_source_4 => p_source_4
34777          , x_transaction_coa_id       => l_adr_transaction_coa_id
34778          , x_accounting_coa_id        => l_adr_accounting_coa_id
34779          , x_value_type_code          => l_adr_value_type_code
34780          , p_side                     => 'NA'
34781    );
34782 
34783    xla_ae_lines_pkg.set_ccid(
34784     p_code_combination_id          => l_ccid
34785   , p_value_type_code              => l_adr_value_type_code
34786   , p_transaction_coa_id           => l_adr_transaction_coa_id
34787   , p_accounting_coa_id            => l_adr_accounting_coa_id
34788   , p_adr_code                     => 'CST_DEFAULT'
34789   , p_adr_type_code                => 'S'
34790   , p_component_type               => l_component_type
34791   , p_component_code               => l_component_code
34792   , p_component_type_code          => l_component_type_code
34793   , p_component_appl_id            => l_component_appl_id
34794   , p_amb_context_code             => l_amb_context_code
34795   , p_side                         => 'NA'
34796   );
34797 
34798 
34799    --
34800    --
34801    END IF;
34802 
34803        --
34804        -- Update the line information that should be overwritten
34805        --
34806        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34807                                          p_header_num   => 1);
34808        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34809 
34810        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34811 
34812        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34813           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34814        END IF;
34815 
34816       --
34817       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34818       --
34819       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34820           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34821       ELSE
34822           ---------------------------------------------------------------------------------------------------
34823           -- 4262811a Switch Sign
34824           ---------------------------------------------------------------------------------------------------
34825           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34826           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34827                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34828           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34829                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34830           -- 5132302
34831           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34832                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34833 
34834       END IF;
34835 
34836       -- 4955764
34837       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34838       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34839 
34840 
34841       XLA_AE_LINES_PKG.ValidateCurrentLine;
34842       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34843 
34844       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34845                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34846                ,p_balance_type_code => l_balance_type_code);
34847 
34848    END IF;
34849 
34850    -----------------------------------------------------------------------------------------
34851    -- 4262811 Multiperiod Accounting
34852    -----------------------------------------------------------------------------------------
34853      -- No MPA option is assigned.
34854 
34855 
34856 END IF;
34857 END IF;
34858 --
34859 
34860 --
34861 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34862    trace
34863       (p_msg      => 'END of AcctLineType_65'
34864       ,p_level    => C_LEVEL_PROCEDURE
34865       ,p_module   => l_log_module);
34866 END IF;
34867 --
34868 EXCEPTION
34869   WHEN xla_exceptions_pkg.application_exception THEN
34870       RAISE;
34871   WHEN OTHERS THEN
34872        xla_exceptions_pkg.raise_message
34873            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_65');
34874 END AcctLineType_65;
34875 --
34876 
34877 ---------------------------------------
34878 --
34879 -- PRIVATE FUNCTION
34880 --         AcctLineType_66
34881 --
34882 ---------------------------------------
34883 PROCEDURE AcctLineType_66 (
34884   p_application_id        IN NUMBER
34885  ,p_event_id              IN NUMBER
34886  ,p_calculate_acctd_flag  IN VARCHAR2
34887  ,p_calculate_g_l_flag    IN VARCHAR2
34888  ,p_actual_flag           IN OUT VARCHAR2
34889  ,p_balance_type_code     OUT VARCHAR2
34890  ,p_gain_or_loss_ref      OUT VARCHAR2
34891  
34892 --Cost Management Default Account
34893  , p_source_4            IN NUMBER
34894 --DISTRIBUTION_IDENTIFIER
34895  , p_source_11            IN NUMBER
34896 --Distribution Type
34897  , p_source_12            IN VARCHAR2
34898  , p_source_12_meaning    IN VARCHAR2
34899 --Entered Currency Code
34900  , p_source_15            IN VARCHAR2
34901 --Entered Amount
34902  , p_source_18            IN NUMBER
34903 --Currency Conversion Date
34904  , p_source_19            IN DATE
34905 --Currency Conversion Rate
34906  , p_source_20            IN NUMBER
34907 --Currency Conversion Type
34908  , p_source_21            IN VARCHAR2
34909 --Accounted Amount
34910  , p_source_22            IN NUMBER
34911 --Accounting Line Type
34912  , p_source_24            IN NUMBER
34913 )
34914 IS
34915 
34916 l_component_type              VARCHAR2(80);
34917 l_component_code              VARCHAR2(30);
34918 l_component_type_code         VARCHAR2(1);
34919 l_component_appl_id           INTEGER;
34920 l_amb_context_code            VARCHAR2(30);
34921 l_entity_code                 VARCHAR2(30);
34922 l_event_class_code            VARCHAR2(30);
34923 l_ae_header_id                NUMBER;
34924 l_event_type_code             VARCHAR2(30);
34925 l_line_definition_code        VARCHAR2(30);
34926 l_line_definition_owner_code  VARCHAR2(1);
34927 --
34928 -- adr variables
34929 l_segment                     VARCHAR2(30);
34930 l_ccid                        NUMBER;
34931 l_adr_transaction_coa_id      NUMBER;
34932 l_adr_accounting_coa_id       NUMBER;
34933 l_adr_flexfield_segment_code  VARCHAR2(30);
34934 l_adr_flex_value_set_id       NUMBER;
34935 l_adr_value_type_code         VARCHAR2(30);
34936 l_adr_value_combination_id    NUMBER;
34937 l_adr_value_segment_code      VARCHAR2(30);
34938 
34939 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34940 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34941 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34942 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34943 
34944 -- 4262811 Variables ------------------------------------------------------------------------------------------
34945 l_entered_amt_idx             NUMBER;
34946 l_accted_amt_idx              NUMBER;
34947 l_acc_rev_flag                VARCHAR2(1);
34948 l_accrual_line_num            NUMBER;
34949 l_tmp_amt                     NUMBER;
34950 l_acc_rev_natural_side_code   VARCHAR2(1);
34951 
34952 l_num_entries                 NUMBER;
34953 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34954 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34955 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34956 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34957 l_recog_line_1                NUMBER;
34958 l_recog_line_2                NUMBER;
34959 
34960 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34961 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34962 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34963 
34964 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34965 
34966 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34967 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34968 
34969 ---------------------------------------------------------------------------------------------------------------
34970 
34971 
34972 --
34973 -- bulk performance
34974 --
34975 l_balance_type_code           VARCHAR2(1);
34976 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34977 l_log_module                  VARCHAR2(240);
34978 
34979 --
34980 -- Upgrade strategy
34981 --
34982 l_actual_upg_option           VARCHAR2(1);
34983 l_enc_upg_option           VARCHAR2(1);
34984 
34985 --
34986 BEGIN
34987 --
34988 IF g_log_enabled THEN
34989       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_66';
34990 END IF;
34991 --
34992 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34993 
34994       trace
34995          (p_msg      => 'BEGIN of AcctLineType_66'
34996          ,p_level    => C_LEVEL_PROCEDURE
34997          ,p_module   => l_log_module);
34998 
34999 END IF;
35000 --
35001 l_component_type             := 'AMB_JLT';
35002 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
35003 l_component_type_code        := 'S';
35004 l_component_appl_id          :=  707;
35005 l_amb_context_code           := 'DEFAULT';
35006 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
35007 l_event_class_code           := 'USER_DEFINE';
35008 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
35009 l_line_definition_owner_code := 'S';
35010 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
35011 --
35012 l_balance_type_code          := 'A';
35013 l_segment                     := NULL;
35014 l_ccid                        := NULL;
35015 l_adr_transaction_coa_id      := NULL;
35016 l_adr_accounting_coa_id       := NULL;
35017 l_adr_flexfield_segment_code  := NULL;
35018 l_adr_flex_value_set_id       := NULL;
35019 l_adr_value_type_code         := NULL;
35020 l_adr_value_combination_id    := NULL;
35021 l_adr_value_segment_code      := NULL;
35022 
35023 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35024 l_bflow_class_code           := '';    -- 4219869 Business Flow
35025 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35026 l_budgetary_control_flag     := 'N';
35027 
35028 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35029 l_bflow_applied_to_amt       := NULL; -- 5132302
35030 l_entered_amt_idx            := NULL;          -- 4262811
35031 l_accted_amt_idx             := NULL;          -- 4262811
35032 l_acc_rev_flag               := NULL;          -- 4262811
35033 l_accrual_line_num           := NULL;          -- 4262811
35034 l_tmp_amt                    := NULL;          -- 4262811
35035 --
35036  
35037 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35038     l_balance_type_code <> 'B' THEN
35039 IF NVL(p_source_24,9E125) =  12
35040  THEN 
35041 
35042    --
35043    XLA_AE_LINES_PKG.SetNewLine;
35044 
35045    p_balance_type_code          := l_balance_type_code;
35046    -- set the flag so later we will know whether the gain loss line needs to be created
35047    
35048    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35049      p_actual_flag :='A';
35050    END IF;
35051 
35052    --
35053    -- bulk performance
35054    --
35055    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35056                                       p_header_num   => 0); -- 4262811
35057    --
35058    -- set accounting line options
35059    --
35060    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35061            p_natural_side_code          => 'D'
35062          , p_gain_or_loss_flag          => 'N'
35063          , p_gl_transfer_mode_code      => 'S'
35064          , p_acct_entry_type_code       => 'A'
35065          , p_switch_side_flag           => 'Y'
35066          , p_merge_duplicate_code       => 'N'
35067          );
35068    --
35069    l_acc_rev_natural_side_code := 'C';  -- 4262811
35070    -- 
35071    --
35072    -- set accounting line type info
35073    --
35074    xla_ae_lines_pkg.SetAcctLineType
35075       (p_component_type             => l_component_type
35076       ,p_event_type_code            => l_event_type_code
35077       ,p_line_definition_owner_code => l_line_definition_owner_code
35078       ,p_line_definition_code       => l_line_definition_code
35079       ,p_accounting_line_code       => l_component_code
35080       ,p_accounting_line_type_code  => l_component_type_code
35081       ,p_accounting_line_appl_id    => l_component_appl_id
35082       ,p_amb_context_code           => l_amb_context_code
35083       ,p_entity_code                => l_entity_code
35084       ,p_event_class_code           => l_event_class_code);
35085    --
35086    -- set accounting class
35087    --
35088    xla_ae_lines_pkg.SetAcctClass(
35089            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
35090          , p_ae_header_id           => l_ae_header_id
35091          );
35092 
35093    --
35094    -- set rounding class
35095    --
35096    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35097                       'INTERORG_FREIGHT_CHARGE';
35098 
35099    --
35100    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35101    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35102    --
35103    -- bulk performance
35104    --
35105    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35106 
35107    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35108       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35109 
35110    -- 4955764
35111    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35112       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35113 
35114    -- 4458381 Public Sector Enh
35115    
35116    --
35117    -- set accounting attributes for the line type
35118    --
35119    l_entered_amt_idx := 3;
35120    l_accted_amt_idx  := 8;
35121    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35122    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
35123    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
35124    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
35125    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
35126    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
35127    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
35128    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
35129    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
35130    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
35131    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
35132    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
35133    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
35134    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
35135    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
35136    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
35137    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
35138 
35139    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35140    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35141 
35142    ---------------------------------------------------------------------------------------------------------------
35143    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35144    ---------------------------------------------------------------------------------------------------------------
35145    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35146 
35147    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35148    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35149 
35150    IF xla_accounting_cache_pkg.GetValueChar
35151          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35152          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35153    AND l_bflow_method_code = 'PRIOR_ENTRY'
35154 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35155    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35156          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35157        )
35158    THEN
35159          xla_ae_lines_pkg.BflowUpgEntry
35160            (p_business_method_code    => l_bflow_method_code
35161            ,p_business_class_code     => l_bflow_class_code
35162            ,p_balance_type            => l_balance_type_code);
35163    ELSE
35164       NULL;
35165 -- No business flow processing for business flow method of NONE.
35166    END IF;
35167 
35168    --
35169    -- call analytical criteria
35170    --
35171    
35172    --
35173    -- call description
35174    --
35175    -- No description or it is inherited.
35176    --
35177    -- call ADRs
35178    -- Bug 4922099
35179    --
35180    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35181         (NVL(l_actual_upg_option, 'N') = 'O') OR
35182         (NVL(l_enc_upg_option, 'N') = 'O')
35183       )
35184    THEN
35185    NULL;
35186    --
35187    --
35188    
35189   l_ccid := AcctDerRule_4(
35190            p_application_id           => p_application_id
35191          , p_ae_header_id             => l_ae_header_id 
35192 , p_source_4 => p_source_4
35193          , x_transaction_coa_id       => l_adr_transaction_coa_id
35194          , x_accounting_coa_id        => l_adr_accounting_coa_id
35195          , x_value_type_code          => l_adr_value_type_code
35196          , p_side                     => 'NA'
35197    );
35198 
35199    xla_ae_lines_pkg.set_ccid(
35200     p_code_combination_id          => l_ccid
35201   , p_value_type_code              => l_adr_value_type_code
35202   , p_transaction_coa_id           => l_adr_transaction_coa_id
35203   , p_accounting_coa_id            => l_adr_accounting_coa_id
35204   , p_adr_code                     => 'CST_DEFAULT'
35205   , p_adr_type_code                => 'S'
35206   , p_component_type               => l_component_type
35207   , p_component_code               => l_component_code
35208   , p_component_type_code          => l_component_type_code
35209   , p_component_appl_id            => l_component_appl_id
35210   , p_amb_context_code             => l_amb_context_code
35211   , p_side                         => 'NA'
35212   );
35213 
35214 
35215    --
35216    --
35217    END IF;
35218    --
35219    -- Bug 4922099
35220    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35221           (NVL(l_enc_upg_option, 'N') = 'O')
35222         ) AND
35223         (l_bflow_method_code = 'PRIOR_ENTRY')
35224       )
35225    THEN
35226       IF
35227       --
35228       1 = 2
35229       --
35230       THEN
35231       xla_accounting_err_pkg.build_message
35232                                     (p_appli_s_name            => 'XLA'
35233                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35234                                     ,p_token_1                 => 'LINE_NUMBER'
35235                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35236                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35237                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35238                                                                              l_component_type
35239                                                                             ,l_component_code
35240                                                                             ,l_component_type_code
35241                                                                             ,l_component_appl_id
35242                                                                             ,l_amb_context_code
35243                                                                             ,l_entity_code
35244                                                                             ,l_event_class_code
35245                                                                            )
35246                                     ,p_token_3                 => 'OWNER'
35247                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35248                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35249                                                                           ,p_lookup_code    => l_component_type_code
35250                                                                          )
35251                                     ,p_token_4                 => 'PRODUCT_NAME'
35252                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35253                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35254                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35255                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35256                                     ,p_ae_header_id            =>  NULL
35257                                        );
35258 
35259         IF (C_LEVEL_ERROR>= g_log_level) THEN
35260                  trace
35261                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35262                       ,p_level    => C_LEVEL_ERROR
35263                       ,p_module   => l_log_module);
35264         END IF;
35265       END IF;
35266    END IF;
35267    --
35268    --
35269    ------------------------------------------------------------------------------------------------
35270    -- 4219869 Business Flow
35271    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35272    -- Prior Entry.  Currently, the following code is always generated.
35273    ------------------------------------------------------------------------------------------------
35274    XLA_AE_LINES_PKG.ValidateCurrentLine;
35275 
35276    ------------------------------------------------------------------------------------
35277    -- 4219869 Business Flow
35278    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35279    ------------------------------------------------------------------------------------
35280    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35281 
35282    ----------------------------------------------------------------------------------
35283    -- 4219869 Business Flow
35284    -- Update journal entry status -- Need to generate this within IF <condition>
35285    ----------------------------------------------------------------------------------
35286    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35287          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35288          ,p_balance_type_code => l_balance_type_code
35289          );
35290 
35291    -------------------------------------------------------------------------------------------
35292    -- 4262811 - Generate the Accrual Reversal lines
35293    -------------------------------------------------------------------------------------------
35294    BEGIN
35295       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35296                               (g_array_event(p_event_id).array_value_num('header_index'));
35297       IF l_acc_rev_flag IS NULL THEN
35298          l_acc_rev_flag := 'N';
35299       END IF;
35300    EXCEPTION
35301       WHEN OTHERS THEN
35302          l_acc_rev_flag := 'N';
35303    END;
35304    --
35305    IF (l_acc_rev_flag = 'Y') THEN
35306 
35307        -- 4645092  ------------------------------------------------------------------------------
35308        -- To allow MPA report to determine if it should generate report process
35309        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35310        ------------------------------------------------------------------------------------------
35311 
35312        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35313        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35314    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
35315    -- call ADRs
35316    -- Bug 4922099
35317    --
35318    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35319         (NVL(l_actual_upg_option, 'N') = 'O') OR
35320         (NVL(l_enc_upg_option, 'N') = 'O')
35321       )
35322    THEN
35323    NULL;
35324    --
35325    --
35326    
35327   l_ccid := AcctDerRule_4(
35328            p_application_id           => p_application_id
35329          , p_ae_header_id             => l_ae_header_id 
35330 , p_source_4 => p_source_4
35331          , x_transaction_coa_id       => l_adr_transaction_coa_id
35332          , x_accounting_coa_id        => l_adr_accounting_coa_id
35333          , x_value_type_code          => l_adr_value_type_code
35334          , p_side                     => 'NA'
35335    );
35336 
35337    xla_ae_lines_pkg.set_ccid(
35338     p_code_combination_id          => l_ccid
35339   , p_value_type_code              => l_adr_value_type_code
35340   , p_transaction_coa_id           => l_adr_transaction_coa_id
35341   , p_accounting_coa_id            => l_adr_accounting_coa_id
35342   , p_adr_code                     => 'CST_DEFAULT'
35343   , p_adr_type_code                => 'S'
35344   , p_component_type               => l_component_type
35345   , p_component_code               => l_component_code
35346   , p_component_type_code          => l_component_type_code
35347   , p_component_appl_id            => l_component_appl_id
35348   , p_amb_context_code             => l_amb_context_code
35349   , p_side                         => 'NA'
35350   );
35351 
35352 
35353    --
35354    --
35355    END IF;
35356 
35357        --
35358        -- Update the line information that should be overwritten
35359        --
35360        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35361                                          p_header_num   => 1);
35362        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35363 
35364        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35365 
35366        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35367           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35368        END IF;
35369 
35370       --
35371       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35372       --
35373       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35374           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35375       ELSE
35376           ---------------------------------------------------------------------------------------------------
35377           -- 4262811a Switch Sign
35378           ---------------------------------------------------------------------------------------------------
35379           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35380           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35381                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35382           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35383                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35384           -- 5132302
35385           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35386                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35387 
35388       END IF;
35389 
35390       -- 4955764
35391       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35392       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35393 
35394 
35395       XLA_AE_LINES_PKG.ValidateCurrentLine;
35396       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35397 
35398       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35399                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35400                ,p_balance_type_code => l_balance_type_code);
35401 
35402    END IF;
35403 
35404    -----------------------------------------------------------------------------------------
35405    -- 4262811 Multiperiod Accounting
35406    -----------------------------------------------------------------------------------------
35407      -- No MPA option is assigned.
35408 
35409 
35410 END IF;
35411 END IF;
35412 --
35413 
35414 --
35415 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35416    trace
35417       (p_msg      => 'END of AcctLineType_66'
35418       ,p_level    => C_LEVEL_PROCEDURE
35419       ,p_module   => l_log_module);
35420 END IF;
35421 --
35422 EXCEPTION
35423   WHEN xla_exceptions_pkg.application_exception THEN
35424       RAISE;
35425   WHEN OTHERS THEN
35426        xla_exceptions_pkg.raise_message
35427            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_66');
35428 END AcctLineType_66;
35429 --
35430 
35431 ---------------------------------------
35432 --
35433 -- PRIVATE FUNCTION
35434 --         AcctLineType_67
35435 --
35436 ---------------------------------------
35437 PROCEDURE AcctLineType_67 (
35438   p_application_id        IN NUMBER
35439  ,p_event_id              IN NUMBER
35440  ,p_calculate_acctd_flag  IN VARCHAR2
35441  ,p_calculate_g_l_flag    IN VARCHAR2
35442  ,p_actual_flag           IN OUT VARCHAR2
35443  ,p_balance_type_code     OUT VARCHAR2
35444  ,p_gain_or_loss_ref      OUT VARCHAR2
35445  
35446 --Cost Management Default Account
35447  , p_source_4            IN NUMBER
35448 --DISTRIBUTION_IDENTIFIER
35449  , p_source_11            IN NUMBER
35450 --Distribution Type
35451  , p_source_12            IN VARCHAR2
35452  , p_source_12_meaning    IN VARCHAR2
35453 --Entered Currency Code
35454  , p_source_15            IN VARCHAR2
35455 --Entered Amount
35456  , p_source_18            IN NUMBER
35457 --Currency Conversion Date
35458  , p_source_19            IN DATE
35459 --Currency Conversion Rate
35460  , p_source_20            IN NUMBER
35461 --Currency Conversion Type
35462  , p_source_21            IN VARCHAR2
35463 --Accounted Amount
35464  , p_source_22            IN NUMBER
35465 --Accounting Line Type
35466  , p_source_24            IN NUMBER
35467 )
35468 IS
35469 
35470 l_component_type              VARCHAR2(80);
35471 l_component_code              VARCHAR2(30);
35472 l_component_type_code         VARCHAR2(1);
35473 l_component_appl_id           INTEGER;
35474 l_amb_context_code            VARCHAR2(30);
35475 l_entity_code                 VARCHAR2(30);
35476 l_event_class_code            VARCHAR2(30);
35477 l_ae_header_id                NUMBER;
35478 l_event_type_code             VARCHAR2(30);
35479 l_line_definition_code        VARCHAR2(30);
35480 l_line_definition_owner_code  VARCHAR2(1);
35481 --
35482 -- adr variables
35483 l_segment                     VARCHAR2(30);
35484 l_ccid                        NUMBER;
35485 l_adr_transaction_coa_id      NUMBER;
35486 l_adr_accounting_coa_id       NUMBER;
35487 l_adr_flexfield_segment_code  VARCHAR2(30);
35488 l_adr_flex_value_set_id       NUMBER;
35489 l_adr_value_type_code         VARCHAR2(30);
35490 l_adr_value_combination_id    NUMBER;
35491 l_adr_value_segment_code      VARCHAR2(30);
35492 
35493 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
35494 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
35495 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
35496 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
35497 
35498 -- 4262811 Variables ------------------------------------------------------------------------------------------
35499 l_entered_amt_idx             NUMBER;
35500 l_accted_amt_idx              NUMBER;
35501 l_acc_rev_flag                VARCHAR2(1);
35502 l_accrual_line_num            NUMBER;
35503 l_tmp_amt                     NUMBER;
35504 l_acc_rev_natural_side_code   VARCHAR2(1);
35505 
35506 l_num_entries                 NUMBER;
35507 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35508 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35509 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35510 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35511 l_recog_line_1                NUMBER;
35512 l_recog_line_2                NUMBER;
35513 
35514 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35515 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35516 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35517 
35518 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35519 
35520 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35521 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35522 
35523 ---------------------------------------------------------------------------------------------------------------
35524 
35525 
35526 --
35527 -- bulk performance
35528 --
35529 l_balance_type_code           VARCHAR2(1);
35530 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35531 l_log_module                  VARCHAR2(240);
35532 
35533 --
35534 -- Upgrade strategy
35535 --
35536 l_actual_upg_option           VARCHAR2(1);
35537 l_enc_upg_option           VARCHAR2(1);
35538 
35539 --
35540 BEGIN
35541 --
35542 IF g_log_enabled THEN
35543       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_67';
35544 END IF;
35545 --
35546 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35547 
35548       trace
35549          (p_msg      => 'BEGIN of AcctLineType_67'
35550          ,p_level    => C_LEVEL_PROCEDURE
35551          ,p_module   => l_log_module);
35552 
35553 END IF;
35554 --
35555 l_component_type             := 'AMB_JLT';
35556 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
35557 l_component_type_code        := 'S';
35558 l_component_appl_id          :=  707;
35559 l_amb_context_code           := 'DEFAULT';
35560 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
35561 l_event_class_code           := 'USER_DEFINE';
35562 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
35563 l_line_definition_owner_code := 'S';
35564 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
35565 --
35566 l_balance_type_code          := 'A';
35567 l_segment                     := NULL;
35568 l_ccid                        := NULL;
35569 l_adr_transaction_coa_id      := NULL;
35570 l_adr_accounting_coa_id       := NULL;
35571 l_adr_flexfield_segment_code  := NULL;
35572 l_adr_flex_value_set_id       := NULL;
35573 l_adr_value_type_code         := NULL;
35574 l_adr_value_combination_id    := NULL;
35575 l_adr_value_segment_code      := NULL;
35576 
35577 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35578 l_bflow_class_code           := '';    -- 4219869 Business Flow
35579 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35580 l_budgetary_control_flag     := 'N';
35581 
35582 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35583 l_bflow_applied_to_amt       := NULL; -- 5132302
35584 l_entered_amt_idx            := NULL;          -- 4262811
35585 l_accted_amt_idx             := NULL;          -- 4262811
35586 l_acc_rev_flag               := NULL;          -- 4262811
35587 l_accrual_line_num           := NULL;          -- 4262811
35588 l_tmp_amt                    := NULL;          -- 4262811
35589 --
35590  
35591 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35592     l_balance_type_code <> 'B' THEN
35593 IF NVL(p_source_24,9E125) =  12
35594  THEN 
35595 
35596    --
35597    XLA_AE_LINES_PKG.SetNewLine;
35598 
35599    p_balance_type_code          := l_balance_type_code;
35600    -- set the flag so later we will know whether the gain loss line needs to be created
35601    
35602    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35603      p_actual_flag :='A';
35604    END IF;
35605 
35606    --
35607    -- bulk performance
35608    --
35609    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35610                                       p_header_num   => 0); -- 4262811
35611    --
35612    -- set accounting line options
35613    --
35614    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35615            p_natural_side_code          => 'D'
35616          , p_gain_or_loss_flag          => 'N'
35617          , p_gl_transfer_mode_code      => 'S'
35618          , p_acct_entry_type_code       => 'A'
35619          , p_switch_side_flag           => 'Y'
35620          , p_merge_duplicate_code       => 'N'
35621          );
35622    --
35623    l_acc_rev_natural_side_code := 'C';  -- 4262811
35624    -- 
35625    --
35626    -- set accounting line type info
35627    --
35628    xla_ae_lines_pkg.SetAcctLineType
35629       (p_component_type             => l_component_type
35630       ,p_event_type_code            => l_event_type_code
35631       ,p_line_definition_owner_code => l_line_definition_owner_code
35632       ,p_line_definition_code       => l_line_definition_code
35633       ,p_accounting_line_code       => l_component_code
35634       ,p_accounting_line_type_code  => l_component_type_code
35635       ,p_accounting_line_appl_id    => l_component_appl_id
35636       ,p_amb_context_code           => l_amb_context_code
35637       ,p_entity_code                => l_entity_code
35638       ,p_event_class_code           => l_event_class_code);
35639    --
35640    -- set accounting class
35641    --
35642    xla_ae_lines_pkg.SetAcctClass(
35643            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
35644          , p_ae_header_id           => l_ae_header_id
35645          );
35646 
35647    --
35648    -- set rounding class
35649    --
35650    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35651                       'INTERORG_FREIGHT_CHARGE';
35652 
35653    --
35654    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35655    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35656    --
35657    -- bulk performance
35658    --
35659    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35660 
35661    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35662       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35663 
35664    -- 4955764
35665    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35666       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35667 
35668    -- 4458381 Public Sector Enh
35669    
35670    --
35671    -- set accounting attributes for the line type
35672    --
35673    l_entered_amt_idx := 3;
35674    l_accted_amt_idx  := 8;
35675    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35676    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
35677    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
35678    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
35679    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
35680    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
35681    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
35682    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
35683    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
35684    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
35685    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
35686    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
35687    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
35688    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
35689    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
35690    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
35691    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
35692 
35693    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35694    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35695 
35696    ---------------------------------------------------------------------------------------------------------------
35697    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35698    ---------------------------------------------------------------------------------------------------------------
35699    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35700 
35701    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35702    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35703 
35704    IF xla_accounting_cache_pkg.GetValueChar
35705          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35706          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35707    AND l_bflow_method_code = 'PRIOR_ENTRY'
35708 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35709    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35710          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35711        )
35712    THEN
35713          xla_ae_lines_pkg.BflowUpgEntry
35714            (p_business_method_code    => l_bflow_method_code
35715            ,p_business_class_code     => l_bflow_class_code
35716            ,p_balance_type            => l_balance_type_code);
35717    ELSE
35718       NULL;
35719 -- No business flow processing for business flow method of NONE.
35720    END IF;
35721 
35722    --
35723    -- call analytical criteria
35724    --
35725    
35726    --
35727    -- call description
35728    --
35729    -- No description or it is inherited.
35730    --
35731    -- call ADRs
35732    -- Bug 4922099
35733    --
35734    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35735         (NVL(l_actual_upg_option, 'N') = 'O') OR
35736         (NVL(l_enc_upg_option, 'N') = 'O')
35737       )
35738    THEN
35739    NULL;
35740    --
35741    --
35742    
35743   l_ccid := AcctDerRule_4(
35744            p_application_id           => p_application_id
35745          , p_ae_header_id             => l_ae_header_id 
35746 , p_source_4 => p_source_4
35747          , x_transaction_coa_id       => l_adr_transaction_coa_id
35748          , x_accounting_coa_id        => l_adr_accounting_coa_id
35749          , x_value_type_code          => l_adr_value_type_code
35750          , p_side                     => 'NA'
35751    );
35752 
35753    xla_ae_lines_pkg.set_ccid(
35754     p_code_combination_id          => l_ccid
35755   , p_value_type_code              => l_adr_value_type_code
35756   , p_transaction_coa_id           => l_adr_transaction_coa_id
35757   , p_accounting_coa_id            => l_adr_accounting_coa_id
35758   , p_adr_code                     => 'CST_DEFAULT'
35759   , p_adr_type_code                => 'S'
35760   , p_component_type               => l_component_type
35761   , p_component_code               => l_component_code
35762   , p_component_type_code          => l_component_type_code
35763   , p_component_appl_id            => l_component_appl_id
35764   , p_amb_context_code             => l_amb_context_code
35765   , p_side                         => 'NA'
35766   );
35767 
35768 
35769    --
35770    --
35771    END IF;
35772    --
35773    -- Bug 4922099
35774    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35775           (NVL(l_enc_upg_option, 'N') = 'O')
35776         ) AND
35777         (l_bflow_method_code = 'PRIOR_ENTRY')
35778       )
35779    THEN
35780       IF
35781       --
35782       1 = 2
35783       --
35784       THEN
35785       xla_accounting_err_pkg.build_message
35786                                     (p_appli_s_name            => 'XLA'
35787                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35788                                     ,p_token_1                 => 'LINE_NUMBER'
35789                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35790                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35791                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35792                                                                              l_component_type
35793                                                                             ,l_component_code
35794                                                                             ,l_component_type_code
35795                                                                             ,l_component_appl_id
35796                                                                             ,l_amb_context_code
35797                                                                             ,l_entity_code
35798                                                                             ,l_event_class_code
35799                                                                            )
35800                                     ,p_token_3                 => 'OWNER'
35801                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35802                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35803                                                                           ,p_lookup_code    => l_component_type_code
35804                                                                          )
35805                                     ,p_token_4                 => 'PRODUCT_NAME'
35806                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35807                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35808                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35809                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35810                                     ,p_ae_header_id            =>  NULL
35811                                        );
35812 
35813         IF (C_LEVEL_ERROR>= g_log_level) THEN
35814                  trace
35815                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35816                       ,p_level    => C_LEVEL_ERROR
35817                       ,p_module   => l_log_module);
35818         END IF;
35819       END IF;
35820    END IF;
35821    --
35822    --
35823    ------------------------------------------------------------------------------------------------
35824    -- 4219869 Business Flow
35825    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35826    -- Prior Entry.  Currently, the following code is always generated.
35827    ------------------------------------------------------------------------------------------------
35828    XLA_AE_LINES_PKG.ValidateCurrentLine;
35829 
35830    ------------------------------------------------------------------------------------
35831    -- 4219869 Business Flow
35832    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35833    ------------------------------------------------------------------------------------
35834    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35835 
35836    ----------------------------------------------------------------------------------
35837    -- 4219869 Business Flow
35838    -- Update journal entry status -- Need to generate this within IF <condition>
35839    ----------------------------------------------------------------------------------
35840    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35841          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35842          ,p_balance_type_code => l_balance_type_code
35843          );
35844 
35845    -------------------------------------------------------------------------------------------
35846    -- 4262811 - Generate the Accrual Reversal lines
35847    -------------------------------------------------------------------------------------------
35848    BEGIN
35849       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35850                               (g_array_event(p_event_id).array_value_num('header_index'));
35851       IF l_acc_rev_flag IS NULL THEN
35852          l_acc_rev_flag := 'N';
35853       END IF;
35854    EXCEPTION
35855       WHEN OTHERS THEN
35856          l_acc_rev_flag := 'N';
35857    END;
35858    --
35859    IF (l_acc_rev_flag = 'Y') THEN
35860 
35861        -- 4645092  ------------------------------------------------------------------------------
35862        -- To allow MPA report to determine if it should generate report process
35863        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35864        ------------------------------------------------------------------------------------------
35865 
35866        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35867        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35868    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
35869    -- call ADRs
35870    -- Bug 4922099
35871    --
35872    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35873         (NVL(l_actual_upg_option, 'N') = 'O') OR
35874         (NVL(l_enc_upg_option, 'N') = 'O')
35875       )
35876    THEN
35877    NULL;
35878    --
35879    --
35880    
35881   l_ccid := AcctDerRule_4(
35882            p_application_id           => p_application_id
35883          , p_ae_header_id             => l_ae_header_id 
35884 , p_source_4 => p_source_4
35885          , x_transaction_coa_id       => l_adr_transaction_coa_id
35886          , x_accounting_coa_id        => l_adr_accounting_coa_id
35887          , x_value_type_code          => l_adr_value_type_code
35888          , p_side                     => 'NA'
35889    );
35890 
35891    xla_ae_lines_pkg.set_ccid(
35892     p_code_combination_id          => l_ccid
35893   , p_value_type_code              => l_adr_value_type_code
35894   , p_transaction_coa_id           => l_adr_transaction_coa_id
35895   , p_accounting_coa_id            => l_adr_accounting_coa_id
35896   , p_adr_code                     => 'CST_DEFAULT'
35897   , p_adr_type_code                => 'S'
35898   , p_component_type               => l_component_type
35899   , p_component_code               => l_component_code
35900   , p_component_type_code          => l_component_type_code
35901   , p_component_appl_id            => l_component_appl_id
35902   , p_amb_context_code             => l_amb_context_code
35903   , p_side                         => 'NA'
35904   );
35905 
35906 
35907    --
35908    --
35909    END IF;
35910 
35911        --
35912        -- Update the line information that should be overwritten
35913        --
35914        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35915                                          p_header_num   => 1);
35916        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35917 
35918        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35919 
35920        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35921           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35922        END IF;
35923 
35924       --
35925       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35926       --
35927       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35928           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35929       ELSE
35930           ---------------------------------------------------------------------------------------------------
35931           -- 4262811a Switch Sign
35932           ---------------------------------------------------------------------------------------------------
35933           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35934           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35935                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35936           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35937                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35938           -- 5132302
35939           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35940                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35941 
35942       END IF;
35943 
35944       -- 4955764
35945       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35946       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35947 
35948 
35949       XLA_AE_LINES_PKG.ValidateCurrentLine;
35950       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35951 
35952       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35953                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35954                ,p_balance_type_code => l_balance_type_code);
35955 
35956    END IF;
35957 
35958    -----------------------------------------------------------------------------------------
35959    -- 4262811 Multiperiod Accounting
35960    -----------------------------------------------------------------------------------------
35961      -- No MPA option is assigned.
35962 
35963 
35964 END IF;
35965 END IF;
35966 --
35967 
35968 --
35969 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35970    trace
35971       (p_msg      => 'END of AcctLineType_67'
35972       ,p_level    => C_LEVEL_PROCEDURE
35973       ,p_module   => l_log_module);
35974 END IF;
35975 --
35976 EXCEPTION
35977   WHEN xla_exceptions_pkg.application_exception THEN
35978       RAISE;
35979   WHEN OTHERS THEN
35980        xla_exceptions_pkg.raise_message
35981            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_67');
35982 END AcctLineType_67;
35983 --
35984 
35985 ---------------------------------------
35986 --
35987 -- PRIVATE FUNCTION
35988 --         AcctLineType_68
35989 --
35990 ---------------------------------------
35991 PROCEDURE AcctLineType_68 (
35992   p_application_id        IN NUMBER
35993  ,p_event_id              IN NUMBER
35994  ,p_calculate_acctd_flag  IN VARCHAR2
35995  ,p_calculate_g_l_flag    IN VARCHAR2
35996  ,p_actual_flag           IN OUT VARCHAR2
35997  ,p_balance_type_code     OUT VARCHAR2
35998  ,p_gain_or_loss_ref      OUT VARCHAR2
35999  
36000 --Cost Management Default Account
36001  , p_source_4            IN NUMBER
36002 --DISTRIBUTION_IDENTIFIER
36003  , p_source_11            IN NUMBER
36004 --Distribution Type
36005  , p_source_12            IN VARCHAR2
36006  , p_source_12_meaning    IN VARCHAR2
36007 --Entered Currency Code
36008  , p_source_15            IN VARCHAR2
36009 --Entered Amount
36010  , p_source_18            IN NUMBER
36011 --Currency Conversion Date
36012  , p_source_19            IN DATE
36013 --Currency Conversion Rate
36014  , p_source_20            IN NUMBER
36015 --Currency Conversion Type
36016  , p_source_21            IN VARCHAR2
36017 --Accounted Amount
36018  , p_source_22            IN NUMBER
36019 --Accounting Line Type
36020  , p_source_24            IN NUMBER
36021 )
36022 IS
36023 
36024 l_component_type              VARCHAR2(80);
36025 l_component_code              VARCHAR2(30);
36026 l_component_type_code         VARCHAR2(1);
36027 l_component_appl_id           INTEGER;
36028 l_amb_context_code            VARCHAR2(30);
36029 l_entity_code                 VARCHAR2(30);
36030 l_event_class_code            VARCHAR2(30);
36031 l_ae_header_id                NUMBER;
36032 l_event_type_code             VARCHAR2(30);
36033 l_line_definition_code        VARCHAR2(30);
36034 l_line_definition_owner_code  VARCHAR2(1);
36035 --
36036 -- adr variables
36037 l_segment                     VARCHAR2(30);
36038 l_ccid                        NUMBER;
36039 l_adr_transaction_coa_id      NUMBER;
36040 l_adr_accounting_coa_id       NUMBER;
36041 l_adr_flexfield_segment_code  VARCHAR2(30);
36042 l_adr_flex_value_set_id       NUMBER;
36043 l_adr_value_type_code         VARCHAR2(30);
36044 l_adr_value_combination_id    NUMBER;
36045 l_adr_value_segment_code      VARCHAR2(30);
36046 
36047 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36048 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36049 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36050 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36051 
36052 -- 4262811 Variables ------------------------------------------------------------------------------------------
36053 l_entered_amt_idx             NUMBER;
36054 l_accted_amt_idx              NUMBER;
36055 l_acc_rev_flag                VARCHAR2(1);
36056 l_accrual_line_num            NUMBER;
36057 l_tmp_amt                     NUMBER;
36058 l_acc_rev_natural_side_code   VARCHAR2(1);
36059 
36060 l_num_entries                 NUMBER;
36061 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36062 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36063 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36064 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36065 l_recog_line_1                NUMBER;
36066 l_recog_line_2                NUMBER;
36067 
36068 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36069 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36070 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36071 
36072 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36073 
36074 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36075 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36076 
36077 ---------------------------------------------------------------------------------------------------------------
36078 
36079 
36080 --
36081 -- bulk performance
36082 --
36083 l_balance_type_code           VARCHAR2(1);
36084 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36085 l_log_module                  VARCHAR2(240);
36086 
36087 --
36088 -- Upgrade strategy
36089 --
36090 l_actual_upg_option           VARCHAR2(1);
36091 l_enc_upg_option           VARCHAR2(1);
36092 
36093 --
36094 BEGIN
36095 --
36096 IF g_log_enabled THEN
36097       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_68';
36098 END IF;
36099 --
36100 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36101 
36102       trace
36103          (p_msg      => 'BEGIN of AcctLineType_68'
36104          ,p_level    => C_LEVEL_PROCEDURE
36105          ,p_module   => l_log_module);
36106 
36107 END IF;
36108 --
36109 l_component_type             := 'AMB_JLT';
36110 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
36111 l_component_type_code        := 'S';
36112 l_component_appl_id          :=  707;
36113 l_amb_context_code           := 'DEFAULT';
36114 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
36115 l_event_class_code           := 'USER_DEFINE';
36116 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
36117 l_line_definition_owner_code := 'S';
36118 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
36119 --
36120 l_balance_type_code          := 'A';
36121 l_segment                     := NULL;
36122 l_ccid                        := NULL;
36123 l_adr_transaction_coa_id      := NULL;
36124 l_adr_accounting_coa_id       := NULL;
36125 l_adr_flexfield_segment_code  := NULL;
36126 l_adr_flex_value_set_id       := NULL;
36127 l_adr_value_type_code         := NULL;
36128 l_adr_value_combination_id    := NULL;
36129 l_adr_value_segment_code      := NULL;
36130 
36131 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
36132 l_bflow_class_code           := '';    -- 4219869 Business Flow
36133 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
36134 l_budgetary_control_flag     := 'N';
36135 
36136 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36137 l_bflow_applied_to_amt       := NULL; -- 5132302
36138 l_entered_amt_idx            := NULL;          -- 4262811
36139 l_accted_amt_idx             := NULL;          -- 4262811
36140 l_acc_rev_flag               := NULL;          -- 4262811
36141 l_accrual_line_num           := NULL;          -- 4262811
36142 l_tmp_amt                    := NULL;          -- 4262811
36143 --
36144  
36145 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36146     l_balance_type_code <> 'B' THEN
36147 IF NVL(p_source_24,9E125) =  12
36148  THEN 
36149 
36150    --
36151    XLA_AE_LINES_PKG.SetNewLine;
36152 
36153    p_balance_type_code          := l_balance_type_code;
36154    -- set the flag so later we will know whether the gain loss line needs to be created
36155    
36156    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36157      p_actual_flag :='A';
36158    END IF;
36159 
36160    --
36161    -- bulk performance
36162    --
36163    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36164                                       p_header_num   => 0); -- 4262811
36165    --
36166    -- set accounting line options
36167    --
36168    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36169            p_natural_side_code          => 'D'
36170          , p_gain_or_loss_flag          => 'N'
36171          , p_gl_transfer_mode_code      => 'S'
36172          , p_acct_entry_type_code       => 'A'
36173          , p_switch_side_flag           => 'Y'
36174          , p_merge_duplicate_code       => 'N'
36175          );
36176    --
36177    l_acc_rev_natural_side_code := 'C';  -- 4262811
36178    -- 
36179    --
36180    -- set accounting line type info
36181    --
36182    xla_ae_lines_pkg.SetAcctLineType
36183       (p_component_type             => l_component_type
36184       ,p_event_type_code            => l_event_type_code
36185       ,p_line_definition_owner_code => l_line_definition_owner_code
36186       ,p_line_definition_code       => l_line_definition_code
36187       ,p_accounting_line_code       => l_component_code
36188       ,p_accounting_line_type_code  => l_component_type_code
36189       ,p_accounting_line_appl_id    => l_component_appl_id
36190       ,p_amb_context_code           => l_amb_context_code
36191       ,p_entity_code                => l_entity_code
36192       ,p_event_class_code           => l_event_class_code);
36193    --
36194    -- set accounting class
36195    --
36196    xla_ae_lines_pkg.SetAcctClass(
36197            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
36198          , p_ae_header_id           => l_ae_header_id
36199          );
36200 
36201    --
36202    -- set rounding class
36203    --
36204    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36205                       'INTERORG_FREIGHT_CHARGE';
36206 
36207    --
36208    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36209    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36210    --
36211    -- bulk performance
36212    --
36213    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36214 
36215    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36216       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36217 
36218    -- 4955764
36219    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36220       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36221 
36222    -- 4458381 Public Sector Enh
36223    
36224    --
36225    -- set accounting attributes for the line type
36226    --
36227    l_entered_amt_idx := 3;
36228    l_accted_amt_idx  := 8;
36229    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
36230    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
36231    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
36232    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
36233    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
36234    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
36235    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
36236    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
36237    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
36238    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
36239    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
36240    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
36241    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
36242    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
36243    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
36244    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
36245    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
36246 
36247    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36248    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36249 
36250    ---------------------------------------------------------------------------------------------------------------
36251    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36252    ---------------------------------------------------------------------------------------------------------------
36253    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36254 
36255    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36256    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36257 
36258    IF xla_accounting_cache_pkg.GetValueChar
36259          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36260          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36261    AND l_bflow_method_code = 'PRIOR_ENTRY'
36262 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36263    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36264          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36265        )
36266    THEN
36267          xla_ae_lines_pkg.BflowUpgEntry
36268            (p_business_method_code    => l_bflow_method_code
36269            ,p_business_class_code     => l_bflow_class_code
36270            ,p_balance_type            => l_balance_type_code);
36271    ELSE
36272       NULL;
36273 -- No business flow processing for business flow method of NONE.
36274    END IF;
36275 
36276    --
36277    -- call analytical criteria
36278    --
36279    
36280    --
36281    -- call description
36282    --
36283    -- No description or it is inherited.
36284    --
36285    -- call ADRs
36286    -- Bug 4922099
36287    --
36288    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36289         (NVL(l_actual_upg_option, 'N') = 'O') OR
36290         (NVL(l_enc_upg_option, 'N') = 'O')
36291       )
36292    THEN
36293    NULL;
36294    --
36295    --
36296    
36297   l_ccid := AcctDerRule_4(
36298            p_application_id           => p_application_id
36299          , p_ae_header_id             => l_ae_header_id 
36300 , p_source_4 => p_source_4
36301          , x_transaction_coa_id       => l_adr_transaction_coa_id
36302          , x_accounting_coa_id        => l_adr_accounting_coa_id
36303          , x_value_type_code          => l_adr_value_type_code
36304          , p_side                     => 'NA'
36305    );
36306 
36307    xla_ae_lines_pkg.set_ccid(
36308     p_code_combination_id          => l_ccid
36309   , p_value_type_code              => l_adr_value_type_code
36310   , p_transaction_coa_id           => l_adr_transaction_coa_id
36311   , p_accounting_coa_id            => l_adr_accounting_coa_id
36312   , p_adr_code                     => 'CST_DEFAULT'
36313   , p_adr_type_code                => 'S'
36314   , p_component_type               => l_component_type
36315   , p_component_code               => l_component_code
36316   , p_component_type_code          => l_component_type_code
36317   , p_component_appl_id            => l_component_appl_id
36318   , p_amb_context_code             => l_amb_context_code
36319   , p_side                         => 'NA'
36320   );
36321 
36322 
36323    --
36324    --
36325    END IF;
36326    --
36327    -- Bug 4922099
36328    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36329           (NVL(l_enc_upg_option, 'N') = 'O')
36330         ) AND
36331         (l_bflow_method_code = 'PRIOR_ENTRY')
36332       )
36333    THEN
36334       IF
36335       --
36336       1 = 2
36337       --
36338       THEN
36339       xla_accounting_err_pkg.build_message
36340                                     (p_appli_s_name            => 'XLA'
36341                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36342                                     ,p_token_1                 => 'LINE_NUMBER'
36343                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36344                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36345                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36346                                                                              l_component_type
36347                                                                             ,l_component_code
36348                                                                             ,l_component_type_code
36349                                                                             ,l_component_appl_id
36350                                                                             ,l_amb_context_code
36351                                                                             ,l_entity_code
36352                                                                             ,l_event_class_code
36353                                                                            )
36354                                     ,p_token_3                 => 'OWNER'
36355                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36356                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36357                                                                           ,p_lookup_code    => l_component_type_code
36358                                                                          )
36359                                     ,p_token_4                 => 'PRODUCT_NAME'
36360                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36361                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36362                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36363                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36364                                     ,p_ae_header_id            =>  NULL
36365                                        );
36366 
36367         IF (C_LEVEL_ERROR>= g_log_level) THEN
36368                  trace
36369                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36370                       ,p_level    => C_LEVEL_ERROR
36371                       ,p_module   => l_log_module);
36372         END IF;
36373       END IF;
36374    END IF;
36375    --
36376    --
36377    ------------------------------------------------------------------------------------------------
36378    -- 4219869 Business Flow
36379    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36380    -- Prior Entry.  Currently, the following code is always generated.
36381    ------------------------------------------------------------------------------------------------
36382    XLA_AE_LINES_PKG.ValidateCurrentLine;
36383 
36384    ------------------------------------------------------------------------------------
36385    -- 4219869 Business Flow
36386    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36387    ------------------------------------------------------------------------------------
36388    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36389 
36390    ----------------------------------------------------------------------------------
36391    -- 4219869 Business Flow
36392    -- Update journal entry status -- Need to generate this within IF <condition>
36393    ----------------------------------------------------------------------------------
36394    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36395          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36396          ,p_balance_type_code => l_balance_type_code
36397          );
36398 
36399    -------------------------------------------------------------------------------------------
36400    -- 4262811 - Generate the Accrual Reversal lines
36401    -------------------------------------------------------------------------------------------
36402    BEGIN
36403       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36404                               (g_array_event(p_event_id).array_value_num('header_index'));
36405       IF l_acc_rev_flag IS NULL THEN
36406          l_acc_rev_flag := 'N';
36407       END IF;
36408    EXCEPTION
36409       WHEN OTHERS THEN
36410          l_acc_rev_flag := 'N';
36411    END;
36412    --
36413    IF (l_acc_rev_flag = 'Y') THEN
36414 
36415        -- 4645092  ------------------------------------------------------------------------------
36416        -- To allow MPA report to determine if it should generate report process
36417        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36418        ------------------------------------------------------------------------------------------
36419 
36420        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36421        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36422    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
36423    -- call ADRs
36424    -- Bug 4922099
36425    --
36426    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36427         (NVL(l_actual_upg_option, 'N') = 'O') OR
36428         (NVL(l_enc_upg_option, 'N') = 'O')
36429       )
36430    THEN
36431    NULL;
36432    --
36433    --
36434    
36435   l_ccid := AcctDerRule_4(
36436            p_application_id           => p_application_id
36437          , p_ae_header_id             => l_ae_header_id 
36438 , p_source_4 => p_source_4
36439          , x_transaction_coa_id       => l_adr_transaction_coa_id
36440          , x_accounting_coa_id        => l_adr_accounting_coa_id
36441          , x_value_type_code          => l_adr_value_type_code
36442          , p_side                     => 'NA'
36443    );
36444 
36445    xla_ae_lines_pkg.set_ccid(
36446     p_code_combination_id          => l_ccid
36447   , p_value_type_code              => l_adr_value_type_code
36448   , p_transaction_coa_id           => l_adr_transaction_coa_id
36449   , p_accounting_coa_id            => l_adr_accounting_coa_id
36450   , p_adr_code                     => 'CST_DEFAULT'
36451   , p_adr_type_code                => 'S'
36452   , p_component_type               => l_component_type
36453   , p_component_code               => l_component_code
36454   , p_component_type_code          => l_component_type_code
36455   , p_component_appl_id            => l_component_appl_id
36456   , p_amb_context_code             => l_amb_context_code
36457   , p_side                         => 'NA'
36458   );
36459 
36460 
36461    --
36462    --
36463    END IF;
36464 
36465        --
36466        -- Update the line information that should be overwritten
36467        --
36468        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36469                                          p_header_num   => 1);
36470        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36471 
36472        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36473 
36474        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36475           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36476        END IF;
36477 
36478       --
36479       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36480       --
36481       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36482           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36483       ELSE
36484           ---------------------------------------------------------------------------------------------------
36485           -- 4262811a Switch Sign
36486           ---------------------------------------------------------------------------------------------------
36487           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36488           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36489                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36490           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36491                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36492           -- 5132302
36493           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36494                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36495 
36496       END IF;
36497 
36498       -- 4955764
36499       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36500       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36501 
36502 
36503       XLA_AE_LINES_PKG.ValidateCurrentLine;
36504       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36505 
36506       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36507                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36508                ,p_balance_type_code => l_balance_type_code);
36509 
36510    END IF;
36511 
36512    -----------------------------------------------------------------------------------------
36513    -- 4262811 Multiperiod Accounting
36514    -----------------------------------------------------------------------------------------
36515      -- No MPA option is assigned.
36516 
36517 
36518 END IF;
36519 END IF;
36520 --
36521 
36522 --
36523 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36524    trace
36525       (p_msg      => 'END of AcctLineType_68'
36526       ,p_level    => C_LEVEL_PROCEDURE
36527       ,p_module   => l_log_module);
36528 END IF;
36529 --
36530 EXCEPTION
36531   WHEN xla_exceptions_pkg.application_exception THEN
36532       RAISE;
36533   WHEN OTHERS THEN
36534        xla_exceptions_pkg.raise_message
36535            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_68');
36536 END AcctLineType_68;
36537 --
36538 
36539 ---------------------------------------
36540 --
36541 -- PRIVATE FUNCTION
36542 --         AcctLineType_69
36543 --
36544 ---------------------------------------
36545 PROCEDURE AcctLineType_69 (
36546   p_application_id        IN NUMBER
36547  ,p_event_id              IN NUMBER
36548  ,p_calculate_acctd_flag  IN VARCHAR2
36549  ,p_calculate_g_l_flag    IN VARCHAR2
36550  ,p_actual_flag           IN OUT VARCHAR2
36551  ,p_balance_type_code     OUT VARCHAR2
36552  ,p_gain_or_loss_ref      OUT VARCHAR2
36553  
36554 --Cost Management Default Account
36555  , p_source_4            IN NUMBER
36556 --Applied to Application ID
36557  , p_source_6            IN NUMBER
36558 --Applied to Distribution Link Type
36559  , p_source_7            IN VARCHAR2
36560 --Applied to Entity Code
36561  , p_source_8            IN VARCHAR2
36562 --DISTRIBUTION_IDENTIFIER
36563  , p_source_11            IN NUMBER
36564 --Distribution Type
36565  , p_source_12            IN VARCHAR2
36566  , p_source_12_meaning    IN VARCHAR2
36567 --Encumbrance Reversal Amount Entered
36568  , p_source_14            IN NUMBER
36569 --Entered Currency Code
36570  , p_source_15            IN VARCHAR2
36571 --Transaction Encumbrance Reversal Amount
36572  , p_source_16            IN NUMBER
36573 --Entered Amount
36574  , p_source_18            IN NUMBER
36575 --Currency Conversion Date
36576  , p_source_19            IN DATE
36577 --Currency Conversion Rate
36578  , p_source_20            IN NUMBER
36579 --Currency Conversion Type
36580  , p_source_21            IN VARCHAR2
36581 --Accounted Amount
36582  , p_source_22            IN NUMBER
36583 --Accounting Line Type
36584  , p_source_24            IN NUMBER
36585 --Costing Encumbrance Upgrade Option
36586  , p_source_27            IN VARCHAR2
36587 --TXN_PO_DISTRIBUTION_ID
36588  , p_source_28            IN NUMBER
36589 --TXN_PO_HEADER_ID
36590  , p_source_29            IN NUMBER
36591 --Requisition Budget Account
36592  , p_source_30            IN NUMBER
36593 --Requisition Encumbrance Type Identifier
36594  , p_source_31            IN NUMBER
36595 )
36596 IS
36597 
36598 l_component_type              VARCHAR2(80);
36599 l_component_code              VARCHAR2(30);
36600 l_component_type_code         VARCHAR2(1);
36601 l_component_appl_id           INTEGER;
36602 l_amb_context_code            VARCHAR2(30);
36603 l_entity_code                 VARCHAR2(30);
36604 l_event_class_code            VARCHAR2(30);
36605 l_ae_header_id                NUMBER;
36606 l_event_type_code             VARCHAR2(30);
36607 l_line_definition_code        VARCHAR2(30);
36608 l_line_definition_owner_code  VARCHAR2(1);
36609 --
36610 -- adr variables
36611 l_segment                     VARCHAR2(30);
36612 l_ccid                        NUMBER;
36613 l_adr_transaction_coa_id      NUMBER;
36614 l_adr_accounting_coa_id       NUMBER;
36615 l_adr_flexfield_segment_code  VARCHAR2(30);
36616 l_adr_flex_value_set_id       NUMBER;
36617 l_adr_value_type_code         VARCHAR2(30);
36618 l_adr_value_combination_id    NUMBER;
36619 l_adr_value_segment_code      VARCHAR2(30);
36620 
36621 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36622 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36623 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36624 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36625 
36626 -- 4262811 Variables ------------------------------------------------------------------------------------------
36627 l_entered_amt_idx             NUMBER;
36628 l_accted_amt_idx              NUMBER;
36629 l_acc_rev_flag                VARCHAR2(1);
36630 l_accrual_line_num            NUMBER;
36631 l_tmp_amt                     NUMBER;
36632 l_acc_rev_natural_side_code   VARCHAR2(1);
36633 
36634 l_num_entries                 NUMBER;
36635 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36636 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36637 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36638 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36639 l_recog_line_1                NUMBER;
36640 l_recog_line_2                NUMBER;
36641 
36642 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36643 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36644 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36645 
36646 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36647 
36648 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36649 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36650 
36651 ---------------------------------------------------------------------------------------------------------------
36652 
36653 
36654 --
36655 -- bulk performance
36656 --
36657 l_balance_type_code           VARCHAR2(1);
36658 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36659 l_log_module                  VARCHAR2(240);
36660 
36661 --
36662 -- Upgrade strategy
36663 --
36664 l_actual_upg_option           VARCHAR2(1);
36665 l_enc_upg_option           VARCHAR2(1);
36666 
36667 --
36668 BEGIN
36669 --
36670 IF g_log_enabled THEN
36671       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_69';
36672 END IF;
36673 --
36674 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36675 
36676       trace
36677          (p_msg      => 'BEGIN of AcctLineType_69'
36678          ,p_level    => C_LEVEL_PROCEDURE
36679          ,p_module   => l_log_module);
36680 
36681 END IF;
36682 --
36683 l_component_type             := 'AMB_JLT';
36684 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
36685 l_component_type_code        := 'S';
36686 l_component_appl_id          :=  707;
36687 l_amb_context_code           := 'DEFAULT';
36688 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
36689 l_event_class_code           := 'DIR_INTERORG_RCPT';
36690 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
36691 l_line_definition_owner_code := 'S';
36692 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
36693 --
36694 l_balance_type_code          := 'A';
36695 l_segment                     := NULL;
36696 l_ccid                        := NULL;
36697 l_adr_transaction_coa_id      := NULL;
36698 l_adr_accounting_coa_id       := NULL;
36699 l_adr_flexfield_segment_code  := NULL;
36700 l_adr_flex_value_set_id       := NULL;
36701 l_adr_value_type_code         := NULL;
36702 l_adr_value_combination_id    := NULL;
36703 l_adr_value_segment_code      := NULL;
36704 
36705 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
36706 l_bflow_class_code           := '';    -- 4219869 Business Flow
36707 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
36708 l_budgetary_control_flag     := 'N';
36709 
36710 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36711 l_bflow_applied_to_amt       := NULL; -- 5132302
36712 l_entered_amt_idx            := NULL;          -- 4262811
36713 l_accted_amt_idx             := NULL;          -- 4262811
36714 l_acc_rev_flag               := NULL;          -- 4262811
36715 l_accrual_line_num           := NULL;          -- 4262811
36716 l_tmp_amt                    := NULL;          -- 4262811
36717 --
36718  
36719 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36720     l_balance_type_code <> 'B' THEN
36721 IF NVL(p_source_24,9E125) =  12
36722  THEN 
36723 
36724    --
36725    XLA_AE_LINES_PKG.SetNewLine;
36726 
36727    p_balance_type_code          := l_balance_type_code;
36728    -- set the flag so later we will know whether the gain loss line needs to be created
36729    
36730    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36731      p_actual_flag :='A';
36732    END IF;
36733 
36734    --
36735    -- bulk performance
36736    --
36737    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36738                                       p_header_num   => 0); -- 4262811
36739    --
36740    -- set accounting line options
36741    --
36742    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36743            p_natural_side_code          => 'D'
36744          , p_gain_or_loss_flag          => 'N'
36745          , p_gl_transfer_mode_code      => 'S'
36746          , p_acct_entry_type_code       => 'A'
36747          , p_switch_side_flag           => 'Y'
36748          , p_merge_duplicate_code       => 'N'
36749          );
36750    --
36751    l_acc_rev_natural_side_code := 'C';  -- 4262811
36752    -- 
36753    --
36754    -- set accounting line type info
36755    --
36756    xla_ae_lines_pkg.SetAcctLineType
36757       (p_component_type             => l_component_type
36758       ,p_event_type_code            => l_event_type_code
36759       ,p_line_definition_owner_code => l_line_definition_owner_code
36760       ,p_line_definition_code       => l_line_definition_code
36761       ,p_accounting_line_code       => l_component_code
36762       ,p_accounting_line_type_code  => l_component_type_code
36763       ,p_accounting_line_appl_id    => l_component_appl_id
36764       ,p_amb_context_code           => l_amb_context_code
36765       ,p_entity_code                => l_entity_code
36766       ,p_event_class_code           => l_event_class_code);
36767    --
36768    -- set accounting class
36769    --
36770    xla_ae_lines_pkg.SetAcctClass(
36771            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
36772          , p_ae_header_id           => l_ae_header_id
36773          );
36774 
36775    --
36776    -- set rounding class
36777    --
36778    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36779                       'INTERORG_FREIGHT_CHARGE';
36780 
36781    --
36782    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36783    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36784    --
36785    -- bulk performance
36786    --
36787    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36788 
36789    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36790       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36791 
36792    -- 4955764
36793    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36794       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36795 
36796    -- 4458381 Public Sector Enh
36797    
36798    --
36799    -- set accounting attributes for the line type
36800    --
36801    l_entered_amt_idx := 17;
36802    l_accted_amt_idx  := 22;
36803    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
36804    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
36805    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
36806    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
36807    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
36808    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
36809    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
36810    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
36811    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
36812    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
36813    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
36814    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
36815    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
36816    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
36817    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
36818    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
36819    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
36820    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
36821    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
36822    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
36823    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
36824    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
36825    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
36826    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
36827    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
36828    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
36829    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
36830    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
36831    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
36832    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
36833    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
36834    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
36835    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
36836    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
36837    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
36838    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
36839    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
36840    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
36841    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
36842    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
36843    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
36844    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
36845    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
36846    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
36847    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
36848    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
36849    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
36850    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
36851    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
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_000007_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_PAYABLES';
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           := 'USER_DEFINE';
37276 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
37277 l_line_definition_owner_code := 'S';
37278 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
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) =  9
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_PAYABLES'
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_PAYABLES';
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_000007_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_PAYABLES';
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_TP';
37831 l_line_definition_owner_code := 'S';
37832 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
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) =  9
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_PAYABLES'
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_PAYABLES';
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_000007_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 --Applied to Application ID
38271  , p_source_6            IN NUMBER
38272 --Applied to Distribution Link Type
38273  , p_source_7            IN VARCHAR2
38274 --Applied to Entity Code
38275  , p_source_8            IN VARCHAR2
38276 --DISTRIBUTION_IDENTIFIER
38277  , p_source_11            IN NUMBER
38278 --Distribution Type
38279  , p_source_12            IN VARCHAR2
38280  , p_source_12_meaning    IN VARCHAR2
38281 --Encumbrance Reversal Amount Entered
38282  , p_source_14            IN NUMBER
38283 --Entered Currency Code
38284  , p_source_15            IN VARCHAR2
38285 --Transaction Encumbrance Reversal Amount
38286  , p_source_16            IN NUMBER
38287 --Entered Amount
38288  , p_source_18            IN NUMBER
38289 --Currency Conversion Date
38290  , p_source_19            IN DATE
38291 --Currency Conversion Rate
38292  , p_source_20            IN NUMBER
38293 --Currency Conversion Type
38294  , p_source_21            IN VARCHAR2
38295 --Accounted Amount
38296  , p_source_22            IN NUMBER
38297 --Accounting Line Type
38298  , p_source_24            IN NUMBER
38299 --Costing Encumbrance Upgrade Option
38300  , p_source_27            IN VARCHAR2
38301 --TXN_PO_DISTRIBUTION_ID
38302  , p_source_28            IN NUMBER
38303 --TXN_PO_HEADER_ID
38304  , p_source_29            IN NUMBER
38305 --Requisition Budget Account
38306  , p_source_30            IN NUMBER
38307 --Requisition Encumbrance Type Identifier
38308  , p_source_31            IN NUMBER
38309 )
38310 IS
38311 
38312 l_component_type              VARCHAR2(80);
38313 l_component_code              VARCHAR2(30);
38314 l_component_type_code         VARCHAR2(1);
38315 l_component_appl_id           INTEGER;
38316 l_amb_context_code            VARCHAR2(30);
38317 l_entity_code                 VARCHAR2(30);
38318 l_event_class_code            VARCHAR2(30);
38319 l_ae_header_id                NUMBER;
38320 l_event_type_code             VARCHAR2(30);
38321 l_line_definition_code        VARCHAR2(30);
38322 l_line_definition_owner_code  VARCHAR2(1);
38323 --
38324 -- adr variables
38325 l_segment                     VARCHAR2(30);
38326 l_ccid                        NUMBER;
38327 l_adr_transaction_coa_id      NUMBER;
38328 l_adr_accounting_coa_id       NUMBER;
38329 l_adr_flexfield_segment_code  VARCHAR2(30);
38330 l_adr_flex_value_set_id       NUMBER;
38331 l_adr_value_type_code         VARCHAR2(30);
38332 l_adr_value_combination_id    NUMBER;
38333 l_adr_value_segment_code      VARCHAR2(30);
38334 
38335 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38336 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38337 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38338 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38339 
38340 -- 4262811 Variables ------------------------------------------------------------------------------------------
38341 l_entered_amt_idx             NUMBER;
38342 l_accted_amt_idx              NUMBER;
38343 l_acc_rev_flag                VARCHAR2(1);
38344 l_accrual_line_num            NUMBER;
38345 l_tmp_amt                     NUMBER;
38346 l_acc_rev_natural_side_code   VARCHAR2(1);
38347 
38348 l_num_entries                 NUMBER;
38349 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38350 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38351 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38352 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38353 l_recog_line_1                NUMBER;
38354 l_recog_line_2                NUMBER;
38355 
38356 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38357 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38358 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38359 
38360 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38361 
38362 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38363 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38364 
38365 ---------------------------------------------------------------------------------------------------------------
38366 
38367 
38368 --
38369 -- bulk performance
38370 --
38371 l_balance_type_code           VARCHAR2(1);
38372 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38373 l_log_module                  VARCHAR2(240);
38374 
38375 --
38376 -- Upgrade strategy
38377 --
38378 l_actual_upg_option           VARCHAR2(1);
38379 l_enc_upg_option           VARCHAR2(1);
38380 
38381 --
38382 BEGIN
38383 --
38384 IF g_log_enabled THEN
38385       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_72';
38386 END IF;
38387 --
38388 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38389 
38390       trace
38391          (p_msg      => 'BEGIN of AcctLineType_72'
38392          ,p_level    => C_LEVEL_PROCEDURE
38393          ,p_module   => l_log_module);
38394 
38395 END IF;
38396 --
38397 l_component_type             := 'AMB_JLT';
38398 l_component_code             := 'INTERORG_PAYABLES';
38399 l_component_type_code        := 'S';
38400 l_component_appl_id          :=  707;
38401 l_amb_context_code           := 'DEFAULT';
38402 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
38403 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
38404 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
38405 l_line_definition_owner_code := 'S';
38406 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT';
38407 --
38408 l_balance_type_code          := 'A';
38409 l_segment                     := NULL;
38410 l_ccid                        := NULL;
38411 l_adr_transaction_coa_id      := NULL;
38412 l_adr_accounting_coa_id       := NULL;
38413 l_adr_flexfield_segment_code  := NULL;
38414 l_adr_flex_value_set_id       := NULL;
38415 l_adr_value_type_code         := NULL;
38416 l_adr_value_combination_id    := NULL;
38417 l_adr_value_segment_code      := NULL;
38418 
38419 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38420 l_bflow_class_code           := '';    -- 4219869 Business Flow
38421 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38422 l_budgetary_control_flag     := 'N';
38423 
38424 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38425 l_bflow_applied_to_amt       := NULL; -- 5132302
38426 l_entered_amt_idx            := NULL;          -- 4262811
38427 l_accted_amt_idx             := NULL;          -- 4262811
38428 l_acc_rev_flag               := NULL;          -- 4262811
38429 l_accrual_line_num           := NULL;          -- 4262811
38430 l_tmp_amt                    := NULL;          -- 4262811
38431 --
38432  
38433 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38434     l_balance_type_code <> 'B' THEN
38435 IF NVL(p_source_24,9E125) =  9
38436  THEN 
38437 
38438    --
38439    XLA_AE_LINES_PKG.SetNewLine;
38440 
38441    p_balance_type_code          := l_balance_type_code;
38442    -- set the flag so later we will know whether the gain loss line needs to be created
38443    
38444    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38445      p_actual_flag :='A';
38446    END IF;
38447 
38448    --
38449    -- bulk performance
38450    --
38451    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38452                                       p_header_num   => 0); -- 4262811
38453    --
38454    -- set accounting line options
38455    --
38456    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38457            p_natural_side_code          => 'D'
38458          , p_gain_or_loss_flag          => 'N'
38459          , p_gl_transfer_mode_code      => 'S'
38460          , p_acct_entry_type_code       => 'A'
38461          , p_switch_side_flag           => 'Y'
38462          , p_merge_duplicate_code       => 'N'
38463          );
38464    --
38465    l_acc_rev_natural_side_code := 'C';  -- 4262811
38466    -- 
38467    --
38468    -- set accounting line type info
38469    --
38470    xla_ae_lines_pkg.SetAcctLineType
38471       (p_component_type             => l_component_type
38472       ,p_event_type_code            => l_event_type_code
38473       ,p_line_definition_owner_code => l_line_definition_owner_code
38474       ,p_line_definition_code       => l_line_definition_code
38475       ,p_accounting_line_code       => l_component_code
38476       ,p_accounting_line_type_code  => l_component_type_code
38477       ,p_accounting_line_appl_id    => l_component_appl_id
38478       ,p_amb_context_code           => l_amb_context_code
38479       ,p_entity_code                => l_entity_code
38480       ,p_event_class_code           => l_event_class_code);
38481    --
38482    -- set accounting class
38483    --
38484    xla_ae_lines_pkg.SetAcctClass(
38485            p_accounting_class_code  => 'INTERORG_PAYABLES'
38486          , p_ae_header_id           => l_ae_header_id
38487          );
38488 
38489    --
38490    -- set rounding class
38491    --
38492    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38493                       'INTERORG_PAYABLES';
38494 
38495    --
38496    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38497    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38498    --
38499    -- bulk performance
38500    --
38501    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38502 
38503    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38504       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38505 
38506    -- 4955764
38507    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38508       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38509 
38510    -- 4458381 Public Sector Enh
38511    
38512    --
38513    -- set accounting attributes for the line type
38514    --
38515    l_entered_amt_idx := 17;
38516    l_accted_amt_idx  := 22;
38517    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
38518    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
38519    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
38520    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
38521    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
38522    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
38523    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
38524    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
38525    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
38526    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
38527    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
38528    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
38529    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
38530    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
38531    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
38532    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
38533    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
38534    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
38535    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
38536    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
38537    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
38538    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
38539    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
38540    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
38541    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
38542    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
38543    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
38544    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
38545    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
38546    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
38547    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
38548    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
38549    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
38550    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
38551    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
38552    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
38553    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
38554    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
38555    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
38556    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
38557    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
38558    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
38559    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
38560    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
38561    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
38562    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
38563    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
38564    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
38565    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
38566 
38567    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38568    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38569 
38570    ---------------------------------------------------------------------------------------------------------------
38571    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38572    ---------------------------------------------------------------------------------------------------------------
38573    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38574 
38575    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38576    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38577 
38578    IF xla_accounting_cache_pkg.GetValueChar
38579          (p_source_code         => 'LEDGER_CATEGORY_CODE'
38580          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38581    AND l_bflow_method_code = 'PRIOR_ENTRY'
38582 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38583    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38584          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38585        )
38586    THEN
38587          xla_ae_lines_pkg.BflowUpgEntry
38588            (p_business_method_code    => l_bflow_method_code
38589            ,p_business_class_code     => l_bflow_class_code
38590            ,p_balance_type            => l_balance_type_code);
38591    ELSE
38592       NULL;
38593 -- No business flow processing for business flow method of NONE.
38594    END IF;
38595 
38596    --
38597    -- call analytical criteria
38598    --
38599    
38600    --
38601    -- call description
38602    --
38603    -- No description or it is inherited.
38604    --
38605    -- call ADRs
38606    -- Bug 4922099
38607    --
38608    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38609         (NVL(l_actual_upg_option, 'N') = 'O') OR
38610         (NVL(l_enc_upg_option, 'N') = 'O')
38611       )
38612    THEN
38613    NULL;
38614    --
38615    --
38616    
38617   l_ccid := AcctDerRule_4(
38618            p_application_id           => p_application_id
38619          , p_ae_header_id             => l_ae_header_id 
38620 , p_source_4 => p_source_4
38621          , x_transaction_coa_id       => l_adr_transaction_coa_id
38622          , x_accounting_coa_id        => l_adr_accounting_coa_id
38623          , x_value_type_code          => l_adr_value_type_code
38624          , p_side                     => 'NA'
38625    );
38626 
38627    xla_ae_lines_pkg.set_ccid(
38628     p_code_combination_id          => l_ccid
38629   , p_value_type_code              => l_adr_value_type_code
38630   , p_transaction_coa_id           => l_adr_transaction_coa_id
38631   , p_accounting_coa_id            => l_adr_accounting_coa_id
38632   , p_adr_code                     => 'CST_DEFAULT'
38633   , p_adr_type_code                => 'S'
38634   , p_component_type               => l_component_type
38635   , p_component_code               => l_component_code
38636   , p_component_type_code          => l_component_type_code
38637   , p_component_appl_id            => l_component_appl_id
38638   , p_amb_context_code             => l_amb_context_code
38639   , p_side                         => 'NA'
38640   );
38641 
38642 
38643    --
38644    --
38645    END IF;
38646    --
38647    -- Bug 4922099
38648    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38649           (NVL(l_enc_upg_option, 'N') = 'O')
38650         ) AND
38651         (l_bflow_method_code = 'PRIOR_ENTRY')
38652       )
38653    THEN
38654       IF
38655       --
38656       1 = 2
38657       --
38658       THEN
38659       xla_accounting_err_pkg.build_message
38660                                     (p_appli_s_name            => 'XLA'
38661                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38662                                     ,p_token_1                 => 'LINE_NUMBER'
38663                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38664                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38665                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38666                                                                              l_component_type
38667                                                                             ,l_component_code
38668                                                                             ,l_component_type_code
38669                                                                             ,l_component_appl_id
38670                                                                             ,l_amb_context_code
38671                                                                             ,l_entity_code
38672                                                                             ,l_event_class_code
38673                                                                            )
38674                                     ,p_token_3                 => 'OWNER'
38675                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38676                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38677                                                                           ,p_lookup_code    => l_component_type_code
38678                                                                          )
38679                                     ,p_token_4                 => 'PRODUCT_NAME'
38680                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38681                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38682                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38683                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38684                                     ,p_ae_header_id            =>  NULL
38685                                        );
38686 
38687         IF (C_LEVEL_ERROR>= g_log_level) THEN
38688                  trace
38689                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38690                       ,p_level    => C_LEVEL_ERROR
38691                       ,p_module   => l_log_module);
38692         END IF;
38693       END IF;
38694    END IF;
38695    --
38696    --
38697    ------------------------------------------------------------------------------------------------
38698    -- 4219869 Business Flow
38699    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38700    -- Prior Entry.  Currently, the following code is always generated.
38701    ------------------------------------------------------------------------------------------------
38702    XLA_AE_LINES_PKG.ValidateCurrentLine;
38703 
38704    ------------------------------------------------------------------------------------
38705    -- 4219869 Business Flow
38706    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38707    ------------------------------------------------------------------------------------
38708    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38709 
38710    ----------------------------------------------------------------------------------
38711    -- 4219869 Business Flow
38712    -- Update journal entry status -- Need to generate this within IF <condition>
38713    ----------------------------------------------------------------------------------
38714    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38715          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38716          ,p_balance_type_code => l_balance_type_code
38717          );
38718 
38719    -------------------------------------------------------------------------------------------
38720    -- 4262811 - Generate the Accrual Reversal lines
38721    -------------------------------------------------------------------------------------------
38722    BEGIN
38723       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38724                               (g_array_event(p_event_id).array_value_num('header_index'));
38725       IF l_acc_rev_flag IS NULL THEN
38726          l_acc_rev_flag := 'N';
38727       END IF;
38728    EXCEPTION
38729       WHEN OTHERS THEN
38730          l_acc_rev_flag := 'N';
38731    END;
38732    --
38733    IF (l_acc_rev_flag = 'Y') THEN
38734 
38735        -- 4645092  ------------------------------------------------------------------------------
38736        -- To allow MPA report to determine if it should generate report process
38737        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38738        ------------------------------------------------------------------------------------------
38739 
38740        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38741        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38742    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
38743    -- call ADRs
38744    -- Bug 4922099
38745    --
38746    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38747         (NVL(l_actual_upg_option, 'N') = 'O') OR
38748         (NVL(l_enc_upg_option, 'N') = 'O')
38749       )
38750    THEN
38751    NULL;
38752    --
38753    --
38754    
38755   l_ccid := AcctDerRule_4(
38756            p_application_id           => p_application_id
38757          , p_ae_header_id             => l_ae_header_id 
38758 , p_source_4 => p_source_4
38759          , x_transaction_coa_id       => l_adr_transaction_coa_id
38760          , x_accounting_coa_id        => l_adr_accounting_coa_id
38761          , x_value_type_code          => l_adr_value_type_code
38762          , p_side                     => 'NA'
38763    );
38764 
38765    xla_ae_lines_pkg.set_ccid(
38766     p_code_combination_id          => l_ccid
38767   , p_value_type_code              => l_adr_value_type_code
38768   , p_transaction_coa_id           => l_adr_transaction_coa_id
38769   , p_accounting_coa_id            => l_adr_accounting_coa_id
38770   , p_adr_code                     => 'CST_DEFAULT'
38771   , p_adr_type_code                => 'S'
38772   , p_component_type               => l_component_type
38773   , p_component_code               => l_component_code
38774   , p_component_type_code          => l_component_type_code
38775   , p_component_appl_id            => l_component_appl_id
38776   , p_amb_context_code             => l_amb_context_code
38777   , p_side                         => 'NA'
38778   );
38779 
38780 
38781    --
38782    --
38783    END IF;
38784 
38785        --
38786        -- Update the line information that should be overwritten
38787        --
38788        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38789                                          p_header_num   => 1);
38790        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38791 
38792        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38793 
38794        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38795           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38796        END IF;
38797 
38798       --
38799       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38800       --
38801       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38802           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
38803       ELSE
38804           ---------------------------------------------------------------------------------------------------
38805           -- 4262811a Switch Sign
38806           ---------------------------------------------------------------------------------------------------
38807           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
38808           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38809                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38810           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38811                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38812           -- 5132302
38813           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38814                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38815 
38816       END IF;
38817 
38818       -- 4955764
38819       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38820       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38821 
38822 
38823       XLA_AE_LINES_PKG.ValidateCurrentLine;
38824       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38825 
38826       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38827                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38828                ,p_balance_type_code => l_balance_type_code);
38829 
38830    END IF;
38831 
38832    -----------------------------------------------------------------------------------------
38833    -- 4262811 Multiperiod Accounting
38834    -----------------------------------------------------------------------------------------
38835      -- No MPA option is assigned.
38836 
38837 
38838 END IF;
38839 END IF;
38840 --
38841 
38842 --
38843 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38844    trace
38845       (p_msg      => 'END of AcctLineType_72'
38846       ,p_level    => C_LEVEL_PROCEDURE
38847       ,p_module   => l_log_module);
38848 END IF;
38849 --
38850 EXCEPTION
38851   WHEN xla_exceptions_pkg.application_exception THEN
38852       RAISE;
38853   WHEN OTHERS THEN
38854        xla_exceptions_pkg.raise_message
38855            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_72');
38856 END AcctLineType_72;
38857 --
38858 
38859 ---------------------------------------
38860 --
38861 -- PRIVATE FUNCTION
38862 --         AcctLineType_73
38863 --
38864 ---------------------------------------
38865 PROCEDURE AcctLineType_73 (
38866   p_application_id        IN NUMBER
38867  ,p_event_id              IN NUMBER
38868  ,p_calculate_acctd_flag  IN VARCHAR2
38869  ,p_calculate_g_l_flag    IN VARCHAR2
38870  ,p_actual_flag           IN OUT VARCHAR2
38871  ,p_balance_type_code     OUT VARCHAR2
38872  ,p_gain_or_loss_ref      OUT VARCHAR2
38873  
38874 --Cost Management Default Account
38875  , p_source_4            IN NUMBER
38876 --Applied to Application ID
38877  , p_source_6            IN NUMBER
38878 --Applied to Distribution Link Type
38879  , p_source_7            IN VARCHAR2
38880 --Applied to Entity Code
38881  , p_source_8            IN VARCHAR2
38882 --DISTRIBUTION_IDENTIFIER
38883  , p_source_11            IN NUMBER
38884 --Distribution Type
38885  , p_source_12            IN VARCHAR2
38886  , p_source_12_meaning    IN VARCHAR2
38887 --Encumbrance Reversal Amount Entered
38888  , p_source_14            IN NUMBER
38889 --Entered Currency Code
38890  , p_source_15            IN VARCHAR2
38891 --Transaction Encumbrance Reversal Amount
38892  , p_source_16            IN NUMBER
38893 --Entered Amount
38894  , p_source_18            IN NUMBER
38895 --Currency Conversion Date
38896  , p_source_19            IN DATE
38897 --Currency Conversion Rate
38898  , p_source_20            IN NUMBER
38899 --Currency Conversion Type
38900  , p_source_21            IN VARCHAR2
38901 --Accounted Amount
38902  , p_source_22            IN NUMBER
38903 --Accounting Line Type
38904  , p_source_24            IN NUMBER
38905 --Costing Encumbrance Upgrade Option
38906  , p_source_27            IN VARCHAR2
38907 --TXN_PO_DISTRIBUTION_ID
38908  , p_source_28            IN NUMBER
38909 --TXN_PO_HEADER_ID
38910  , p_source_29            IN NUMBER
38911 --Requisition Budget Account
38912  , p_source_30            IN NUMBER
38913 --Requisition Encumbrance Type Identifier
38914  , p_source_31            IN NUMBER
38915 )
38916 IS
38917 
38918 l_component_type              VARCHAR2(80);
38919 l_component_code              VARCHAR2(30);
38920 l_component_type_code         VARCHAR2(1);
38921 l_component_appl_id           INTEGER;
38922 l_amb_context_code            VARCHAR2(30);
38923 l_entity_code                 VARCHAR2(30);
38924 l_event_class_code            VARCHAR2(30);
38925 l_ae_header_id                NUMBER;
38926 l_event_type_code             VARCHAR2(30);
38927 l_line_definition_code        VARCHAR2(30);
38928 l_line_definition_owner_code  VARCHAR2(1);
38929 --
38930 -- adr variables
38931 l_segment                     VARCHAR2(30);
38932 l_ccid                        NUMBER;
38933 l_adr_transaction_coa_id      NUMBER;
38934 l_adr_accounting_coa_id       NUMBER;
38935 l_adr_flexfield_segment_code  VARCHAR2(30);
38936 l_adr_flex_value_set_id       NUMBER;
38937 l_adr_value_type_code         VARCHAR2(30);
38938 l_adr_value_combination_id    NUMBER;
38939 l_adr_value_segment_code      VARCHAR2(30);
38940 
38941 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38942 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38943 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38944 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38945 
38946 -- 4262811 Variables ------------------------------------------------------------------------------------------
38947 l_entered_amt_idx             NUMBER;
38948 l_accted_amt_idx              NUMBER;
38949 l_acc_rev_flag                VARCHAR2(1);
38950 l_accrual_line_num            NUMBER;
38951 l_tmp_amt                     NUMBER;
38952 l_acc_rev_natural_side_code   VARCHAR2(1);
38953 
38954 l_num_entries                 NUMBER;
38955 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38956 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38957 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38958 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38959 l_recog_line_1                NUMBER;
38960 l_recog_line_2                NUMBER;
38961 
38962 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38963 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38964 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38965 
38966 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38967 
38968 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38969 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38970 
38971 ---------------------------------------------------------------------------------------------------------------
38972 
38973 
38974 --
38975 -- bulk performance
38976 --
38977 l_balance_type_code           VARCHAR2(1);
38978 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38979 l_log_module                  VARCHAR2(240);
38980 
38981 --
38982 -- Upgrade strategy
38983 --
38984 l_actual_upg_option           VARCHAR2(1);
38985 l_enc_upg_option           VARCHAR2(1);
38986 
38987 --
38988 BEGIN
38989 --
38990 IF g_log_enabled THEN
38991       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_73';
38992 END IF;
38993 --
38994 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38995 
38996       trace
38997          (p_msg      => 'BEGIN of AcctLineType_73'
38998          ,p_level    => C_LEVEL_PROCEDURE
38999          ,p_module   => l_log_module);
39000 
39001 END IF;
39002 --
39003 l_component_type             := 'AMB_JLT';
39004 l_component_code             := 'INTERORG_PAYABLES';
39005 l_component_type_code        := 'S';
39006 l_component_appl_id          :=  707;
39007 l_amb_context_code           := 'DEFAULT';
39008 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
39009 l_event_class_code           := 'DIR_INTERORG_RCPT';
39010 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
39011 l_line_definition_owner_code := 'S';
39012 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
39013 --
39014 l_balance_type_code          := 'A';
39015 l_segment                     := NULL;
39016 l_ccid                        := NULL;
39017 l_adr_transaction_coa_id      := NULL;
39018 l_adr_accounting_coa_id       := NULL;
39019 l_adr_flexfield_segment_code  := NULL;
39020 l_adr_flex_value_set_id       := NULL;
39021 l_adr_value_type_code         := NULL;
39022 l_adr_value_combination_id    := NULL;
39023 l_adr_value_segment_code      := NULL;
39024 
39025 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
39026 l_bflow_class_code           := '';    -- 4219869 Business Flow
39027 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
39028 l_budgetary_control_flag     := 'N';
39029 
39030 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
39031 l_bflow_applied_to_amt       := NULL; -- 5132302
39032 l_entered_amt_idx            := NULL;          -- 4262811
39033 l_accted_amt_idx             := NULL;          -- 4262811
39034 l_acc_rev_flag               := NULL;          -- 4262811
39035 l_accrual_line_num           := NULL;          -- 4262811
39036 l_tmp_amt                    := NULL;          -- 4262811
39037 --
39038  
39039 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39040     l_balance_type_code <> 'B' THEN
39041 IF NVL(p_source_24,9E125) =  9
39042  THEN 
39043 
39044    --
39045    XLA_AE_LINES_PKG.SetNewLine;
39046 
39047    p_balance_type_code          := l_balance_type_code;
39048    -- set the flag so later we will know whether the gain loss line needs to be created
39049    
39050    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39051      p_actual_flag :='A';
39052    END IF;
39053 
39054    --
39055    -- bulk performance
39056    --
39057    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39058                                       p_header_num   => 0); -- 4262811
39059    --
39060    -- set accounting line options
39061    --
39062    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39063            p_natural_side_code          => 'D'
39064          , p_gain_or_loss_flag          => 'N'
39065          , p_gl_transfer_mode_code      => 'S'
39066          , p_acct_entry_type_code       => 'A'
39067          , p_switch_side_flag           => 'Y'
39068          , p_merge_duplicate_code       => 'N'
39069          );
39070    --
39071    l_acc_rev_natural_side_code := 'C';  -- 4262811
39072    -- 
39073    --
39074    -- set accounting line type info
39075    --
39076    xla_ae_lines_pkg.SetAcctLineType
39077       (p_component_type             => l_component_type
39078       ,p_event_type_code            => l_event_type_code
39079       ,p_line_definition_owner_code => l_line_definition_owner_code
39080       ,p_line_definition_code       => l_line_definition_code
39081       ,p_accounting_line_code       => l_component_code
39082       ,p_accounting_line_type_code  => l_component_type_code
39083       ,p_accounting_line_appl_id    => l_component_appl_id
39084       ,p_amb_context_code           => l_amb_context_code
39085       ,p_entity_code                => l_entity_code
39086       ,p_event_class_code           => l_event_class_code);
39087    --
39088    -- set accounting class
39089    --
39090    xla_ae_lines_pkg.SetAcctClass(
39091            p_accounting_class_code  => 'INTERORG_PAYABLES'
39092          , p_ae_header_id           => l_ae_header_id
39093          );
39094 
39095    --
39096    -- set rounding class
39097    --
39098    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39099                       'INTERORG_PAYABLES';
39100 
39101    --
39102    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39103    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39104    --
39105    -- bulk performance
39106    --
39107    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39108 
39109    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39110       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39111 
39112    -- 4955764
39113    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39114       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39115 
39116    -- 4458381 Public Sector Enh
39117    
39118    --
39119    -- set accounting attributes for the line type
39120    --
39121    l_entered_amt_idx := 17;
39122    l_accted_amt_idx  := 22;
39123    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39124    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
39125    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
39126    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
39127    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
39128    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
39129    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
39130    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
39131    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
39132    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
39133    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
39134    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
39135    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
39136    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
39137    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
39138    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
39139    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
39140    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
39141    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
39142    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
39143    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
39144    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
39145    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
39146    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
39147    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
39148    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
39149    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
39150    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
39151    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
39152    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
39153    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
39154    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
39155    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
39156    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
39157    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
39158    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
39159    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
39160    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
39161    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
39162    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
39163    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
39164    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
39165    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
39166    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
39167    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
39168    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
39169    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
39170    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
39171    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
39172 
39173    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39174    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39175 
39176    ---------------------------------------------------------------------------------------------------------------
39177    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39178    ---------------------------------------------------------------------------------------------------------------
39179    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39180 
39181    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39182    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39183 
39184    IF xla_accounting_cache_pkg.GetValueChar
39185          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39186          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39187    AND l_bflow_method_code = 'PRIOR_ENTRY'
39188 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39189    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39190          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39191        )
39192    THEN
39193          xla_ae_lines_pkg.BflowUpgEntry
39194            (p_business_method_code    => l_bflow_method_code
39195            ,p_business_class_code     => l_bflow_class_code
39196            ,p_balance_type            => l_balance_type_code);
39197    ELSE
39198       NULL;
39199 -- No business flow processing for business flow method of NONE.
39200    END IF;
39201 
39202    --
39203    -- call analytical criteria
39204    --
39205    
39206    --
39207    -- call description
39208    --
39209    -- No description or it is inherited.
39210    --
39211    -- call ADRs
39212    -- Bug 4922099
39213    --
39214    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39215         (NVL(l_actual_upg_option, 'N') = 'O') OR
39216         (NVL(l_enc_upg_option, 'N') = 'O')
39217       )
39218    THEN
39219    NULL;
39220    --
39221    --
39222    
39223   l_ccid := AcctDerRule_4(
39224            p_application_id           => p_application_id
39225          , p_ae_header_id             => l_ae_header_id 
39226 , p_source_4 => p_source_4
39227          , x_transaction_coa_id       => l_adr_transaction_coa_id
39228          , x_accounting_coa_id        => l_adr_accounting_coa_id
39229          , x_value_type_code          => l_adr_value_type_code
39230          , p_side                     => 'NA'
39231    );
39232 
39233    xla_ae_lines_pkg.set_ccid(
39234     p_code_combination_id          => l_ccid
39235   , p_value_type_code              => l_adr_value_type_code
39236   , p_transaction_coa_id           => l_adr_transaction_coa_id
39237   , p_accounting_coa_id            => l_adr_accounting_coa_id
39238   , p_adr_code                     => 'CST_DEFAULT'
39239   , p_adr_type_code                => 'S'
39240   , p_component_type               => l_component_type
39241   , p_component_code               => l_component_code
39242   , p_component_type_code          => l_component_type_code
39243   , p_component_appl_id            => l_component_appl_id
39244   , p_amb_context_code             => l_amb_context_code
39245   , p_side                         => 'NA'
39246   );
39247 
39248 
39249    --
39250    --
39251    END IF;
39252    --
39253    -- Bug 4922099
39254    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39255           (NVL(l_enc_upg_option, 'N') = 'O')
39256         ) AND
39257         (l_bflow_method_code = 'PRIOR_ENTRY')
39258       )
39259    THEN
39260       IF
39261       --
39262       1 = 2
39263       --
39264       THEN
39265       xla_accounting_err_pkg.build_message
39266                                     (p_appli_s_name            => 'XLA'
39267                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39268                                     ,p_token_1                 => 'LINE_NUMBER'
39269                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39270                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39271                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39272                                                                              l_component_type
39273                                                                             ,l_component_code
39274                                                                             ,l_component_type_code
39275                                                                             ,l_component_appl_id
39276                                                                             ,l_amb_context_code
39277                                                                             ,l_entity_code
39278                                                                             ,l_event_class_code
39279                                                                            )
39280                                     ,p_token_3                 => 'OWNER'
39281                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39282                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39283                                                                           ,p_lookup_code    => l_component_type_code
39284                                                                          )
39285                                     ,p_token_4                 => 'PRODUCT_NAME'
39286                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39287                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39288                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39289                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39290                                     ,p_ae_header_id            =>  NULL
39291                                        );
39292 
39293         IF (C_LEVEL_ERROR>= g_log_level) THEN
39294                  trace
39295                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39296                       ,p_level    => C_LEVEL_ERROR
39297                       ,p_module   => l_log_module);
39298         END IF;
39299       END IF;
39300    END IF;
39301    --
39302    --
39303    ------------------------------------------------------------------------------------------------
39304    -- 4219869 Business Flow
39305    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39306    -- Prior Entry.  Currently, the following code is always generated.
39307    ------------------------------------------------------------------------------------------------
39308    XLA_AE_LINES_PKG.ValidateCurrentLine;
39309 
39310    ------------------------------------------------------------------------------------
39311    -- 4219869 Business Flow
39312    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39313    ------------------------------------------------------------------------------------
39314    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39315 
39316    ----------------------------------------------------------------------------------
39317    -- 4219869 Business Flow
39318    -- Update journal entry status -- Need to generate this within IF <condition>
39319    ----------------------------------------------------------------------------------
39320    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39321          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39322          ,p_balance_type_code => l_balance_type_code
39323          );
39324 
39325    -------------------------------------------------------------------------------------------
39326    -- 4262811 - Generate the Accrual Reversal lines
39327    -------------------------------------------------------------------------------------------
39328    BEGIN
39329       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39330                               (g_array_event(p_event_id).array_value_num('header_index'));
39331       IF l_acc_rev_flag IS NULL THEN
39332          l_acc_rev_flag := 'N';
39333       END IF;
39334    EXCEPTION
39335       WHEN OTHERS THEN
39336          l_acc_rev_flag := 'N';
39337    END;
39338    --
39339    IF (l_acc_rev_flag = 'Y') THEN
39340 
39341        -- 4645092  ------------------------------------------------------------------------------
39342        -- To allow MPA report to determine if it should generate report process
39343        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39344        ------------------------------------------------------------------------------------------
39345 
39346        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39347        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39348    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
39349    -- call ADRs
39350    -- Bug 4922099
39351    --
39352    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39353         (NVL(l_actual_upg_option, 'N') = 'O') OR
39354         (NVL(l_enc_upg_option, 'N') = 'O')
39355       )
39356    THEN
39357    NULL;
39358    --
39359    --
39360    
39361   l_ccid := AcctDerRule_4(
39362            p_application_id           => p_application_id
39363          , p_ae_header_id             => l_ae_header_id 
39364 , p_source_4 => p_source_4
39365          , x_transaction_coa_id       => l_adr_transaction_coa_id
39366          , x_accounting_coa_id        => l_adr_accounting_coa_id
39367          , x_value_type_code          => l_adr_value_type_code
39368          , p_side                     => 'NA'
39369    );
39370 
39371    xla_ae_lines_pkg.set_ccid(
39372     p_code_combination_id          => l_ccid
39373   , p_value_type_code              => l_adr_value_type_code
39374   , p_transaction_coa_id           => l_adr_transaction_coa_id
39375   , p_accounting_coa_id            => l_adr_accounting_coa_id
39376   , p_adr_code                     => 'CST_DEFAULT'
39377   , p_adr_type_code                => 'S'
39378   , p_component_type               => l_component_type
39379   , p_component_code               => l_component_code
39380   , p_component_type_code          => l_component_type_code
39381   , p_component_appl_id            => l_component_appl_id
39382   , p_amb_context_code             => l_amb_context_code
39383   , p_side                         => 'NA'
39384   );
39385 
39386 
39387    --
39388    --
39389    END IF;
39390 
39391        --
39392        -- Update the line information that should be overwritten
39393        --
39394        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39395                                          p_header_num   => 1);
39396        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39397 
39398        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39399 
39400        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39401           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39402        END IF;
39403 
39404       --
39405       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39406       --
39407       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39408           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39409       ELSE
39410           ---------------------------------------------------------------------------------------------------
39411           -- 4262811a Switch Sign
39412           ---------------------------------------------------------------------------------------------------
39413           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39414           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39415                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39416           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39417                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39418           -- 5132302
39419           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39420                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39421 
39422       END IF;
39423 
39424       -- 4955764
39425       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39426       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39427 
39428 
39429       XLA_AE_LINES_PKG.ValidateCurrentLine;
39430       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39431 
39432       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39433                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39434                ,p_balance_type_code => l_balance_type_code);
39435 
39436    END IF;
39437 
39438    -----------------------------------------------------------------------------------------
39439    -- 4262811 Multiperiod Accounting
39440    -----------------------------------------------------------------------------------------
39441      -- No MPA option is assigned.
39442 
39443 
39444 END IF;
39445 END IF;
39446 --
39447 
39448 --
39449 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39450    trace
39451       (p_msg      => 'END of AcctLineType_73'
39452       ,p_level    => C_LEVEL_PROCEDURE
39453       ,p_module   => l_log_module);
39454 END IF;
39455 --
39456 EXCEPTION
39457   WHEN xla_exceptions_pkg.application_exception THEN
39458       RAISE;
39459   WHEN OTHERS THEN
39460        xla_exceptions_pkg.raise_message
39461            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_73');
39462 END AcctLineType_73;
39463 --
39464 
39465 ---------------------------------------
39466 --
39467 -- PRIVATE FUNCTION
39468 --         AcctLineType_74
39469 --
39470 ---------------------------------------
39471 PROCEDURE AcctLineType_74 (
39472   p_application_id        IN NUMBER
39473  ,p_event_id              IN NUMBER
39474  ,p_calculate_acctd_flag  IN VARCHAR2
39475  ,p_calculate_g_l_flag    IN VARCHAR2
39476  ,p_actual_flag           IN OUT VARCHAR2
39477  ,p_balance_type_code     OUT VARCHAR2
39478  ,p_gain_or_loss_ref      OUT VARCHAR2
39479  
39480 --Cost Management Default Account
39481  , p_source_4            IN NUMBER
39482 --DISTRIBUTION_IDENTIFIER
39483  , p_source_11            IN NUMBER
39484 --Distribution Type
39485  , p_source_12            IN VARCHAR2
39486  , p_source_12_meaning    IN VARCHAR2
39487 --Entered Currency Code
39488  , p_source_15            IN VARCHAR2
39489 --Entered Amount
39490  , p_source_18            IN NUMBER
39491 --Currency Conversion Date
39492  , p_source_19            IN DATE
39493 --Currency Conversion Rate
39494  , p_source_20            IN NUMBER
39495 --Currency Conversion Type
39496  , p_source_21            IN VARCHAR2
39497 --Accounted Amount
39498  , p_source_22            IN NUMBER
39499 --Accounting Line Type
39500  , p_source_24            IN NUMBER
39501 )
39502 IS
39503 
39504 l_component_type              VARCHAR2(80);
39505 l_component_code              VARCHAR2(30);
39506 l_component_type_code         VARCHAR2(1);
39507 l_component_appl_id           INTEGER;
39508 l_amb_context_code            VARCHAR2(30);
39509 l_entity_code                 VARCHAR2(30);
39510 l_event_class_code            VARCHAR2(30);
39511 l_ae_header_id                NUMBER;
39512 l_event_type_code             VARCHAR2(30);
39513 l_line_definition_code        VARCHAR2(30);
39514 l_line_definition_owner_code  VARCHAR2(1);
39515 --
39516 -- adr variables
39517 l_segment                     VARCHAR2(30);
39518 l_ccid                        NUMBER;
39519 l_adr_transaction_coa_id      NUMBER;
39520 l_adr_accounting_coa_id       NUMBER;
39521 l_adr_flexfield_segment_code  VARCHAR2(30);
39522 l_adr_flex_value_set_id       NUMBER;
39523 l_adr_value_type_code         VARCHAR2(30);
39524 l_adr_value_combination_id    NUMBER;
39525 l_adr_value_segment_code      VARCHAR2(30);
39526 
39527 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39528 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39529 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39530 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39531 
39532 -- 4262811 Variables ------------------------------------------------------------------------------------------
39533 l_entered_amt_idx             NUMBER;
39534 l_accted_amt_idx              NUMBER;
39535 l_acc_rev_flag                VARCHAR2(1);
39536 l_accrual_line_num            NUMBER;
39537 l_tmp_amt                     NUMBER;
39538 l_acc_rev_natural_side_code   VARCHAR2(1);
39539 
39540 l_num_entries                 NUMBER;
39541 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39542 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39543 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39544 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39545 l_recog_line_1                NUMBER;
39546 l_recog_line_2                NUMBER;
39547 
39548 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39549 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
39550 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
39551 
39552 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39553 
39554 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
39555 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
39556 
39557 ---------------------------------------------------------------------------------------------------------------
39558 
39559 
39560 --
39561 -- bulk performance
39562 --
39563 l_balance_type_code           VARCHAR2(1);
39564 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
39565 l_log_module                  VARCHAR2(240);
39566 
39567 --
39568 -- Upgrade strategy
39569 --
39570 l_actual_upg_option           VARCHAR2(1);
39571 l_enc_upg_option           VARCHAR2(1);
39572 
39573 --
39574 BEGIN
39575 --
39576 IF g_log_enabled THEN
39577       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_74';
39578 END IF;
39579 --
39580 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39581 
39582       trace
39583          (p_msg      => 'BEGIN of AcctLineType_74'
39584          ,p_level    => C_LEVEL_PROCEDURE
39585          ,p_module   => l_log_module);
39586 
39587 END IF;
39588 --
39589 l_component_type             := 'AMB_JLT';
39590 l_component_code             := 'INTERORG_PAYABLES';
39591 l_component_type_code        := 'S';
39592 l_component_appl_id          :=  707;
39593 l_amb_context_code           := 'DEFAULT';
39594 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
39595 l_event_class_code           := 'USER_DEFINE';
39596 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
39597 l_line_definition_owner_code := 'S';
39598 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
39599 --
39600 l_balance_type_code          := 'A';
39601 l_segment                     := NULL;
39602 l_ccid                        := NULL;
39603 l_adr_transaction_coa_id      := NULL;
39604 l_adr_accounting_coa_id       := NULL;
39605 l_adr_flexfield_segment_code  := NULL;
39606 l_adr_flex_value_set_id       := NULL;
39607 l_adr_value_type_code         := NULL;
39608 l_adr_value_combination_id    := NULL;
39609 l_adr_value_segment_code      := NULL;
39610 
39611 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
39612 l_bflow_class_code           := '';    -- 4219869 Business Flow
39613 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
39614 l_budgetary_control_flag     := 'N';
39615 
39616 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
39617 l_bflow_applied_to_amt       := NULL; -- 5132302
39618 l_entered_amt_idx            := NULL;          -- 4262811
39619 l_accted_amt_idx             := NULL;          -- 4262811
39620 l_acc_rev_flag               := NULL;          -- 4262811
39621 l_accrual_line_num           := NULL;          -- 4262811
39622 l_tmp_amt                    := NULL;          -- 4262811
39623 --
39624  
39625 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39626     l_balance_type_code <> 'B' THEN
39627 IF NVL(p_source_24,9E125) =  9
39628  THEN 
39629 
39630    --
39631    XLA_AE_LINES_PKG.SetNewLine;
39632 
39633    p_balance_type_code          := l_balance_type_code;
39634    -- set the flag so later we will know whether the gain loss line needs to be created
39635    
39636    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39637      p_actual_flag :='A';
39638    END IF;
39639 
39640    --
39641    -- bulk performance
39642    --
39643    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39644                                       p_header_num   => 0); -- 4262811
39645    --
39646    -- set accounting line options
39647    --
39648    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39649            p_natural_side_code          => 'D'
39650          , p_gain_or_loss_flag          => 'N'
39651          , p_gl_transfer_mode_code      => 'S'
39652          , p_acct_entry_type_code       => 'A'
39653          , p_switch_side_flag           => 'Y'
39654          , p_merge_duplicate_code       => 'N'
39655          );
39656    --
39657    l_acc_rev_natural_side_code := 'C';  -- 4262811
39658    -- 
39659    --
39660    -- set accounting line type info
39661    --
39662    xla_ae_lines_pkg.SetAcctLineType
39663       (p_component_type             => l_component_type
39664       ,p_event_type_code            => l_event_type_code
39665       ,p_line_definition_owner_code => l_line_definition_owner_code
39666       ,p_line_definition_code       => l_line_definition_code
39667       ,p_accounting_line_code       => l_component_code
39668       ,p_accounting_line_type_code  => l_component_type_code
39669       ,p_accounting_line_appl_id    => l_component_appl_id
39670       ,p_amb_context_code           => l_amb_context_code
39671       ,p_entity_code                => l_entity_code
39672       ,p_event_class_code           => l_event_class_code);
39673    --
39674    -- set accounting class
39675    --
39676    xla_ae_lines_pkg.SetAcctClass(
39677            p_accounting_class_code  => 'INTERORG_PAYABLES'
39678          , p_ae_header_id           => l_ae_header_id
39679          );
39680 
39681    --
39682    -- set rounding class
39683    --
39684    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39685                       'INTERORG_PAYABLES';
39686 
39687    --
39688    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39689    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39690    --
39691    -- bulk performance
39692    --
39693    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39694 
39695    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39696       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39697 
39698    -- 4955764
39699    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39700       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39701 
39702    -- 4458381 Public Sector Enh
39703    
39704    --
39705    -- set accounting attributes for the line type
39706    --
39707    l_entered_amt_idx := 3;
39708    l_accted_amt_idx  := 8;
39709    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39710    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
39711    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
39712    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
39713    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
39714    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
39715    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
39716    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
39717    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
39718    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
39719    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
39720    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
39721    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
39722    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
39723    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
39724    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
39725    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
39726 
39727    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39728    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39729 
39730    ---------------------------------------------------------------------------------------------------------------
39731    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39732    ---------------------------------------------------------------------------------------------------------------
39733    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39734 
39735    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39736    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39737 
39738    IF xla_accounting_cache_pkg.GetValueChar
39739          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39740          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39741    AND l_bflow_method_code = 'PRIOR_ENTRY'
39742 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39743    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39744          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39745        )
39746    THEN
39747          xla_ae_lines_pkg.BflowUpgEntry
39748            (p_business_method_code    => l_bflow_method_code
39749            ,p_business_class_code     => l_bflow_class_code
39750            ,p_balance_type            => l_balance_type_code);
39751    ELSE
39752       NULL;
39753 -- No business flow processing for business flow method of NONE.
39754    END IF;
39755 
39756    --
39757    -- call analytical criteria
39758    --
39759    
39760    --
39761    -- call description
39762    --
39763    -- No description or it is inherited.
39764    --
39765    -- call ADRs
39766    -- Bug 4922099
39767    --
39768    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39769         (NVL(l_actual_upg_option, 'N') = 'O') OR
39770         (NVL(l_enc_upg_option, 'N') = 'O')
39771       )
39772    THEN
39773    NULL;
39774    --
39775    --
39776    
39777   l_ccid := AcctDerRule_4(
39778            p_application_id           => p_application_id
39779          , p_ae_header_id             => l_ae_header_id 
39780 , p_source_4 => p_source_4
39781          , x_transaction_coa_id       => l_adr_transaction_coa_id
39782          , x_accounting_coa_id        => l_adr_accounting_coa_id
39783          , x_value_type_code          => l_adr_value_type_code
39784          , p_side                     => 'NA'
39785    );
39786 
39787    xla_ae_lines_pkg.set_ccid(
39788     p_code_combination_id          => l_ccid
39789   , p_value_type_code              => l_adr_value_type_code
39790   , p_transaction_coa_id           => l_adr_transaction_coa_id
39791   , p_accounting_coa_id            => l_adr_accounting_coa_id
39792   , p_adr_code                     => 'CST_DEFAULT'
39793   , p_adr_type_code                => 'S'
39794   , p_component_type               => l_component_type
39795   , p_component_code               => l_component_code
39796   , p_component_type_code          => l_component_type_code
39797   , p_component_appl_id            => l_component_appl_id
39798   , p_amb_context_code             => l_amb_context_code
39799   , p_side                         => 'NA'
39800   );
39801 
39802 
39803    --
39804    --
39805    END IF;
39806    --
39807    -- Bug 4922099
39808    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39809           (NVL(l_enc_upg_option, 'N') = 'O')
39810         ) AND
39811         (l_bflow_method_code = 'PRIOR_ENTRY')
39812       )
39813    THEN
39814       IF
39815       --
39816       1 = 2
39817       --
39818       THEN
39819       xla_accounting_err_pkg.build_message
39820                                     (p_appli_s_name            => 'XLA'
39821                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39822                                     ,p_token_1                 => 'LINE_NUMBER'
39823                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39824                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39825                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39826                                                                              l_component_type
39827                                                                             ,l_component_code
39828                                                                             ,l_component_type_code
39829                                                                             ,l_component_appl_id
39830                                                                             ,l_amb_context_code
39831                                                                             ,l_entity_code
39832                                                                             ,l_event_class_code
39833                                                                            )
39834                                     ,p_token_3                 => 'OWNER'
39835                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39836                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39837                                                                           ,p_lookup_code    => l_component_type_code
39838                                                                          )
39839                                     ,p_token_4                 => 'PRODUCT_NAME'
39840                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39841                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39842                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39843                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39844                                     ,p_ae_header_id            =>  NULL
39845                                        );
39846 
39847         IF (C_LEVEL_ERROR>= g_log_level) THEN
39848                  trace
39849                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39850                       ,p_level    => C_LEVEL_ERROR
39851                       ,p_module   => l_log_module);
39852         END IF;
39853       END IF;
39854    END IF;
39855    --
39856    --
39857    ------------------------------------------------------------------------------------------------
39858    -- 4219869 Business Flow
39859    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39860    -- Prior Entry.  Currently, the following code is always generated.
39861    ------------------------------------------------------------------------------------------------
39862    XLA_AE_LINES_PKG.ValidateCurrentLine;
39863 
39864    ------------------------------------------------------------------------------------
39865    -- 4219869 Business Flow
39866    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39867    ------------------------------------------------------------------------------------
39868    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39869 
39870    ----------------------------------------------------------------------------------
39871    -- 4219869 Business Flow
39872    -- Update journal entry status -- Need to generate this within IF <condition>
39873    ----------------------------------------------------------------------------------
39874    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39875          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39876          ,p_balance_type_code => l_balance_type_code
39877          );
39878 
39879    -------------------------------------------------------------------------------------------
39880    -- 4262811 - Generate the Accrual Reversal lines
39881    -------------------------------------------------------------------------------------------
39882    BEGIN
39883       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39884                               (g_array_event(p_event_id).array_value_num('header_index'));
39885       IF l_acc_rev_flag IS NULL THEN
39886          l_acc_rev_flag := 'N';
39887       END IF;
39888    EXCEPTION
39889       WHEN OTHERS THEN
39890          l_acc_rev_flag := 'N';
39891    END;
39892    --
39893    IF (l_acc_rev_flag = 'Y') THEN
39894 
39895        -- 4645092  ------------------------------------------------------------------------------
39896        -- To allow MPA report to determine if it should generate report process
39897        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39898        ------------------------------------------------------------------------------------------
39899 
39900        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39901        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39902    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
39903    -- call ADRs
39904    -- Bug 4922099
39905    --
39906    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39907         (NVL(l_actual_upg_option, 'N') = 'O') OR
39908         (NVL(l_enc_upg_option, 'N') = 'O')
39909       )
39910    THEN
39911    NULL;
39912    --
39913    --
39914    
39915   l_ccid := AcctDerRule_4(
39916            p_application_id           => p_application_id
39917          , p_ae_header_id             => l_ae_header_id 
39918 , p_source_4 => p_source_4
39919          , x_transaction_coa_id       => l_adr_transaction_coa_id
39920          , x_accounting_coa_id        => l_adr_accounting_coa_id
39921          , x_value_type_code          => l_adr_value_type_code
39922          , p_side                     => 'NA'
39923    );
39924 
39925    xla_ae_lines_pkg.set_ccid(
39926     p_code_combination_id          => l_ccid
39927   , p_value_type_code              => l_adr_value_type_code
39928   , p_transaction_coa_id           => l_adr_transaction_coa_id
39929   , p_accounting_coa_id            => l_adr_accounting_coa_id
39930   , p_adr_code                     => 'CST_DEFAULT'
39931   , p_adr_type_code                => 'S'
39932   , p_component_type               => l_component_type
39933   , p_component_code               => l_component_code
39934   , p_component_type_code          => l_component_type_code
39935   , p_component_appl_id            => l_component_appl_id
39936   , p_amb_context_code             => l_amb_context_code
39937   , p_side                         => 'NA'
39938   );
39939 
39940 
39941    --
39942    --
39943    END IF;
39944 
39945        --
39946        -- Update the line information that should be overwritten
39947        --
39948        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39949                                          p_header_num   => 1);
39950        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39951 
39952        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39953 
39954        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39955           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39956        END IF;
39957 
39958       --
39959       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39960       --
39961       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39962           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39963       ELSE
39964           ---------------------------------------------------------------------------------------------------
39965           -- 4262811a Switch Sign
39966           ---------------------------------------------------------------------------------------------------
39967           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39968           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39969                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39970           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39971                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39972           -- 5132302
39973           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39974                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39975 
39976       END IF;
39977 
39978       -- 4955764
39979       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39980       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39981 
39982 
39983       XLA_AE_LINES_PKG.ValidateCurrentLine;
39984       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39985 
39986       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39987                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39988                ,p_balance_type_code => l_balance_type_code);
39989 
39990    END IF;
39991 
39992    -----------------------------------------------------------------------------------------
39993    -- 4262811 Multiperiod Accounting
39994    -----------------------------------------------------------------------------------------
39995      -- No MPA option is assigned.
39996 
39997 
39998 END IF;
39999 END IF;
40000 --
40001 
40002 --
40003 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40004    trace
40005       (p_msg      => 'END of AcctLineType_74'
40006       ,p_level    => C_LEVEL_PROCEDURE
40007       ,p_module   => l_log_module);
40008 END IF;
40009 --
40010 EXCEPTION
40011   WHEN xla_exceptions_pkg.application_exception THEN
40012       RAISE;
40013   WHEN OTHERS THEN
40014        xla_exceptions_pkg.raise_message
40015            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_74');
40016 END AcctLineType_74;
40017 --
40018 
40019 ---------------------------------------
40020 --
40021 -- PRIVATE FUNCTION
40022 --         AcctLineType_75
40023 --
40024 ---------------------------------------
40025 PROCEDURE AcctLineType_75 (
40026   p_application_id        IN NUMBER
40027  ,p_event_id              IN NUMBER
40028  ,p_calculate_acctd_flag  IN VARCHAR2
40029  ,p_calculate_g_l_flag    IN VARCHAR2
40030  ,p_actual_flag           IN OUT VARCHAR2
40031  ,p_balance_type_code     OUT VARCHAR2
40032  ,p_gain_or_loss_ref      OUT VARCHAR2
40033  
40034 --Cost Management Default Account
40035  , p_source_4            IN NUMBER
40036 --DISTRIBUTION_IDENTIFIER
40037  , p_source_11            IN NUMBER
40038 --Distribution Type
40039  , p_source_12            IN VARCHAR2
40040  , p_source_12_meaning    IN VARCHAR2
40041 --Entered Currency Code
40042  , p_source_15            IN VARCHAR2
40043 --Entered Amount
40044  , p_source_18            IN NUMBER
40045 --Currency Conversion Date
40046  , p_source_19            IN DATE
40047 --Currency Conversion Rate
40048  , p_source_20            IN NUMBER
40049 --Currency Conversion Type
40050  , p_source_21            IN VARCHAR2
40051 --Accounted Amount
40052  , p_source_22            IN NUMBER
40053 --Accounting Line Type
40054  , p_source_24            IN NUMBER
40055 )
40056 IS
40057 
40058 l_component_type              VARCHAR2(80);
40059 l_component_code              VARCHAR2(30);
40060 l_component_type_code         VARCHAR2(1);
40061 l_component_appl_id           INTEGER;
40062 l_amb_context_code            VARCHAR2(30);
40063 l_entity_code                 VARCHAR2(30);
40064 l_event_class_code            VARCHAR2(30);
40065 l_ae_header_id                NUMBER;
40066 l_event_type_code             VARCHAR2(30);
40067 l_line_definition_code        VARCHAR2(30);
40068 l_line_definition_owner_code  VARCHAR2(1);
40069 --
40070 -- adr variables
40071 l_segment                     VARCHAR2(30);
40072 l_ccid                        NUMBER;
40073 l_adr_transaction_coa_id      NUMBER;
40074 l_adr_accounting_coa_id       NUMBER;
40075 l_adr_flexfield_segment_code  VARCHAR2(30);
40076 l_adr_flex_value_set_id       NUMBER;
40077 l_adr_value_type_code         VARCHAR2(30);
40078 l_adr_value_combination_id    NUMBER;
40079 l_adr_value_segment_code      VARCHAR2(30);
40080 
40081 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
40082 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
40083 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
40084 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
40085 
40086 -- 4262811 Variables ------------------------------------------------------------------------------------------
40087 l_entered_amt_idx             NUMBER;
40088 l_accted_amt_idx              NUMBER;
40089 l_acc_rev_flag                VARCHAR2(1);
40090 l_accrual_line_num            NUMBER;
40091 l_tmp_amt                     NUMBER;
40092 l_acc_rev_natural_side_code   VARCHAR2(1);
40093 
40094 l_num_entries                 NUMBER;
40095 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
40096 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
40097 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
40098 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
40099 l_recog_line_1                NUMBER;
40100 l_recog_line_2                NUMBER;
40101 
40102 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
40103 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40104 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40105 
40106 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40107 
40108 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40109 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40110 
40111 ---------------------------------------------------------------------------------------------------------------
40112 
40113 
40114 --
40115 -- bulk performance
40116 --
40117 l_balance_type_code           VARCHAR2(1);
40118 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40119 l_log_module                  VARCHAR2(240);
40120 
40121 --
40122 -- Upgrade strategy
40123 --
40124 l_actual_upg_option           VARCHAR2(1);
40125 l_enc_upg_option           VARCHAR2(1);
40126 
40127 --
40128 BEGIN
40129 --
40130 IF g_log_enabled THEN
40131       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_75';
40132 END IF;
40133 --
40134 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40135 
40136       trace
40137          (p_msg      => 'BEGIN of AcctLineType_75'
40138          ,p_level    => C_LEVEL_PROCEDURE
40139          ,p_module   => l_log_module);
40140 
40141 END IF;
40142 --
40143 l_component_type             := 'AMB_JLT';
40144 l_component_code             := 'INTERORG_PAYABLES';
40145 l_component_type_code        := 'S';
40146 l_component_appl_id          :=  707;
40147 l_amb_context_code           := 'DEFAULT';
40148 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
40149 l_event_class_code           := 'USER_DEFINE';
40150 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
40151 l_line_definition_owner_code := 'S';
40152 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
40153 --
40154 l_balance_type_code          := 'A';
40155 l_segment                     := NULL;
40156 l_ccid                        := NULL;
40157 l_adr_transaction_coa_id      := NULL;
40158 l_adr_accounting_coa_id       := NULL;
40159 l_adr_flexfield_segment_code  := NULL;
40160 l_adr_flex_value_set_id       := NULL;
40161 l_adr_value_type_code         := NULL;
40162 l_adr_value_combination_id    := NULL;
40163 l_adr_value_segment_code      := NULL;
40164 
40165 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40166 l_bflow_class_code           := '';    -- 4219869 Business Flow
40167 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40168 l_budgetary_control_flag     := 'N';
40169 
40170 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40171 l_bflow_applied_to_amt       := NULL; -- 5132302
40172 l_entered_amt_idx            := NULL;          -- 4262811
40173 l_accted_amt_idx             := NULL;          -- 4262811
40174 l_acc_rev_flag               := NULL;          -- 4262811
40175 l_accrual_line_num           := NULL;          -- 4262811
40176 l_tmp_amt                    := NULL;          -- 4262811
40177 --
40178  
40179 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40180     l_balance_type_code <> 'B' THEN
40181 IF NVL(p_source_24,9E125) =  9
40182  THEN 
40183 
40184    --
40185    XLA_AE_LINES_PKG.SetNewLine;
40186 
40187    p_balance_type_code          := l_balance_type_code;
40188    -- set the flag so later we will know whether the gain loss line needs to be created
40189    
40190    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40191      p_actual_flag :='A';
40192    END IF;
40193 
40194    --
40195    -- bulk performance
40196    --
40197    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40198                                       p_header_num   => 0); -- 4262811
40199    --
40200    -- set accounting line options
40201    --
40202    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40203            p_natural_side_code          => 'D'
40204          , p_gain_or_loss_flag          => 'N'
40205          , p_gl_transfer_mode_code      => 'S'
40206          , p_acct_entry_type_code       => 'A'
40207          , p_switch_side_flag           => 'Y'
40208          , p_merge_duplicate_code       => 'N'
40209          );
40210    --
40211    l_acc_rev_natural_side_code := 'C';  -- 4262811
40212    -- 
40213    --
40214    -- set accounting line type info
40215    --
40216    xla_ae_lines_pkg.SetAcctLineType
40217       (p_component_type             => l_component_type
40218       ,p_event_type_code            => l_event_type_code
40219       ,p_line_definition_owner_code => l_line_definition_owner_code
40220       ,p_line_definition_code       => l_line_definition_code
40221       ,p_accounting_line_code       => l_component_code
40222       ,p_accounting_line_type_code  => l_component_type_code
40223       ,p_accounting_line_appl_id    => l_component_appl_id
40224       ,p_amb_context_code           => l_amb_context_code
40225       ,p_entity_code                => l_entity_code
40226       ,p_event_class_code           => l_event_class_code);
40227    --
40228    -- set accounting class
40229    --
40230    xla_ae_lines_pkg.SetAcctClass(
40231            p_accounting_class_code  => 'INTERORG_PAYABLES'
40232          , p_ae_header_id           => l_ae_header_id
40233          );
40234 
40235    --
40236    -- set rounding class
40237    --
40238    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40239                       'INTERORG_PAYABLES';
40240 
40241    --
40242    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40243    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40244    --
40245    -- bulk performance
40246    --
40247    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40248 
40249    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40250       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40251 
40252    -- 4955764
40253    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40254       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40255 
40256    -- 4458381 Public Sector Enh
40257    
40258    --
40259    -- set accounting attributes for the line type
40260    --
40261    l_entered_amt_idx := 3;
40262    l_accted_amt_idx  := 8;
40263    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40264    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40265    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
40266    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
40267    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
40268    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
40269    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
40270    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
40271    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
40272    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
40273    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
40274    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
40275    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
40276    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
40277    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
40278    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
40279    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
40280 
40281    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40282    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40283 
40284    ---------------------------------------------------------------------------------------------------------------
40285    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40286    ---------------------------------------------------------------------------------------------------------------
40287    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40288 
40289    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40290    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40291 
40292    IF xla_accounting_cache_pkg.GetValueChar
40293          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40294          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40295    AND l_bflow_method_code = 'PRIOR_ENTRY'
40296 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40297    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40298          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40299        )
40300    THEN
40301          xla_ae_lines_pkg.BflowUpgEntry
40302            (p_business_method_code    => l_bflow_method_code
40303            ,p_business_class_code     => l_bflow_class_code
40304            ,p_balance_type            => l_balance_type_code);
40305    ELSE
40306       NULL;
40307 -- No business flow processing for business flow method of NONE.
40308    END IF;
40309 
40310    --
40311    -- call analytical criteria
40312    --
40313    
40314    --
40315    -- call description
40316    --
40317    -- No description or it is inherited.
40318    --
40319    -- call ADRs
40320    -- Bug 4922099
40321    --
40322    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40323         (NVL(l_actual_upg_option, 'N') = 'O') OR
40324         (NVL(l_enc_upg_option, 'N') = 'O')
40325       )
40326    THEN
40327    NULL;
40328    --
40329    --
40330    
40331   l_ccid := AcctDerRule_4(
40332            p_application_id           => p_application_id
40333          , p_ae_header_id             => l_ae_header_id 
40334 , p_source_4 => p_source_4
40335          , x_transaction_coa_id       => l_adr_transaction_coa_id
40336          , x_accounting_coa_id        => l_adr_accounting_coa_id
40337          , x_value_type_code          => l_adr_value_type_code
40338          , p_side                     => 'NA'
40339    );
40340 
40341    xla_ae_lines_pkg.set_ccid(
40342     p_code_combination_id          => l_ccid
40343   , p_value_type_code              => l_adr_value_type_code
40344   , p_transaction_coa_id           => l_adr_transaction_coa_id
40345   , p_accounting_coa_id            => l_adr_accounting_coa_id
40346   , p_adr_code                     => 'CST_DEFAULT'
40347   , p_adr_type_code                => 'S'
40348   , p_component_type               => l_component_type
40349   , p_component_code               => l_component_code
40350   , p_component_type_code          => l_component_type_code
40351   , p_component_appl_id            => l_component_appl_id
40352   , p_amb_context_code             => l_amb_context_code
40353   , p_side                         => 'NA'
40354   );
40355 
40356 
40357    --
40358    --
40359    END IF;
40360    --
40361    -- Bug 4922099
40362    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40363           (NVL(l_enc_upg_option, 'N') = 'O')
40364         ) AND
40365         (l_bflow_method_code = 'PRIOR_ENTRY')
40366       )
40367    THEN
40368       IF
40369       --
40370       1 = 2
40371       --
40372       THEN
40373       xla_accounting_err_pkg.build_message
40374                                     (p_appli_s_name            => 'XLA'
40375                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40376                                     ,p_token_1                 => 'LINE_NUMBER'
40377                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40378                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40379                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40380                                                                              l_component_type
40381                                                                             ,l_component_code
40382                                                                             ,l_component_type_code
40383                                                                             ,l_component_appl_id
40384                                                                             ,l_amb_context_code
40385                                                                             ,l_entity_code
40386                                                                             ,l_event_class_code
40387                                                                            )
40388                                     ,p_token_3                 => 'OWNER'
40389                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40390                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40391                                                                           ,p_lookup_code    => l_component_type_code
40392                                                                          )
40393                                     ,p_token_4                 => 'PRODUCT_NAME'
40394                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40395                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40396                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40397                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40398                                     ,p_ae_header_id            =>  NULL
40399                                        );
40400 
40401         IF (C_LEVEL_ERROR>= g_log_level) THEN
40402                  trace
40403                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40404                       ,p_level    => C_LEVEL_ERROR
40405                       ,p_module   => l_log_module);
40406         END IF;
40407       END IF;
40408    END IF;
40409    --
40410    --
40411    ------------------------------------------------------------------------------------------------
40412    -- 4219869 Business Flow
40413    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40414    -- Prior Entry.  Currently, the following code is always generated.
40415    ------------------------------------------------------------------------------------------------
40416    XLA_AE_LINES_PKG.ValidateCurrentLine;
40417 
40418    ------------------------------------------------------------------------------------
40419    -- 4219869 Business Flow
40420    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40421    ------------------------------------------------------------------------------------
40422    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40423 
40424    ----------------------------------------------------------------------------------
40425    -- 4219869 Business Flow
40426    -- Update journal entry status -- Need to generate this within IF <condition>
40427    ----------------------------------------------------------------------------------
40428    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40429          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40430          ,p_balance_type_code => l_balance_type_code
40431          );
40432 
40433    -------------------------------------------------------------------------------------------
40434    -- 4262811 - Generate the Accrual Reversal lines
40435    -------------------------------------------------------------------------------------------
40436    BEGIN
40437       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40438                               (g_array_event(p_event_id).array_value_num('header_index'));
40439       IF l_acc_rev_flag IS NULL THEN
40440          l_acc_rev_flag := 'N';
40441       END IF;
40442    EXCEPTION
40443       WHEN OTHERS THEN
40444          l_acc_rev_flag := 'N';
40445    END;
40446    --
40447    IF (l_acc_rev_flag = 'Y') THEN
40448 
40449        -- 4645092  ------------------------------------------------------------------------------
40450        -- To allow MPA report to determine if it should generate report process
40451        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40452        ------------------------------------------------------------------------------------------
40453 
40454        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40455        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40456    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
40457    -- call ADRs
40458    -- Bug 4922099
40459    --
40460    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40461         (NVL(l_actual_upg_option, 'N') = 'O') OR
40462         (NVL(l_enc_upg_option, 'N') = 'O')
40463       )
40464    THEN
40465    NULL;
40466    --
40467    --
40468    
40469   l_ccid := AcctDerRule_4(
40470            p_application_id           => p_application_id
40471          , p_ae_header_id             => l_ae_header_id 
40472 , p_source_4 => p_source_4
40473          , x_transaction_coa_id       => l_adr_transaction_coa_id
40474          , x_accounting_coa_id        => l_adr_accounting_coa_id
40475          , x_value_type_code          => l_adr_value_type_code
40476          , p_side                     => 'NA'
40477    );
40478 
40479    xla_ae_lines_pkg.set_ccid(
40480     p_code_combination_id          => l_ccid
40481   , p_value_type_code              => l_adr_value_type_code
40482   , p_transaction_coa_id           => l_adr_transaction_coa_id
40483   , p_accounting_coa_id            => l_adr_accounting_coa_id
40484   , p_adr_code                     => 'CST_DEFAULT'
40485   , p_adr_type_code                => 'S'
40486   , p_component_type               => l_component_type
40487   , p_component_code               => l_component_code
40488   , p_component_type_code          => l_component_type_code
40489   , p_component_appl_id            => l_component_appl_id
40490   , p_amb_context_code             => l_amb_context_code
40491   , p_side                         => 'NA'
40492   );
40493 
40494 
40495    --
40496    --
40497    END IF;
40498 
40499        --
40500        -- Update the line information that should be overwritten
40501        --
40502        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40503                                          p_header_num   => 1);
40504        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40505 
40506        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40507 
40508        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40509           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40510        END IF;
40511 
40512       --
40513       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40514       --
40515       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40516           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40517       ELSE
40518           ---------------------------------------------------------------------------------------------------
40519           -- 4262811a Switch Sign
40520           ---------------------------------------------------------------------------------------------------
40521           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40522           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40523                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40524           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40525                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40526           -- 5132302
40527           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40528                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40529 
40530       END IF;
40531 
40532       -- 4955764
40533       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40534       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40535 
40536 
40537       XLA_AE_LINES_PKG.ValidateCurrentLine;
40538       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40539 
40540       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40541                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40542                ,p_balance_type_code => l_balance_type_code);
40543 
40544    END IF;
40545 
40546    -----------------------------------------------------------------------------------------
40547    -- 4262811 Multiperiod Accounting
40548    -----------------------------------------------------------------------------------------
40549      -- No MPA option is assigned.
40550 
40551 
40552 END IF;
40553 END IF;
40554 --
40555 
40556 --
40557 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40558    trace
40559       (p_msg      => 'END of AcctLineType_75'
40560       ,p_level    => C_LEVEL_PROCEDURE
40561       ,p_module   => l_log_module);
40562 END IF;
40563 --
40564 EXCEPTION
40565   WHEN xla_exceptions_pkg.application_exception THEN
40566       RAISE;
40567   WHEN OTHERS THEN
40568        xla_exceptions_pkg.raise_message
40569            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_75');
40570 END AcctLineType_75;
40571 --
40572 
40573 ---------------------------------------
40574 --
40575 -- PRIVATE FUNCTION
40576 --         AcctLineType_76
40577 --
40578 ---------------------------------------
40579 PROCEDURE AcctLineType_76 (
40580   p_application_id        IN NUMBER
40581  ,p_event_id              IN NUMBER
40582  ,p_calculate_acctd_flag  IN VARCHAR2
40583  ,p_calculate_g_l_flag    IN VARCHAR2
40584  ,p_actual_flag           IN OUT VARCHAR2
40585  ,p_balance_type_code     OUT VARCHAR2
40586  ,p_gain_or_loss_ref      OUT VARCHAR2
40587  
40588 --Cost Management Default Account
40589  , p_source_4            IN NUMBER
40590 --DISTRIBUTION_IDENTIFIER
40591  , p_source_11            IN NUMBER
40592 --Distribution Type
40593  , p_source_12            IN VARCHAR2
40594  , p_source_12_meaning    IN VARCHAR2
40595 --Entered Currency Code
40596  , p_source_15            IN VARCHAR2
40597 --Entered Amount
40598  , p_source_18            IN NUMBER
40599 --Currency Conversion Date
40600  , p_source_19            IN DATE
40601 --Currency Conversion Rate
40602  , p_source_20            IN NUMBER
40603 --Currency Conversion Type
40604  , p_source_21            IN VARCHAR2
40605 --Accounted Amount
40606  , p_source_22            IN NUMBER
40607 --Accounting Line Type
40608  , p_source_24            IN NUMBER
40609 )
40610 IS
40611 
40612 l_component_type              VARCHAR2(80);
40613 l_component_code              VARCHAR2(30);
40614 l_component_type_code         VARCHAR2(1);
40615 l_component_appl_id           INTEGER;
40616 l_amb_context_code            VARCHAR2(30);
40617 l_entity_code                 VARCHAR2(30);
40618 l_event_class_code            VARCHAR2(30);
40619 l_ae_header_id                NUMBER;
40620 l_event_type_code             VARCHAR2(30);
40621 l_line_definition_code        VARCHAR2(30);
40622 l_line_definition_owner_code  VARCHAR2(1);
40623 --
40624 -- adr variables
40625 l_segment                     VARCHAR2(30);
40626 l_ccid                        NUMBER;
40627 l_adr_transaction_coa_id      NUMBER;
40628 l_adr_accounting_coa_id       NUMBER;
40629 l_adr_flexfield_segment_code  VARCHAR2(30);
40630 l_adr_flex_value_set_id       NUMBER;
40631 l_adr_value_type_code         VARCHAR2(30);
40632 l_adr_value_combination_id    NUMBER;
40633 l_adr_value_segment_code      VARCHAR2(30);
40634 
40635 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
40636 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
40637 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
40638 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
40639 
40640 -- 4262811 Variables ------------------------------------------------------------------------------------------
40641 l_entered_amt_idx             NUMBER;
40642 l_accted_amt_idx              NUMBER;
40643 l_acc_rev_flag                VARCHAR2(1);
40644 l_accrual_line_num            NUMBER;
40645 l_tmp_amt                     NUMBER;
40646 l_acc_rev_natural_side_code   VARCHAR2(1);
40647 
40648 l_num_entries                 NUMBER;
40649 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
40650 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
40651 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
40652 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
40653 l_recog_line_1                NUMBER;
40654 l_recog_line_2                NUMBER;
40655 
40656 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
40657 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40658 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40659 
40660 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40661 
40662 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40663 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40664 
40665 ---------------------------------------------------------------------------------------------------------------
40666 
40667 
40668 --
40669 -- bulk performance
40670 --
40671 l_balance_type_code           VARCHAR2(1);
40672 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40673 l_log_module                  VARCHAR2(240);
40674 
40675 --
40676 -- Upgrade strategy
40677 --
40678 l_actual_upg_option           VARCHAR2(1);
40679 l_enc_upg_option           VARCHAR2(1);
40680 
40681 --
40682 BEGIN
40683 --
40684 IF g_log_enabled THEN
40685       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_76';
40686 END IF;
40687 --
40688 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40689 
40690       trace
40691          (p_msg      => 'BEGIN of AcctLineType_76'
40692          ,p_level    => C_LEVEL_PROCEDURE
40693          ,p_module   => l_log_module);
40694 
40695 END IF;
40696 --
40697 l_component_type             := 'AMB_JLT';
40698 l_component_code             := 'INTERORG_PAYABLES';
40699 l_component_type_code        := 'S';
40700 l_component_appl_id          :=  707;
40701 l_amb_context_code           := 'DEFAULT';
40702 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
40703 l_event_class_code           := 'INT_ORDER_TO_EXP';
40704 l_event_type_code            := 'INT_ORDER_TO_EXP_ALL';
40705 l_line_definition_owner_code := 'S';
40706 l_line_definition_code       := 'INT_ORDER_TO_EXP';
40707 --
40708 l_balance_type_code          := 'A';
40709 l_segment                     := NULL;
40710 l_ccid                        := NULL;
40711 l_adr_transaction_coa_id      := NULL;
40712 l_adr_accounting_coa_id       := NULL;
40713 l_adr_flexfield_segment_code  := NULL;
40714 l_adr_flex_value_set_id       := NULL;
40715 l_adr_value_type_code         := NULL;
40716 l_adr_value_combination_id    := NULL;
40717 l_adr_value_segment_code      := NULL;
40718 
40719 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40720 l_bflow_class_code           := '';    -- 4219869 Business Flow
40721 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40722 l_budgetary_control_flag     := 'N';
40723 
40724 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40725 l_bflow_applied_to_amt       := NULL; -- 5132302
40726 l_entered_amt_idx            := NULL;          -- 4262811
40727 l_accted_amt_idx             := NULL;          -- 4262811
40728 l_acc_rev_flag               := NULL;          -- 4262811
40729 l_accrual_line_num           := NULL;          -- 4262811
40730 l_tmp_amt                    := NULL;          -- 4262811
40731 --
40732  
40733 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40734     l_balance_type_code <> 'B' THEN
40735 IF NVL(p_source_24,9E125) =  9
40736  THEN 
40737 
40738    --
40739    XLA_AE_LINES_PKG.SetNewLine;
40740 
40741    p_balance_type_code          := l_balance_type_code;
40742    -- set the flag so later we will know whether the gain loss line needs to be created
40743    
40744    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40745      p_actual_flag :='A';
40746    END IF;
40747 
40748    --
40749    -- bulk performance
40750    --
40751    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40752                                       p_header_num   => 0); -- 4262811
40753    --
40754    -- set accounting line options
40755    --
40756    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40757            p_natural_side_code          => 'D'
40758          , p_gain_or_loss_flag          => 'N'
40759          , p_gl_transfer_mode_code      => 'S'
40760          , p_acct_entry_type_code       => 'A'
40761          , p_switch_side_flag           => 'Y'
40762          , p_merge_duplicate_code       => 'N'
40763          );
40764    --
40765    l_acc_rev_natural_side_code := 'C';  -- 4262811
40766    -- 
40767    --
40768    -- set accounting line type info
40769    --
40770    xla_ae_lines_pkg.SetAcctLineType
40771       (p_component_type             => l_component_type
40772       ,p_event_type_code            => l_event_type_code
40773       ,p_line_definition_owner_code => l_line_definition_owner_code
40774       ,p_line_definition_code       => l_line_definition_code
40775       ,p_accounting_line_code       => l_component_code
40776       ,p_accounting_line_type_code  => l_component_type_code
40777       ,p_accounting_line_appl_id    => l_component_appl_id
40778       ,p_amb_context_code           => l_amb_context_code
40779       ,p_entity_code                => l_entity_code
40780       ,p_event_class_code           => l_event_class_code);
40781    --
40782    -- set accounting class
40783    --
40784    xla_ae_lines_pkg.SetAcctClass(
40785            p_accounting_class_code  => 'INTERORG_PAYABLES'
40786          , p_ae_header_id           => l_ae_header_id
40787          );
40788 
40789    --
40790    -- set rounding class
40791    --
40792    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40793                       'INTERORG_PAYABLES';
40794 
40795    --
40796    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40797    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40798    --
40799    -- bulk performance
40800    --
40801    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40802 
40803    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40804       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40805 
40806    -- 4955764
40807    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40808       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40809 
40810    -- 4458381 Public Sector Enh
40811    
40812    --
40813    -- set accounting attributes for the line type
40814    --
40815    l_entered_amt_idx := 3;
40816    l_accted_amt_idx  := 8;
40817    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40818    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40819    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
40820    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
40821    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
40822    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
40823    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
40824    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
40825    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
40826    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
40827    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
40828    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
40829    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
40830    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
40831    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
40832    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
40833    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
40834 
40835    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40836    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40837 
40838    ---------------------------------------------------------------------------------------------------------------
40839    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40840    ---------------------------------------------------------------------------------------------------------------
40841    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40842 
40843    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40844    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40845 
40846    IF xla_accounting_cache_pkg.GetValueChar
40847          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40848          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40849    AND l_bflow_method_code = 'PRIOR_ENTRY'
40850 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40851    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40852          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40853        )
40854    THEN
40855          xla_ae_lines_pkg.BflowUpgEntry
40856            (p_business_method_code    => l_bflow_method_code
40857            ,p_business_class_code     => l_bflow_class_code
40858            ,p_balance_type            => l_balance_type_code);
40859    ELSE
40860       NULL;
40861 -- No business flow processing for business flow method of NONE.
40862    END IF;
40863 
40864    --
40865    -- call analytical criteria
40866    --
40867    
40868    --
40869    -- call description
40870    --
40871    -- No description or it is inherited.
40872    --
40873    -- call ADRs
40874    -- Bug 4922099
40875    --
40876    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40877         (NVL(l_actual_upg_option, 'N') = 'O') OR
40878         (NVL(l_enc_upg_option, 'N') = 'O')
40879       )
40880    THEN
40881    NULL;
40882    --
40883    --
40884    
40885   l_ccid := AcctDerRule_4(
40886            p_application_id           => p_application_id
40887          , p_ae_header_id             => l_ae_header_id 
40888 , p_source_4 => p_source_4
40889          , x_transaction_coa_id       => l_adr_transaction_coa_id
40890          , x_accounting_coa_id        => l_adr_accounting_coa_id
40891          , x_value_type_code          => l_adr_value_type_code
40892          , p_side                     => 'NA'
40893    );
40894 
40895    xla_ae_lines_pkg.set_ccid(
40896     p_code_combination_id          => l_ccid
40897   , p_value_type_code              => l_adr_value_type_code
40898   , p_transaction_coa_id           => l_adr_transaction_coa_id
40899   , p_accounting_coa_id            => l_adr_accounting_coa_id
40900   , p_adr_code                     => 'CST_DEFAULT'
40901   , p_adr_type_code                => 'S'
40902   , p_component_type               => l_component_type
40903   , p_component_code               => l_component_code
40904   , p_component_type_code          => l_component_type_code
40905   , p_component_appl_id            => l_component_appl_id
40906   , p_amb_context_code             => l_amb_context_code
40907   , p_side                         => 'NA'
40908   );
40909 
40910 
40911    --
40912    --
40913    END IF;
40914    --
40915    -- Bug 4922099
40916    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40917           (NVL(l_enc_upg_option, 'N') = 'O')
40918         ) AND
40919         (l_bflow_method_code = 'PRIOR_ENTRY')
40920       )
40921    THEN
40922       IF
40923       --
40924       1 = 2
40925       --
40926       THEN
40927       xla_accounting_err_pkg.build_message
40928                                     (p_appli_s_name            => 'XLA'
40929                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40930                                     ,p_token_1                 => 'LINE_NUMBER'
40931                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40932                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40933                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40934                                                                              l_component_type
40935                                                                             ,l_component_code
40936                                                                             ,l_component_type_code
40937                                                                             ,l_component_appl_id
40938                                                                             ,l_amb_context_code
40939                                                                             ,l_entity_code
40940                                                                             ,l_event_class_code
40941                                                                            )
40942                                     ,p_token_3                 => 'OWNER'
40943                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40944                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40945                                                                           ,p_lookup_code    => l_component_type_code
40946                                                                          )
40947                                     ,p_token_4                 => 'PRODUCT_NAME'
40948                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40949                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40950                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40951                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40952                                     ,p_ae_header_id            =>  NULL
40953                                        );
40954 
40955         IF (C_LEVEL_ERROR>= g_log_level) THEN
40956                  trace
40957                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40958                       ,p_level    => C_LEVEL_ERROR
40959                       ,p_module   => l_log_module);
40960         END IF;
40961       END IF;
40962    END IF;
40963    --
40964    --
40965    ------------------------------------------------------------------------------------------------
40966    -- 4219869 Business Flow
40967    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40968    -- Prior Entry.  Currently, the following code is always generated.
40969    ------------------------------------------------------------------------------------------------
40970    XLA_AE_LINES_PKG.ValidateCurrentLine;
40971 
40972    ------------------------------------------------------------------------------------
40973    -- 4219869 Business Flow
40974    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40975    ------------------------------------------------------------------------------------
40976    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40977 
40978    ----------------------------------------------------------------------------------
40979    -- 4219869 Business Flow
40980    -- Update journal entry status -- Need to generate this within IF <condition>
40981    ----------------------------------------------------------------------------------
40982    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40983          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40984          ,p_balance_type_code => l_balance_type_code
40985          );
40986 
40987    -------------------------------------------------------------------------------------------
40988    -- 4262811 - Generate the Accrual Reversal lines
40989    -------------------------------------------------------------------------------------------
40990    BEGIN
40991       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40992                               (g_array_event(p_event_id).array_value_num('header_index'));
40993       IF l_acc_rev_flag IS NULL THEN
40994          l_acc_rev_flag := 'N';
40995       END IF;
40996    EXCEPTION
40997       WHEN OTHERS THEN
40998          l_acc_rev_flag := 'N';
40999    END;
41000    --
41001    IF (l_acc_rev_flag = 'Y') THEN
41002 
41003        -- 4645092  ------------------------------------------------------------------------------
41004        -- To allow MPA report to determine if it should generate report process
41005        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41006        ------------------------------------------------------------------------------------------
41007 
41008        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41009        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41010    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
41011    -- call ADRs
41012    -- Bug 4922099
41013    --
41014    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41015         (NVL(l_actual_upg_option, 'N') = 'O') OR
41016         (NVL(l_enc_upg_option, 'N') = 'O')
41017       )
41018    THEN
41019    NULL;
41020    --
41021    --
41022    
41023   l_ccid := AcctDerRule_4(
41024            p_application_id           => p_application_id
41025          , p_ae_header_id             => l_ae_header_id 
41026 , p_source_4 => p_source_4
41027          , x_transaction_coa_id       => l_adr_transaction_coa_id
41028          , x_accounting_coa_id        => l_adr_accounting_coa_id
41029          , x_value_type_code          => l_adr_value_type_code
41030          , p_side                     => 'NA'
41031    );
41032 
41033    xla_ae_lines_pkg.set_ccid(
41034     p_code_combination_id          => l_ccid
41035   , p_value_type_code              => l_adr_value_type_code
41036   , p_transaction_coa_id           => l_adr_transaction_coa_id
41037   , p_accounting_coa_id            => l_adr_accounting_coa_id
41038   , p_adr_code                     => 'CST_DEFAULT'
41039   , p_adr_type_code                => 'S'
41040   , p_component_type               => l_component_type
41041   , p_component_code               => l_component_code
41042   , p_component_type_code          => l_component_type_code
41043   , p_component_appl_id            => l_component_appl_id
41044   , p_amb_context_code             => l_amb_context_code
41045   , p_side                         => 'NA'
41046   );
41047 
41048 
41049    --
41050    --
41051    END IF;
41052 
41053        --
41054        -- Update the line information that should be overwritten
41055        --
41056        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41057                                          p_header_num   => 1);
41058        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
41059 
41060        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41061 
41062        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
41063           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41064        END IF;
41065 
41066       --
41067       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41068       --
41069       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41070           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
41071       ELSE
41072           ---------------------------------------------------------------------------------------------------
41073           -- 4262811a Switch Sign
41074           ---------------------------------------------------------------------------------------------------
41075           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
41076           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41077                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41078           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41079                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41080           -- 5132302
41081           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41082                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41083 
41084       END IF;
41085 
41086       -- 4955764
41087       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41088       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41089 
41090 
41091       XLA_AE_LINES_PKG.ValidateCurrentLine;
41092       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41093 
41094       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41095                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41096                ,p_balance_type_code => l_balance_type_code);
41097 
41098    END IF;
41099 
41100    -----------------------------------------------------------------------------------------
41101    -- 4262811 Multiperiod Accounting
41102    -----------------------------------------------------------------------------------------
41103      -- No MPA option is assigned.
41104 
41105 
41106 END IF;
41107 END IF;
41108 --
41109 
41110 --
41111 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41112    trace
41113       (p_msg      => 'END of AcctLineType_76'
41114       ,p_level    => C_LEVEL_PROCEDURE
41115       ,p_module   => l_log_module);
41116 END IF;
41117 --
41118 EXCEPTION
41119   WHEN xla_exceptions_pkg.application_exception THEN
41120       RAISE;
41121   WHEN OTHERS THEN
41122        xla_exceptions_pkg.raise_message
41123            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_76');
41124 END AcctLineType_76;
41125 --
41126 
41127 ---------------------------------------
41128 --
41129 -- PRIVATE FUNCTION
41130 --         AcctLineType_77
41131 --
41132 ---------------------------------------
41133 PROCEDURE AcctLineType_77 (
41134   p_application_id        IN NUMBER
41135  ,p_event_id              IN NUMBER
41136  ,p_calculate_acctd_flag  IN VARCHAR2
41137  ,p_calculate_g_l_flag    IN VARCHAR2
41138  ,p_actual_flag           IN OUT VARCHAR2
41139  ,p_balance_type_code     OUT VARCHAR2
41140  ,p_gain_or_loss_ref      OUT VARCHAR2
41141  
41142 --Cost Management Default Account
41143  , p_source_4            IN NUMBER
41144 --DISTRIBUTION_IDENTIFIER
41145  , p_source_11            IN NUMBER
41146 --Distribution Type
41147  , p_source_12            IN VARCHAR2
41148  , p_source_12_meaning    IN VARCHAR2
41149 --Entered Currency Code
41150  , p_source_15            IN VARCHAR2
41151 --Entered Amount
41152  , p_source_18            IN NUMBER
41153 --Currency Conversion Date
41154  , p_source_19            IN DATE
41155 --Currency Conversion Rate
41156  , p_source_20            IN NUMBER
41157 --Currency Conversion Type
41158  , p_source_21            IN VARCHAR2
41159 --Accounted Amount
41160  , p_source_22            IN NUMBER
41161 --Accounting Line Type
41162  , p_source_24            IN NUMBER
41163 )
41164 IS
41165 
41166 l_component_type              VARCHAR2(80);
41167 l_component_code              VARCHAR2(30);
41168 l_component_type_code         VARCHAR2(1);
41169 l_component_appl_id           INTEGER;
41170 l_amb_context_code            VARCHAR2(30);
41171 l_entity_code                 VARCHAR2(30);
41172 l_event_class_code            VARCHAR2(30);
41173 l_ae_header_id                NUMBER;
41174 l_event_type_code             VARCHAR2(30);
41175 l_line_definition_code        VARCHAR2(30);
41176 l_line_definition_owner_code  VARCHAR2(1);
41177 --
41178 -- adr variables
41179 l_segment                     VARCHAR2(30);
41180 l_ccid                        NUMBER;
41181 l_adr_transaction_coa_id      NUMBER;
41182 l_adr_accounting_coa_id       NUMBER;
41183 l_adr_flexfield_segment_code  VARCHAR2(30);
41184 l_adr_flex_value_set_id       NUMBER;
41185 l_adr_value_type_code         VARCHAR2(30);
41186 l_adr_value_combination_id    NUMBER;
41187 l_adr_value_segment_code      VARCHAR2(30);
41188 
41189 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41190 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41191 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41192 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41193 
41194 -- 4262811 Variables ------------------------------------------------------------------------------------------
41195 l_entered_amt_idx             NUMBER;
41196 l_accted_amt_idx              NUMBER;
41197 l_acc_rev_flag                VARCHAR2(1);
41198 l_accrual_line_num            NUMBER;
41199 l_tmp_amt                     NUMBER;
41200 l_acc_rev_natural_side_code   VARCHAR2(1);
41201 
41202 l_num_entries                 NUMBER;
41203 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41204 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41205 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41206 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41207 l_recog_line_1                NUMBER;
41208 l_recog_line_2                NUMBER;
41209 
41210 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41211 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41212 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41213 
41214 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41215 
41216 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41217 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41218 
41219 ---------------------------------------------------------------------------------------------------------------
41220 
41221 
41222 --
41223 -- bulk performance
41224 --
41225 l_balance_type_code           VARCHAR2(1);
41226 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41227 l_log_module                  VARCHAR2(240);
41228 
41229 --
41230 -- Upgrade strategy
41231 --
41232 l_actual_upg_option           VARCHAR2(1);
41233 l_enc_upg_option           VARCHAR2(1);
41234 
41235 --
41236 BEGIN
41237 --
41238 IF g_log_enabled THEN
41239       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_77';
41240 END IF;
41241 --
41242 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41243 
41244       trace
41245          (p_msg      => 'BEGIN of AcctLineType_77'
41246          ,p_level    => C_LEVEL_PROCEDURE
41247          ,p_module   => l_log_module);
41248 
41249 END IF;
41250 --
41251 l_component_type             := 'AMB_JLT';
41252 l_component_code             := 'INTERORG_PAYABLES';
41253 l_component_type_code        := 'S';
41254 l_component_appl_id          :=  707;
41255 l_amb_context_code           := 'DEFAULT';
41256 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
41257 l_event_class_code           := 'USER_DEFINE';
41258 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
41259 l_line_definition_owner_code := 'S';
41260 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
41261 --
41262 l_balance_type_code          := 'A';
41263 l_segment                     := NULL;
41264 l_ccid                        := NULL;
41265 l_adr_transaction_coa_id      := NULL;
41266 l_adr_accounting_coa_id       := NULL;
41267 l_adr_flexfield_segment_code  := NULL;
41268 l_adr_flex_value_set_id       := NULL;
41269 l_adr_value_type_code         := NULL;
41270 l_adr_value_combination_id    := NULL;
41271 l_adr_value_segment_code      := NULL;
41272 
41273 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41274 l_bflow_class_code           := '';    -- 4219869 Business Flow
41275 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41276 l_budgetary_control_flag     := 'N';
41277 
41278 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41279 l_bflow_applied_to_amt       := NULL; -- 5132302
41280 l_entered_amt_idx            := NULL;          -- 4262811
41281 l_accted_amt_idx             := NULL;          -- 4262811
41282 l_acc_rev_flag               := NULL;          -- 4262811
41283 l_accrual_line_num           := NULL;          -- 4262811
41284 l_tmp_amt                    := NULL;          -- 4262811
41285 --
41286  
41287 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41288     l_balance_type_code <> 'B' THEN
41289 IF NVL(p_source_24,9E125) =  9
41290  THEN 
41291 
41292    --
41293    XLA_AE_LINES_PKG.SetNewLine;
41294 
41295    p_balance_type_code          := l_balance_type_code;
41296    -- set the flag so later we will know whether the gain loss line needs to be created
41297    
41298    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41299      p_actual_flag :='A';
41300    END IF;
41301 
41302    --
41303    -- bulk performance
41304    --
41305    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41306                                       p_header_num   => 0); -- 4262811
41307    --
41308    -- set accounting line options
41309    --
41310    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41311            p_natural_side_code          => 'D'
41312          , p_gain_or_loss_flag          => 'N'
41313          , p_gl_transfer_mode_code      => 'S'
41314          , p_acct_entry_type_code       => 'A'
41315          , p_switch_side_flag           => 'Y'
41316          , p_merge_duplicate_code       => 'N'
41317          );
41318    --
41319    l_acc_rev_natural_side_code := 'C';  -- 4262811
41320    -- 
41321    --
41322    -- set accounting line type info
41323    --
41324    xla_ae_lines_pkg.SetAcctLineType
41325       (p_component_type             => l_component_type
41326       ,p_event_type_code            => l_event_type_code
41327       ,p_line_definition_owner_code => l_line_definition_owner_code
41328       ,p_line_definition_code       => l_line_definition_code
41329       ,p_accounting_line_code       => l_component_code
41330       ,p_accounting_line_type_code  => l_component_type_code
41331       ,p_accounting_line_appl_id    => l_component_appl_id
41332       ,p_amb_context_code           => l_amb_context_code
41333       ,p_entity_code                => l_entity_code
41334       ,p_event_class_code           => l_event_class_code);
41335    --
41336    -- set accounting class
41337    --
41338    xla_ae_lines_pkg.SetAcctClass(
41339            p_accounting_class_code  => 'INTERORG_PAYABLES'
41340          , p_ae_header_id           => l_ae_header_id
41341          );
41342 
41343    --
41344    -- set rounding class
41345    --
41346    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41347                       'INTERORG_PAYABLES';
41348 
41349    --
41350    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41351    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41352    --
41353    -- bulk performance
41354    --
41355    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41356 
41357    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41358       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41359 
41360    -- 4955764
41361    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41362       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41363 
41364    -- 4458381 Public Sector Enh
41365    
41366    --
41367    -- set accounting attributes for the line type
41368    --
41369    l_entered_amt_idx := 3;
41370    l_accted_amt_idx  := 8;
41371    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41372    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41373    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
41374    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
41375    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
41376    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
41377    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
41378    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
41379    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
41380    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
41381    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
41382    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
41383    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
41384    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
41385    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
41386    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
41387    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
41388 
41389    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41390    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41391 
41392    ---------------------------------------------------------------------------------------------------------------
41393    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41394    ---------------------------------------------------------------------------------------------------------------
41395    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41396 
41397    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41398    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41399 
41400    IF xla_accounting_cache_pkg.GetValueChar
41401          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41402          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41403    AND l_bflow_method_code = 'PRIOR_ENTRY'
41404 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41405    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41406          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41407        )
41408    THEN
41409          xla_ae_lines_pkg.BflowUpgEntry
41410            (p_business_method_code    => l_bflow_method_code
41411            ,p_business_class_code     => l_bflow_class_code
41412            ,p_balance_type            => l_balance_type_code);
41413    ELSE
41414       NULL;
41415 -- No business flow processing for business flow method of NONE.
41416    END IF;
41417 
41418    --
41419    -- call analytical criteria
41420    --
41421    
41422    --
41423    -- call description
41424    --
41425    -- No description or it is inherited.
41426    --
41427    -- call ADRs
41428    -- Bug 4922099
41429    --
41430    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41431         (NVL(l_actual_upg_option, 'N') = 'O') OR
41432         (NVL(l_enc_upg_option, 'N') = 'O')
41433       )
41434    THEN
41435    NULL;
41436    --
41437    --
41438    
41439   l_ccid := AcctDerRule_4(
41440            p_application_id           => p_application_id
41441          , p_ae_header_id             => l_ae_header_id 
41442 , p_source_4 => p_source_4
41443          , x_transaction_coa_id       => l_adr_transaction_coa_id
41444          , x_accounting_coa_id        => l_adr_accounting_coa_id
41445          , x_value_type_code          => l_adr_value_type_code
41446          , p_side                     => 'NA'
41447    );
41448 
41449    xla_ae_lines_pkg.set_ccid(
41450     p_code_combination_id          => l_ccid
41451   , p_value_type_code              => l_adr_value_type_code
41452   , p_transaction_coa_id           => l_adr_transaction_coa_id
41453   , p_accounting_coa_id            => l_adr_accounting_coa_id
41454   , p_adr_code                     => 'CST_DEFAULT'
41455   , p_adr_type_code                => 'S'
41456   , p_component_type               => l_component_type
41457   , p_component_code               => l_component_code
41458   , p_component_type_code          => l_component_type_code
41459   , p_component_appl_id            => l_component_appl_id
41460   , p_amb_context_code             => l_amb_context_code
41461   , p_side                         => 'NA'
41462   );
41463 
41464 
41465    --
41466    --
41467    END IF;
41468    --
41469    -- Bug 4922099
41470    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41471           (NVL(l_enc_upg_option, 'N') = 'O')
41472         ) AND
41473         (l_bflow_method_code = 'PRIOR_ENTRY')
41474       )
41475    THEN
41476       IF
41477       --
41478       1 = 2
41479       --
41480       THEN
41481       xla_accounting_err_pkg.build_message
41482                                     (p_appli_s_name            => 'XLA'
41483                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41484                                     ,p_token_1                 => 'LINE_NUMBER'
41485                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
41486                                     ,p_token_2                 => 'LINE_TYPE_NAME'
41487                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
41488                                                                              l_component_type
41489                                                                             ,l_component_code
41490                                                                             ,l_component_type_code
41491                                                                             ,l_component_appl_id
41492                                                                             ,l_amb_context_code
41493                                                                             ,l_entity_code
41494                                                                             ,l_event_class_code
41495                                                                            )
41496                                     ,p_token_3                 => 'OWNER'
41497                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
41498                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
41499                                                                           ,p_lookup_code    => l_component_type_code
41500                                                                          )
41501                                     ,p_token_4                 => 'PRODUCT_NAME'
41502                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41503                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41504                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41505                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41506                                     ,p_ae_header_id            =>  NULL
41507                                        );
41508 
41509         IF (C_LEVEL_ERROR>= g_log_level) THEN
41510                  trace
41511                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41512                       ,p_level    => C_LEVEL_ERROR
41513                       ,p_module   => l_log_module);
41514         END IF;
41515       END IF;
41516    END IF;
41517    --
41518    --
41519    ------------------------------------------------------------------------------------------------
41520    -- 4219869 Business Flow
41521    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41522    -- Prior Entry.  Currently, the following code is always generated.
41523    ------------------------------------------------------------------------------------------------
41524    XLA_AE_LINES_PKG.ValidateCurrentLine;
41525 
41526    ------------------------------------------------------------------------------------
41527    -- 4219869 Business Flow
41528    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41529    ------------------------------------------------------------------------------------
41530    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41531 
41532    ----------------------------------------------------------------------------------
41533    -- 4219869 Business Flow
41534    -- Update journal entry status -- Need to generate this within IF <condition>
41535    ----------------------------------------------------------------------------------
41536    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41537          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41538          ,p_balance_type_code => l_balance_type_code
41539          );
41540 
41541    -------------------------------------------------------------------------------------------
41542    -- 4262811 - Generate the Accrual Reversal lines
41543    -------------------------------------------------------------------------------------------
41544    BEGIN
41545       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41546                               (g_array_event(p_event_id).array_value_num('header_index'));
41547       IF l_acc_rev_flag IS NULL THEN
41548          l_acc_rev_flag := 'N';
41549       END IF;
41550    EXCEPTION
41551       WHEN OTHERS THEN
41552          l_acc_rev_flag := 'N';
41553    END;
41554    --
41555    IF (l_acc_rev_flag = 'Y') THEN
41556 
41557        -- 4645092  ------------------------------------------------------------------------------
41558        -- To allow MPA report to determine if it should generate report process
41559        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41560        ------------------------------------------------------------------------------------------
41561 
41562        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41563        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41564    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
41565    -- call ADRs
41566    -- Bug 4922099
41567    --
41568    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41569         (NVL(l_actual_upg_option, 'N') = 'O') OR
41570         (NVL(l_enc_upg_option, 'N') = 'O')
41571       )
41572    THEN
41573    NULL;
41574    --
41575    --
41576    
41577   l_ccid := AcctDerRule_4(
41578            p_application_id           => p_application_id
41579          , p_ae_header_id             => l_ae_header_id 
41580 , p_source_4 => p_source_4
41581          , x_transaction_coa_id       => l_adr_transaction_coa_id
41582          , x_accounting_coa_id        => l_adr_accounting_coa_id
41583          , x_value_type_code          => l_adr_value_type_code
41584          , p_side                     => 'NA'
41585    );
41586 
41587    xla_ae_lines_pkg.set_ccid(
41588     p_code_combination_id          => l_ccid
41589   , p_value_type_code              => l_adr_value_type_code
41590   , p_transaction_coa_id           => l_adr_transaction_coa_id
41591   , p_accounting_coa_id            => l_adr_accounting_coa_id
41592   , p_adr_code                     => 'CST_DEFAULT'
41593   , p_adr_type_code                => 'S'
41594   , p_component_type               => l_component_type
41595   , p_component_code               => l_component_code
41596   , p_component_type_code          => l_component_type_code
41597   , p_component_appl_id            => l_component_appl_id
41598   , p_amb_context_code             => l_amb_context_code
41599   , p_side                         => 'NA'
41600   );
41601 
41602 
41603    --
41604    --
41605    END IF;
41606 
41607        --
41608        -- Update the line information that should be overwritten
41609        --
41610        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41611                                          p_header_num   => 1);
41612        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
41613 
41614        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41615 
41616        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
41617           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41618        END IF;
41619 
41620       --
41621       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41622       --
41623       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41624           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
41625       ELSE
41626           ---------------------------------------------------------------------------------------------------
41627           -- 4262811a Switch Sign
41628           ---------------------------------------------------------------------------------------------------
41629           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
41630           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41631                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41632           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41633                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41634           -- 5132302
41635           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41636                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41637 
41638       END IF;
41639 
41640       -- 4955764
41641       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41642       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41643 
41644 
41645       XLA_AE_LINES_PKG.ValidateCurrentLine;
41646       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41647 
41648       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41649                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41650                ,p_balance_type_code => l_balance_type_code);
41651 
41652    END IF;
41653 
41654    -----------------------------------------------------------------------------------------
41655    -- 4262811 Multiperiod Accounting
41656    -----------------------------------------------------------------------------------------
41657      -- No MPA option is assigned.
41658 
41659 
41660 END IF;
41661 END IF;
41662 --
41663 
41664 --
41665 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41666    trace
41667       (p_msg      => 'END of AcctLineType_77'
41668       ,p_level    => C_LEVEL_PROCEDURE
41669       ,p_module   => l_log_module);
41670 END IF;
41671 --
41672 EXCEPTION
41673   WHEN xla_exceptions_pkg.application_exception THEN
41674       RAISE;
41675   WHEN OTHERS THEN
41676        xla_exceptions_pkg.raise_message
41677            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_77');
41678 END AcctLineType_77;
41679 --
41680 
41681 ---------------------------------------
41682 --
41683 -- PRIVATE FUNCTION
41684 --         AcctLineType_78
41685 --
41686 ---------------------------------------
41687 PROCEDURE AcctLineType_78 (
41688   p_application_id        IN NUMBER
41689  ,p_event_id              IN NUMBER
41690  ,p_calculate_acctd_flag  IN VARCHAR2
41691  ,p_calculate_g_l_flag    IN VARCHAR2
41692  ,p_actual_flag           IN OUT VARCHAR2
41693  ,p_balance_type_code     OUT VARCHAR2
41694  ,p_gain_or_loss_ref      OUT VARCHAR2
41695  
41696 --Cost Management Default Account
41697  , p_source_4            IN NUMBER
41698 --DISTRIBUTION_IDENTIFIER
41699  , p_source_11            IN NUMBER
41700 --Distribution Type
41701  , p_source_12            IN VARCHAR2
41702  , p_source_12_meaning    IN VARCHAR2
41703 --Entered Currency Code
41704  , p_source_15            IN VARCHAR2
41705 --Entered Amount
41706  , p_source_18            IN NUMBER
41707 --Currency Conversion Date
41708  , p_source_19            IN DATE
41709 --Currency Conversion Rate
41710  , p_source_20            IN NUMBER
41711 --Currency Conversion Type
41712  , p_source_21            IN VARCHAR2
41713 --Accounted Amount
41714  , p_source_22            IN NUMBER
41715 --Accounting Line Type
41716  , p_source_24            IN NUMBER
41717 )
41718 IS
41719 
41720 l_component_type              VARCHAR2(80);
41721 l_component_code              VARCHAR2(30);
41722 l_component_type_code         VARCHAR2(1);
41723 l_component_appl_id           INTEGER;
41724 l_amb_context_code            VARCHAR2(30);
41725 l_entity_code                 VARCHAR2(30);
41726 l_event_class_code            VARCHAR2(30);
41727 l_ae_header_id                NUMBER;
41728 l_event_type_code             VARCHAR2(30);
41729 l_line_definition_code        VARCHAR2(30);
41730 l_line_definition_owner_code  VARCHAR2(1);
41731 --
41732 -- adr variables
41733 l_segment                     VARCHAR2(30);
41734 l_ccid                        NUMBER;
41735 l_adr_transaction_coa_id      NUMBER;
41736 l_adr_accounting_coa_id       NUMBER;
41737 l_adr_flexfield_segment_code  VARCHAR2(30);
41738 l_adr_flex_value_set_id       NUMBER;
41739 l_adr_value_type_code         VARCHAR2(30);
41740 l_adr_value_combination_id    NUMBER;
41741 l_adr_value_segment_code      VARCHAR2(30);
41742 
41743 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41744 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41745 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41746 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41747 
41748 -- 4262811 Variables ------------------------------------------------------------------------------------------
41749 l_entered_amt_idx             NUMBER;
41750 l_accted_amt_idx              NUMBER;
41751 l_acc_rev_flag                VARCHAR2(1);
41752 l_accrual_line_num            NUMBER;
41753 l_tmp_amt                     NUMBER;
41754 l_acc_rev_natural_side_code   VARCHAR2(1);
41755 
41756 l_num_entries                 NUMBER;
41757 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41758 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41759 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41760 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41761 l_recog_line_1                NUMBER;
41762 l_recog_line_2                NUMBER;
41763 
41764 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41765 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41766 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41767 
41768 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41769 
41770 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41771 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41772 
41773 ---------------------------------------------------------------------------------------------------------------
41774 
41775 
41776 --
41777 -- bulk performance
41778 --
41779 l_balance_type_code           VARCHAR2(1);
41780 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41781 l_log_module                  VARCHAR2(240);
41782 
41783 --
41784 -- Upgrade strategy
41785 --
41786 l_actual_upg_option           VARCHAR2(1);
41787 l_enc_upg_option           VARCHAR2(1);
41788 
41789 --
41790 BEGIN
41791 --
41792 IF g_log_enabled THEN
41793       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_78';
41794 END IF;
41795 --
41796 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41797 
41798       trace
41799          (p_msg      => 'BEGIN of AcctLineType_78'
41800          ,p_level    => C_LEVEL_PROCEDURE
41801          ,p_module   => l_log_module);
41802 
41803 END IF;
41804 --
41805 l_component_type             := 'AMB_JLT';
41806 l_component_code             := 'INTERORG_PAYABLES';
41807 l_component_type_code        := 'S';
41808 l_component_appl_id          :=  707;
41809 l_amb_context_code           := 'DEFAULT';
41810 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
41811 l_event_class_code           := 'DIR_INTERORG_SHIP';
41812 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
41813 l_line_definition_owner_code := 'S';
41814 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
41815 --
41816 l_balance_type_code          := 'A';
41817 l_segment                     := NULL;
41818 l_ccid                        := NULL;
41819 l_adr_transaction_coa_id      := NULL;
41820 l_adr_accounting_coa_id       := NULL;
41821 l_adr_flexfield_segment_code  := NULL;
41822 l_adr_flex_value_set_id       := NULL;
41823 l_adr_value_type_code         := NULL;
41824 l_adr_value_combination_id    := NULL;
41825 l_adr_value_segment_code      := NULL;
41826 
41827 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41828 l_bflow_class_code           := '';    -- 4219869 Business Flow
41829 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41830 l_budgetary_control_flag     := 'N';
41831 
41832 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41833 l_bflow_applied_to_amt       := NULL; -- 5132302
41834 l_entered_amt_idx            := NULL;          -- 4262811
41835 l_accted_amt_idx             := NULL;          -- 4262811
41836 l_acc_rev_flag               := NULL;          -- 4262811
41837 l_accrual_line_num           := NULL;          -- 4262811
41838 l_tmp_amt                    := NULL;          -- 4262811
41839 --
41840  
41841 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41842     l_balance_type_code <> 'B' THEN
41843 IF NVL(p_source_24,9E125) =  9
41844  THEN 
41845 
41846    --
41847    XLA_AE_LINES_PKG.SetNewLine;
41848 
41849    p_balance_type_code          := l_balance_type_code;
41850    -- set the flag so later we will know whether the gain loss line needs to be created
41851    
41852    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41853      p_actual_flag :='A';
41854    END IF;
41855 
41856    --
41857    -- bulk performance
41858    --
41859    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41860                                       p_header_num   => 0); -- 4262811
41861    --
41862    -- set accounting line options
41863    --
41864    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41865            p_natural_side_code          => 'D'
41866          , p_gain_or_loss_flag          => 'N'
41867          , p_gl_transfer_mode_code      => 'S'
41868          , p_acct_entry_type_code       => 'A'
41869          , p_switch_side_flag           => 'Y'
41870          , p_merge_duplicate_code       => 'N'
41871          );
41872    --
41873    l_acc_rev_natural_side_code := 'C';  -- 4262811
41874    -- 
41875    --
41876    -- set accounting line type info
41877    --
41878    xla_ae_lines_pkg.SetAcctLineType
41879       (p_component_type             => l_component_type
41880       ,p_event_type_code            => l_event_type_code
41881       ,p_line_definition_owner_code => l_line_definition_owner_code
41882       ,p_line_definition_code       => l_line_definition_code
41883       ,p_accounting_line_code       => l_component_code
41884       ,p_accounting_line_type_code  => l_component_type_code
41885       ,p_accounting_line_appl_id    => l_component_appl_id
41886       ,p_amb_context_code           => l_amb_context_code
41887       ,p_entity_code                => l_entity_code
41888       ,p_event_class_code           => l_event_class_code);
41889    --
41890    -- set accounting class
41891    --
41892    xla_ae_lines_pkg.SetAcctClass(
41893            p_accounting_class_code  => 'INTERORG_PAYABLES'
41894          , p_ae_header_id           => l_ae_header_id
41895          );
41896 
41897    --
41898    -- set rounding class
41899    --
41900    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41901                       'INTERORG_PAYABLES';
41902 
41903    --
41904    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41905    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41906    --
41907    -- bulk performance
41908    --
41909    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41910 
41911    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41912       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41913 
41914    -- 4955764
41915    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41916       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41917 
41918    -- 4458381 Public Sector Enh
41919    
41920    --
41921    -- set accounting attributes for the line type
41922    --
41923    l_entered_amt_idx := 3;
41924    l_accted_amt_idx  := 8;
41925    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41926    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41927    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
41928    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
41929    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
41930    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
41931    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
41932    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
41933    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
41934    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
41935    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
41936    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
41937    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
41938    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
41939    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
41940    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
41941    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
41942 
41943    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41944    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41945 
41946    ---------------------------------------------------------------------------------------------------------------
41947    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41948    ---------------------------------------------------------------------------------------------------------------
41949    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41950 
41951    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41952    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41953 
41954    IF xla_accounting_cache_pkg.GetValueChar
41955          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41956          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41957    AND l_bflow_method_code = 'PRIOR_ENTRY'
41958 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41959    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41960          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41961        )
41962    THEN
41963          xla_ae_lines_pkg.BflowUpgEntry
41964            (p_business_method_code    => l_bflow_method_code
41965            ,p_business_class_code     => l_bflow_class_code
41966            ,p_balance_type            => l_balance_type_code);
41967    ELSE
41968       NULL;
41969 -- No business flow processing for business flow method of NONE.
41970    END IF;
41971 
41972    --
41973    -- call analytical criteria
41974    --
41975    
41976    --
41977    -- call description
41978    --
41979    -- No description or it is inherited.
41980    --
41981    -- call ADRs
41982    -- Bug 4922099
41983    --
41984    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41985         (NVL(l_actual_upg_option, 'N') = 'O') OR
41986         (NVL(l_enc_upg_option, 'N') = 'O')
41987       )
41988    THEN
41989    NULL;
41990    --
41991    --
41992    
41993   l_ccid := AcctDerRule_4(
41994            p_application_id           => p_application_id
41995          , p_ae_header_id             => l_ae_header_id 
41996 , p_source_4 => p_source_4
41997          , x_transaction_coa_id       => l_adr_transaction_coa_id
41998          , x_accounting_coa_id        => l_adr_accounting_coa_id
41999          , x_value_type_code          => l_adr_value_type_code
42000          , p_side                     => 'NA'
42001    );
42002 
42003    xla_ae_lines_pkg.set_ccid(
42004     p_code_combination_id          => l_ccid
42005   , p_value_type_code              => l_adr_value_type_code
42006   , p_transaction_coa_id           => l_adr_transaction_coa_id
42007   , p_accounting_coa_id            => l_adr_accounting_coa_id
42008   , p_adr_code                     => 'CST_DEFAULT'
42009   , p_adr_type_code                => 'S'
42010   , p_component_type               => l_component_type
42011   , p_component_code               => l_component_code
42012   , p_component_type_code          => l_component_type_code
42013   , p_component_appl_id            => l_component_appl_id
42014   , p_amb_context_code             => l_amb_context_code
42015   , p_side                         => 'NA'
42016   );
42017 
42018 
42019    --
42020    --
42021    END IF;
42022    --
42023    -- Bug 4922099
42024    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42025           (NVL(l_enc_upg_option, 'N') = 'O')
42026         ) AND
42027         (l_bflow_method_code = 'PRIOR_ENTRY')
42028       )
42029    THEN
42030       IF
42031       --
42032       1 = 2
42033       --
42034       THEN
42035       xla_accounting_err_pkg.build_message
42036                                     (p_appli_s_name            => 'XLA'
42037                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42038                                     ,p_token_1                 => 'LINE_NUMBER'
42039                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42040                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42041                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42042                                                                              l_component_type
42043                                                                             ,l_component_code
42044                                                                             ,l_component_type_code
42045                                                                             ,l_component_appl_id
42046                                                                             ,l_amb_context_code
42047                                                                             ,l_entity_code
42048                                                                             ,l_event_class_code
42049                                                                            )
42050                                     ,p_token_3                 => 'OWNER'
42051                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42052                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42053                                                                           ,p_lookup_code    => l_component_type_code
42054                                                                          )
42055                                     ,p_token_4                 => 'PRODUCT_NAME'
42056                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42057                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42058                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42059                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42060                                     ,p_ae_header_id            =>  NULL
42061                                        );
42062 
42063         IF (C_LEVEL_ERROR>= g_log_level) THEN
42064                  trace
42065                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42066                       ,p_level    => C_LEVEL_ERROR
42067                       ,p_module   => l_log_module);
42068         END IF;
42069       END IF;
42070    END IF;
42071    --
42072    --
42073    ------------------------------------------------------------------------------------------------
42074    -- 4219869 Business Flow
42075    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42076    -- Prior Entry.  Currently, the following code is always generated.
42077    ------------------------------------------------------------------------------------------------
42078    XLA_AE_LINES_PKG.ValidateCurrentLine;
42079 
42080    ------------------------------------------------------------------------------------
42081    -- 4219869 Business Flow
42082    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42083    ------------------------------------------------------------------------------------
42084    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42085 
42086    ----------------------------------------------------------------------------------
42087    -- 4219869 Business Flow
42088    -- Update journal entry status -- Need to generate this within IF <condition>
42089    ----------------------------------------------------------------------------------
42090    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42091          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42092          ,p_balance_type_code => l_balance_type_code
42093          );
42094 
42095    -------------------------------------------------------------------------------------------
42096    -- 4262811 - Generate the Accrual Reversal lines
42097    -------------------------------------------------------------------------------------------
42098    BEGIN
42099       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42100                               (g_array_event(p_event_id).array_value_num('header_index'));
42101       IF l_acc_rev_flag IS NULL THEN
42102          l_acc_rev_flag := 'N';
42103       END IF;
42104    EXCEPTION
42105       WHEN OTHERS THEN
42106          l_acc_rev_flag := 'N';
42107    END;
42108    --
42109    IF (l_acc_rev_flag = 'Y') THEN
42110 
42111        -- 4645092  ------------------------------------------------------------------------------
42112        -- To allow MPA report to determine if it should generate report process
42113        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42114        ------------------------------------------------------------------------------------------
42115 
42116        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42117        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42118    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
42119    -- call ADRs
42120    -- Bug 4922099
42121    --
42122    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42123         (NVL(l_actual_upg_option, 'N') = 'O') OR
42124         (NVL(l_enc_upg_option, 'N') = 'O')
42125       )
42126    THEN
42127    NULL;
42128    --
42129    --
42130    
42131   l_ccid := AcctDerRule_4(
42132            p_application_id           => p_application_id
42133          , p_ae_header_id             => l_ae_header_id 
42134 , p_source_4 => p_source_4
42135          , x_transaction_coa_id       => l_adr_transaction_coa_id
42136          , x_accounting_coa_id        => l_adr_accounting_coa_id
42137          , x_value_type_code          => l_adr_value_type_code
42138          , p_side                     => 'NA'
42139    );
42140 
42141    xla_ae_lines_pkg.set_ccid(
42142     p_code_combination_id          => l_ccid
42143   , p_value_type_code              => l_adr_value_type_code
42144   , p_transaction_coa_id           => l_adr_transaction_coa_id
42145   , p_accounting_coa_id            => l_adr_accounting_coa_id
42146   , p_adr_code                     => 'CST_DEFAULT'
42147   , p_adr_type_code                => 'S'
42148   , p_component_type               => l_component_type
42149   , p_component_code               => l_component_code
42150   , p_component_type_code          => l_component_type_code
42151   , p_component_appl_id            => l_component_appl_id
42152   , p_amb_context_code             => l_amb_context_code
42153   , p_side                         => 'NA'
42154   );
42155 
42156 
42157    --
42158    --
42159    END IF;
42160 
42161        --
42162        -- Update the line information that should be overwritten
42163        --
42164        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42165                                          p_header_num   => 1);
42166        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42167 
42168        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42169 
42170        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42171           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42172        END IF;
42173 
42174       --
42175       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42176       --
42177       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42178           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42179       ELSE
42180           ---------------------------------------------------------------------------------------------------
42181           -- 4262811a Switch Sign
42182           ---------------------------------------------------------------------------------------------------
42183           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42184           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42185                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42186           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42187                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42188           -- 5132302
42189           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42190                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42191 
42192       END IF;
42193 
42194       -- 4955764
42195       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42196       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42197 
42198 
42199       XLA_AE_LINES_PKG.ValidateCurrentLine;
42200       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42201 
42202       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42203                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42204                ,p_balance_type_code => l_balance_type_code);
42205 
42206    END IF;
42207 
42208    -----------------------------------------------------------------------------------------
42209    -- 4262811 Multiperiod Accounting
42210    -----------------------------------------------------------------------------------------
42211      -- No MPA option is assigned.
42212 
42213 
42214 END IF;
42215 END IF;
42216 --
42217 
42218 --
42219 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42220    trace
42221       (p_msg      => 'END of AcctLineType_78'
42222       ,p_level    => C_LEVEL_PROCEDURE
42223       ,p_module   => l_log_module);
42224 END IF;
42225 --
42226 EXCEPTION
42227   WHEN xla_exceptions_pkg.application_exception THEN
42228       RAISE;
42229   WHEN OTHERS THEN
42230        xla_exceptions_pkg.raise_message
42231            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_78');
42232 END AcctLineType_78;
42233 --
42234 
42235 ---------------------------------------
42236 --
42237 -- PRIVATE FUNCTION
42238 --         AcctLineType_79
42239 --
42240 ---------------------------------------
42241 PROCEDURE AcctLineType_79 (
42242   p_application_id        IN NUMBER
42243  ,p_event_id              IN NUMBER
42244  ,p_calculate_acctd_flag  IN VARCHAR2
42245  ,p_calculate_g_l_flag    IN VARCHAR2
42246  ,p_actual_flag           IN OUT VARCHAR2
42247  ,p_balance_type_code     OUT VARCHAR2
42248  ,p_gain_or_loss_ref      OUT VARCHAR2
42249  
42250 --Cost Management Default Account
42251  , p_source_4            IN NUMBER
42252 --DISTRIBUTION_IDENTIFIER
42253  , p_source_11            IN NUMBER
42254 --Distribution Type
42255  , p_source_12            IN VARCHAR2
42256  , p_source_12_meaning    IN VARCHAR2
42257 --Entered Currency Code
42258  , p_source_15            IN VARCHAR2
42259 --Entered Amount
42260  , p_source_18            IN NUMBER
42261 --Currency Conversion Date
42262  , p_source_19            IN DATE
42263 --Currency Conversion Rate
42264  , p_source_20            IN NUMBER
42265 --Currency Conversion Type
42266  , p_source_21            IN VARCHAR2
42267 --Accounted Amount
42268  , p_source_22            IN NUMBER
42269 --Accounting Line Type
42270  , p_source_24            IN NUMBER
42271 )
42272 IS
42273 
42274 l_component_type              VARCHAR2(80);
42275 l_component_code              VARCHAR2(30);
42276 l_component_type_code         VARCHAR2(1);
42277 l_component_appl_id           INTEGER;
42278 l_amb_context_code            VARCHAR2(30);
42279 l_entity_code                 VARCHAR2(30);
42280 l_event_class_code            VARCHAR2(30);
42281 l_ae_header_id                NUMBER;
42282 l_event_type_code             VARCHAR2(30);
42283 l_line_definition_code        VARCHAR2(30);
42284 l_line_definition_owner_code  VARCHAR2(1);
42285 --
42286 -- adr variables
42287 l_segment                     VARCHAR2(30);
42288 l_ccid                        NUMBER;
42289 l_adr_transaction_coa_id      NUMBER;
42290 l_adr_accounting_coa_id       NUMBER;
42291 l_adr_flexfield_segment_code  VARCHAR2(30);
42292 l_adr_flex_value_set_id       NUMBER;
42293 l_adr_value_type_code         VARCHAR2(30);
42294 l_adr_value_combination_id    NUMBER;
42295 l_adr_value_segment_code      VARCHAR2(30);
42296 
42297 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42298 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42299 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42300 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42301 
42302 -- 4262811 Variables ------------------------------------------------------------------------------------------
42303 l_entered_amt_idx             NUMBER;
42304 l_accted_amt_idx              NUMBER;
42305 l_acc_rev_flag                VARCHAR2(1);
42306 l_accrual_line_num            NUMBER;
42307 l_tmp_amt                     NUMBER;
42308 l_acc_rev_natural_side_code   VARCHAR2(1);
42309 
42310 l_num_entries                 NUMBER;
42311 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42312 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42313 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42314 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42315 l_recog_line_1                NUMBER;
42316 l_recog_line_2                NUMBER;
42317 
42318 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42319 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42320 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42321 
42322 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42323 
42324 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42325 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42326 
42327 ---------------------------------------------------------------------------------------------------------------
42328 
42329 
42330 --
42331 -- bulk performance
42332 --
42333 l_balance_type_code           VARCHAR2(1);
42334 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42335 l_log_module                  VARCHAR2(240);
42336 
42337 --
42338 -- Upgrade strategy
42339 --
42340 l_actual_upg_option           VARCHAR2(1);
42341 l_enc_upg_option           VARCHAR2(1);
42342 
42343 --
42344 BEGIN
42345 --
42346 IF g_log_enabled THEN
42347       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_79';
42348 END IF;
42349 --
42350 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42351 
42352       trace
42353          (p_msg      => 'BEGIN of AcctLineType_79'
42354          ,p_level    => C_LEVEL_PROCEDURE
42355          ,p_module   => l_log_module);
42356 
42357 END IF;
42358 --
42359 l_component_type             := 'AMB_JLT';
42360 l_component_code             := 'INTERORG_PAYABLES';
42361 l_component_type_code        := 'S';
42362 l_component_appl_id          :=  707;
42363 l_amb_context_code           := 'DEFAULT';
42364 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
42365 l_event_class_code           := 'USER_DEFINE';
42366 l_event_type_code            := 'UDIR_INTERORG_SHIP';
42367 l_line_definition_owner_code := 'S';
42368 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
42369 --
42370 l_balance_type_code          := 'A';
42371 l_segment                     := NULL;
42372 l_ccid                        := NULL;
42373 l_adr_transaction_coa_id      := NULL;
42374 l_adr_accounting_coa_id       := NULL;
42375 l_adr_flexfield_segment_code  := NULL;
42376 l_adr_flex_value_set_id       := NULL;
42377 l_adr_value_type_code         := NULL;
42378 l_adr_value_combination_id    := NULL;
42379 l_adr_value_segment_code      := NULL;
42380 
42381 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
42382 l_bflow_class_code           := '';    -- 4219869 Business Flow
42383 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
42384 l_budgetary_control_flag     := 'N';
42385 
42386 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42387 l_bflow_applied_to_amt       := NULL; -- 5132302
42388 l_entered_amt_idx            := NULL;          -- 4262811
42389 l_accted_amt_idx             := NULL;          -- 4262811
42390 l_acc_rev_flag               := NULL;          -- 4262811
42391 l_accrual_line_num           := NULL;          -- 4262811
42392 l_tmp_amt                    := NULL;          -- 4262811
42393 --
42394  
42395 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42396     l_balance_type_code <> 'B' THEN
42397 IF NVL(p_source_24,9E125) =  9
42398  THEN 
42399 
42400    --
42401    XLA_AE_LINES_PKG.SetNewLine;
42402 
42403    p_balance_type_code          := l_balance_type_code;
42404    -- set the flag so later we will know whether the gain loss line needs to be created
42405    
42406    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42407      p_actual_flag :='A';
42408    END IF;
42409 
42410    --
42411    -- bulk performance
42412    --
42413    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42414                                       p_header_num   => 0); -- 4262811
42415    --
42416    -- set accounting line options
42417    --
42418    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42419            p_natural_side_code          => 'D'
42420          , p_gain_or_loss_flag          => 'N'
42421          , p_gl_transfer_mode_code      => 'S'
42422          , p_acct_entry_type_code       => 'A'
42423          , p_switch_side_flag           => 'Y'
42424          , p_merge_duplicate_code       => 'N'
42425          );
42426    --
42427    l_acc_rev_natural_side_code := 'C';  -- 4262811
42428    -- 
42429    --
42430    -- set accounting line type info
42431    --
42432    xla_ae_lines_pkg.SetAcctLineType
42433       (p_component_type             => l_component_type
42434       ,p_event_type_code            => l_event_type_code
42435       ,p_line_definition_owner_code => l_line_definition_owner_code
42436       ,p_line_definition_code       => l_line_definition_code
42437       ,p_accounting_line_code       => l_component_code
42438       ,p_accounting_line_type_code  => l_component_type_code
42439       ,p_accounting_line_appl_id    => l_component_appl_id
42440       ,p_amb_context_code           => l_amb_context_code
42441       ,p_entity_code                => l_entity_code
42442       ,p_event_class_code           => l_event_class_code);
42443    --
42444    -- set accounting class
42445    --
42446    xla_ae_lines_pkg.SetAcctClass(
42447            p_accounting_class_code  => 'INTERORG_PAYABLES'
42448          , p_ae_header_id           => l_ae_header_id
42449          );
42450 
42451    --
42452    -- set rounding class
42453    --
42454    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42455                       'INTERORG_PAYABLES';
42456 
42457    --
42458    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42459    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42460    --
42461    -- bulk performance
42462    --
42463    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42464 
42465    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42466       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42467 
42468    -- 4955764
42469    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42470       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42471 
42472    -- 4458381 Public Sector Enh
42473    
42474    --
42475    -- set accounting attributes for the line type
42476    --
42477    l_entered_amt_idx := 3;
42478    l_accted_amt_idx  := 8;
42479    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
42480    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
42481    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
42482    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
42483    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
42484    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
42485    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
42486    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
42487    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
42488    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
42489    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
42490    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
42491    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
42492    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
42493    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
42494    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
42495    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
42496 
42497    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42498    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42499 
42500    ---------------------------------------------------------------------------------------------------------------
42501    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42502    ---------------------------------------------------------------------------------------------------------------
42503    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42504 
42505    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42506    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42507 
42508    IF xla_accounting_cache_pkg.GetValueChar
42509          (p_source_code         => 'LEDGER_CATEGORY_CODE'
42510          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42511    AND l_bflow_method_code = 'PRIOR_ENTRY'
42512 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42513    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42514          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42515        )
42516    THEN
42517          xla_ae_lines_pkg.BflowUpgEntry
42518            (p_business_method_code    => l_bflow_method_code
42519            ,p_business_class_code     => l_bflow_class_code
42520            ,p_balance_type            => l_balance_type_code);
42521    ELSE
42522       NULL;
42523 -- No business flow processing for business flow method of NONE.
42524    END IF;
42525 
42526    --
42527    -- call analytical criteria
42528    --
42529    
42530    --
42531    -- call description
42532    --
42533    -- No description or it is inherited.
42534    --
42535    -- call ADRs
42536    -- Bug 4922099
42537    --
42538    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42539         (NVL(l_actual_upg_option, 'N') = 'O') OR
42540         (NVL(l_enc_upg_option, 'N') = 'O')
42541       )
42542    THEN
42543    NULL;
42544    --
42545    --
42546    
42547   l_ccid := AcctDerRule_4(
42548            p_application_id           => p_application_id
42549          , p_ae_header_id             => l_ae_header_id 
42550 , p_source_4 => p_source_4
42551          , x_transaction_coa_id       => l_adr_transaction_coa_id
42552          , x_accounting_coa_id        => l_adr_accounting_coa_id
42553          , x_value_type_code          => l_adr_value_type_code
42554          , p_side                     => 'NA'
42555    );
42556 
42557    xla_ae_lines_pkg.set_ccid(
42558     p_code_combination_id          => l_ccid
42559   , p_value_type_code              => l_adr_value_type_code
42560   , p_transaction_coa_id           => l_adr_transaction_coa_id
42561   , p_accounting_coa_id            => l_adr_accounting_coa_id
42562   , p_adr_code                     => 'CST_DEFAULT'
42563   , p_adr_type_code                => 'S'
42564   , p_component_type               => l_component_type
42565   , p_component_code               => l_component_code
42566   , p_component_type_code          => l_component_type_code
42567   , p_component_appl_id            => l_component_appl_id
42568   , p_amb_context_code             => l_amb_context_code
42569   , p_side                         => 'NA'
42570   );
42571 
42572 
42573    --
42574    --
42575    END IF;
42576    --
42577    -- Bug 4922099
42578    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42579           (NVL(l_enc_upg_option, 'N') = 'O')
42580         ) AND
42581         (l_bflow_method_code = 'PRIOR_ENTRY')
42582       )
42583    THEN
42584       IF
42585       --
42586       1 = 2
42587       --
42588       THEN
42589       xla_accounting_err_pkg.build_message
42590                                     (p_appli_s_name            => 'XLA'
42591                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42592                                     ,p_token_1                 => 'LINE_NUMBER'
42593                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42594                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42595                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42596                                                                              l_component_type
42597                                                                             ,l_component_code
42598                                                                             ,l_component_type_code
42599                                                                             ,l_component_appl_id
42600                                                                             ,l_amb_context_code
42601                                                                             ,l_entity_code
42602                                                                             ,l_event_class_code
42603                                                                            )
42604                                     ,p_token_3                 => 'OWNER'
42605                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42606                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42607                                                                           ,p_lookup_code    => l_component_type_code
42608                                                                          )
42609                                     ,p_token_4                 => 'PRODUCT_NAME'
42610                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42611                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42612                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42613                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42614                                     ,p_ae_header_id            =>  NULL
42615                                        );
42616 
42617         IF (C_LEVEL_ERROR>= g_log_level) THEN
42618                  trace
42619                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42620                       ,p_level    => C_LEVEL_ERROR
42621                       ,p_module   => l_log_module);
42622         END IF;
42623       END IF;
42624    END IF;
42625    --
42626    --
42627    ------------------------------------------------------------------------------------------------
42628    -- 4219869 Business Flow
42629    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42630    -- Prior Entry.  Currently, the following code is always generated.
42631    ------------------------------------------------------------------------------------------------
42632    XLA_AE_LINES_PKG.ValidateCurrentLine;
42633 
42634    ------------------------------------------------------------------------------------
42635    -- 4219869 Business Flow
42636    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42637    ------------------------------------------------------------------------------------
42638    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42639 
42640    ----------------------------------------------------------------------------------
42641    -- 4219869 Business Flow
42642    -- Update journal entry status -- Need to generate this within IF <condition>
42643    ----------------------------------------------------------------------------------
42644    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42645          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42646          ,p_balance_type_code => l_balance_type_code
42647          );
42648 
42649    -------------------------------------------------------------------------------------------
42650    -- 4262811 - Generate the Accrual Reversal lines
42651    -------------------------------------------------------------------------------------------
42652    BEGIN
42653       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42654                               (g_array_event(p_event_id).array_value_num('header_index'));
42655       IF l_acc_rev_flag IS NULL THEN
42656          l_acc_rev_flag := 'N';
42657       END IF;
42658    EXCEPTION
42659       WHEN OTHERS THEN
42660          l_acc_rev_flag := 'N';
42661    END;
42662    --
42663    IF (l_acc_rev_flag = 'Y') THEN
42664 
42665        -- 4645092  ------------------------------------------------------------------------------
42666        -- To allow MPA report to determine if it should generate report process
42667        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42668        ------------------------------------------------------------------------------------------
42669 
42670        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42671        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42672    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
42673    -- call ADRs
42674    -- Bug 4922099
42675    --
42676    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42677         (NVL(l_actual_upg_option, 'N') = 'O') OR
42678         (NVL(l_enc_upg_option, 'N') = 'O')
42679       )
42680    THEN
42681    NULL;
42682    --
42683    --
42684    
42685   l_ccid := AcctDerRule_4(
42686            p_application_id           => p_application_id
42687          , p_ae_header_id             => l_ae_header_id 
42688 , p_source_4 => p_source_4
42689          , x_transaction_coa_id       => l_adr_transaction_coa_id
42690          , x_accounting_coa_id        => l_adr_accounting_coa_id
42691          , x_value_type_code          => l_adr_value_type_code
42692          , p_side                     => 'NA'
42693    );
42694 
42695    xla_ae_lines_pkg.set_ccid(
42696     p_code_combination_id          => l_ccid
42697   , p_value_type_code              => l_adr_value_type_code
42698   , p_transaction_coa_id           => l_adr_transaction_coa_id
42699   , p_accounting_coa_id            => l_adr_accounting_coa_id
42700   , p_adr_code                     => 'CST_DEFAULT'
42701   , p_adr_type_code                => 'S'
42702   , p_component_type               => l_component_type
42703   , p_component_code               => l_component_code
42704   , p_component_type_code          => l_component_type_code
42705   , p_component_appl_id            => l_component_appl_id
42706   , p_amb_context_code             => l_amb_context_code
42707   , p_side                         => 'NA'
42708   );
42709 
42710 
42711    --
42712    --
42713    END IF;
42714 
42715        --
42716        -- Update the line information that should be overwritten
42717        --
42718        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42719                                          p_header_num   => 1);
42720        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42721 
42722        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42723 
42724        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42725           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42726        END IF;
42727 
42728       --
42729       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42730       --
42731       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42732           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42733       ELSE
42734           ---------------------------------------------------------------------------------------------------
42735           -- 4262811a Switch Sign
42736           ---------------------------------------------------------------------------------------------------
42737           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42738           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42739                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42740           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42741                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42742           -- 5132302
42743           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42744                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42745 
42746       END IF;
42747 
42748       -- 4955764
42749       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42750       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42751 
42752 
42753       XLA_AE_LINES_PKG.ValidateCurrentLine;
42754       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42755 
42756       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42757                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42758                ,p_balance_type_code => l_balance_type_code);
42759 
42760    END IF;
42761 
42762    -----------------------------------------------------------------------------------------
42763    -- 4262811 Multiperiod Accounting
42764    -----------------------------------------------------------------------------------------
42765      -- No MPA option is assigned.
42766 
42767 
42768 END IF;
42769 END IF;
42770 --
42771 
42772 --
42773 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42774    trace
42775       (p_msg      => 'END of AcctLineType_79'
42776       ,p_level    => C_LEVEL_PROCEDURE
42777       ,p_module   => l_log_module);
42778 END IF;
42779 --
42780 EXCEPTION
42781   WHEN xla_exceptions_pkg.application_exception THEN
42782       RAISE;
42783   WHEN OTHERS THEN
42784        xla_exceptions_pkg.raise_message
42785            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_79');
42786 END AcctLineType_79;
42787 --
42788 
42789 ---------------------------------------
42790 --
42791 -- PRIVATE FUNCTION
42792 --         AcctLineType_80
42793 --
42794 ---------------------------------------
42795 PROCEDURE AcctLineType_80 (
42796   p_application_id        IN NUMBER
42797  ,p_event_id              IN NUMBER
42798  ,p_calculate_acctd_flag  IN VARCHAR2
42799  ,p_calculate_g_l_flag    IN VARCHAR2
42800  ,p_actual_flag           IN OUT VARCHAR2
42801  ,p_balance_type_code     OUT VARCHAR2
42802  ,p_gain_or_loss_ref      OUT VARCHAR2
42803  
42804 --Cost Management Default Account
42805  , p_source_4            IN NUMBER
42806 --DISTRIBUTION_IDENTIFIER
42807  , p_source_11            IN NUMBER
42808 --Distribution Type
42809  , p_source_12            IN VARCHAR2
42810  , p_source_12_meaning    IN VARCHAR2
42811 --Entered Currency Code
42812  , p_source_15            IN VARCHAR2
42813 --Entered Amount
42814  , p_source_18            IN NUMBER
42815 --Currency Conversion Date
42816  , p_source_19            IN DATE
42817 --Currency Conversion Rate
42818  , p_source_20            IN NUMBER
42819 --Currency Conversion Type
42820  , p_source_21            IN VARCHAR2
42821 --Accounted Amount
42822  , p_source_22            IN NUMBER
42823 --Accounting Line Type
42824  , p_source_24            IN NUMBER
42825 )
42826 IS
42827 
42828 l_component_type              VARCHAR2(80);
42829 l_component_code              VARCHAR2(30);
42830 l_component_type_code         VARCHAR2(1);
42831 l_component_appl_id           INTEGER;
42832 l_amb_context_code            VARCHAR2(30);
42833 l_entity_code                 VARCHAR2(30);
42834 l_event_class_code            VARCHAR2(30);
42835 l_ae_header_id                NUMBER;
42836 l_event_type_code             VARCHAR2(30);
42837 l_line_definition_code        VARCHAR2(30);
42838 l_line_definition_owner_code  VARCHAR2(1);
42839 --
42840 -- adr variables
42841 l_segment                     VARCHAR2(30);
42842 l_ccid                        NUMBER;
42843 l_adr_transaction_coa_id      NUMBER;
42844 l_adr_accounting_coa_id       NUMBER;
42845 l_adr_flexfield_segment_code  VARCHAR2(30);
42846 l_adr_flex_value_set_id       NUMBER;
42847 l_adr_value_type_code         VARCHAR2(30);
42848 l_adr_value_combination_id    NUMBER;
42849 l_adr_value_segment_code      VARCHAR2(30);
42850 
42851 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42852 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42853 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42854 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42855 
42856 -- 4262811 Variables ------------------------------------------------------------------------------------------
42857 l_entered_amt_idx             NUMBER;
42858 l_accted_amt_idx              NUMBER;
42859 l_acc_rev_flag                VARCHAR2(1);
42860 l_accrual_line_num            NUMBER;
42861 l_tmp_amt                     NUMBER;
42862 l_acc_rev_natural_side_code   VARCHAR2(1);
42863 
42864 l_num_entries                 NUMBER;
42865 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42866 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42867 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42868 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42869 l_recog_line_1                NUMBER;
42870 l_recog_line_2                NUMBER;
42871 
42872 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42873 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42874 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42875 
42876 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42877 
42878 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42879 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42880 
42881 ---------------------------------------------------------------------------------------------------------------
42882 
42883 
42884 --
42885 -- bulk performance
42886 --
42887 l_balance_type_code           VARCHAR2(1);
42888 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42889 l_log_module                  VARCHAR2(240);
42890 
42891 --
42892 -- Upgrade strategy
42893 --
42894 l_actual_upg_option           VARCHAR2(1);
42895 l_enc_upg_option           VARCHAR2(1);
42896 
42897 --
42898 BEGIN
42899 --
42900 IF g_log_enabled THEN
42901       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_80';
42902 END IF;
42903 --
42904 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42905 
42906       trace
42907          (p_msg      => 'BEGIN of AcctLineType_80'
42908          ,p_level    => C_LEVEL_PROCEDURE
42909          ,p_module   => l_log_module);
42910 
42911 END IF;
42912 --
42913 l_component_type             := 'AMB_JLT';
42914 l_component_code             := 'INTERORG_PAYABLES';
42915 l_component_type_code        := 'S';
42916 l_component_appl_id          :=  707;
42917 l_amb_context_code           := 'DEFAULT';
42918 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
42919 l_event_class_code           := 'USER_DEFINE';
42920 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
42921 l_line_definition_owner_code := 'S';
42922 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_NO_TP';
42923 --
42924 l_balance_type_code          := 'A';
42925 l_segment                     := NULL;
42926 l_ccid                        := NULL;
42927 l_adr_transaction_coa_id      := NULL;
42928 l_adr_accounting_coa_id       := NULL;
42929 l_adr_flexfield_segment_code  := NULL;
42930 l_adr_flex_value_set_id       := NULL;
42931 l_adr_value_type_code         := NULL;
42932 l_adr_value_combination_id    := NULL;
42933 l_adr_value_segment_code      := NULL;
42934 
42935 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
42936 l_bflow_class_code           := '';    -- 4219869 Business Flow
42937 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
42938 l_budgetary_control_flag     := 'N';
42939 
42940 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42941 l_bflow_applied_to_amt       := NULL; -- 5132302
42942 l_entered_amt_idx            := NULL;          -- 4262811
42943 l_accted_amt_idx             := NULL;          -- 4262811
42944 l_acc_rev_flag               := NULL;          -- 4262811
42945 l_accrual_line_num           := NULL;          -- 4262811
42946 l_tmp_amt                    := NULL;          -- 4262811
42947 --
42948  
42949 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42950     l_balance_type_code <> 'B' THEN
42951 IF NVL(p_source_24,9E125) =  9
42952  THEN 
42953 
42954    --
42955    XLA_AE_LINES_PKG.SetNewLine;
42956 
42957    p_balance_type_code          := l_balance_type_code;
42958    -- set the flag so later we will know whether the gain loss line needs to be created
42959    
42960    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42961      p_actual_flag :='A';
42962    END IF;
42963 
42964    --
42965    -- bulk performance
42966    --
42967    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42968                                       p_header_num   => 0); -- 4262811
42969    --
42970    -- set accounting line options
42971    --
42972    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42973            p_natural_side_code          => 'D'
42974          , p_gain_or_loss_flag          => 'N'
42975          , p_gl_transfer_mode_code      => 'S'
42976          , p_acct_entry_type_code       => 'A'
42977          , p_switch_side_flag           => 'Y'
42978          , p_merge_duplicate_code       => 'N'
42979          );
42980    --
42981    l_acc_rev_natural_side_code := 'C';  -- 4262811
42982    -- 
42983    --
42984    -- set accounting line type info
42985    --
42986    xla_ae_lines_pkg.SetAcctLineType
42987       (p_component_type             => l_component_type
42988       ,p_event_type_code            => l_event_type_code
42989       ,p_line_definition_owner_code => l_line_definition_owner_code
42990       ,p_line_definition_code       => l_line_definition_code
42991       ,p_accounting_line_code       => l_component_code
42992       ,p_accounting_line_type_code  => l_component_type_code
42993       ,p_accounting_line_appl_id    => l_component_appl_id
42994       ,p_amb_context_code           => l_amb_context_code
42995       ,p_entity_code                => l_entity_code
42996       ,p_event_class_code           => l_event_class_code);
42997    --
42998    -- set accounting class
42999    --
43000    xla_ae_lines_pkg.SetAcctClass(
43001            p_accounting_class_code  => 'INTERORG_PAYABLES'
43002          , p_ae_header_id           => l_ae_header_id
43003          );
43004 
43005    --
43006    -- set rounding class
43007    --
43008    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43009                       'INTERORG_PAYABLES';
43010 
43011    --
43012    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43013    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43014    --
43015    -- bulk performance
43016    --
43017    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43018 
43019    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43020       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43021 
43022    -- 4955764
43023    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43024       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43025 
43026    -- 4458381 Public Sector Enh
43027    
43028    --
43029    -- set accounting attributes for the line type
43030    --
43031    l_entered_amt_idx := 3;
43032    l_accted_amt_idx  := 8;
43033    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
43034    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
43035    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
43036    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
43037    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
43038    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
43039    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
43040    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
43041    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
43042    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
43043    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
43044    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
43045    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
43046    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
43047    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
43048    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
43049    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
43050 
43051    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43052    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43053 
43054    ---------------------------------------------------------------------------------------------------------------
43055    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43056    ---------------------------------------------------------------------------------------------------------------
43057    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43058 
43059    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43060    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43061 
43062    IF xla_accounting_cache_pkg.GetValueChar
43063          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43064          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43065    AND l_bflow_method_code = 'PRIOR_ENTRY'
43066 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43067    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43068          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43069        )
43070    THEN
43071          xla_ae_lines_pkg.BflowUpgEntry
43072            (p_business_method_code    => l_bflow_method_code
43073            ,p_business_class_code     => l_bflow_class_code
43074            ,p_balance_type            => l_balance_type_code);
43075    ELSE
43076       NULL;
43077 -- No business flow processing for business flow method of NONE.
43078    END IF;
43079 
43080    --
43081    -- call analytical criteria
43082    --
43083    
43084    --
43085    -- call description
43086    --
43087    -- No description or it is inherited.
43088    --
43089    -- call ADRs
43090    -- Bug 4922099
43091    --
43092    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43093         (NVL(l_actual_upg_option, 'N') = 'O') OR
43094         (NVL(l_enc_upg_option, 'N') = 'O')
43095       )
43096    THEN
43097    NULL;
43098    --
43099    --
43100    
43101   l_ccid := AcctDerRule_4(
43102            p_application_id           => p_application_id
43103          , p_ae_header_id             => l_ae_header_id 
43104 , p_source_4 => p_source_4
43105          , x_transaction_coa_id       => l_adr_transaction_coa_id
43106          , x_accounting_coa_id        => l_adr_accounting_coa_id
43107          , x_value_type_code          => l_adr_value_type_code
43108          , p_side                     => 'NA'
43109    );
43110 
43111    xla_ae_lines_pkg.set_ccid(
43112     p_code_combination_id          => l_ccid
43113   , p_value_type_code              => l_adr_value_type_code
43114   , p_transaction_coa_id           => l_adr_transaction_coa_id
43115   , p_accounting_coa_id            => l_adr_accounting_coa_id
43116   , p_adr_code                     => 'CST_DEFAULT'
43117   , p_adr_type_code                => 'S'
43118   , p_component_type               => l_component_type
43119   , p_component_code               => l_component_code
43120   , p_component_type_code          => l_component_type_code
43121   , p_component_appl_id            => l_component_appl_id
43122   , p_amb_context_code             => l_amb_context_code
43123   , p_side                         => 'NA'
43124   );
43125 
43126 
43127    --
43128    --
43129    END IF;
43130    --
43131    -- Bug 4922099
43132    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43133           (NVL(l_enc_upg_option, 'N') = 'O')
43134         ) AND
43135         (l_bflow_method_code = 'PRIOR_ENTRY')
43136       )
43137    THEN
43138       IF
43139       --
43140       1 = 2
43141       --
43142       THEN
43143       xla_accounting_err_pkg.build_message
43144                                     (p_appli_s_name            => 'XLA'
43145                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43146                                     ,p_token_1                 => 'LINE_NUMBER'
43147                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43148                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43149                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43150                                                                              l_component_type
43151                                                                             ,l_component_code
43152                                                                             ,l_component_type_code
43153                                                                             ,l_component_appl_id
43154                                                                             ,l_amb_context_code
43155                                                                             ,l_entity_code
43156                                                                             ,l_event_class_code
43157                                                                            )
43158                                     ,p_token_3                 => 'OWNER'
43159                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43160                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43161                                                                           ,p_lookup_code    => l_component_type_code
43162                                                                          )
43163                                     ,p_token_4                 => 'PRODUCT_NAME'
43164                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43165                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43166                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43167                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43168                                     ,p_ae_header_id            =>  NULL
43169                                        );
43170 
43171         IF (C_LEVEL_ERROR>= g_log_level) THEN
43172                  trace
43173                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43174                       ,p_level    => C_LEVEL_ERROR
43175                       ,p_module   => l_log_module);
43176         END IF;
43177       END IF;
43178    END IF;
43179    --
43180    --
43181    ------------------------------------------------------------------------------------------------
43182    -- 4219869 Business Flow
43183    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43184    -- Prior Entry.  Currently, the following code is always generated.
43185    ------------------------------------------------------------------------------------------------
43186    XLA_AE_LINES_PKG.ValidateCurrentLine;
43187 
43188    ------------------------------------------------------------------------------------
43189    -- 4219869 Business Flow
43190    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43191    ------------------------------------------------------------------------------------
43192    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43193 
43194    ----------------------------------------------------------------------------------
43195    -- 4219869 Business Flow
43196    -- Update journal entry status -- Need to generate this within IF <condition>
43197    ----------------------------------------------------------------------------------
43198    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43199          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43200          ,p_balance_type_code => l_balance_type_code
43201          );
43202 
43203    -------------------------------------------------------------------------------------------
43204    -- 4262811 - Generate the Accrual Reversal lines
43205    -------------------------------------------------------------------------------------------
43206    BEGIN
43207       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43208                               (g_array_event(p_event_id).array_value_num('header_index'));
43209       IF l_acc_rev_flag IS NULL THEN
43210          l_acc_rev_flag := 'N';
43211       END IF;
43212    EXCEPTION
43213       WHEN OTHERS THEN
43214          l_acc_rev_flag := 'N';
43215    END;
43216    --
43217    IF (l_acc_rev_flag = 'Y') THEN
43218 
43219        -- 4645092  ------------------------------------------------------------------------------
43220        -- To allow MPA report to determine if it should generate report process
43221        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43222        ------------------------------------------------------------------------------------------
43223 
43224        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43225        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43226    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
43227    -- call ADRs
43228    -- Bug 4922099
43229    --
43230    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43231         (NVL(l_actual_upg_option, 'N') = 'O') OR
43232         (NVL(l_enc_upg_option, 'N') = 'O')
43233       )
43234    THEN
43235    NULL;
43236    --
43237    --
43238    
43239   l_ccid := AcctDerRule_4(
43240            p_application_id           => p_application_id
43241          , p_ae_header_id             => l_ae_header_id 
43242 , p_source_4 => p_source_4
43243          , x_transaction_coa_id       => l_adr_transaction_coa_id
43244          , x_accounting_coa_id        => l_adr_accounting_coa_id
43245          , x_value_type_code          => l_adr_value_type_code
43246          , p_side                     => 'NA'
43247    );
43248 
43249    xla_ae_lines_pkg.set_ccid(
43250     p_code_combination_id          => l_ccid
43251   , p_value_type_code              => l_adr_value_type_code
43252   , p_transaction_coa_id           => l_adr_transaction_coa_id
43253   , p_accounting_coa_id            => l_adr_accounting_coa_id
43254   , p_adr_code                     => 'CST_DEFAULT'
43255   , p_adr_type_code                => 'S'
43256   , p_component_type               => l_component_type
43257   , p_component_code               => l_component_code
43258   , p_component_type_code          => l_component_type_code
43259   , p_component_appl_id            => l_component_appl_id
43260   , p_amb_context_code             => l_amb_context_code
43261   , p_side                         => 'NA'
43262   );
43263 
43264 
43265    --
43266    --
43267    END IF;
43268 
43269        --
43270        -- Update the line information that should be overwritten
43271        --
43272        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43273                                          p_header_num   => 1);
43274        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43275 
43276        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43277 
43278        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43279           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43280        END IF;
43281 
43282       --
43283       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43284       --
43285       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43286           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43287       ELSE
43288           ---------------------------------------------------------------------------------------------------
43289           -- 4262811a Switch Sign
43290           ---------------------------------------------------------------------------------------------------
43291           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43292           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43293                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43294           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43295                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43296           -- 5132302
43297           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43298                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43299 
43300       END IF;
43301 
43302       -- 4955764
43303       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43304       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43305 
43306 
43307       XLA_AE_LINES_PKG.ValidateCurrentLine;
43308       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43309 
43310       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43311                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43312                ,p_balance_type_code => l_balance_type_code);
43313 
43314    END IF;
43315 
43316    -----------------------------------------------------------------------------------------
43317    -- 4262811 Multiperiod Accounting
43318    -----------------------------------------------------------------------------------------
43319      -- No MPA option is assigned.
43320 
43321 
43322 END IF;
43323 END IF;
43324 --
43325 
43326 --
43327 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43328    trace
43329       (p_msg      => 'END of AcctLineType_80'
43330       ,p_level    => C_LEVEL_PROCEDURE
43331       ,p_module   => l_log_module);
43332 END IF;
43333 --
43334 EXCEPTION
43335   WHEN xla_exceptions_pkg.application_exception THEN
43336       RAISE;
43337   WHEN OTHERS THEN
43338        xla_exceptions_pkg.raise_message
43339            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_80');
43340 END AcctLineType_80;
43341 --
43342 
43343 ---------------------------------------
43344 --
43345 -- PRIVATE FUNCTION
43346 --         AcctLineType_81
43347 --
43348 ---------------------------------------
43349 PROCEDURE AcctLineType_81 (
43350   p_application_id        IN NUMBER
43351  ,p_event_id              IN NUMBER
43352  ,p_calculate_acctd_flag  IN VARCHAR2
43353  ,p_calculate_g_l_flag    IN VARCHAR2
43354  ,p_actual_flag           IN OUT VARCHAR2
43355  ,p_balance_type_code     OUT VARCHAR2
43356  ,p_gain_or_loss_ref      OUT VARCHAR2
43357  
43358 --Cost Management Default Account
43359  , p_source_4            IN NUMBER
43360 --DISTRIBUTION_IDENTIFIER
43361  , p_source_11            IN NUMBER
43362 --Distribution Type
43363  , p_source_12            IN VARCHAR2
43364  , p_source_12_meaning    IN VARCHAR2
43365 --Entered Currency Code
43366  , p_source_15            IN VARCHAR2
43367 --Entered Amount
43368  , p_source_18            IN NUMBER
43369 --Currency Conversion Date
43370  , p_source_19            IN DATE
43371 --Currency Conversion Rate
43372  , p_source_20            IN NUMBER
43373 --Currency Conversion Type
43374  , p_source_21            IN VARCHAR2
43375 --Accounted Amount
43376  , p_source_22            IN NUMBER
43377 --Accounting Line Type
43378  , p_source_24            IN NUMBER
43379 )
43380 IS
43381 
43382 l_component_type              VARCHAR2(80);
43383 l_component_code              VARCHAR2(30);
43384 l_component_type_code         VARCHAR2(1);
43385 l_component_appl_id           INTEGER;
43386 l_amb_context_code            VARCHAR2(30);
43387 l_entity_code                 VARCHAR2(30);
43388 l_event_class_code            VARCHAR2(30);
43389 l_ae_header_id                NUMBER;
43390 l_event_type_code             VARCHAR2(30);
43391 l_line_definition_code        VARCHAR2(30);
43392 l_line_definition_owner_code  VARCHAR2(1);
43393 --
43394 -- adr variables
43395 l_segment                     VARCHAR2(30);
43396 l_ccid                        NUMBER;
43397 l_adr_transaction_coa_id      NUMBER;
43398 l_adr_accounting_coa_id       NUMBER;
43399 l_adr_flexfield_segment_code  VARCHAR2(30);
43400 l_adr_flex_value_set_id       NUMBER;
43401 l_adr_value_type_code         VARCHAR2(30);
43402 l_adr_value_combination_id    NUMBER;
43403 l_adr_value_segment_code      VARCHAR2(30);
43404 
43405 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
43406 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
43407 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
43408 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
43409 
43410 -- 4262811 Variables ------------------------------------------------------------------------------------------
43411 l_entered_amt_idx             NUMBER;
43412 l_accted_amt_idx              NUMBER;
43413 l_acc_rev_flag                VARCHAR2(1);
43414 l_accrual_line_num            NUMBER;
43415 l_tmp_amt                     NUMBER;
43416 l_acc_rev_natural_side_code   VARCHAR2(1);
43417 
43418 l_num_entries                 NUMBER;
43419 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
43420 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
43421 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
43422 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
43423 l_recog_line_1                NUMBER;
43424 l_recog_line_2                NUMBER;
43425 
43426 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
43427 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
43428 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
43429 
43430 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43431 
43432 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
43433 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
43434 
43435 ---------------------------------------------------------------------------------------------------------------
43436 
43437 
43438 --
43439 -- bulk performance
43440 --
43441 l_balance_type_code           VARCHAR2(1);
43442 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43443 l_log_module                  VARCHAR2(240);
43444 
43445 --
43446 -- Upgrade strategy
43447 --
43448 l_actual_upg_option           VARCHAR2(1);
43449 l_enc_upg_option           VARCHAR2(1);
43450 
43451 --
43452 BEGIN
43453 --
43454 IF g_log_enabled THEN
43455       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_81';
43456 END IF;
43457 --
43458 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43459 
43460       trace
43461          (p_msg      => 'BEGIN of AcctLineType_81'
43462          ,p_level    => C_LEVEL_PROCEDURE
43463          ,p_module   => l_log_module);
43464 
43465 END IF;
43466 --
43467 l_component_type             := 'AMB_JLT';
43468 l_component_code             := 'INTERORG_PAYABLES';
43469 l_component_type_code        := 'S';
43470 l_component_appl_id          :=  707;
43471 l_amb_context_code           := 'DEFAULT';
43472 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
43473 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
43474 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
43475 l_line_definition_owner_code := 'S';
43476 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
43477 --
43478 l_balance_type_code          := 'A';
43479 l_segment                     := NULL;
43480 l_ccid                        := NULL;
43481 l_adr_transaction_coa_id      := NULL;
43482 l_adr_accounting_coa_id       := NULL;
43483 l_adr_flexfield_segment_code  := NULL;
43484 l_adr_flex_value_set_id       := NULL;
43485 l_adr_value_type_code         := NULL;
43486 l_adr_value_combination_id    := NULL;
43487 l_adr_value_segment_code      := NULL;
43488 
43489 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
43490 l_bflow_class_code           := '';    -- 4219869 Business Flow
43491 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
43492 l_budgetary_control_flag     := 'N';
43493 
43494 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
43495 l_bflow_applied_to_amt       := NULL; -- 5132302
43496 l_entered_amt_idx            := NULL;          -- 4262811
43497 l_accted_amt_idx             := NULL;          -- 4262811
43498 l_acc_rev_flag               := NULL;          -- 4262811
43499 l_accrual_line_num           := NULL;          -- 4262811
43500 l_tmp_amt                    := NULL;          -- 4262811
43501 --
43502  
43503 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43504     l_balance_type_code <> 'B' THEN
43505 IF NVL(p_source_24,9E125) =  9
43506  THEN 
43507 
43508    --
43509    XLA_AE_LINES_PKG.SetNewLine;
43510 
43511    p_balance_type_code          := l_balance_type_code;
43512    -- set the flag so later we will know whether the gain loss line needs to be created
43513    
43514    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43515      p_actual_flag :='A';
43516    END IF;
43517 
43518    --
43519    -- bulk performance
43520    --
43521    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43522                                       p_header_num   => 0); -- 4262811
43523    --
43524    -- set accounting line options
43525    --
43526    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43527            p_natural_side_code          => 'D'
43528          , p_gain_or_loss_flag          => 'N'
43529          , p_gl_transfer_mode_code      => 'S'
43530          , p_acct_entry_type_code       => 'A'
43531          , p_switch_side_flag           => 'Y'
43532          , p_merge_duplicate_code       => 'N'
43533          );
43534    --
43535    l_acc_rev_natural_side_code := 'C';  -- 4262811
43536    -- 
43537    --
43538    -- set accounting line type info
43539    --
43540    xla_ae_lines_pkg.SetAcctLineType
43541       (p_component_type             => l_component_type
43542       ,p_event_type_code            => l_event_type_code
43543       ,p_line_definition_owner_code => l_line_definition_owner_code
43544       ,p_line_definition_code       => l_line_definition_code
43545       ,p_accounting_line_code       => l_component_code
43546       ,p_accounting_line_type_code  => l_component_type_code
43547       ,p_accounting_line_appl_id    => l_component_appl_id
43548       ,p_amb_context_code           => l_amb_context_code
43549       ,p_entity_code                => l_entity_code
43550       ,p_event_class_code           => l_event_class_code);
43551    --
43552    -- set accounting class
43553    --
43554    xla_ae_lines_pkg.SetAcctClass(
43555            p_accounting_class_code  => 'INTERORG_PAYABLES'
43556          , p_ae_header_id           => l_ae_header_id
43557          );
43558 
43559    --
43560    -- set rounding class
43561    --
43562    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43563                       'INTERORG_PAYABLES';
43564 
43565    --
43566    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43567    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43568    --
43569    -- bulk performance
43570    --
43571    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43572 
43573    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43574       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43575 
43576    -- 4955764
43577    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43578       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43579 
43580    -- 4458381 Public Sector Enh
43581    
43582    --
43583    -- set accounting attributes for the line type
43584    --
43585    l_entered_amt_idx := 3;
43586    l_accted_amt_idx  := 8;
43587    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
43588    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
43589    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
43590    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
43591    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
43592    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
43593    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
43594    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
43595    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
43596    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
43597    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
43598    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
43599    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
43600    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
43601    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
43602    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
43603    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
43604 
43605    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43606    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43607 
43608    ---------------------------------------------------------------------------------------------------------------
43609    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43610    ---------------------------------------------------------------------------------------------------------------
43611    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43612 
43613    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43614    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43615 
43616    IF xla_accounting_cache_pkg.GetValueChar
43617          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43618          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43619    AND l_bflow_method_code = 'PRIOR_ENTRY'
43620 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43621    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43622          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43623        )
43624    THEN
43625          xla_ae_lines_pkg.BflowUpgEntry
43626            (p_business_method_code    => l_bflow_method_code
43627            ,p_business_class_code     => l_bflow_class_code
43628            ,p_balance_type            => l_balance_type_code);
43629    ELSE
43630       NULL;
43631 -- No business flow processing for business flow method of NONE.
43632    END IF;
43633 
43634    --
43635    -- call analytical criteria
43636    --
43637    
43638    --
43639    -- call description
43640    --
43641    -- No description or it is inherited.
43642    --
43643    -- call ADRs
43644    -- Bug 4922099
43645    --
43646    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43647         (NVL(l_actual_upg_option, 'N') = 'O') OR
43648         (NVL(l_enc_upg_option, 'N') = 'O')
43649       )
43650    THEN
43651    NULL;
43652    --
43653    --
43654    
43655   l_ccid := AcctDerRule_4(
43656            p_application_id           => p_application_id
43657          , p_ae_header_id             => l_ae_header_id 
43658 , p_source_4 => p_source_4
43659          , x_transaction_coa_id       => l_adr_transaction_coa_id
43660          , x_accounting_coa_id        => l_adr_accounting_coa_id
43661          , x_value_type_code          => l_adr_value_type_code
43662          , p_side                     => 'NA'
43663    );
43664 
43665    xla_ae_lines_pkg.set_ccid(
43666     p_code_combination_id          => l_ccid
43667   , p_value_type_code              => l_adr_value_type_code
43668   , p_transaction_coa_id           => l_adr_transaction_coa_id
43669   , p_accounting_coa_id            => l_adr_accounting_coa_id
43670   , p_adr_code                     => 'CST_DEFAULT'
43671   , p_adr_type_code                => 'S'
43672   , p_component_type               => l_component_type
43673   , p_component_code               => l_component_code
43674   , p_component_type_code          => l_component_type_code
43675   , p_component_appl_id            => l_component_appl_id
43676   , p_amb_context_code             => l_amb_context_code
43677   , p_side                         => 'NA'
43678   );
43679 
43680 
43681    --
43682    --
43683    END IF;
43684    --
43685    -- Bug 4922099
43686    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43687           (NVL(l_enc_upg_option, 'N') = 'O')
43688         ) AND
43689         (l_bflow_method_code = 'PRIOR_ENTRY')
43690       )
43691    THEN
43692       IF
43693       --
43694       1 = 2
43695       --
43696       THEN
43697       xla_accounting_err_pkg.build_message
43698                                     (p_appli_s_name            => 'XLA'
43699                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43700                                     ,p_token_1                 => 'LINE_NUMBER'
43701                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43702                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43703                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43704                                                                              l_component_type
43705                                                                             ,l_component_code
43706                                                                             ,l_component_type_code
43707                                                                             ,l_component_appl_id
43708                                                                             ,l_amb_context_code
43709                                                                             ,l_entity_code
43710                                                                             ,l_event_class_code
43711                                                                            )
43712                                     ,p_token_3                 => 'OWNER'
43713                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43714                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43715                                                                           ,p_lookup_code    => l_component_type_code
43716                                                                          )
43717                                     ,p_token_4                 => 'PRODUCT_NAME'
43718                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43719                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43720                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43721                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43722                                     ,p_ae_header_id            =>  NULL
43723                                        );
43724 
43725         IF (C_LEVEL_ERROR>= g_log_level) THEN
43726                  trace
43727                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43728                       ,p_level    => C_LEVEL_ERROR
43729                       ,p_module   => l_log_module);
43730         END IF;
43731       END IF;
43732    END IF;
43733    --
43734    --
43735    ------------------------------------------------------------------------------------------------
43736    -- 4219869 Business Flow
43737    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43738    -- Prior Entry.  Currently, the following code is always generated.
43739    ------------------------------------------------------------------------------------------------
43740    XLA_AE_LINES_PKG.ValidateCurrentLine;
43741 
43742    ------------------------------------------------------------------------------------
43743    -- 4219869 Business Flow
43744    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43745    ------------------------------------------------------------------------------------
43746    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43747 
43748    ----------------------------------------------------------------------------------
43749    -- 4219869 Business Flow
43750    -- Update journal entry status -- Need to generate this within IF <condition>
43751    ----------------------------------------------------------------------------------
43752    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43753          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43754          ,p_balance_type_code => l_balance_type_code
43755          );
43756 
43757    -------------------------------------------------------------------------------------------
43758    -- 4262811 - Generate the Accrual Reversal lines
43759    -------------------------------------------------------------------------------------------
43760    BEGIN
43761       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43762                               (g_array_event(p_event_id).array_value_num('header_index'));
43763       IF l_acc_rev_flag IS NULL THEN
43764          l_acc_rev_flag := 'N';
43765       END IF;
43766    EXCEPTION
43767       WHEN OTHERS THEN
43768          l_acc_rev_flag := 'N';
43769    END;
43770    --
43771    IF (l_acc_rev_flag = 'Y') THEN
43772 
43773        -- 4645092  ------------------------------------------------------------------------------
43774        -- To allow MPA report to determine if it should generate report process
43775        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43776        ------------------------------------------------------------------------------------------
43777 
43778        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43779        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43780    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
43781    -- call ADRs
43782    -- Bug 4922099
43783    --
43784    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43785         (NVL(l_actual_upg_option, 'N') = 'O') OR
43786         (NVL(l_enc_upg_option, 'N') = 'O')
43787       )
43788    THEN
43789    NULL;
43790    --
43791    --
43792    
43793   l_ccid := AcctDerRule_4(
43794            p_application_id           => p_application_id
43795          , p_ae_header_id             => l_ae_header_id 
43796 , p_source_4 => p_source_4
43797          , x_transaction_coa_id       => l_adr_transaction_coa_id
43798          , x_accounting_coa_id        => l_adr_accounting_coa_id
43799          , x_value_type_code          => l_adr_value_type_code
43800          , p_side                     => 'NA'
43801    );
43802 
43803    xla_ae_lines_pkg.set_ccid(
43804     p_code_combination_id          => l_ccid
43805   , p_value_type_code              => l_adr_value_type_code
43806   , p_transaction_coa_id           => l_adr_transaction_coa_id
43807   , p_accounting_coa_id            => l_adr_accounting_coa_id
43808   , p_adr_code                     => 'CST_DEFAULT'
43809   , p_adr_type_code                => 'S'
43810   , p_component_type               => l_component_type
43811   , p_component_code               => l_component_code
43812   , p_component_type_code          => l_component_type_code
43813   , p_component_appl_id            => l_component_appl_id
43814   , p_amb_context_code             => l_amb_context_code
43815   , p_side                         => 'NA'
43816   );
43817 
43818 
43819    --
43820    --
43821    END IF;
43822 
43823        --
43824        -- Update the line information that should be overwritten
43825        --
43826        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43827                                          p_header_num   => 1);
43828        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43829 
43830        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43831 
43832        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43833           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43834        END IF;
43835 
43836       --
43837       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43838       --
43839       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43840           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43841       ELSE
43842           ---------------------------------------------------------------------------------------------------
43843           -- 4262811a Switch Sign
43844           ---------------------------------------------------------------------------------------------------
43845           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43846           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43847                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43848           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43849                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43850           -- 5132302
43851           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43852                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43853 
43854       END IF;
43855 
43856       -- 4955764
43857       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43858       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43859 
43860 
43861       XLA_AE_LINES_PKG.ValidateCurrentLine;
43862       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43863 
43864       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43865                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43866                ,p_balance_type_code => l_balance_type_code);
43867 
43868    END IF;
43869 
43870    -----------------------------------------------------------------------------------------
43871    -- 4262811 Multiperiod Accounting
43872    -----------------------------------------------------------------------------------------
43873      -- No MPA option is assigned.
43874 
43875 
43876 END IF;
43877 END IF;
43878 --
43879 
43880 --
43881 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43882    trace
43883       (p_msg      => 'END of AcctLineType_81'
43884       ,p_level    => C_LEVEL_PROCEDURE
43885       ,p_module   => l_log_module);
43886 END IF;
43887 --
43888 EXCEPTION
43889   WHEN xla_exceptions_pkg.application_exception THEN
43890       RAISE;
43891   WHEN OTHERS THEN
43892        xla_exceptions_pkg.raise_message
43893            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_81');
43894 END AcctLineType_81;
43895 --
43896 
43897 ---------------------------------------
43898 --
43899 -- PRIVATE FUNCTION
43900 --         AcctLineType_82
43901 --
43902 ---------------------------------------
43903 PROCEDURE AcctLineType_82 (
43904   p_application_id        IN NUMBER
43905  ,p_event_id              IN NUMBER
43906  ,p_calculate_acctd_flag  IN VARCHAR2
43907  ,p_calculate_g_l_flag    IN VARCHAR2
43908  ,p_actual_flag           IN OUT VARCHAR2
43909  ,p_balance_type_code     OUT VARCHAR2
43910  ,p_gain_or_loss_ref      OUT VARCHAR2
43911  
43912 --Cost Management Default Account
43913  , p_source_4            IN NUMBER
43914 --DISTRIBUTION_IDENTIFIER
43915  , p_source_11            IN NUMBER
43916 --Distribution Type
43917  , p_source_12            IN VARCHAR2
43918  , p_source_12_meaning    IN VARCHAR2
43919 --Entered Currency Code
43920  , p_source_15            IN VARCHAR2
43921 --Entered Amount
43922  , p_source_18            IN NUMBER
43923 --Currency Conversion Date
43924  , p_source_19            IN DATE
43925 --Currency Conversion Rate
43926  , p_source_20            IN NUMBER
43927 --Currency Conversion Type
43928  , p_source_21            IN VARCHAR2
43929 --Accounted Amount
43930  , p_source_22            IN NUMBER
43931 --Accounting Line Type
43932  , p_source_24            IN NUMBER
43933 )
43934 IS
43935 
43936 l_component_type              VARCHAR2(80);
43937 l_component_code              VARCHAR2(30);
43938 l_component_type_code         VARCHAR2(1);
43939 l_component_appl_id           INTEGER;
43940 l_amb_context_code            VARCHAR2(30);
43941 l_entity_code                 VARCHAR2(30);
43942 l_event_class_code            VARCHAR2(30);
43943 l_ae_header_id                NUMBER;
43944 l_event_type_code             VARCHAR2(30);
43945 l_line_definition_code        VARCHAR2(30);
43946 l_line_definition_owner_code  VARCHAR2(1);
43947 --
43948 -- adr variables
43949 l_segment                     VARCHAR2(30);
43950 l_ccid                        NUMBER;
43951 l_adr_transaction_coa_id      NUMBER;
43952 l_adr_accounting_coa_id       NUMBER;
43953 l_adr_flexfield_segment_code  VARCHAR2(30);
43954 l_adr_flex_value_set_id       NUMBER;
43955 l_adr_value_type_code         VARCHAR2(30);
43956 l_adr_value_combination_id    NUMBER;
43957 l_adr_value_segment_code      VARCHAR2(30);
43958 
43959 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
43960 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
43961 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
43962 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
43963 
43964 -- 4262811 Variables ------------------------------------------------------------------------------------------
43965 l_entered_amt_idx             NUMBER;
43966 l_accted_amt_idx              NUMBER;
43967 l_acc_rev_flag                VARCHAR2(1);
43968 l_accrual_line_num            NUMBER;
43969 l_tmp_amt                     NUMBER;
43970 l_acc_rev_natural_side_code   VARCHAR2(1);
43971 
43972 l_num_entries                 NUMBER;
43973 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
43974 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
43975 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
43976 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
43977 l_recog_line_1                NUMBER;
43978 l_recog_line_2                NUMBER;
43979 
43980 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
43981 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
43982 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
43983 
43984 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43985 
43986 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
43987 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
43988 
43989 ---------------------------------------------------------------------------------------------------------------
43990 
43991 
43992 --
43993 -- bulk performance
43994 --
43995 l_balance_type_code           VARCHAR2(1);
43996 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43997 l_log_module                  VARCHAR2(240);
43998 
43999 --
44000 -- Upgrade strategy
44001 --
44002 l_actual_upg_option           VARCHAR2(1);
44003 l_enc_upg_option           VARCHAR2(1);
44004 
44005 --
44006 BEGIN
44007 --
44008 IF g_log_enabled THEN
44009       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_82';
44010 END IF;
44011 --
44012 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44013 
44014       trace
44015          (p_msg      => 'BEGIN of AcctLineType_82'
44016          ,p_level    => C_LEVEL_PROCEDURE
44017          ,p_module   => l_log_module);
44018 
44019 END IF;
44020 --
44021 l_component_type             := 'AMB_JLT';
44022 l_component_code             := 'INTERORG_PAYABLES';
44023 l_component_type_code        := 'S';
44024 l_component_appl_id          :=  707;
44025 l_amb_context_code           := 'DEFAULT';
44026 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
44027 l_event_class_code           := 'USER_DEFINE';
44028 l_event_type_code            := 'UDIR_INTERORG_RCPT';
44029 l_line_definition_owner_code := 'S';
44030 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
44031 --
44032 l_balance_type_code          := 'A';
44033 l_segment                     := NULL;
44034 l_ccid                        := NULL;
44035 l_adr_transaction_coa_id      := NULL;
44036 l_adr_accounting_coa_id       := NULL;
44037 l_adr_flexfield_segment_code  := NULL;
44038 l_adr_flex_value_set_id       := NULL;
44039 l_adr_value_type_code         := NULL;
44040 l_adr_value_combination_id    := NULL;
44041 l_adr_value_segment_code      := NULL;
44042 
44043 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
44044 l_bflow_class_code           := '';    -- 4219869 Business Flow
44045 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
44046 l_budgetary_control_flag     := 'N';
44047 
44048 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44049 l_bflow_applied_to_amt       := NULL; -- 5132302
44050 l_entered_amt_idx            := NULL;          -- 4262811
44051 l_accted_amt_idx             := NULL;          -- 4262811
44052 l_acc_rev_flag               := NULL;          -- 4262811
44053 l_accrual_line_num           := NULL;          -- 4262811
44054 l_tmp_amt                    := NULL;          -- 4262811
44055 --
44056  
44057 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44058     l_balance_type_code <> 'B' THEN
44059 IF NVL(p_source_24,9E125) =  9
44060  THEN 
44061 
44062    --
44063    XLA_AE_LINES_PKG.SetNewLine;
44064 
44065    p_balance_type_code          := l_balance_type_code;
44066    -- set the flag so later we will know whether the gain loss line needs to be created
44067    
44068    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44069      p_actual_flag :='A';
44070    END IF;
44071 
44072    --
44073    -- bulk performance
44074    --
44075    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44076                                       p_header_num   => 0); -- 4262811
44077    --
44078    -- set accounting line options
44079    --
44080    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44081            p_natural_side_code          => 'D'
44082          , p_gain_or_loss_flag          => 'N'
44083          , p_gl_transfer_mode_code      => 'S'
44084          , p_acct_entry_type_code       => 'A'
44085          , p_switch_side_flag           => 'Y'
44086          , p_merge_duplicate_code       => 'N'
44087          );
44088    --
44089    l_acc_rev_natural_side_code := 'C';  -- 4262811
44090    -- 
44091    --
44092    -- set accounting line type info
44093    --
44094    xla_ae_lines_pkg.SetAcctLineType
44095       (p_component_type             => l_component_type
44096       ,p_event_type_code            => l_event_type_code
44097       ,p_line_definition_owner_code => l_line_definition_owner_code
44098       ,p_line_definition_code       => l_line_definition_code
44099       ,p_accounting_line_code       => l_component_code
44100       ,p_accounting_line_type_code  => l_component_type_code
44101       ,p_accounting_line_appl_id    => l_component_appl_id
44102       ,p_amb_context_code           => l_amb_context_code
44103       ,p_entity_code                => l_entity_code
44104       ,p_event_class_code           => l_event_class_code);
44105    --
44106    -- set accounting class
44107    --
44108    xla_ae_lines_pkg.SetAcctClass(
44109            p_accounting_class_code  => 'INTERORG_PAYABLES'
44110          , p_ae_header_id           => l_ae_header_id
44111          );
44112 
44113    --
44114    -- set rounding class
44115    --
44116    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44117                       'INTERORG_PAYABLES';
44118 
44119    --
44120    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44121    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44122    --
44123    -- bulk performance
44124    --
44125    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44126 
44127    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44128       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44129 
44130    -- 4955764
44131    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44132       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44133 
44134    -- 4458381 Public Sector Enh
44135    
44136    --
44137    -- set accounting attributes for the line type
44138    --
44139    l_entered_amt_idx := 3;
44140    l_accted_amt_idx  := 8;
44141    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
44142    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
44143    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
44144    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
44145    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
44146    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
44147    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
44148    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
44149    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
44150    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
44151    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
44152    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
44153    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
44154    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
44155    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
44156    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
44157    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
44158 
44159    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44160    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44161 
44162    ---------------------------------------------------------------------------------------------------------------
44163    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44164    ---------------------------------------------------------------------------------------------------------------
44165    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44166 
44167    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44168    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44169 
44170    IF xla_accounting_cache_pkg.GetValueChar
44171          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44172          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44173    AND l_bflow_method_code = 'PRIOR_ENTRY'
44174 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44175    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44176          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44177        )
44178    THEN
44179          xla_ae_lines_pkg.BflowUpgEntry
44180            (p_business_method_code    => l_bflow_method_code
44181            ,p_business_class_code     => l_bflow_class_code
44182            ,p_balance_type            => l_balance_type_code);
44183    ELSE
44184       NULL;
44185 -- No business flow processing for business flow method of NONE.
44186    END IF;
44187 
44188    --
44189    -- call analytical criteria
44190    --
44191    
44192    --
44193    -- call description
44194    --
44195    -- No description or it is inherited.
44196    --
44197    -- call ADRs
44198    -- Bug 4922099
44199    --
44200    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44201         (NVL(l_actual_upg_option, 'N') = 'O') OR
44202         (NVL(l_enc_upg_option, 'N') = 'O')
44203       )
44204    THEN
44205    NULL;
44206    --
44207    --
44208    
44209   l_ccid := AcctDerRule_4(
44210            p_application_id           => p_application_id
44211          , p_ae_header_id             => l_ae_header_id 
44212 , p_source_4 => p_source_4
44213          , x_transaction_coa_id       => l_adr_transaction_coa_id
44214          , x_accounting_coa_id        => l_adr_accounting_coa_id
44215          , x_value_type_code          => l_adr_value_type_code
44216          , p_side                     => 'NA'
44217    );
44218 
44219    xla_ae_lines_pkg.set_ccid(
44220     p_code_combination_id          => l_ccid
44221   , p_value_type_code              => l_adr_value_type_code
44222   , p_transaction_coa_id           => l_adr_transaction_coa_id
44223   , p_accounting_coa_id            => l_adr_accounting_coa_id
44224   , p_adr_code                     => 'CST_DEFAULT'
44225   , p_adr_type_code                => 'S'
44226   , p_component_type               => l_component_type
44227   , p_component_code               => l_component_code
44228   , p_component_type_code          => l_component_type_code
44229   , p_component_appl_id            => l_component_appl_id
44230   , p_amb_context_code             => l_amb_context_code
44231   , p_side                         => 'NA'
44232   );
44233 
44234 
44235    --
44236    --
44237    END IF;
44238    --
44239    -- Bug 4922099
44240    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44241           (NVL(l_enc_upg_option, 'N') = 'O')
44242         ) AND
44243         (l_bflow_method_code = 'PRIOR_ENTRY')
44244       )
44245    THEN
44246       IF
44247       --
44248       1 = 2
44249       --
44250       THEN
44251       xla_accounting_err_pkg.build_message
44252                                     (p_appli_s_name            => 'XLA'
44253                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44254                                     ,p_token_1                 => 'LINE_NUMBER'
44255                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44256                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44257                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44258                                                                              l_component_type
44259                                                                             ,l_component_code
44260                                                                             ,l_component_type_code
44261                                                                             ,l_component_appl_id
44262                                                                             ,l_amb_context_code
44263                                                                             ,l_entity_code
44264                                                                             ,l_event_class_code
44265                                                                            )
44266                                     ,p_token_3                 => 'OWNER'
44267                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44268                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44269                                                                           ,p_lookup_code    => l_component_type_code
44270                                                                          )
44271                                     ,p_token_4                 => 'PRODUCT_NAME'
44272                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44273                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44274                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44275                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44276                                     ,p_ae_header_id            =>  NULL
44277                                        );
44278 
44279         IF (C_LEVEL_ERROR>= g_log_level) THEN
44280                  trace
44281                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44282                       ,p_level    => C_LEVEL_ERROR
44283                       ,p_module   => l_log_module);
44284         END IF;
44285       END IF;
44286    END IF;
44287    --
44288    --
44289    ------------------------------------------------------------------------------------------------
44290    -- 4219869 Business Flow
44291    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44292    -- Prior Entry.  Currently, the following code is always generated.
44293    ------------------------------------------------------------------------------------------------
44294    XLA_AE_LINES_PKG.ValidateCurrentLine;
44295 
44296    ------------------------------------------------------------------------------------
44297    -- 4219869 Business Flow
44298    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44299    ------------------------------------------------------------------------------------
44300    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44301 
44302    ----------------------------------------------------------------------------------
44303    -- 4219869 Business Flow
44304    -- Update journal entry status -- Need to generate this within IF <condition>
44305    ----------------------------------------------------------------------------------
44306    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44307          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44308          ,p_balance_type_code => l_balance_type_code
44309          );
44310 
44311    -------------------------------------------------------------------------------------------
44312    -- 4262811 - Generate the Accrual Reversal lines
44313    -------------------------------------------------------------------------------------------
44314    BEGIN
44315       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44316                               (g_array_event(p_event_id).array_value_num('header_index'));
44317       IF l_acc_rev_flag IS NULL THEN
44318          l_acc_rev_flag := 'N';
44319       END IF;
44320    EXCEPTION
44321       WHEN OTHERS THEN
44322          l_acc_rev_flag := 'N';
44323    END;
44324    --
44325    IF (l_acc_rev_flag = 'Y') THEN
44326 
44327        -- 4645092  ------------------------------------------------------------------------------
44328        -- To allow MPA report to determine if it should generate report process
44329        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44330        ------------------------------------------------------------------------------------------
44331 
44332        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44333        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44334    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
44335    -- call ADRs
44336    -- Bug 4922099
44337    --
44338    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44339         (NVL(l_actual_upg_option, 'N') = 'O') OR
44340         (NVL(l_enc_upg_option, 'N') = 'O')
44341       )
44342    THEN
44343    NULL;
44344    --
44345    --
44346    
44347   l_ccid := AcctDerRule_4(
44348            p_application_id           => p_application_id
44349          , p_ae_header_id             => l_ae_header_id 
44350 , p_source_4 => p_source_4
44351          , x_transaction_coa_id       => l_adr_transaction_coa_id
44352          , x_accounting_coa_id        => l_adr_accounting_coa_id
44353          , x_value_type_code          => l_adr_value_type_code
44354          , p_side                     => 'NA'
44355    );
44356 
44357    xla_ae_lines_pkg.set_ccid(
44358     p_code_combination_id          => l_ccid
44359   , p_value_type_code              => l_adr_value_type_code
44360   , p_transaction_coa_id           => l_adr_transaction_coa_id
44361   , p_accounting_coa_id            => l_adr_accounting_coa_id
44362   , p_adr_code                     => 'CST_DEFAULT'
44363   , p_adr_type_code                => 'S'
44364   , p_component_type               => l_component_type
44365   , p_component_code               => l_component_code
44366   , p_component_type_code          => l_component_type_code
44367   , p_component_appl_id            => l_component_appl_id
44368   , p_amb_context_code             => l_amb_context_code
44369   , p_side                         => 'NA'
44370   );
44371 
44372 
44373    --
44374    --
44375    END IF;
44376 
44377        --
44378        -- Update the line information that should be overwritten
44379        --
44380        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44381                                          p_header_num   => 1);
44382        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
44383 
44384        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44385 
44386        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
44387           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44388        END IF;
44389 
44390       --
44391       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44392       --
44393       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44394           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
44395       ELSE
44396           ---------------------------------------------------------------------------------------------------
44397           -- 4262811a Switch Sign
44398           ---------------------------------------------------------------------------------------------------
44399           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
44400           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44401                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44402           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44403                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44404           -- 5132302
44405           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44406                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44407 
44408       END IF;
44409 
44410       -- 4955764
44411       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44412       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44413 
44414 
44415       XLA_AE_LINES_PKG.ValidateCurrentLine;
44416       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44417 
44418       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44419                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44420                ,p_balance_type_code => l_balance_type_code);
44421 
44422    END IF;
44423 
44424    -----------------------------------------------------------------------------------------
44425    -- 4262811 Multiperiod Accounting
44426    -----------------------------------------------------------------------------------------
44427      -- No MPA option is assigned.
44428 
44429 
44430 END IF;
44431 END IF;
44432 --
44433 
44434 --
44435 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44436    trace
44437       (p_msg      => 'END of AcctLineType_82'
44438       ,p_level    => C_LEVEL_PROCEDURE
44439       ,p_module   => l_log_module);
44440 END IF;
44441 --
44442 EXCEPTION
44443   WHEN xla_exceptions_pkg.application_exception THEN
44444       RAISE;
44445   WHEN OTHERS THEN
44446        xla_exceptions_pkg.raise_message
44447            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_82');
44448 END AcctLineType_82;
44449 --
44450 
44451 ---------------------------------------
44452 --
44453 -- PRIVATE FUNCTION
44454 --         AcctLineType_83
44455 --
44456 ---------------------------------------
44457 PROCEDURE AcctLineType_83 (
44458   p_application_id        IN NUMBER
44459  ,p_event_id              IN NUMBER
44460  ,p_calculate_acctd_flag  IN VARCHAR2
44461  ,p_calculate_g_l_flag    IN VARCHAR2
44462  ,p_actual_flag           IN OUT VARCHAR2
44463  ,p_balance_type_code     OUT VARCHAR2
44464  ,p_gain_or_loss_ref      OUT VARCHAR2
44465  
44466 --Cost Management Default Account
44467  , p_source_4            IN NUMBER
44468 --DISTRIBUTION_IDENTIFIER
44469  , p_source_11            IN NUMBER
44470 --Distribution Type
44471  , p_source_12            IN VARCHAR2
44472  , p_source_12_meaning    IN VARCHAR2
44473 --Entered Currency Code
44474  , p_source_15            IN VARCHAR2
44475 --Entered Amount
44476  , p_source_18            IN NUMBER
44477 --Currency Conversion Date
44478  , p_source_19            IN DATE
44479 --Currency Conversion Rate
44480  , p_source_20            IN NUMBER
44481 --Currency Conversion Type
44482  , p_source_21            IN VARCHAR2
44483 --Accounted Amount
44484  , p_source_22            IN NUMBER
44485 --Accounting Line Type
44486  , p_source_24            IN NUMBER
44487 )
44488 IS
44489 
44490 l_component_type              VARCHAR2(80);
44491 l_component_code              VARCHAR2(30);
44492 l_component_type_code         VARCHAR2(1);
44493 l_component_appl_id           INTEGER;
44494 l_amb_context_code            VARCHAR2(30);
44495 l_entity_code                 VARCHAR2(30);
44496 l_event_class_code            VARCHAR2(30);
44497 l_ae_header_id                NUMBER;
44498 l_event_type_code             VARCHAR2(30);
44499 l_line_definition_code        VARCHAR2(30);
44500 l_line_definition_owner_code  VARCHAR2(1);
44501 --
44502 -- adr variables
44503 l_segment                     VARCHAR2(30);
44504 l_ccid                        NUMBER;
44505 l_adr_transaction_coa_id      NUMBER;
44506 l_adr_accounting_coa_id       NUMBER;
44507 l_adr_flexfield_segment_code  VARCHAR2(30);
44508 l_adr_flex_value_set_id       NUMBER;
44509 l_adr_value_type_code         VARCHAR2(30);
44510 l_adr_value_combination_id    NUMBER;
44511 l_adr_value_segment_code      VARCHAR2(30);
44512 
44513 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44514 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44515 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44516 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
44517 
44518 -- 4262811 Variables ------------------------------------------------------------------------------------------
44519 l_entered_amt_idx             NUMBER;
44520 l_accted_amt_idx              NUMBER;
44521 l_acc_rev_flag                VARCHAR2(1);
44522 l_accrual_line_num            NUMBER;
44523 l_tmp_amt                     NUMBER;
44524 l_acc_rev_natural_side_code   VARCHAR2(1);
44525 
44526 l_num_entries                 NUMBER;
44527 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
44528 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
44529 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
44530 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
44531 l_recog_line_1                NUMBER;
44532 l_recog_line_2                NUMBER;
44533 
44534 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
44535 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
44536 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
44537 
44538 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44539 
44540 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
44541 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
44542 
44543 ---------------------------------------------------------------------------------------------------------------
44544 
44545 
44546 --
44547 -- bulk performance
44548 --
44549 l_balance_type_code           VARCHAR2(1);
44550 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
44551 l_log_module                  VARCHAR2(240);
44552 
44553 --
44554 -- Upgrade strategy
44555 --
44556 l_actual_upg_option           VARCHAR2(1);
44557 l_enc_upg_option           VARCHAR2(1);
44558 
44559 --
44560 BEGIN
44561 --
44562 IF g_log_enabled THEN
44563       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_83';
44564 END IF;
44565 --
44566 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44567 
44568       trace
44569          (p_msg      => 'BEGIN of AcctLineType_83'
44570          ,p_level    => C_LEVEL_PROCEDURE
44571          ,p_module   => l_log_module);
44572 
44573 END IF;
44574 --
44575 l_component_type             := 'AMB_JLT';
44576 l_component_code             := 'INTERORG_PROFIT_OPM';
44577 l_component_type_code        := 'S';
44578 l_component_appl_id          :=  707;
44579 l_amb_context_code           := 'DEFAULT';
44580 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
44581 l_event_class_code           := 'USER_DEFINE';
44582 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
44583 l_line_definition_owner_code := 'S';
44584 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
44585 --
44586 l_balance_type_code          := 'A';
44587 l_segment                     := NULL;
44588 l_ccid                        := NULL;
44589 l_adr_transaction_coa_id      := NULL;
44590 l_adr_accounting_coa_id       := NULL;
44591 l_adr_flexfield_segment_code  := NULL;
44592 l_adr_flex_value_set_id       := NULL;
44593 l_adr_value_type_code         := NULL;
44594 l_adr_value_combination_id    := NULL;
44595 l_adr_value_segment_code      := NULL;
44596 
44597 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
44598 l_bflow_class_code           := '';    -- 4219869 Business Flow
44599 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
44600 l_budgetary_control_flag     := 'N';
44601 
44602 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44603 l_bflow_applied_to_amt       := NULL; -- 5132302
44604 l_entered_amt_idx            := NULL;          -- 4262811
44605 l_accted_amt_idx             := NULL;          -- 4262811
44606 l_acc_rev_flag               := NULL;          -- 4262811
44607 l_accrual_line_num           := NULL;          -- 4262811
44608 l_tmp_amt                    := NULL;          -- 4262811
44609 --
44610  
44611 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44612     l_balance_type_code <> 'B' THEN
44613 IF NVL(p_source_24,9E125) =  34
44614  THEN 
44615 
44616    --
44617    XLA_AE_LINES_PKG.SetNewLine;
44618 
44619    p_balance_type_code          := l_balance_type_code;
44620    -- set the flag so later we will know whether the gain loss line needs to be created
44621    
44622    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44623      p_actual_flag :='A';
44624    END IF;
44625 
44626    --
44627    -- bulk performance
44628    --
44629    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44630                                       p_header_num   => 0); -- 4262811
44631    --
44632    -- set accounting line options
44633    --
44634    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44635            p_natural_side_code          => 'D'
44636          , p_gain_or_loss_flag          => 'N'
44637          , p_gl_transfer_mode_code      => 'S'
44638          , p_acct_entry_type_code       => 'A'
44639          , p_switch_side_flag           => 'Y'
44640          , p_merge_duplicate_code       => 'N'
44641          );
44642    --
44643    l_acc_rev_natural_side_code := 'C';  -- 4262811
44644    -- 
44645    --
44646    -- set accounting line type info
44647    --
44648    xla_ae_lines_pkg.SetAcctLineType
44649       (p_component_type             => l_component_type
44650       ,p_event_type_code            => l_event_type_code
44651       ,p_line_definition_owner_code => l_line_definition_owner_code
44652       ,p_line_definition_code       => l_line_definition_code
44653       ,p_accounting_line_code       => l_component_code
44654       ,p_accounting_line_type_code  => l_component_type_code
44655       ,p_accounting_line_appl_id    => l_component_appl_id
44656       ,p_amb_context_code           => l_amb_context_code
44657       ,p_entity_code                => l_entity_code
44658       ,p_event_class_code           => l_event_class_code);
44659    --
44660    -- set accounting class
44661    --
44662    xla_ae_lines_pkg.SetAcctClass(
44663            p_accounting_class_code  => 'INTERORG_PROFIT'
44664          , p_ae_header_id           => l_ae_header_id
44665          );
44666 
44667    --
44668    -- set rounding class
44669    --
44670    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44671                       'INTERORG_PROFIT';
44672 
44673    --
44674    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44675    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44676    --
44677    -- bulk performance
44678    --
44679    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44680 
44681    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44682       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44683 
44684    -- 4955764
44685    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44686       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44687 
44688    -- 4458381 Public Sector Enh
44689    
44690    --
44691    -- set accounting attributes for the line type
44692    --
44693    l_entered_amt_idx := 3;
44694    l_accted_amt_idx  := 8;
44695    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
44696    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
44697    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
44698    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
44699    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
44700    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
44701    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
44702    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
44703    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
44704    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
44705    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
44706    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
44707    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
44708    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
44709    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
44710    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
44711    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
44712 
44713    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44714    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44715 
44716    ---------------------------------------------------------------------------------------------------------------
44717    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44718    ---------------------------------------------------------------------------------------------------------------
44719    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44720 
44721    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44722    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44723 
44724    IF xla_accounting_cache_pkg.GetValueChar
44725          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44726          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44727    AND l_bflow_method_code = 'PRIOR_ENTRY'
44728 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44729    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44730          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44731        )
44732    THEN
44733          xla_ae_lines_pkg.BflowUpgEntry
44734            (p_business_method_code    => l_bflow_method_code
44735            ,p_business_class_code     => l_bflow_class_code
44736            ,p_balance_type            => l_balance_type_code);
44737    ELSE
44738       NULL;
44739 -- No business flow processing for business flow method of NONE.
44740    END IF;
44741 
44742    --
44743    -- call analytical criteria
44744    --
44745    
44746    --
44747    -- call description
44748    --
44749    -- No description or it is inherited.
44750    --
44751    -- call ADRs
44752    -- Bug 4922099
44753    --
44754    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44755         (NVL(l_actual_upg_option, 'N') = 'O') OR
44756         (NVL(l_enc_upg_option, 'N') = 'O')
44757       )
44758    THEN
44759    NULL;
44760    --
44761    --
44762    
44763   l_ccid := AcctDerRule_4(
44764            p_application_id           => p_application_id
44765          , p_ae_header_id             => l_ae_header_id 
44766 , p_source_4 => p_source_4
44767          , x_transaction_coa_id       => l_adr_transaction_coa_id
44768          , x_accounting_coa_id        => l_adr_accounting_coa_id
44769          , x_value_type_code          => l_adr_value_type_code
44770          , p_side                     => 'NA'
44771    );
44772 
44773    xla_ae_lines_pkg.set_ccid(
44774     p_code_combination_id          => l_ccid
44775   , p_value_type_code              => l_adr_value_type_code
44776   , p_transaction_coa_id           => l_adr_transaction_coa_id
44777   , p_accounting_coa_id            => l_adr_accounting_coa_id
44778   , p_adr_code                     => 'CST_DEFAULT'
44779   , p_adr_type_code                => 'S'
44780   , p_component_type               => l_component_type
44781   , p_component_code               => l_component_code
44782   , p_component_type_code          => l_component_type_code
44783   , p_component_appl_id            => l_component_appl_id
44784   , p_amb_context_code             => l_amb_context_code
44785   , p_side                         => 'NA'
44786   );
44787 
44788 
44789    --
44790    --
44791    END IF;
44792    --
44793    -- Bug 4922099
44794    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44795           (NVL(l_enc_upg_option, 'N') = 'O')
44796         ) AND
44797         (l_bflow_method_code = 'PRIOR_ENTRY')
44798       )
44799    THEN
44800       IF
44801       --
44802       1 = 2
44803       --
44804       THEN
44805       xla_accounting_err_pkg.build_message
44806                                     (p_appli_s_name            => 'XLA'
44807                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44808                                     ,p_token_1                 => 'LINE_NUMBER'
44809                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44810                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44811                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44812                                                                              l_component_type
44813                                                                             ,l_component_code
44814                                                                             ,l_component_type_code
44815                                                                             ,l_component_appl_id
44816                                                                             ,l_amb_context_code
44817                                                                             ,l_entity_code
44818                                                                             ,l_event_class_code
44819                                                                            )
44820                                     ,p_token_3                 => 'OWNER'
44821                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44822                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44823                                                                           ,p_lookup_code    => l_component_type_code
44824                                                                          )
44825                                     ,p_token_4                 => 'PRODUCT_NAME'
44826                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44827                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44828                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44829                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44830                                     ,p_ae_header_id            =>  NULL
44831                                        );
44832 
44833         IF (C_LEVEL_ERROR>= g_log_level) THEN
44834                  trace
44835                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44836                       ,p_level    => C_LEVEL_ERROR
44837                       ,p_module   => l_log_module);
44838         END IF;
44839       END IF;
44840    END IF;
44841    --
44842    --
44843    ------------------------------------------------------------------------------------------------
44844    -- 4219869 Business Flow
44845    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44846    -- Prior Entry.  Currently, the following code is always generated.
44847    ------------------------------------------------------------------------------------------------
44848    XLA_AE_LINES_PKG.ValidateCurrentLine;
44849 
44850    ------------------------------------------------------------------------------------
44851    -- 4219869 Business Flow
44852    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44853    ------------------------------------------------------------------------------------
44854    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44855 
44856    ----------------------------------------------------------------------------------
44857    -- 4219869 Business Flow
44858    -- Update journal entry status -- Need to generate this within IF <condition>
44859    ----------------------------------------------------------------------------------
44860    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44861          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44862          ,p_balance_type_code => l_balance_type_code
44863          );
44864 
44865    -------------------------------------------------------------------------------------------
44866    -- 4262811 - Generate the Accrual Reversal lines
44867    -------------------------------------------------------------------------------------------
44868    BEGIN
44869       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44870                               (g_array_event(p_event_id).array_value_num('header_index'));
44871       IF l_acc_rev_flag IS NULL THEN
44872          l_acc_rev_flag := 'N';
44873       END IF;
44874    EXCEPTION
44875       WHEN OTHERS THEN
44876          l_acc_rev_flag := 'N';
44877    END;
44878    --
44879    IF (l_acc_rev_flag = 'Y') THEN
44880 
44881        -- 4645092  ------------------------------------------------------------------------------
44882        -- To allow MPA report to determine if it should generate report process
44883        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44884        ------------------------------------------------------------------------------------------
44885 
44886        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44887        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44888    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
44889    -- call ADRs
44890    -- Bug 4922099
44891    --
44892    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44893         (NVL(l_actual_upg_option, 'N') = 'O') OR
44894         (NVL(l_enc_upg_option, 'N') = 'O')
44895       )
44896    THEN
44897    NULL;
44898    --
44899    --
44900    
44901   l_ccid := AcctDerRule_4(
44902            p_application_id           => p_application_id
44903          , p_ae_header_id             => l_ae_header_id 
44904 , p_source_4 => p_source_4
44905          , x_transaction_coa_id       => l_adr_transaction_coa_id
44906          , x_accounting_coa_id        => l_adr_accounting_coa_id
44907          , x_value_type_code          => l_adr_value_type_code
44908          , p_side                     => 'NA'
44909    );
44910 
44911    xla_ae_lines_pkg.set_ccid(
44912     p_code_combination_id          => l_ccid
44913   , p_value_type_code              => l_adr_value_type_code
44914   , p_transaction_coa_id           => l_adr_transaction_coa_id
44915   , p_accounting_coa_id            => l_adr_accounting_coa_id
44916   , p_adr_code                     => 'CST_DEFAULT'
44917   , p_adr_type_code                => 'S'
44918   , p_component_type               => l_component_type
44919   , p_component_code               => l_component_code
44920   , p_component_type_code          => l_component_type_code
44921   , p_component_appl_id            => l_component_appl_id
44922   , p_amb_context_code             => l_amb_context_code
44923   , p_side                         => 'NA'
44924   );
44925 
44926 
44927    --
44928    --
44929    END IF;
44930 
44931        --
44932        -- Update the line information that should be overwritten
44933        --
44934        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44935                                          p_header_num   => 1);
44936        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
44937 
44938        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44939 
44940        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
44941           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44942        END IF;
44943 
44944       --
44945       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44946       --
44947       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44948           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
44949       ELSE
44950           ---------------------------------------------------------------------------------------------------
44951           -- 4262811a Switch Sign
44952           ---------------------------------------------------------------------------------------------------
44953           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
44954           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44955                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44956           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44957                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44958           -- 5132302
44959           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44960                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44961 
44962       END IF;
44963 
44964       -- 4955764
44965       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44966       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44967 
44968 
44969       XLA_AE_LINES_PKG.ValidateCurrentLine;
44970       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44971 
44972       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44973                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44974                ,p_balance_type_code => l_balance_type_code);
44975 
44976    END IF;
44977 
44978    -----------------------------------------------------------------------------------------
44979    -- 4262811 Multiperiod Accounting
44980    -----------------------------------------------------------------------------------------
44981      -- No MPA option is assigned.
44982 
44983 
44984 END IF;
44985 END IF;
44986 --
44987 
44988 --
44989 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44990    trace
44991       (p_msg      => 'END of AcctLineType_83'
44992       ,p_level    => C_LEVEL_PROCEDURE
44993       ,p_module   => l_log_module);
44994 END IF;
44995 --
44996 EXCEPTION
44997   WHEN xla_exceptions_pkg.application_exception THEN
44998       RAISE;
44999   WHEN OTHERS THEN
45000        xla_exceptions_pkg.raise_message
45001            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_83');
45002 END AcctLineType_83;
45003 --
45004 
45005 ---------------------------------------
45006 --
45007 -- PRIVATE FUNCTION
45008 --         AcctLineType_84
45009 --
45010 ---------------------------------------
45011 PROCEDURE AcctLineType_84 (
45012   p_application_id        IN NUMBER
45013  ,p_event_id              IN NUMBER
45014  ,p_calculate_acctd_flag  IN VARCHAR2
45015  ,p_calculate_g_l_flag    IN VARCHAR2
45016  ,p_actual_flag           IN OUT VARCHAR2
45017  ,p_balance_type_code     OUT VARCHAR2
45018  ,p_gain_or_loss_ref      OUT VARCHAR2
45019  
45020 --Cost Management Default Account
45021  , p_source_4            IN NUMBER
45022 --DISTRIBUTION_IDENTIFIER
45023  , p_source_11            IN NUMBER
45024 --Distribution Type
45025  , p_source_12            IN VARCHAR2
45026  , p_source_12_meaning    IN VARCHAR2
45027 --Entered Currency Code
45028  , p_source_15            IN VARCHAR2
45029 --Entered Amount
45030  , p_source_18            IN NUMBER
45031 --Currency Conversion Date
45032  , p_source_19            IN DATE
45033 --Currency Conversion Rate
45034  , p_source_20            IN NUMBER
45035 --Currency Conversion Type
45036  , p_source_21            IN VARCHAR2
45037 --Accounted Amount
45038  , p_source_22            IN NUMBER
45039 --Accounting Line Type
45040  , p_source_24            IN NUMBER
45041 )
45042 IS
45043 
45044 l_component_type              VARCHAR2(80);
45045 l_component_code              VARCHAR2(30);
45046 l_component_type_code         VARCHAR2(1);
45047 l_component_appl_id           INTEGER;
45048 l_amb_context_code            VARCHAR2(30);
45049 l_entity_code                 VARCHAR2(30);
45050 l_event_class_code            VARCHAR2(30);
45051 l_ae_header_id                NUMBER;
45052 l_event_type_code             VARCHAR2(30);
45053 l_line_definition_code        VARCHAR2(30);
45054 l_line_definition_owner_code  VARCHAR2(1);
45055 --
45056 -- adr variables
45057 l_segment                     VARCHAR2(30);
45058 l_ccid                        NUMBER;
45059 l_adr_transaction_coa_id      NUMBER;
45060 l_adr_accounting_coa_id       NUMBER;
45061 l_adr_flexfield_segment_code  VARCHAR2(30);
45062 l_adr_flex_value_set_id       NUMBER;
45063 l_adr_value_type_code         VARCHAR2(30);
45064 l_adr_value_combination_id    NUMBER;
45065 l_adr_value_segment_code      VARCHAR2(30);
45066 
45067 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45068 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45069 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45070 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45071 
45072 -- 4262811 Variables ------------------------------------------------------------------------------------------
45073 l_entered_amt_idx             NUMBER;
45074 l_accted_amt_idx              NUMBER;
45075 l_acc_rev_flag                VARCHAR2(1);
45076 l_accrual_line_num            NUMBER;
45077 l_tmp_amt                     NUMBER;
45078 l_acc_rev_natural_side_code   VARCHAR2(1);
45079 
45080 l_num_entries                 NUMBER;
45081 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45082 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45083 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45084 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45085 l_recog_line_1                NUMBER;
45086 l_recog_line_2                NUMBER;
45087 
45088 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45089 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45090 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45091 
45092 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45093 
45094 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45095 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45096 
45097 ---------------------------------------------------------------------------------------------------------------
45098 
45099 
45100 --
45101 -- bulk performance
45102 --
45103 l_balance_type_code           VARCHAR2(1);
45104 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45105 l_log_module                  VARCHAR2(240);
45106 
45107 --
45108 -- Upgrade strategy
45109 --
45110 l_actual_upg_option           VARCHAR2(1);
45111 l_enc_upg_option           VARCHAR2(1);
45112 
45113 --
45114 BEGIN
45115 --
45116 IF g_log_enabled THEN
45117       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_84';
45118 END IF;
45119 --
45120 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45121 
45122       trace
45123          (p_msg      => 'BEGIN of AcctLineType_84'
45124          ,p_level    => C_LEVEL_PROCEDURE
45125          ,p_module   => l_log_module);
45126 
45127 END IF;
45128 --
45129 l_component_type             := 'AMB_JLT';
45130 l_component_code             := 'INTERORG_PROFIT_OPM';
45131 l_component_type_code        := 'S';
45132 l_component_appl_id          :=  707;
45133 l_amb_context_code           := 'DEFAULT';
45134 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
45135 l_event_class_code           := 'DIR_INTERORG_SHIP';
45136 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
45137 l_line_definition_owner_code := 'S';
45138 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
45139 --
45140 l_balance_type_code          := 'A';
45141 l_segment                     := NULL;
45142 l_ccid                        := NULL;
45143 l_adr_transaction_coa_id      := NULL;
45144 l_adr_accounting_coa_id       := NULL;
45145 l_adr_flexfield_segment_code  := NULL;
45146 l_adr_flex_value_set_id       := NULL;
45147 l_adr_value_type_code         := NULL;
45148 l_adr_value_combination_id    := NULL;
45149 l_adr_value_segment_code      := NULL;
45150 
45151 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45152 l_bflow_class_code           := '';    -- 4219869 Business Flow
45153 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45154 l_budgetary_control_flag     := 'N';
45155 
45156 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45157 l_bflow_applied_to_amt       := NULL; -- 5132302
45158 l_entered_amt_idx            := NULL;          -- 4262811
45159 l_accted_amt_idx             := NULL;          -- 4262811
45160 l_acc_rev_flag               := NULL;          -- 4262811
45161 l_accrual_line_num           := NULL;          -- 4262811
45162 l_tmp_amt                    := NULL;          -- 4262811
45163 --
45164  
45165 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45166     l_balance_type_code <> 'B' THEN
45167 IF NVL(p_source_24,9E125) =  34
45168  THEN 
45169 
45170    --
45171    XLA_AE_LINES_PKG.SetNewLine;
45172 
45173    p_balance_type_code          := l_balance_type_code;
45174    -- set the flag so later we will know whether the gain loss line needs to be created
45175    
45176    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45177      p_actual_flag :='A';
45178    END IF;
45179 
45180    --
45181    -- bulk performance
45182    --
45183    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45184                                       p_header_num   => 0); -- 4262811
45185    --
45186    -- set accounting line options
45187    --
45188    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45189            p_natural_side_code          => 'D'
45190          , p_gain_or_loss_flag          => 'N'
45191          , p_gl_transfer_mode_code      => 'S'
45192          , p_acct_entry_type_code       => 'A'
45193          , p_switch_side_flag           => 'Y'
45194          , p_merge_duplicate_code       => 'N'
45195          );
45196    --
45197    l_acc_rev_natural_side_code := 'C';  -- 4262811
45198    -- 
45199    --
45200    -- set accounting line type info
45201    --
45202    xla_ae_lines_pkg.SetAcctLineType
45203       (p_component_type             => l_component_type
45204       ,p_event_type_code            => l_event_type_code
45205       ,p_line_definition_owner_code => l_line_definition_owner_code
45206       ,p_line_definition_code       => l_line_definition_code
45207       ,p_accounting_line_code       => l_component_code
45208       ,p_accounting_line_type_code  => l_component_type_code
45209       ,p_accounting_line_appl_id    => l_component_appl_id
45210       ,p_amb_context_code           => l_amb_context_code
45211       ,p_entity_code                => l_entity_code
45212       ,p_event_class_code           => l_event_class_code);
45213    --
45214    -- set accounting class
45215    --
45216    xla_ae_lines_pkg.SetAcctClass(
45217            p_accounting_class_code  => 'INTERORG_PROFIT'
45218          , p_ae_header_id           => l_ae_header_id
45219          );
45220 
45221    --
45222    -- set rounding class
45223    --
45224    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45225                       'INTERORG_PROFIT';
45226 
45227    --
45228    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45229    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45230    --
45231    -- bulk performance
45232    --
45233    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45234 
45235    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45236       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45237 
45238    -- 4955764
45239    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45240       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45241 
45242    -- 4458381 Public Sector Enh
45243    
45244    --
45245    -- set accounting attributes for the line type
45246    --
45247    l_entered_amt_idx := 3;
45248    l_accted_amt_idx  := 8;
45249    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
45250    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
45251    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
45252    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
45253    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
45254    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
45255    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
45256    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
45257    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
45258    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
45259    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
45260    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
45261    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
45262    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
45263    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
45264    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
45265    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
45266 
45267    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45268    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45269 
45270    ---------------------------------------------------------------------------------------------------------------
45271    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45272    ---------------------------------------------------------------------------------------------------------------
45273    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45274 
45275    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45276    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45277 
45278    IF xla_accounting_cache_pkg.GetValueChar
45279          (p_source_code         => 'LEDGER_CATEGORY_CODE'
45280          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45281    AND l_bflow_method_code = 'PRIOR_ENTRY'
45282 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45283    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45284          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45285        )
45286    THEN
45287          xla_ae_lines_pkg.BflowUpgEntry
45288            (p_business_method_code    => l_bflow_method_code
45289            ,p_business_class_code     => l_bflow_class_code
45290            ,p_balance_type            => l_balance_type_code);
45291    ELSE
45292       NULL;
45293 -- No business flow processing for business flow method of NONE.
45294    END IF;
45295 
45296    --
45297    -- call analytical criteria
45298    --
45299    
45300    --
45301    -- call description
45302    --
45303    -- No description or it is inherited.
45304    --
45305    -- call ADRs
45306    -- Bug 4922099
45307    --
45308    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45309         (NVL(l_actual_upg_option, 'N') = 'O') OR
45310         (NVL(l_enc_upg_option, 'N') = 'O')
45311       )
45312    THEN
45313    NULL;
45314    --
45315    --
45316    
45317   l_ccid := AcctDerRule_4(
45318            p_application_id           => p_application_id
45319          , p_ae_header_id             => l_ae_header_id 
45320 , p_source_4 => p_source_4
45321          , x_transaction_coa_id       => l_adr_transaction_coa_id
45322          , x_accounting_coa_id        => l_adr_accounting_coa_id
45323          , x_value_type_code          => l_adr_value_type_code
45324          , p_side                     => 'NA'
45325    );
45326 
45327    xla_ae_lines_pkg.set_ccid(
45328     p_code_combination_id          => l_ccid
45329   , p_value_type_code              => l_adr_value_type_code
45330   , p_transaction_coa_id           => l_adr_transaction_coa_id
45331   , p_accounting_coa_id            => l_adr_accounting_coa_id
45332   , p_adr_code                     => 'CST_DEFAULT'
45333   , p_adr_type_code                => 'S'
45334   , p_component_type               => l_component_type
45335   , p_component_code               => l_component_code
45336   , p_component_type_code          => l_component_type_code
45337   , p_component_appl_id            => l_component_appl_id
45338   , p_amb_context_code             => l_amb_context_code
45339   , p_side                         => 'NA'
45340   );
45341 
45342 
45343    --
45344    --
45345    END IF;
45346    --
45347    -- Bug 4922099
45348    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45349           (NVL(l_enc_upg_option, 'N') = 'O')
45350         ) AND
45351         (l_bflow_method_code = 'PRIOR_ENTRY')
45352       )
45353    THEN
45354       IF
45355       --
45356       1 = 2
45357       --
45358       THEN
45359       xla_accounting_err_pkg.build_message
45360                                     (p_appli_s_name            => 'XLA'
45361                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45362                                     ,p_token_1                 => 'LINE_NUMBER'
45363                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45364                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45365                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45366                                                                              l_component_type
45367                                                                             ,l_component_code
45368                                                                             ,l_component_type_code
45369                                                                             ,l_component_appl_id
45370                                                                             ,l_amb_context_code
45371                                                                             ,l_entity_code
45372                                                                             ,l_event_class_code
45373                                                                            )
45374                                     ,p_token_3                 => 'OWNER'
45375                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45376                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45377                                                                           ,p_lookup_code    => l_component_type_code
45378                                                                          )
45379                                     ,p_token_4                 => 'PRODUCT_NAME'
45380                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45381                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45382                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45383                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45384                                     ,p_ae_header_id            =>  NULL
45385                                        );
45386 
45387         IF (C_LEVEL_ERROR>= g_log_level) THEN
45388                  trace
45389                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45390                       ,p_level    => C_LEVEL_ERROR
45391                       ,p_module   => l_log_module);
45392         END IF;
45393       END IF;
45394    END IF;
45395    --
45396    --
45397    ------------------------------------------------------------------------------------------------
45398    -- 4219869 Business Flow
45399    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45400    -- Prior Entry.  Currently, the following code is always generated.
45401    ------------------------------------------------------------------------------------------------
45402    XLA_AE_LINES_PKG.ValidateCurrentLine;
45403 
45404    ------------------------------------------------------------------------------------
45405    -- 4219869 Business Flow
45406    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45407    ------------------------------------------------------------------------------------
45408    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45409 
45410    ----------------------------------------------------------------------------------
45411    -- 4219869 Business Flow
45412    -- Update journal entry status -- Need to generate this within IF <condition>
45413    ----------------------------------------------------------------------------------
45414    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45415          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45416          ,p_balance_type_code => l_balance_type_code
45417          );
45418 
45419    -------------------------------------------------------------------------------------------
45420    -- 4262811 - Generate the Accrual Reversal lines
45421    -------------------------------------------------------------------------------------------
45422    BEGIN
45423       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45424                               (g_array_event(p_event_id).array_value_num('header_index'));
45425       IF l_acc_rev_flag IS NULL THEN
45426          l_acc_rev_flag := 'N';
45427       END IF;
45428    EXCEPTION
45429       WHEN OTHERS THEN
45430          l_acc_rev_flag := 'N';
45431    END;
45432    --
45433    IF (l_acc_rev_flag = 'Y') THEN
45434 
45435        -- 4645092  ------------------------------------------------------------------------------
45436        -- To allow MPA report to determine if it should generate report process
45437        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45438        ------------------------------------------------------------------------------------------
45439 
45440        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45441        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45442    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
45443    -- call ADRs
45444    -- Bug 4922099
45445    --
45446    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45447         (NVL(l_actual_upg_option, 'N') = 'O') OR
45448         (NVL(l_enc_upg_option, 'N') = 'O')
45449       )
45450    THEN
45451    NULL;
45452    --
45453    --
45454    
45455   l_ccid := AcctDerRule_4(
45456            p_application_id           => p_application_id
45457          , p_ae_header_id             => l_ae_header_id 
45458 , p_source_4 => p_source_4
45459          , x_transaction_coa_id       => l_adr_transaction_coa_id
45460          , x_accounting_coa_id        => l_adr_accounting_coa_id
45461          , x_value_type_code          => l_adr_value_type_code
45462          , p_side                     => 'NA'
45463    );
45464 
45465    xla_ae_lines_pkg.set_ccid(
45466     p_code_combination_id          => l_ccid
45467   , p_value_type_code              => l_adr_value_type_code
45468   , p_transaction_coa_id           => l_adr_transaction_coa_id
45469   , p_accounting_coa_id            => l_adr_accounting_coa_id
45470   , p_adr_code                     => 'CST_DEFAULT'
45471   , p_adr_type_code                => 'S'
45472   , p_component_type               => l_component_type
45473   , p_component_code               => l_component_code
45474   , p_component_type_code          => l_component_type_code
45475   , p_component_appl_id            => l_component_appl_id
45476   , p_amb_context_code             => l_amb_context_code
45477   , p_side                         => 'NA'
45478   );
45479 
45480 
45481    --
45482    --
45483    END IF;
45484 
45485        --
45486        -- Update the line information that should be overwritten
45487        --
45488        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45489                                          p_header_num   => 1);
45490        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45491 
45492        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45493 
45494        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45495           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45496        END IF;
45497 
45498       --
45499       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45500       --
45501       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45502           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45503       ELSE
45504           ---------------------------------------------------------------------------------------------------
45505           -- 4262811a Switch Sign
45506           ---------------------------------------------------------------------------------------------------
45507           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
45508           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45509                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45510           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45511                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45512           -- 5132302
45513           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45514                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45515 
45516       END IF;
45517 
45518       -- 4955764
45519       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45520       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45521 
45522 
45523       XLA_AE_LINES_PKG.ValidateCurrentLine;
45524       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45525 
45526       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45527                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45528                ,p_balance_type_code => l_balance_type_code);
45529 
45530    END IF;
45531 
45532    -----------------------------------------------------------------------------------------
45533    -- 4262811 Multiperiod Accounting
45534    -----------------------------------------------------------------------------------------
45535      -- No MPA option is assigned.
45536 
45537 
45538 END IF;
45539 END IF;
45540 --
45541 
45542 --
45543 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45544    trace
45545       (p_msg      => 'END of AcctLineType_84'
45546       ,p_level    => C_LEVEL_PROCEDURE
45547       ,p_module   => l_log_module);
45548 END IF;
45549 --
45550 EXCEPTION
45551   WHEN xla_exceptions_pkg.application_exception THEN
45552       RAISE;
45553   WHEN OTHERS THEN
45554        xla_exceptions_pkg.raise_message
45555            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_84');
45556 END AcctLineType_84;
45557 --
45558 
45559 ---------------------------------------
45560 --
45561 -- PRIVATE FUNCTION
45562 --         AcctLineType_85
45563 --
45564 ---------------------------------------
45565 PROCEDURE AcctLineType_85 (
45566   p_application_id        IN NUMBER
45567  ,p_event_id              IN NUMBER
45568  ,p_calculate_acctd_flag  IN VARCHAR2
45569  ,p_calculate_g_l_flag    IN VARCHAR2
45570  ,p_actual_flag           IN OUT VARCHAR2
45571  ,p_balance_type_code     OUT VARCHAR2
45572  ,p_gain_or_loss_ref      OUT VARCHAR2
45573  
45574 --Cost Management Default Account
45575  , p_source_4            IN NUMBER
45576 --DISTRIBUTION_IDENTIFIER
45577  , p_source_11            IN NUMBER
45578 --Distribution Type
45579  , p_source_12            IN VARCHAR2
45580  , p_source_12_meaning    IN VARCHAR2
45581 --Entered Currency Code
45582  , p_source_15            IN VARCHAR2
45583 --Entered Amount
45584  , p_source_18            IN NUMBER
45585 --Currency Conversion Date
45586  , p_source_19            IN DATE
45587 --Currency Conversion Rate
45588  , p_source_20            IN NUMBER
45589 --Currency Conversion Type
45590  , p_source_21            IN VARCHAR2
45591 --Accounted Amount
45592  , p_source_22            IN NUMBER
45593 --Accounting Line Type
45594  , p_source_24            IN NUMBER
45595 )
45596 IS
45597 
45598 l_component_type              VARCHAR2(80);
45599 l_component_code              VARCHAR2(30);
45600 l_component_type_code         VARCHAR2(1);
45601 l_component_appl_id           INTEGER;
45602 l_amb_context_code            VARCHAR2(30);
45603 l_entity_code                 VARCHAR2(30);
45604 l_event_class_code            VARCHAR2(30);
45605 l_ae_header_id                NUMBER;
45606 l_event_type_code             VARCHAR2(30);
45607 l_line_definition_code        VARCHAR2(30);
45608 l_line_definition_owner_code  VARCHAR2(1);
45609 --
45610 -- adr variables
45611 l_segment                     VARCHAR2(30);
45612 l_ccid                        NUMBER;
45613 l_adr_transaction_coa_id      NUMBER;
45614 l_adr_accounting_coa_id       NUMBER;
45615 l_adr_flexfield_segment_code  VARCHAR2(30);
45616 l_adr_flex_value_set_id       NUMBER;
45617 l_adr_value_type_code         VARCHAR2(30);
45618 l_adr_value_combination_id    NUMBER;
45619 l_adr_value_segment_code      VARCHAR2(30);
45620 
45621 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45622 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45623 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45624 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45625 
45626 -- 4262811 Variables ------------------------------------------------------------------------------------------
45627 l_entered_amt_idx             NUMBER;
45628 l_accted_amt_idx              NUMBER;
45629 l_acc_rev_flag                VARCHAR2(1);
45630 l_accrual_line_num            NUMBER;
45631 l_tmp_amt                     NUMBER;
45632 l_acc_rev_natural_side_code   VARCHAR2(1);
45633 
45634 l_num_entries                 NUMBER;
45635 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45636 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45637 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45638 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45639 l_recog_line_1                NUMBER;
45640 l_recog_line_2                NUMBER;
45641 
45642 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45643 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45644 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45645 
45646 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45647 
45648 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45649 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45650 
45651 ---------------------------------------------------------------------------------------------------------------
45652 
45653 
45654 --
45655 -- bulk performance
45656 --
45657 l_balance_type_code           VARCHAR2(1);
45658 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45659 l_log_module                  VARCHAR2(240);
45660 
45661 --
45662 -- Upgrade strategy
45663 --
45664 l_actual_upg_option           VARCHAR2(1);
45665 l_enc_upg_option           VARCHAR2(1);
45666 
45667 --
45668 BEGIN
45669 --
45670 IF g_log_enabled THEN
45671       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_85';
45672 END IF;
45673 --
45674 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45675 
45676       trace
45677          (p_msg      => 'BEGIN of AcctLineType_85'
45678          ,p_level    => C_LEVEL_PROCEDURE
45679          ,p_module   => l_log_module);
45680 
45681 END IF;
45682 --
45683 l_component_type             := 'AMB_JLT';
45684 l_component_code             := 'INTERORG_PROFIT_OPM';
45685 l_component_type_code        := 'S';
45686 l_component_appl_id          :=  707;
45687 l_amb_context_code           := 'DEFAULT';
45688 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
45689 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
45690 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_ALL';
45691 l_line_definition_owner_code := 'S';
45692 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP';
45693 --
45694 l_balance_type_code          := 'A';
45695 l_segment                     := NULL;
45696 l_ccid                        := NULL;
45697 l_adr_transaction_coa_id      := NULL;
45698 l_adr_accounting_coa_id       := NULL;
45699 l_adr_flexfield_segment_code  := NULL;
45700 l_adr_flex_value_set_id       := NULL;
45701 l_adr_value_type_code         := NULL;
45702 l_adr_value_combination_id    := NULL;
45703 l_adr_value_segment_code      := NULL;
45704 
45705 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45706 l_bflow_class_code           := '';    -- 4219869 Business Flow
45707 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45708 l_budgetary_control_flag     := 'N';
45709 
45710 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45711 l_bflow_applied_to_amt       := NULL; -- 5132302
45712 l_entered_amt_idx            := NULL;          -- 4262811
45713 l_accted_amt_idx             := NULL;          -- 4262811
45714 l_acc_rev_flag               := NULL;          -- 4262811
45715 l_accrual_line_num           := NULL;          -- 4262811
45716 l_tmp_amt                    := NULL;          -- 4262811
45717 --
45718  
45719 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45720     l_balance_type_code <> 'B' THEN
45721 IF NVL(p_source_24,9E125) =  34
45722  THEN 
45723 
45724    --
45725    XLA_AE_LINES_PKG.SetNewLine;
45726 
45727    p_balance_type_code          := l_balance_type_code;
45728    -- set the flag so later we will know whether the gain loss line needs to be created
45729    
45730    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45731      p_actual_flag :='A';
45732    END IF;
45733 
45734    --
45735    -- bulk performance
45736    --
45737    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45738                                       p_header_num   => 0); -- 4262811
45739    --
45740    -- set accounting line options
45741    --
45742    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45743            p_natural_side_code          => 'D'
45744          , p_gain_or_loss_flag          => 'N'
45745          , p_gl_transfer_mode_code      => 'S'
45746          , p_acct_entry_type_code       => 'A'
45747          , p_switch_side_flag           => 'Y'
45748          , p_merge_duplicate_code       => 'N'
45749          );
45750    --
45751    l_acc_rev_natural_side_code := 'C';  -- 4262811
45752    -- 
45753    --
45754    -- set accounting line type info
45755    --
45756    xla_ae_lines_pkg.SetAcctLineType
45757       (p_component_type             => l_component_type
45758       ,p_event_type_code            => l_event_type_code
45759       ,p_line_definition_owner_code => l_line_definition_owner_code
45760       ,p_line_definition_code       => l_line_definition_code
45761       ,p_accounting_line_code       => l_component_code
45762       ,p_accounting_line_type_code  => l_component_type_code
45763       ,p_accounting_line_appl_id    => l_component_appl_id
45764       ,p_amb_context_code           => l_amb_context_code
45765       ,p_entity_code                => l_entity_code
45766       ,p_event_class_code           => l_event_class_code);
45767    --
45768    -- set accounting class
45769    --
45770    xla_ae_lines_pkg.SetAcctClass(
45771            p_accounting_class_code  => 'INTERORG_PROFIT'
45772          , p_ae_header_id           => l_ae_header_id
45773          );
45774 
45775    --
45776    -- set rounding class
45777    --
45778    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45779                       'INTERORG_PROFIT';
45780 
45781    --
45782    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45783    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45784    --
45785    -- bulk performance
45786    --
45787    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45788 
45789    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45790       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45791 
45792    -- 4955764
45793    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45794       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45795 
45796    -- 4458381 Public Sector Enh
45797    
45798    --
45799    -- set accounting attributes for the line type
45800    --
45801    l_entered_amt_idx := 3;
45802    l_accted_amt_idx  := 8;
45803    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
45804    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
45805    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
45806    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
45807    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
45808    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
45809    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
45810    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
45811    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
45812    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
45813    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
45814    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
45815    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
45816    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
45817    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
45818    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
45819    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
45820 
45821    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45822    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45823 
45824    ---------------------------------------------------------------------------------------------------------------
45825    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45826    ---------------------------------------------------------------------------------------------------------------
45827    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45828 
45829    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45830    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45831 
45832    IF xla_accounting_cache_pkg.GetValueChar
45833          (p_source_code         => 'LEDGER_CATEGORY_CODE'
45834          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45835    AND l_bflow_method_code = 'PRIOR_ENTRY'
45836 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45837    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45838          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45839        )
45840    THEN
45841          xla_ae_lines_pkg.BflowUpgEntry
45842            (p_business_method_code    => l_bflow_method_code
45843            ,p_business_class_code     => l_bflow_class_code
45844            ,p_balance_type            => l_balance_type_code);
45845    ELSE
45846       NULL;
45847 -- No business flow processing for business flow method of NONE.
45848    END IF;
45849 
45850    --
45851    -- call analytical criteria
45852    --
45853    
45854    --
45855    -- call description
45856    --
45857    -- No description or it is inherited.
45858    --
45859    -- call ADRs
45860    -- Bug 4922099
45861    --
45862    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45863         (NVL(l_actual_upg_option, 'N') = 'O') OR
45864         (NVL(l_enc_upg_option, 'N') = 'O')
45865       )
45866    THEN
45867    NULL;
45868    --
45869    --
45870    
45871   l_ccid := AcctDerRule_4(
45872            p_application_id           => p_application_id
45873          , p_ae_header_id             => l_ae_header_id 
45874 , p_source_4 => p_source_4
45875          , x_transaction_coa_id       => l_adr_transaction_coa_id
45876          , x_accounting_coa_id        => l_adr_accounting_coa_id
45877          , x_value_type_code          => l_adr_value_type_code
45878          , p_side                     => 'NA'
45879    );
45880 
45881    xla_ae_lines_pkg.set_ccid(
45882     p_code_combination_id          => l_ccid
45883   , p_value_type_code              => l_adr_value_type_code
45884   , p_transaction_coa_id           => l_adr_transaction_coa_id
45885   , p_accounting_coa_id            => l_adr_accounting_coa_id
45886   , p_adr_code                     => 'CST_DEFAULT'
45887   , p_adr_type_code                => 'S'
45888   , p_component_type               => l_component_type
45889   , p_component_code               => l_component_code
45890   , p_component_type_code          => l_component_type_code
45891   , p_component_appl_id            => l_component_appl_id
45892   , p_amb_context_code             => l_amb_context_code
45893   , p_side                         => 'NA'
45894   );
45895 
45896 
45897    --
45898    --
45899    END IF;
45900    --
45901    -- Bug 4922099
45902    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45903           (NVL(l_enc_upg_option, 'N') = 'O')
45904         ) AND
45905         (l_bflow_method_code = 'PRIOR_ENTRY')
45906       )
45907    THEN
45908       IF
45909       --
45910       1 = 2
45911       --
45912       THEN
45913       xla_accounting_err_pkg.build_message
45914                                     (p_appli_s_name            => 'XLA'
45915                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45916                                     ,p_token_1                 => 'LINE_NUMBER'
45917                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45918                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45919                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45920                                                                              l_component_type
45921                                                                             ,l_component_code
45922                                                                             ,l_component_type_code
45923                                                                             ,l_component_appl_id
45924                                                                             ,l_amb_context_code
45925                                                                             ,l_entity_code
45926                                                                             ,l_event_class_code
45927                                                                            )
45928                                     ,p_token_3                 => 'OWNER'
45929                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45930                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45931                                                                           ,p_lookup_code    => l_component_type_code
45932                                                                          )
45933                                     ,p_token_4                 => 'PRODUCT_NAME'
45934                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45935                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45936                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45937                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45938                                     ,p_ae_header_id            =>  NULL
45939                                        );
45940 
45941         IF (C_LEVEL_ERROR>= g_log_level) THEN
45942                  trace
45943                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45944                       ,p_level    => C_LEVEL_ERROR
45945                       ,p_module   => l_log_module);
45946         END IF;
45947       END IF;
45948    END IF;
45949    --
45950    --
45951    ------------------------------------------------------------------------------------------------
45952    -- 4219869 Business Flow
45953    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45954    -- Prior Entry.  Currently, the following code is always generated.
45955    ------------------------------------------------------------------------------------------------
45956    XLA_AE_LINES_PKG.ValidateCurrentLine;
45957 
45958    ------------------------------------------------------------------------------------
45959    -- 4219869 Business Flow
45960    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45961    ------------------------------------------------------------------------------------
45962    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45963 
45964    ----------------------------------------------------------------------------------
45965    -- 4219869 Business Flow
45966    -- Update journal entry status -- Need to generate this within IF <condition>
45967    ----------------------------------------------------------------------------------
45968    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45969          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45970          ,p_balance_type_code => l_balance_type_code
45971          );
45972 
45973    -------------------------------------------------------------------------------------------
45974    -- 4262811 - Generate the Accrual Reversal lines
45975    -------------------------------------------------------------------------------------------
45976    BEGIN
45977       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45978                               (g_array_event(p_event_id).array_value_num('header_index'));
45979       IF l_acc_rev_flag IS NULL THEN
45980          l_acc_rev_flag := 'N';
45981       END IF;
45982    EXCEPTION
45983       WHEN OTHERS THEN
45984          l_acc_rev_flag := 'N';
45985    END;
45986    --
45987    IF (l_acc_rev_flag = 'Y') THEN
45988 
45989        -- 4645092  ------------------------------------------------------------------------------
45990        -- To allow MPA report to determine if it should generate report process
45991        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45992        ------------------------------------------------------------------------------------------
45993 
45994        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45995        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45996    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
45997    -- call ADRs
45998    -- Bug 4922099
45999    --
46000    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46001         (NVL(l_actual_upg_option, 'N') = 'O') OR
46002         (NVL(l_enc_upg_option, 'N') = 'O')
46003       )
46004    THEN
46005    NULL;
46006    --
46007    --
46008    
46009   l_ccid := AcctDerRule_4(
46010            p_application_id           => p_application_id
46011          , p_ae_header_id             => l_ae_header_id 
46012 , p_source_4 => p_source_4
46013          , x_transaction_coa_id       => l_adr_transaction_coa_id
46014          , x_accounting_coa_id        => l_adr_accounting_coa_id
46015          , x_value_type_code          => l_adr_value_type_code
46016          , p_side                     => 'NA'
46017    );
46018 
46019    xla_ae_lines_pkg.set_ccid(
46020     p_code_combination_id          => l_ccid
46021   , p_value_type_code              => l_adr_value_type_code
46022   , p_transaction_coa_id           => l_adr_transaction_coa_id
46023   , p_accounting_coa_id            => l_adr_accounting_coa_id
46024   , p_adr_code                     => 'CST_DEFAULT'
46025   , p_adr_type_code                => 'S'
46026   , p_component_type               => l_component_type
46027   , p_component_code               => l_component_code
46028   , p_component_type_code          => l_component_type_code
46029   , p_component_appl_id            => l_component_appl_id
46030   , p_amb_context_code             => l_amb_context_code
46031   , p_side                         => 'NA'
46032   );
46033 
46034 
46035    --
46036    --
46037    END IF;
46038 
46039        --
46040        -- Update the line information that should be overwritten
46041        --
46042        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
46043                                          p_header_num   => 1);
46044        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
46045 
46046        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
46047 
46048        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
46049           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46050        END IF;
46051 
46052       --
46053       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46054       --
46055       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46056           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
46057       ELSE
46058           ---------------------------------------------------------------------------------------------------
46059           -- 4262811a Switch Sign
46060           ---------------------------------------------------------------------------------------------------
46061           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
46062           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46063                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46064           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46065                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46066           -- 5132302
46067           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46068                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46069 
46070       END IF;
46071 
46072       -- 4955764
46073       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46074       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46075 
46076 
46077       XLA_AE_LINES_PKG.ValidateCurrentLine;
46078       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46079 
46080       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46081                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46082                ,p_balance_type_code => l_balance_type_code);
46083 
46084    END IF;
46085 
46086    -----------------------------------------------------------------------------------------
46087    -- 4262811 Multiperiod Accounting
46088    -----------------------------------------------------------------------------------------
46089      -- No MPA option is assigned.
46090 
46091 
46092 END IF;
46093 END IF;
46094 --
46095 
46096 --
46097 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46098    trace
46099       (p_msg      => 'END of AcctLineType_85'
46100       ,p_level    => C_LEVEL_PROCEDURE
46101       ,p_module   => l_log_module);
46102 END IF;
46103 --
46104 EXCEPTION
46105   WHEN xla_exceptions_pkg.application_exception THEN
46106       RAISE;
46107   WHEN OTHERS THEN
46108        xla_exceptions_pkg.raise_message
46109            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_85');
46110 END AcctLineType_85;
46111 --
46112 
46113 ---------------------------------------
46114 --
46115 -- PRIVATE FUNCTION
46116 --         AcctLineType_86
46117 --
46118 ---------------------------------------
46119 PROCEDURE AcctLineType_86 (
46120   p_application_id        IN NUMBER
46121  ,p_event_id              IN NUMBER
46122  ,p_calculate_acctd_flag  IN VARCHAR2
46123  ,p_calculate_g_l_flag    IN VARCHAR2
46124  ,p_actual_flag           IN OUT VARCHAR2
46125  ,p_balance_type_code     OUT VARCHAR2
46126  ,p_gain_or_loss_ref      OUT VARCHAR2
46127  
46128 --Cost Management Default Account
46129  , p_source_4            IN NUMBER
46130 --DISTRIBUTION_IDENTIFIER
46131  , p_source_11            IN NUMBER
46132 --Distribution Type
46133  , p_source_12            IN VARCHAR2
46134  , p_source_12_meaning    IN VARCHAR2
46135 --Entered Currency Code
46136  , p_source_15            IN VARCHAR2
46137 --Entered Amount
46138  , p_source_18            IN NUMBER
46139 --Currency Conversion Date
46140  , p_source_19            IN DATE
46141 --Currency Conversion Rate
46142  , p_source_20            IN NUMBER
46143 --Currency Conversion Type
46144  , p_source_21            IN VARCHAR2
46145 --Accounted Amount
46146  , p_source_22            IN NUMBER
46147 --Accounting Line Type
46148  , p_source_24            IN NUMBER
46149 )
46150 IS
46151 
46152 l_component_type              VARCHAR2(80);
46153 l_component_code              VARCHAR2(30);
46154 l_component_type_code         VARCHAR2(1);
46155 l_component_appl_id           INTEGER;
46156 l_amb_context_code            VARCHAR2(30);
46157 l_entity_code                 VARCHAR2(30);
46158 l_event_class_code            VARCHAR2(30);
46159 l_ae_header_id                NUMBER;
46160 l_event_type_code             VARCHAR2(30);
46161 l_line_definition_code        VARCHAR2(30);
46162 l_line_definition_owner_code  VARCHAR2(1);
46163 --
46164 -- adr variables
46165 l_segment                     VARCHAR2(30);
46166 l_ccid                        NUMBER;
46167 l_adr_transaction_coa_id      NUMBER;
46168 l_adr_accounting_coa_id       NUMBER;
46169 l_adr_flexfield_segment_code  VARCHAR2(30);
46170 l_adr_flex_value_set_id       NUMBER;
46171 l_adr_value_type_code         VARCHAR2(30);
46172 l_adr_value_combination_id    NUMBER;
46173 l_adr_value_segment_code      VARCHAR2(30);
46174 
46175 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
46176 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
46177 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
46178 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
46179 
46180 -- 4262811 Variables ------------------------------------------------------------------------------------------
46181 l_entered_amt_idx             NUMBER;
46182 l_accted_amt_idx              NUMBER;
46183 l_acc_rev_flag                VARCHAR2(1);
46184 l_accrual_line_num            NUMBER;
46185 l_tmp_amt                     NUMBER;
46186 l_acc_rev_natural_side_code   VARCHAR2(1);
46187 
46188 l_num_entries                 NUMBER;
46189 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
46190 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
46191 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
46192 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
46193 l_recog_line_1                NUMBER;
46194 l_recog_line_2                NUMBER;
46195 
46196 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
46197 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
46198 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
46199 
46200 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46201 
46202 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
46203 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
46204 
46205 ---------------------------------------------------------------------------------------------------------------
46206 
46207 
46208 --
46209 -- bulk performance
46210 --
46211 l_balance_type_code           VARCHAR2(1);
46212 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46213 l_log_module                  VARCHAR2(240);
46214 
46215 --
46216 -- Upgrade strategy
46217 --
46218 l_actual_upg_option           VARCHAR2(1);
46219 l_enc_upg_option           VARCHAR2(1);
46220 
46221 --
46222 BEGIN
46223 --
46224 IF g_log_enabled THEN
46225       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_86';
46226 END IF;
46227 --
46228 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46229 
46230       trace
46231          (p_msg      => 'BEGIN of AcctLineType_86'
46232          ,p_level    => C_LEVEL_PROCEDURE
46233          ,p_module   => l_log_module);
46234 
46235 END IF;
46236 --
46237 l_component_type             := 'AMB_JLT';
46238 l_component_code             := 'INTERORG_PROFIT_OPM';
46239 l_component_type_code        := 'S';
46240 l_component_appl_id          :=  707;
46241 l_amb_context_code           := 'DEFAULT';
46242 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
46243 l_event_class_code           := 'INT_ORDER_TO_EXP';
46244 l_event_type_code            := 'INT_ORDER_TO_EXP_ALL';
46245 l_line_definition_owner_code := 'S';
46246 l_line_definition_code       := 'INT_ORDER_TO_EXP';
46247 --
46248 l_balance_type_code          := 'A';
46249 l_segment                     := NULL;
46250 l_ccid                        := NULL;
46251 l_adr_transaction_coa_id      := NULL;
46252 l_adr_accounting_coa_id       := NULL;
46253 l_adr_flexfield_segment_code  := NULL;
46254 l_adr_flex_value_set_id       := NULL;
46255 l_adr_value_type_code         := NULL;
46256 l_adr_value_combination_id    := NULL;
46257 l_adr_value_segment_code      := NULL;
46258 
46259 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
46260 l_bflow_class_code           := '';    -- 4219869 Business Flow
46261 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
46262 l_budgetary_control_flag     := 'N';
46263 
46264 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46265 l_bflow_applied_to_amt       := NULL; -- 5132302
46266 l_entered_amt_idx            := NULL;          -- 4262811
46267 l_accted_amt_idx             := NULL;          -- 4262811
46268 l_acc_rev_flag               := NULL;          -- 4262811
46269 l_accrual_line_num           := NULL;          -- 4262811
46270 l_tmp_amt                    := NULL;          -- 4262811
46271 --
46272  
46273 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46274     l_balance_type_code <> 'B' THEN
46275 IF NVL(p_source_24,9E125) =  34
46276  THEN 
46277 
46278    --
46279    XLA_AE_LINES_PKG.SetNewLine;
46280 
46281    p_balance_type_code          := l_balance_type_code;
46282    -- set the flag so later we will know whether the gain loss line needs to be created
46283    
46284    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46285      p_actual_flag :='A';
46286    END IF;
46287 
46288    --
46289    -- bulk performance
46290    --
46291    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46292                                       p_header_num   => 0); -- 4262811
46293    --
46294    -- set accounting line options
46295    --
46296    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46297            p_natural_side_code          => 'D'
46298          , p_gain_or_loss_flag          => 'N'
46299          , p_gl_transfer_mode_code      => 'S'
46300          , p_acct_entry_type_code       => 'A'
46301          , p_switch_side_flag           => 'Y'
46302          , p_merge_duplicate_code       => 'N'
46303          );
46304    --
46305    l_acc_rev_natural_side_code := 'C';  -- 4262811
46306    -- 
46307    --
46308    -- set accounting line type info
46309    --
46310    xla_ae_lines_pkg.SetAcctLineType
46311       (p_component_type             => l_component_type
46312       ,p_event_type_code            => l_event_type_code
46313       ,p_line_definition_owner_code => l_line_definition_owner_code
46314       ,p_line_definition_code       => l_line_definition_code
46315       ,p_accounting_line_code       => l_component_code
46316       ,p_accounting_line_type_code  => l_component_type_code
46317       ,p_accounting_line_appl_id    => l_component_appl_id
46318       ,p_amb_context_code           => l_amb_context_code
46319       ,p_entity_code                => l_entity_code
46320       ,p_event_class_code           => l_event_class_code);
46321    --
46322    -- set accounting class
46323    --
46324    xla_ae_lines_pkg.SetAcctClass(
46325            p_accounting_class_code  => 'INTERORG_PROFIT'
46326          , p_ae_header_id           => l_ae_header_id
46327          );
46328 
46329    --
46330    -- set rounding class
46331    --
46332    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46333                       'INTERORG_PROFIT';
46334 
46335    --
46336    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46337    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46338    --
46339    -- bulk performance
46340    --
46341    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46342 
46343    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46344       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46345 
46346    -- 4955764
46347    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46348       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46349 
46350    -- 4458381 Public Sector Enh
46351    
46352    --
46353    -- set accounting attributes for the line type
46354    --
46355    l_entered_amt_idx := 3;
46356    l_accted_amt_idx  := 8;
46357    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
46358    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
46359    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
46360    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
46361    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
46362    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
46363    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
46364    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
46365    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
46366    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
46367    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
46368    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
46369    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
46370    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
46371    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
46372    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
46373    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
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_000007_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';
46799 l_line_definition_owner_code := 'S';
46800 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
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_000007_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_000007_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_TP';
47907 l_line_definition_owner_code := 'S';
47908 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_TP';
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_000007_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_NO_TP';
48461 l_line_definition_owner_code := 'S';
48462 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
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_000007_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_NO_TP';
49015 l_line_definition_owner_code := 'S';
49016 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_NO_TP';
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_000007_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_RECEIVABLES';
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           := 'USER_DEFINE';
49568 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
49569 l_line_definition_owner_code := 'S';
49570 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
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) =  10
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_RECEIVABLES'
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_RECEIVABLES';
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_000007_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_RECEIVABLES';
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           := 'DIR_INTERORG_SHIP';
50122 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
50123 l_line_definition_owner_code := 'S';
50124 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
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) =  10
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_RECEIVABLES'
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_RECEIVABLES';
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_000007_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_RECEIVABLES';
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           := 'USER_DEFINE';
50676 l_event_type_code            := 'UDIR_INTERORG_SHIP';
50677 l_line_definition_owner_code := 'S';
50678 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
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) =  10
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_RECEIVABLES'
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_RECEIVABLES';
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_000007_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_RECEIVABLES';
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           := 'USER_DEFINE';
51230 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
51231 l_line_definition_owner_code := 'S';
51232 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
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) =  10
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_RECEIVABLES'
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_RECEIVABLES';
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_000007_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           := 'FOB_RCPT_SENDER_RCPT';
51784 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_ALL';
51785 l_line_definition_owner_code := 'S';
51786 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT';
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_000007_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           := 'FOB_SHIP_SENDER_SHIP';
52338 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_ALL';
52339 l_line_definition_owner_code := 'S';
52340 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP';
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_000007_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_SHIP_NO_TP';
52893 l_line_definition_owner_code := 'S';
52894 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_NO_TP';
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_000007_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           := 'USER_DEFINE';
53446 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
53447 l_line_definition_owner_code := 'S';
53448 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
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_000007_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 --Applied to Application ID
53887  , p_source_6            IN NUMBER
53888 --Applied to Distribution Link Type
53889  , p_source_7            IN VARCHAR2
53890 --Applied to Entity Code
53891  , p_source_8            IN VARCHAR2
53892 --DISTRIBUTION_IDENTIFIER
53893  , p_source_11            IN NUMBER
53894 --Distribution Type
53895  , p_source_12            IN VARCHAR2
53896  , p_source_12_meaning    IN VARCHAR2
53897 --Encumbrance Reversal Amount Entered
53898  , p_source_14            IN NUMBER
53899 --Entered Currency Code
53900  , p_source_15            IN VARCHAR2
53901 --Transaction Encumbrance Reversal Amount
53902  , p_source_16            IN NUMBER
53903 --Entered Amount
53904  , p_source_18            IN NUMBER
53905 --Currency Conversion Date
53906  , p_source_19            IN DATE
53907 --Currency Conversion Rate
53908  , p_source_20            IN NUMBER
53909 --Currency Conversion Type
53910  , p_source_21            IN VARCHAR2
53911 --Accounted Amount
53912  , p_source_22            IN NUMBER
53913 --Accounting Line Type
53914  , p_source_24            IN NUMBER
53915 --Costing Encumbrance Upgrade Option
53916  , p_source_27            IN VARCHAR2
53917 --TXN_PO_DISTRIBUTION_ID
53918  , p_source_28            IN NUMBER
53919 --TXN_PO_HEADER_ID
53920  , p_source_29            IN NUMBER
53921 --Requisition Budget Account
53922  , p_source_30            IN NUMBER
53923 --Requisition Encumbrance Type Identifier
53924  , p_source_31            IN NUMBER
53925 )
53926 IS
53927 
53928 l_component_type              VARCHAR2(80);
53929 l_component_code              VARCHAR2(30);
53930 l_component_type_code         VARCHAR2(1);
53931 l_component_appl_id           INTEGER;
53932 l_amb_context_code            VARCHAR2(30);
53933 l_entity_code                 VARCHAR2(30);
53934 l_event_class_code            VARCHAR2(30);
53935 l_ae_header_id                NUMBER;
53936 l_event_type_code             VARCHAR2(30);
53937 l_line_definition_code        VARCHAR2(30);
53938 l_line_definition_owner_code  VARCHAR2(1);
53939 --
53940 -- adr variables
53941 l_segment                     VARCHAR2(30);
53942 l_ccid                        NUMBER;
53943 l_adr_transaction_coa_id      NUMBER;
53944 l_adr_accounting_coa_id       NUMBER;
53945 l_adr_flexfield_segment_code  VARCHAR2(30);
53946 l_adr_flex_value_set_id       NUMBER;
53947 l_adr_value_type_code         VARCHAR2(30);
53948 l_adr_value_combination_id    NUMBER;
53949 l_adr_value_segment_code      VARCHAR2(30);
53950 
53951 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
53952 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
53953 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
53954 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
53955 
53956 -- 4262811 Variables ------------------------------------------------------------------------------------------
53957 l_entered_amt_idx             NUMBER;
53958 l_accted_amt_idx              NUMBER;
53959 l_acc_rev_flag                VARCHAR2(1);
53960 l_accrual_line_num            NUMBER;
53961 l_tmp_amt                     NUMBER;
53962 l_acc_rev_natural_side_code   VARCHAR2(1);
53963 
53964 l_num_entries                 NUMBER;
53965 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
53966 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
53967 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
53968 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
53969 l_recog_line_1                NUMBER;
53970 l_recog_line_2                NUMBER;
53971 
53972 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
53973 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
53974 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
53975 
53976 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53977 
53978 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
53979 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
53980 
53981 ---------------------------------------------------------------------------------------------------------------
53982 
53983 
53984 --
53985 -- bulk performance
53986 --
53987 l_balance_type_code           VARCHAR2(1);
53988 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
53989 l_log_module                  VARCHAR2(240);
53990 
53991 --
53992 -- Upgrade strategy
53993 --
53994 l_actual_upg_option           VARCHAR2(1);
53995 l_enc_upg_option           VARCHAR2(1);
53996 
53997 --
53998 BEGIN
53999 --
54000 IF g_log_enabled THEN
54001       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_100';
54002 END IF;
54003 --
54004 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54005 
54006       trace
54007          (p_msg      => 'BEGIN of AcctLineType_100'
54008          ,p_level    => C_LEVEL_PROCEDURE
54009          ,p_module   => l_log_module);
54010 
54011 END IF;
54012 --
54013 l_component_type             := 'AMB_JLT';
54014 l_component_code             := 'INTERORG_RECEIVABLES';
54015 l_component_type_code        := 'S';
54016 l_component_appl_id          :=  707;
54017 l_amb_context_code           := 'DEFAULT';
54018 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
54019 l_event_class_code           := 'DIR_INTERORG_RCPT';
54020 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
54021 l_line_definition_owner_code := 'S';
54022 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
54023 --
54024 l_balance_type_code          := 'A';
54025 l_segment                     := NULL;
54026 l_ccid                        := NULL;
54027 l_adr_transaction_coa_id      := NULL;
54028 l_adr_accounting_coa_id       := NULL;
54029 l_adr_flexfield_segment_code  := NULL;
54030 l_adr_flex_value_set_id       := NULL;
54031 l_adr_value_type_code         := NULL;
54032 l_adr_value_combination_id    := NULL;
54033 l_adr_value_segment_code      := NULL;
54034 
54035 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
54036 l_bflow_class_code           := '';    -- 4219869 Business Flow
54037 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
54038 l_budgetary_control_flag     := 'N';
54039 
54040 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
54041 l_bflow_applied_to_amt       := NULL; -- 5132302
54042 l_entered_amt_idx            := NULL;          -- 4262811
54043 l_accted_amt_idx             := NULL;          -- 4262811
54044 l_acc_rev_flag               := NULL;          -- 4262811
54045 l_accrual_line_num           := NULL;          -- 4262811
54046 l_tmp_amt                    := NULL;          -- 4262811
54047 --
54048  
54049 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54050     l_balance_type_code <> 'B' THEN
54051 IF NVL(p_source_24,9E125) =  10
54052  THEN 
54053 
54054    --
54055    XLA_AE_LINES_PKG.SetNewLine;
54056 
54057    p_balance_type_code          := l_balance_type_code;
54058    -- set the flag so later we will know whether the gain loss line needs to be created
54059    
54060    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54061      p_actual_flag :='A';
54062    END IF;
54063 
54064    --
54065    -- bulk performance
54066    --
54067    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54068                                       p_header_num   => 0); -- 4262811
54069    --
54070    -- set accounting line options
54071    --
54072    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54073            p_natural_side_code          => 'D'
54074          , p_gain_or_loss_flag          => 'N'
54075          , p_gl_transfer_mode_code      => 'S'
54076          , p_acct_entry_type_code       => 'A'
54077          , p_switch_side_flag           => 'Y'
54078          , p_merge_duplicate_code       => 'N'
54079          );
54080    --
54081    l_acc_rev_natural_side_code := 'C';  -- 4262811
54082    -- 
54083    --
54084    -- set accounting line type info
54085    --
54086    xla_ae_lines_pkg.SetAcctLineType
54087       (p_component_type             => l_component_type
54088       ,p_event_type_code            => l_event_type_code
54089       ,p_line_definition_owner_code => l_line_definition_owner_code
54090       ,p_line_definition_code       => l_line_definition_code
54091       ,p_accounting_line_code       => l_component_code
54092       ,p_accounting_line_type_code  => l_component_type_code
54093       ,p_accounting_line_appl_id    => l_component_appl_id
54094       ,p_amb_context_code           => l_amb_context_code
54095       ,p_entity_code                => l_entity_code
54096       ,p_event_class_code           => l_event_class_code);
54097    --
54098    -- set accounting class
54099    --
54100    xla_ae_lines_pkg.SetAcctClass(
54101            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
54102          , p_ae_header_id           => l_ae_header_id
54103          );
54104 
54105    --
54106    -- set rounding class
54107    --
54108    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54109                       'INTERORG_RECEIVABLES';
54110 
54111    --
54112    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54113    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54114    --
54115    -- bulk performance
54116    --
54117    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54118 
54119    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54120       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54121 
54122    -- 4955764
54123    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54124       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54125 
54126    -- 4458381 Public Sector Enh
54127    
54128    --
54129    -- set accounting attributes for the line type
54130    --
54131    l_entered_amt_idx := 17;
54132    l_accted_amt_idx  := 22;
54133    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
54134    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
54135    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
54136    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
54137    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
54138    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
54139    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
54140    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
54141    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
54142    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
54143    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
54144    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
54145    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
54146    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
54147    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
54148    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
54149    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
54150    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
54151    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
54152    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
54153    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
54154    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
54155    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
54156    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
54157    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
54158    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
54159    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
54160    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
54161    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
54162    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
54163    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
54164    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
54165    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
54166    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
54167    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
54168    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
54169    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
54170    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
54171    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
54172    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
54173    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
54174    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
54175    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
54176    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
54177    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
54178    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
54179    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
54180    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
54181    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
54182 
54183    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54184    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54185 
54186    ---------------------------------------------------------------------------------------------------------------
54187    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54188    ---------------------------------------------------------------------------------------------------------------
54189    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54190 
54191    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54192    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54193 
54194    IF xla_accounting_cache_pkg.GetValueChar
54195          (p_source_code         => 'LEDGER_CATEGORY_CODE'
54196          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54197    AND l_bflow_method_code = 'PRIOR_ENTRY'
54198 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54199    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54200          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54201        )
54202    THEN
54203          xla_ae_lines_pkg.BflowUpgEntry
54204            (p_business_method_code    => l_bflow_method_code
54205            ,p_business_class_code     => l_bflow_class_code
54206            ,p_balance_type            => l_balance_type_code);
54207    ELSE
54208       NULL;
54209 -- No business flow processing for business flow method of NONE.
54210    END IF;
54211 
54212    --
54213    -- call analytical criteria
54214    --
54215    
54216    --
54217    -- call description
54218    --
54219    -- No description or it is inherited.
54220    --
54221    -- call ADRs
54222    -- Bug 4922099
54223    --
54224    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54225         (NVL(l_actual_upg_option, 'N') = 'O') OR
54226         (NVL(l_enc_upg_option, 'N') = 'O')
54227       )
54228    THEN
54229    NULL;
54230    --
54231    --
54232    
54233   l_ccid := AcctDerRule_4(
54234            p_application_id           => p_application_id
54235          , p_ae_header_id             => l_ae_header_id 
54236 , p_source_4 => p_source_4
54237          , x_transaction_coa_id       => l_adr_transaction_coa_id
54238          , x_accounting_coa_id        => l_adr_accounting_coa_id
54239          , x_value_type_code          => l_adr_value_type_code
54240          , p_side                     => 'NA'
54241    );
54242 
54243    xla_ae_lines_pkg.set_ccid(
54244     p_code_combination_id          => l_ccid
54245   , p_value_type_code              => l_adr_value_type_code
54246   , p_transaction_coa_id           => l_adr_transaction_coa_id
54247   , p_accounting_coa_id            => l_adr_accounting_coa_id
54248   , p_adr_code                     => 'CST_DEFAULT'
54249   , p_adr_type_code                => 'S'
54250   , p_component_type               => l_component_type
54251   , p_component_code               => l_component_code
54252   , p_component_type_code          => l_component_type_code
54253   , p_component_appl_id            => l_component_appl_id
54254   , p_amb_context_code             => l_amb_context_code
54255   , p_side                         => 'NA'
54256   );
54257 
54258 
54259    --
54260    --
54261    END IF;
54262    --
54263    -- Bug 4922099
54264    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54265           (NVL(l_enc_upg_option, 'N') = 'O')
54266         ) AND
54267         (l_bflow_method_code = 'PRIOR_ENTRY')
54268       )
54269    THEN
54270       IF
54271       --
54272       1 = 2
54273       --
54274       THEN
54275       xla_accounting_err_pkg.build_message
54276                                     (p_appli_s_name            => 'XLA'
54277                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54278                                     ,p_token_1                 => 'LINE_NUMBER'
54279                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
54280                                     ,p_token_2                 => 'LINE_TYPE_NAME'
54281                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
54282                                                                              l_component_type
54283                                                                             ,l_component_code
54284                                                                             ,l_component_type_code
54285                                                                             ,l_component_appl_id
54286                                                                             ,l_amb_context_code
54287                                                                             ,l_entity_code
54288                                                                             ,l_event_class_code
54289                                                                            )
54290                                     ,p_token_3                 => 'OWNER'
54291                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
54292                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
54293                                                                           ,p_lookup_code    => l_component_type_code
54294                                                                          )
54295                                     ,p_token_4                 => 'PRODUCT_NAME'
54296                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54297                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54298                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54299                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54300                                     ,p_ae_header_id            =>  NULL
54301                                        );
54302 
54303         IF (C_LEVEL_ERROR>= g_log_level) THEN
54304                  trace
54305                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54306                       ,p_level    => C_LEVEL_ERROR
54307                       ,p_module   => l_log_module);
54308         END IF;
54309       END IF;
54310    END IF;
54311    --
54312    --
54313    ------------------------------------------------------------------------------------------------
54314    -- 4219869 Business Flow
54315    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54316    -- Prior Entry.  Currently, the following code is always generated.
54317    ------------------------------------------------------------------------------------------------
54318    XLA_AE_LINES_PKG.ValidateCurrentLine;
54319 
54320    ------------------------------------------------------------------------------------
54321    -- 4219869 Business Flow
54322    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54323    ------------------------------------------------------------------------------------
54324    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54325 
54326    ----------------------------------------------------------------------------------
54327    -- 4219869 Business Flow
54328    -- Update journal entry status -- Need to generate this within IF <condition>
54329    ----------------------------------------------------------------------------------
54330    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54331          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54332          ,p_balance_type_code => l_balance_type_code
54333          );
54334 
54335    -------------------------------------------------------------------------------------------
54336    -- 4262811 - Generate the Accrual Reversal lines
54337    -------------------------------------------------------------------------------------------
54338    BEGIN
54339       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54340                               (g_array_event(p_event_id).array_value_num('header_index'));
54341       IF l_acc_rev_flag IS NULL THEN
54342          l_acc_rev_flag := 'N';
54343       END IF;
54344    EXCEPTION
54345       WHEN OTHERS THEN
54346          l_acc_rev_flag := 'N';
54347    END;
54348    --
54349    IF (l_acc_rev_flag = 'Y') THEN
54350 
54351        -- 4645092  ------------------------------------------------------------------------------
54352        -- To allow MPA report to determine if it should generate report process
54353        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54354        ------------------------------------------------------------------------------------------
54355 
54356        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54357        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54358    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
54359    -- call ADRs
54360    -- Bug 4922099
54361    --
54362    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54363         (NVL(l_actual_upg_option, 'N') = 'O') OR
54364         (NVL(l_enc_upg_option, 'N') = 'O')
54365       )
54366    THEN
54367    NULL;
54368    --
54369    --
54370    
54371   l_ccid := AcctDerRule_4(
54372            p_application_id           => p_application_id
54373          , p_ae_header_id             => l_ae_header_id 
54374 , p_source_4 => p_source_4
54375          , x_transaction_coa_id       => l_adr_transaction_coa_id
54376          , x_accounting_coa_id        => l_adr_accounting_coa_id
54377          , x_value_type_code          => l_adr_value_type_code
54378          , p_side                     => 'NA'
54379    );
54380 
54381    xla_ae_lines_pkg.set_ccid(
54382     p_code_combination_id          => l_ccid
54383   , p_value_type_code              => l_adr_value_type_code
54384   , p_transaction_coa_id           => l_adr_transaction_coa_id
54385   , p_accounting_coa_id            => l_adr_accounting_coa_id
54386   , p_adr_code                     => 'CST_DEFAULT'
54387   , p_adr_type_code                => 'S'
54388   , p_component_type               => l_component_type
54389   , p_component_code               => l_component_code
54390   , p_component_type_code          => l_component_type_code
54391   , p_component_appl_id            => l_component_appl_id
54392   , p_amb_context_code             => l_amb_context_code
54393   , p_side                         => 'NA'
54394   );
54395 
54396 
54397    --
54398    --
54399    END IF;
54400 
54401        --
54402        -- Update the line information that should be overwritten
54403        --
54404        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54405                                          p_header_num   => 1);
54406        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
54407 
54408        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54409 
54410        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
54411           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54412        END IF;
54413 
54414       --
54415       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54416       --
54417       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54418           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
54419       ELSE
54420           ---------------------------------------------------------------------------------------------------
54421           -- 4262811a Switch Sign
54422           ---------------------------------------------------------------------------------------------------
54423           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
54424           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54425                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54426           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54427                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54428           -- 5132302
54429           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54430                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54431 
54432       END IF;
54433 
54434       -- 4955764
54435       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54436       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54437 
54438 
54439       XLA_AE_LINES_PKG.ValidateCurrentLine;
54440       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54441 
54442       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54443                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54444                ,p_balance_type_code => l_balance_type_code);
54445 
54446    END IF;
54447 
54448    -----------------------------------------------------------------------------------------
54449    -- 4262811 Multiperiod Accounting
54450    -----------------------------------------------------------------------------------------
54451      -- No MPA option is assigned.
54452 
54453 
54454 END IF;
54455 END IF;
54456 --
54457 
54458 --
54459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54460    trace
54461       (p_msg      => 'END of AcctLineType_100'
54462       ,p_level    => C_LEVEL_PROCEDURE
54463       ,p_module   => l_log_module);
54464 END IF;
54465 --
54466 EXCEPTION
54467   WHEN xla_exceptions_pkg.application_exception THEN
54468       RAISE;
54469   WHEN OTHERS THEN
54470        xla_exceptions_pkg.raise_message
54471            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_100');
54472 END AcctLineType_100;
54473 --
54474 
54475 ---------------------------------------
54476 --
54477 -- PRIVATE FUNCTION
54478 --         AcctLineType_101
54479 --
54480 ---------------------------------------
54481 PROCEDURE AcctLineType_101 (
54482   p_application_id        IN NUMBER
54483  ,p_event_id              IN NUMBER
54484  ,p_calculate_acctd_flag  IN VARCHAR2
54485  ,p_calculate_g_l_flag    IN VARCHAR2
54486  ,p_actual_flag           IN OUT VARCHAR2
54487  ,p_balance_type_code     OUT VARCHAR2
54488  ,p_gain_or_loss_ref      OUT VARCHAR2
54489  
54490 --Cost Management Default Account
54491  , p_source_4            IN NUMBER
54492 --DISTRIBUTION_IDENTIFIER
54493  , p_source_11            IN NUMBER
54494 --Distribution Type
54495  , p_source_12            IN VARCHAR2
54496  , p_source_12_meaning    IN VARCHAR2
54497 --Entered Currency Code
54498  , p_source_15            IN VARCHAR2
54499 --Entered Amount
54500  , p_source_18            IN NUMBER
54501 --Currency Conversion Date
54502  , p_source_19            IN DATE
54503 --Currency Conversion Rate
54504  , p_source_20            IN NUMBER
54505 --Currency Conversion Type
54506  , p_source_21            IN VARCHAR2
54507 --Accounted Amount
54508  , p_source_22            IN NUMBER
54509 --Accounting Line Type
54510  , p_source_24            IN NUMBER
54511 )
54512 IS
54513 
54514 l_component_type              VARCHAR2(80);
54515 l_component_code              VARCHAR2(30);
54516 l_component_type_code         VARCHAR2(1);
54517 l_component_appl_id           INTEGER;
54518 l_amb_context_code            VARCHAR2(30);
54519 l_entity_code                 VARCHAR2(30);
54520 l_event_class_code            VARCHAR2(30);
54521 l_ae_header_id                NUMBER;
54522 l_event_type_code             VARCHAR2(30);
54523 l_line_definition_code        VARCHAR2(30);
54524 l_line_definition_owner_code  VARCHAR2(1);
54525 --
54526 -- adr variables
54527 l_segment                     VARCHAR2(30);
54528 l_ccid                        NUMBER;
54529 l_adr_transaction_coa_id      NUMBER;
54530 l_adr_accounting_coa_id       NUMBER;
54531 l_adr_flexfield_segment_code  VARCHAR2(30);
54532 l_adr_flex_value_set_id       NUMBER;
54533 l_adr_value_type_code         VARCHAR2(30);
54534 l_adr_value_combination_id    NUMBER;
54535 l_adr_value_segment_code      VARCHAR2(30);
54536 
54537 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
54538 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
54539 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
54540 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
54541 
54542 -- 4262811 Variables ------------------------------------------------------------------------------------------
54543 l_entered_amt_idx             NUMBER;
54544 l_accted_amt_idx              NUMBER;
54545 l_acc_rev_flag                VARCHAR2(1);
54546 l_accrual_line_num            NUMBER;
54547 l_tmp_amt                     NUMBER;
54548 l_acc_rev_natural_side_code   VARCHAR2(1);
54549 
54550 l_num_entries                 NUMBER;
54551 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
54552 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
54553 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
54554 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
54555 l_recog_line_1                NUMBER;
54556 l_recog_line_2                NUMBER;
54557 
54558 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
54559 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
54560 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
54561 
54562 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
54563 
54564 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
54565 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
54566 
54567 ---------------------------------------------------------------------------------------------------------------
54568 
54569 
54570 --
54571 -- bulk performance
54572 --
54573 l_balance_type_code           VARCHAR2(1);
54574 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
54575 l_log_module                  VARCHAR2(240);
54576 
54577 --
54578 -- Upgrade strategy
54579 --
54580 l_actual_upg_option           VARCHAR2(1);
54581 l_enc_upg_option           VARCHAR2(1);
54582 
54583 --
54584 BEGIN
54585 --
54586 IF g_log_enabled THEN
54587       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_101';
54588 END IF;
54589 --
54590 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54591 
54592       trace
54593          (p_msg      => 'BEGIN of AcctLineType_101'
54594          ,p_level    => C_LEVEL_PROCEDURE
54595          ,p_module   => l_log_module);
54596 
54597 END IF;
54598 --
54599 l_component_type             := 'AMB_JLT';
54600 l_component_code             := 'INTERORG_RECEIVABLES';
54601 l_component_type_code        := 'S';
54602 l_component_appl_id          :=  707;
54603 l_amb_context_code           := 'DEFAULT';
54604 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
54605 l_event_class_code           := 'USER_DEFINE';
54606 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_TP';
54607 l_line_definition_owner_code := 'S';
54608 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_TP';
54609 --
54610 l_balance_type_code          := 'A';
54611 l_segment                     := NULL;
54612 l_ccid                        := NULL;
54613 l_adr_transaction_coa_id      := NULL;
54614 l_adr_accounting_coa_id       := NULL;
54615 l_adr_flexfield_segment_code  := NULL;
54616 l_adr_flex_value_set_id       := NULL;
54617 l_adr_value_type_code         := NULL;
54618 l_adr_value_combination_id    := NULL;
54619 l_adr_value_segment_code      := NULL;
54620 
54621 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
54622 l_bflow_class_code           := '';    -- 4219869 Business Flow
54623 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
54624 l_budgetary_control_flag     := 'N';
54625 
54626 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
54627 l_bflow_applied_to_amt       := NULL; -- 5132302
54628 l_entered_amt_idx            := NULL;          -- 4262811
54629 l_accted_amt_idx             := NULL;          -- 4262811
54630 l_acc_rev_flag               := NULL;          -- 4262811
54631 l_accrual_line_num           := NULL;          -- 4262811
54632 l_tmp_amt                    := NULL;          -- 4262811
54633 --
54634  
54635 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54636     l_balance_type_code <> 'B' THEN
54637 IF NVL(p_source_24,9E125) =  10
54638  THEN 
54639 
54640    --
54641    XLA_AE_LINES_PKG.SetNewLine;
54642 
54643    p_balance_type_code          := l_balance_type_code;
54644    -- set the flag so later we will know whether the gain loss line needs to be created
54645    
54646    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54647      p_actual_flag :='A';
54648    END IF;
54649 
54650    --
54651    -- bulk performance
54652    --
54653    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54654                                       p_header_num   => 0); -- 4262811
54655    --
54656    -- set accounting line options
54657    --
54658    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54659            p_natural_side_code          => 'D'
54660          , p_gain_or_loss_flag          => 'N'
54661          , p_gl_transfer_mode_code      => 'S'
54662          , p_acct_entry_type_code       => 'A'
54663          , p_switch_side_flag           => 'Y'
54664          , p_merge_duplicate_code       => 'N'
54665          );
54666    --
54667    l_acc_rev_natural_side_code := 'C';  -- 4262811
54668    -- 
54669    --
54670    -- set accounting line type info
54671    --
54672    xla_ae_lines_pkg.SetAcctLineType
54673       (p_component_type             => l_component_type
54674       ,p_event_type_code            => l_event_type_code
54675       ,p_line_definition_owner_code => l_line_definition_owner_code
54676       ,p_line_definition_code       => l_line_definition_code
54677       ,p_accounting_line_code       => l_component_code
54678       ,p_accounting_line_type_code  => l_component_type_code
54679       ,p_accounting_line_appl_id    => l_component_appl_id
54680       ,p_amb_context_code           => l_amb_context_code
54681       ,p_entity_code                => l_entity_code
54682       ,p_event_class_code           => l_event_class_code);
54683    --
54684    -- set accounting class
54685    --
54686    xla_ae_lines_pkg.SetAcctClass(
54687            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
54688          , p_ae_header_id           => l_ae_header_id
54689          );
54690 
54691    --
54692    -- set rounding class
54693    --
54694    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54695                       'INTERORG_RECEIVABLES';
54696 
54697    --
54698    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54699    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54700    --
54701    -- bulk performance
54702    --
54703    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54704 
54705    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54706       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54707 
54708    -- 4955764
54709    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54710       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54711 
54712    -- 4458381 Public Sector Enh
54713    
54714    --
54715    -- set accounting attributes for the line type
54716    --
54717    l_entered_amt_idx := 3;
54718    l_accted_amt_idx  := 8;
54719    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
54720    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
54721    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
54722    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
54723    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
54724    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
54725    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
54726    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
54727    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
54728    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
54729    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
54730    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
54731    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
54732    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
54733    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
54734    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
54735    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
54736 
54737    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54738    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54739 
54740    ---------------------------------------------------------------------------------------------------------------
54741    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54742    ---------------------------------------------------------------------------------------------------------------
54743    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54744 
54745    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54746    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54747 
54748    IF xla_accounting_cache_pkg.GetValueChar
54749          (p_source_code         => 'LEDGER_CATEGORY_CODE'
54750          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54751    AND l_bflow_method_code = 'PRIOR_ENTRY'
54752 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54753    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54754          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54755        )
54756    THEN
54757          xla_ae_lines_pkg.BflowUpgEntry
54758            (p_business_method_code    => l_bflow_method_code
54759            ,p_business_class_code     => l_bflow_class_code
54760            ,p_balance_type            => l_balance_type_code);
54761    ELSE
54762       NULL;
54763 -- No business flow processing for business flow method of NONE.
54764    END IF;
54765 
54766    --
54767    -- call analytical criteria
54768    --
54769    
54770    --
54771    -- call description
54772    --
54773    -- No description or it is inherited.
54774    --
54775    -- call ADRs
54776    -- Bug 4922099
54777    --
54778    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54779         (NVL(l_actual_upg_option, 'N') = 'O') OR
54780         (NVL(l_enc_upg_option, 'N') = 'O')
54781       )
54782    THEN
54783    NULL;
54784    --
54785    --
54786    
54787   l_ccid := AcctDerRule_4(
54788            p_application_id           => p_application_id
54789          , p_ae_header_id             => l_ae_header_id 
54790 , p_source_4 => p_source_4
54791          , x_transaction_coa_id       => l_adr_transaction_coa_id
54792          , x_accounting_coa_id        => l_adr_accounting_coa_id
54793          , x_value_type_code          => l_adr_value_type_code
54794          , p_side                     => 'NA'
54795    );
54796 
54797    xla_ae_lines_pkg.set_ccid(
54798     p_code_combination_id          => l_ccid
54799   , p_value_type_code              => l_adr_value_type_code
54800   , p_transaction_coa_id           => l_adr_transaction_coa_id
54801   , p_accounting_coa_id            => l_adr_accounting_coa_id
54802   , p_adr_code                     => 'CST_DEFAULT'
54803   , p_adr_type_code                => 'S'
54804   , p_component_type               => l_component_type
54805   , p_component_code               => l_component_code
54806   , p_component_type_code          => l_component_type_code
54807   , p_component_appl_id            => l_component_appl_id
54808   , p_amb_context_code             => l_amb_context_code
54809   , p_side                         => 'NA'
54810   );
54811 
54812 
54813    --
54814    --
54815    END IF;
54816    --
54817    -- Bug 4922099
54818    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54819           (NVL(l_enc_upg_option, 'N') = 'O')
54820         ) AND
54821         (l_bflow_method_code = 'PRIOR_ENTRY')
54822       )
54823    THEN
54824       IF
54825       --
54826       1 = 2
54827       --
54828       THEN
54829       xla_accounting_err_pkg.build_message
54830                                     (p_appli_s_name            => 'XLA'
54831                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54832                                     ,p_token_1                 => 'LINE_NUMBER'
54833                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
54834                                     ,p_token_2                 => 'LINE_TYPE_NAME'
54835                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
54836                                                                              l_component_type
54837                                                                             ,l_component_code
54838                                                                             ,l_component_type_code
54839                                                                             ,l_component_appl_id
54840                                                                             ,l_amb_context_code
54841                                                                             ,l_entity_code
54842                                                                             ,l_event_class_code
54843                                                                            )
54844                                     ,p_token_3                 => 'OWNER'
54845                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
54846                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
54847                                                                           ,p_lookup_code    => l_component_type_code
54848                                                                          )
54849                                     ,p_token_4                 => 'PRODUCT_NAME'
54850                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54851                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54852                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54853                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54854                                     ,p_ae_header_id            =>  NULL
54855                                        );
54856 
54857         IF (C_LEVEL_ERROR>= g_log_level) THEN
54858                  trace
54859                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54860                       ,p_level    => C_LEVEL_ERROR
54861                       ,p_module   => l_log_module);
54862         END IF;
54863       END IF;
54864    END IF;
54865    --
54866    --
54867    ------------------------------------------------------------------------------------------------
54868    -- 4219869 Business Flow
54869    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54870    -- Prior Entry.  Currently, the following code is always generated.
54871    ------------------------------------------------------------------------------------------------
54872    XLA_AE_LINES_PKG.ValidateCurrentLine;
54873 
54874    ------------------------------------------------------------------------------------
54875    -- 4219869 Business Flow
54876    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54877    ------------------------------------------------------------------------------------
54878    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54879 
54880    ----------------------------------------------------------------------------------
54881    -- 4219869 Business Flow
54882    -- Update journal entry status -- Need to generate this within IF <condition>
54883    ----------------------------------------------------------------------------------
54884    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54885          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54886          ,p_balance_type_code => l_balance_type_code
54887          );
54888 
54889    -------------------------------------------------------------------------------------------
54890    -- 4262811 - Generate the Accrual Reversal lines
54891    -------------------------------------------------------------------------------------------
54892    BEGIN
54893       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54894                               (g_array_event(p_event_id).array_value_num('header_index'));
54895       IF l_acc_rev_flag IS NULL THEN
54896          l_acc_rev_flag := 'N';
54897       END IF;
54898    EXCEPTION
54899       WHEN OTHERS THEN
54900          l_acc_rev_flag := 'N';
54901    END;
54902    --
54903    IF (l_acc_rev_flag = 'Y') THEN
54904 
54905        -- 4645092  ------------------------------------------------------------------------------
54906        -- To allow MPA report to determine if it should generate report process
54907        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54908        ------------------------------------------------------------------------------------------
54909 
54910        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54911        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54912    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
54913    -- call ADRs
54914    -- Bug 4922099
54915    --
54916    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54917         (NVL(l_actual_upg_option, 'N') = 'O') OR
54918         (NVL(l_enc_upg_option, 'N') = 'O')
54919       )
54920    THEN
54921    NULL;
54922    --
54923    --
54924    
54925   l_ccid := AcctDerRule_4(
54926            p_application_id           => p_application_id
54927          , p_ae_header_id             => l_ae_header_id 
54928 , p_source_4 => p_source_4
54929          , x_transaction_coa_id       => l_adr_transaction_coa_id
54930          , x_accounting_coa_id        => l_adr_accounting_coa_id
54931          , x_value_type_code          => l_adr_value_type_code
54932          , p_side                     => 'NA'
54933    );
54934 
54935    xla_ae_lines_pkg.set_ccid(
54936     p_code_combination_id          => l_ccid
54937   , p_value_type_code              => l_adr_value_type_code
54938   , p_transaction_coa_id           => l_adr_transaction_coa_id
54939   , p_accounting_coa_id            => l_adr_accounting_coa_id
54940   , p_adr_code                     => 'CST_DEFAULT'
54941   , p_adr_type_code                => 'S'
54942   , p_component_type               => l_component_type
54943   , p_component_code               => l_component_code
54944   , p_component_type_code          => l_component_type_code
54945   , p_component_appl_id            => l_component_appl_id
54946   , p_amb_context_code             => l_amb_context_code
54947   , p_side                         => 'NA'
54948   );
54949 
54950 
54951    --
54952    --
54953    END IF;
54954 
54955        --
54956        -- Update the line information that should be overwritten
54957        --
54958        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54959                                          p_header_num   => 1);
54960        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
54961 
54962        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54963 
54964        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
54965           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54966        END IF;
54967 
54968       --
54969       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54970       --
54971       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54972           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
54973       ELSE
54974           ---------------------------------------------------------------------------------------------------
54975           -- 4262811a Switch Sign
54976           ---------------------------------------------------------------------------------------------------
54977           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
54978           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54979                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54980           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54981                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54982           -- 5132302
54983           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54984                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54985 
54986       END IF;
54987 
54988       -- 4955764
54989       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54990       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54991 
54992 
54993       XLA_AE_LINES_PKG.ValidateCurrentLine;
54994       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54995 
54996       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54997                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54998                ,p_balance_type_code => l_balance_type_code);
54999 
55000    END IF;
55001 
55002    -----------------------------------------------------------------------------------------
55003    -- 4262811 Multiperiod Accounting
55004    -----------------------------------------------------------------------------------------
55005      -- No MPA option is assigned.
55006 
55007 
55008 END IF;
55009 END IF;
55010 --
55011 
55012 --
55013 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55014    trace
55015       (p_msg      => 'END of AcctLineType_101'
55016       ,p_level    => C_LEVEL_PROCEDURE
55017       ,p_module   => l_log_module);
55018 END IF;
55019 --
55020 EXCEPTION
55021   WHEN xla_exceptions_pkg.application_exception THEN
55022       RAISE;
55023   WHEN OTHERS THEN
55024        xla_exceptions_pkg.raise_message
55025            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_101');
55026 END AcctLineType_101;
55027 --
55028 
55029 ---------------------------------------
55030 --
55031 -- PRIVATE FUNCTION
55032 --         AcctLineType_102
55033 --
55034 ---------------------------------------
55035 PROCEDURE AcctLineType_102 (
55036   p_application_id        IN NUMBER
55037  ,p_event_id              IN NUMBER
55038  ,p_calculate_acctd_flag  IN VARCHAR2
55039  ,p_calculate_g_l_flag    IN VARCHAR2
55040  ,p_actual_flag           IN OUT VARCHAR2
55041  ,p_balance_type_code     OUT VARCHAR2
55042  ,p_gain_or_loss_ref      OUT VARCHAR2
55043  
55044 --Cost Management Default Account
55045  , p_source_4            IN NUMBER
55046 --DISTRIBUTION_IDENTIFIER
55047  , p_source_11            IN NUMBER
55048 --Distribution Type
55049  , p_source_12            IN VARCHAR2
55050  , p_source_12_meaning    IN VARCHAR2
55051 --Entered Currency Code
55052  , p_source_15            IN VARCHAR2
55053 --Entered Amount
55054  , p_source_18            IN NUMBER
55055 --Currency Conversion Date
55056  , p_source_19            IN DATE
55057 --Currency Conversion Rate
55058  , p_source_20            IN NUMBER
55059 --Currency Conversion Type
55060  , p_source_21            IN VARCHAR2
55061 --Accounted Amount
55062  , p_source_22            IN NUMBER
55063 --Accounting Line Type
55064  , p_source_24            IN NUMBER
55065 )
55066 IS
55067 
55068 l_component_type              VARCHAR2(80);
55069 l_component_code              VARCHAR2(30);
55070 l_component_type_code         VARCHAR2(1);
55071 l_component_appl_id           INTEGER;
55072 l_amb_context_code            VARCHAR2(30);
55073 l_entity_code                 VARCHAR2(30);
55074 l_event_class_code            VARCHAR2(30);
55075 l_ae_header_id                NUMBER;
55076 l_event_type_code             VARCHAR2(30);
55077 l_line_definition_code        VARCHAR2(30);
55078 l_line_definition_owner_code  VARCHAR2(1);
55079 --
55080 -- adr variables
55081 l_segment                     VARCHAR2(30);
55082 l_ccid                        NUMBER;
55083 l_adr_transaction_coa_id      NUMBER;
55084 l_adr_accounting_coa_id       NUMBER;
55085 l_adr_flexfield_segment_code  VARCHAR2(30);
55086 l_adr_flex_value_set_id       NUMBER;
55087 l_adr_value_type_code         VARCHAR2(30);
55088 l_adr_value_combination_id    NUMBER;
55089 l_adr_value_segment_code      VARCHAR2(30);
55090 
55091 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
55092 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
55093 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
55094 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
55095 
55096 -- 4262811 Variables ------------------------------------------------------------------------------------------
55097 l_entered_amt_idx             NUMBER;
55098 l_accted_amt_idx              NUMBER;
55099 l_acc_rev_flag                VARCHAR2(1);
55100 l_accrual_line_num            NUMBER;
55101 l_tmp_amt                     NUMBER;
55102 l_acc_rev_natural_side_code   VARCHAR2(1);
55103 
55104 l_num_entries                 NUMBER;
55105 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
55106 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
55107 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
55108 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
55109 l_recog_line_1                NUMBER;
55110 l_recog_line_2                NUMBER;
55111 
55112 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
55113 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
55114 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
55115 
55116 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55117 
55118 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
55119 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
55120 
55121 ---------------------------------------------------------------------------------------------------------------
55122 
55123 
55124 --
55125 -- bulk performance
55126 --
55127 l_balance_type_code           VARCHAR2(1);
55128 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
55129 l_log_module                  VARCHAR2(240);
55130 
55131 --
55132 -- Upgrade strategy
55133 --
55134 l_actual_upg_option           VARCHAR2(1);
55135 l_enc_upg_option           VARCHAR2(1);
55136 
55137 --
55138 BEGIN
55139 --
55140 IF g_log_enabled THEN
55141       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_102';
55142 END IF;
55143 --
55144 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55145 
55146       trace
55147          (p_msg      => 'BEGIN of AcctLineType_102'
55148          ,p_level    => C_LEVEL_PROCEDURE
55149          ,p_module   => l_log_module);
55150 
55151 END IF;
55152 --
55153 l_component_type             := 'AMB_JLT';
55154 l_component_code             := 'INTERORG_RECEIVABLES';
55155 l_component_type_code        := 'S';
55156 l_component_appl_id          :=  707;
55157 l_amb_context_code           := 'DEFAULT';
55158 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
55159 l_event_class_code           := 'INT_ORDER_TO_EXP';
55160 l_event_type_code            := 'INT_ORDER_TO_EXP_ALL';
55161 l_line_definition_owner_code := 'S';
55162 l_line_definition_code       := 'INT_ORDER_TO_EXP';
55163 --
55164 l_balance_type_code          := 'A';
55165 l_segment                     := NULL;
55166 l_ccid                        := NULL;
55167 l_adr_transaction_coa_id      := NULL;
55168 l_adr_accounting_coa_id       := NULL;
55169 l_adr_flexfield_segment_code  := NULL;
55170 l_adr_flex_value_set_id       := NULL;
55171 l_adr_value_type_code         := NULL;
55172 l_adr_value_combination_id    := NULL;
55173 l_adr_value_segment_code      := NULL;
55174 
55175 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
55176 l_bflow_class_code           := '';    -- 4219869 Business Flow
55177 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
55178 l_budgetary_control_flag     := 'N';
55179 
55180 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
55181 l_bflow_applied_to_amt       := NULL; -- 5132302
55182 l_entered_amt_idx            := NULL;          -- 4262811
55183 l_accted_amt_idx             := NULL;          -- 4262811
55184 l_acc_rev_flag               := NULL;          -- 4262811
55185 l_accrual_line_num           := NULL;          -- 4262811
55186 l_tmp_amt                    := NULL;          -- 4262811
55187 --
55188  
55189 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55190     l_balance_type_code <> 'B' THEN
55191 IF NVL(p_source_24,9E125) =  10
55192  THEN 
55193 
55194    --
55195    XLA_AE_LINES_PKG.SetNewLine;
55196 
55197    p_balance_type_code          := l_balance_type_code;
55198    -- set the flag so later we will know whether the gain loss line needs to be created
55199    
55200    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55201      p_actual_flag :='A';
55202    END IF;
55203 
55204    --
55205    -- bulk performance
55206    --
55207    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55208                                       p_header_num   => 0); -- 4262811
55209    --
55210    -- set accounting line options
55211    --
55212    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55213            p_natural_side_code          => 'D'
55214          , p_gain_or_loss_flag          => 'N'
55215          , p_gl_transfer_mode_code      => 'S'
55216          , p_acct_entry_type_code       => 'A'
55217          , p_switch_side_flag           => 'Y'
55218          , p_merge_duplicate_code       => 'N'
55219          );
55220    --
55221    l_acc_rev_natural_side_code := 'C';  -- 4262811
55222    -- 
55223    --
55224    -- set accounting line type info
55225    --
55226    xla_ae_lines_pkg.SetAcctLineType
55227       (p_component_type             => l_component_type
55228       ,p_event_type_code            => l_event_type_code
55229       ,p_line_definition_owner_code => l_line_definition_owner_code
55230       ,p_line_definition_code       => l_line_definition_code
55231       ,p_accounting_line_code       => l_component_code
55232       ,p_accounting_line_type_code  => l_component_type_code
55233       ,p_accounting_line_appl_id    => l_component_appl_id
55234       ,p_amb_context_code           => l_amb_context_code
55235       ,p_entity_code                => l_entity_code
55236       ,p_event_class_code           => l_event_class_code);
55237    --
55238    -- set accounting class
55239    --
55240    xla_ae_lines_pkg.SetAcctClass(
55241            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
55242          , p_ae_header_id           => l_ae_header_id
55243          );
55244 
55245    --
55246    -- set rounding class
55247    --
55248    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55249                       'INTERORG_RECEIVABLES';
55250 
55251    --
55252    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55253    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55254    --
55255    -- bulk performance
55256    --
55257    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55258 
55259    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55260       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55261 
55262    -- 4955764
55263    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55264       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55265 
55266    -- 4458381 Public Sector Enh
55267    
55268    --
55269    -- set accounting attributes for the line type
55270    --
55271    l_entered_amt_idx := 3;
55272    l_accted_amt_idx  := 8;
55273    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
55274    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
55275    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
55276    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
55277    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
55278    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
55279    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
55280    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
55281    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
55282    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
55283    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
55284    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
55285    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
55286    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
55287    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
55288    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
55289    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
55290 
55291    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55292    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55293 
55294    ---------------------------------------------------------------------------------------------------------------
55295    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55296    ---------------------------------------------------------------------------------------------------------------
55297    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55298 
55299    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55300    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55301 
55302    IF xla_accounting_cache_pkg.GetValueChar
55303          (p_source_code         => 'LEDGER_CATEGORY_CODE'
55304          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55305    AND l_bflow_method_code = 'PRIOR_ENTRY'
55306 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55307    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55308          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55309        )
55310    THEN
55311          xla_ae_lines_pkg.BflowUpgEntry
55312            (p_business_method_code    => l_bflow_method_code
55313            ,p_business_class_code     => l_bflow_class_code
55314            ,p_balance_type            => l_balance_type_code);
55315    ELSE
55316       NULL;
55317 -- No business flow processing for business flow method of NONE.
55318    END IF;
55319 
55320    --
55321    -- call analytical criteria
55322    --
55323    
55324    --
55325    -- call description
55326    --
55327    -- No description or it is inherited.
55328    --
55329    -- call ADRs
55330    -- Bug 4922099
55331    --
55332    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55333         (NVL(l_actual_upg_option, 'N') = 'O') OR
55334         (NVL(l_enc_upg_option, 'N') = 'O')
55335       )
55336    THEN
55337    NULL;
55338    --
55339    --
55340    
55341   l_ccid := AcctDerRule_4(
55342            p_application_id           => p_application_id
55343          , p_ae_header_id             => l_ae_header_id 
55344 , p_source_4 => p_source_4
55345          , x_transaction_coa_id       => l_adr_transaction_coa_id
55346          , x_accounting_coa_id        => l_adr_accounting_coa_id
55347          , x_value_type_code          => l_adr_value_type_code
55348          , p_side                     => 'NA'
55349    );
55350 
55351    xla_ae_lines_pkg.set_ccid(
55352     p_code_combination_id          => l_ccid
55353   , p_value_type_code              => l_adr_value_type_code
55354   , p_transaction_coa_id           => l_adr_transaction_coa_id
55355   , p_accounting_coa_id            => l_adr_accounting_coa_id
55356   , p_adr_code                     => 'CST_DEFAULT'
55357   , p_adr_type_code                => 'S'
55358   , p_component_type               => l_component_type
55359   , p_component_code               => l_component_code
55360   , p_component_type_code          => l_component_type_code
55361   , p_component_appl_id            => l_component_appl_id
55362   , p_amb_context_code             => l_amb_context_code
55363   , p_side                         => 'NA'
55364   );
55365 
55366 
55367    --
55368    --
55369    END IF;
55370    --
55371    -- Bug 4922099
55372    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55373           (NVL(l_enc_upg_option, 'N') = 'O')
55374         ) AND
55375         (l_bflow_method_code = 'PRIOR_ENTRY')
55376       )
55377    THEN
55378       IF
55379       --
55380       1 = 2
55381       --
55382       THEN
55383       xla_accounting_err_pkg.build_message
55384                                     (p_appli_s_name            => 'XLA'
55385                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55386                                     ,p_token_1                 => 'LINE_NUMBER'
55387                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
55388                                     ,p_token_2                 => 'LINE_TYPE_NAME'
55389                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
55390                                                                              l_component_type
55391                                                                             ,l_component_code
55392                                                                             ,l_component_type_code
55393                                                                             ,l_component_appl_id
55394                                                                             ,l_amb_context_code
55395                                                                             ,l_entity_code
55396                                                                             ,l_event_class_code
55397                                                                            )
55398                                     ,p_token_3                 => 'OWNER'
55399                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
55400                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
55401                                                                           ,p_lookup_code    => l_component_type_code
55402                                                                          )
55403                                     ,p_token_4                 => 'PRODUCT_NAME'
55404                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55405                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55406                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55407                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55408                                     ,p_ae_header_id            =>  NULL
55409                                        );
55410 
55411         IF (C_LEVEL_ERROR>= g_log_level) THEN
55412                  trace
55413                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55414                       ,p_level    => C_LEVEL_ERROR
55415                       ,p_module   => l_log_module);
55416         END IF;
55417       END IF;
55418    END IF;
55419    --
55420    --
55421    ------------------------------------------------------------------------------------------------
55422    -- 4219869 Business Flow
55423    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55424    -- Prior Entry.  Currently, the following code is always generated.
55425    ------------------------------------------------------------------------------------------------
55426    XLA_AE_LINES_PKG.ValidateCurrentLine;
55427 
55428    ------------------------------------------------------------------------------------
55429    -- 4219869 Business Flow
55430    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55431    ------------------------------------------------------------------------------------
55432    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55433 
55434    ----------------------------------------------------------------------------------
55435    -- 4219869 Business Flow
55436    -- Update journal entry status -- Need to generate this within IF <condition>
55437    ----------------------------------------------------------------------------------
55438    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55439          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55440          ,p_balance_type_code => l_balance_type_code
55441          );
55442 
55443    -------------------------------------------------------------------------------------------
55444    -- 4262811 - Generate the Accrual Reversal lines
55445    -------------------------------------------------------------------------------------------
55446    BEGIN
55447       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
55448                               (g_array_event(p_event_id).array_value_num('header_index'));
55449       IF l_acc_rev_flag IS NULL THEN
55450          l_acc_rev_flag := 'N';
55451       END IF;
55452    EXCEPTION
55453       WHEN OTHERS THEN
55454          l_acc_rev_flag := 'N';
55455    END;
55456    --
55457    IF (l_acc_rev_flag = 'Y') THEN
55458 
55459        -- 4645092  ------------------------------------------------------------------------------
55460        -- To allow MPA report to determine if it should generate report process
55461        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
55462        ------------------------------------------------------------------------------------------
55463 
55464        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
55465        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
55466    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
55467    -- call ADRs
55468    -- Bug 4922099
55469    --
55470    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55471         (NVL(l_actual_upg_option, 'N') = 'O') OR
55472         (NVL(l_enc_upg_option, 'N') = 'O')
55473       )
55474    THEN
55475    NULL;
55476    --
55477    --
55478    
55479   l_ccid := AcctDerRule_4(
55480            p_application_id           => p_application_id
55481          , p_ae_header_id             => l_ae_header_id 
55482 , p_source_4 => p_source_4
55483          , x_transaction_coa_id       => l_adr_transaction_coa_id
55484          , x_accounting_coa_id        => l_adr_accounting_coa_id
55485          , x_value_type_code          => l_adr_value_type_code
55486          , p_side                     => 'NA'
55487    );
55488 
55489    xla_ae_lines_pkg.set_ccid(
55490     p_code_combination_id          => l_ccid
55491   , p_value_type_code              => l_adr_value_type_code
55492   , p_transaction_coa_id           => l_adr_transaction_coa_id
55493   , p_accounting_coa_id            => l_adr_accounting_coa_id
55494   , p_adr_code                     => 'CST_DEFAULT'
55495   , p_adr_type_code                => 'S'
55496   , p_component_type               => l_component_type
55497   , p_component_code               => l_component_code
55498   , p_component_type_code          => l_component_type_code
55499   , p_component_appl_id            => l_component_appl_id
55500   , p_amb_context_code             => l_amb_context_code
55501   , p_side                         => 'NA'
55502   );
55503 
55504 
55505    --
55506    --
55507    END IF;
55508 
55509        --
55510        -- Update the line information that should be overwritten
55511        --
55512        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
55513                                          p_header_num   => 1);
55514        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
55515 
55516        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
55517 
55518        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
55519           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
55520        END IF;
55521 
55522       --
55523       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
55524       --
55525       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
55526           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
55527       ELSE
55528           ---------------------------------------------------------------------------------------------------
55529           -- 4262811a Switch Sign
55530           ---------------------------------------------------------------------------------------------------
55531           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
55532           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55533                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55534           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55535                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55536           -- 5132302
55537           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
55538                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55539 
55540       END IF;
55541 
55542       -- 4955764
55543       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55544       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
55545 
55546 
55547       XLA_AE_LINES_PKG.ValidateCurrentLine;
55548       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55549 
55550       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55551                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
55552                ,p_balance_type_code => l_balance_type_code);
55553 
55554    END IF;
55555 
55556    -----------------------------------------------------------------------------------------
55557    -- 4262811 Multiperiod Accounting
55558    -----------------------------------------------------------------------------------------
55559      -- No MPA option is assigned.
55560 
55561 
55562 END IF;
55563 END IF;
55564 --
55565 
55566 --
55567 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55568    trace
55569       (p_msg      => 'END of AcctLineType_102'
55570       ,p_level    => C_LEVEL_PROCEDURE
55571       ,p_module   => l_log_module);
55572 END IF;
55573 --
55574 EXCEPTION
55575   WHEN xla_exceptions_pkg.application_exception THEN
55576       RAISE;
55577   WHEN OTHERS THEN
55578        xla_exceptions_pkg.raise_message
55579            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_102');
55580 END AcctLineType_102;
55581 --
55582 
55583 ---------------------------------------
55584 --
55585 -- PRIVATE FUNCTION
55586 --         AcctLineType_103
55587 --
55588 ---------------------------------------
55589 PROCEDURE AcctLineType_103 (
55590   p_application_id        IN NUMBER
55591  ,p_event_id              IN NUMBER
55592  ,p_calculate_acctd_flag  IN VARCHAR2
55593  ,p_calculate_g_l_flag    IN VARCHAR2
55594  ,p_actual_flag           IN OUT VARCHAR2
55595  ,p_balance_type_code     OUT VARCHAR2
55596  ,p_gain_or_loss_ref      OUT VARCHAR2
55597  
55598 --Cost Management Default Account
55599  , p_source_4            IN NUMBER
55600 --DISTRIBUTION_IDENTIFIER
55601  , p_source_11            IN NUMBER
55602 --Distribution Type
55603  , p_source_12            IN VARCHAR2
55604  , p_source_12_meaning    IN VARCHAR2
55605 --Entered Currency Code
55606  , p_source_15            IN VARCHAR2
55607 --Entered Amount
55608  , p_source_18            IN NUMBER
55609 --Currency Conversion Date
55610  , p_source_19            IN DATE
55611 --Currency Conversion Rate
55612  , p_source_20            IN NUMBER
55613 --Currency Conversion Type
55614  , p_source_21            IN VARCHAR2
55615 --Accounted Amount
55616  , p_source_22            IN NUMBER
55617 --Accounting Line Type
55618  , p_source_24            IN NUMBER
55619 )
55620 IS
55621 
55622 l_component_type              VARCHAR2(80);
55623 l_component_code              VARCHAR2(30);
55624 l_component_type_code         VARCHAR2(1);
55625 l_component_appl_id           INTEGER;
55626 l_amb_context_code            VARCHAR2(30);
55627 l_entity_code                 VARCHAR2(30);
55628 l_event_class_code            VARCHAR2(30);
55629 l_ae_header_id                NUMBER;
55630 l_event_type_code             VARCHAR2(30);
55631 l_line_definition_code        VARCHAR2(30);
55632 l_line_definition_owner_code  VARCHAR2(1);
55633 --
55634 -- adr variables
55635 l_segment                     VARCHAR2(30);
55636 l_ccid                        NUMBER;
55637 l_adr_transaction_coa_id      NUMBER;
55638 l_adr_accounting_coa_id       NUMBER;
55639 l_adr_flexfield_segment_code  VARCHAR2(30);
55640 l_adr_flex_value_set_id       NUMBER;
55641 l_adr_value_type_code         VARCHAR2(30);
55642 l_adr_value_combination_id    NUMBER;
55643 l_adr_value_segment_code      VARCHAR2(30);
55644 
55645 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
55646 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
55647 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
55648 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
55649 
55650 -- 4262811 Variables ------------------------------------------------------------------------------------------
55651 l_entered_amt_idx             NUMBER;
55652 l_accted_amt_idx              NUMBER;
55653 l_acc_rev_flag                VARCHAR2(1);
55654 l_accrual_line_num            NUMBER;
55655 l_tmp_amt                     NUMBER;
55656 l_acc_rev_natural_side_code   VARCHAR2(1);
55657 
55658 l_num_entries                 NUMBER;
55659 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
55660 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
55661 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
55662 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
55663 l_recog_line_1                NUMBER;
55664 l_recog_line_2                NUMBER;
55665 
55666 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
55667 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
55668 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
55669 
55670 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55671 
55672 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
55673 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
55674 
55675 ---------------------------------------------------------------------------------------------------------------
55676 
55677 
55678 --
55679 -- bulk performance
55680 --
55681 l_balance_type_code           VARCHAR2(1);
55682 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
55683 l_log_module                  VARCHAR2(240);
55684 
55685 --
55686 -- Upgrade strategy
55687 --
55688 l_actual_upg_option           VARCHAR2(1);
55689 l_enc_upg_option           VARCHAR2(1);
55690 
55691 --
55692 BEGIN
55693 --
55694 IF g_log_enabled THEN
55695       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_103';
55696 END IF;
55697 --
55698 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55699 
55700       trace
55701          (p_msg      => 'BEGIN of AcctLineType_103'
55702          ,p_level    => C_LEVEL_PROCEDURE
55703          ,p_module   => l_log_module);
55704 
55705 END IF;
55706 --
55707 l_component_type             := 'AMB_JLT';
55708 l_component_code             := 'INTERORG_RECEIVABLES';
55709 l_component_type_code        := 'S';
55710 l_component_appl_id          :=  707;
55711 l_amb_context_code           := 'DEFAULT';
55712 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
55713 l_event_class_code           := 'USER_DEFINE';
55714 l_event_type_code            := 'UDIR_INTERORG_RCPT';
55715 l_line_definition_owner_code := 'S';
55716 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
55717 --
55718 l_balance_type_code          := 'A';
55719 l_segment                     := NULL;
55720 l_ccid                        := NULL;
55721 l_adr_transaction_coa_id      := NULL;
55722 l_adr_accounting_coa_id       := NULL;
55723 l_adr_flexfield_segment_code  := NULL;
55724 l_adr_flex_value_set_id       := NULL;
55725 l_adr_value_type_code         := NULL;
55726 l_adr_value_combination_id    := NULL;
55727 l_adr_value_segment_code      := NULL;
55728 
55729 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
55730 l_bflow_class_code           := '';    -- 4219869 Business Flow
55731 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
55732 l_budgetary_control_flag     := 'N';
55733 
55734 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
55735 l_bflow_applied_to_amt       := NULL; -- 5132302
55736 l_entered_amt_idx            := NULL;          -- 4262811
55737 l_accted_amt_idx             := NULL;          -- 4262811
55738 l_acc_rev_flag               := NULL;          -- 4262811
55739 l_accrual_line_num           := NULL;          -- 4262811
55740 l_tmp_amt                    := NULL;          -- 4262811
55741 --
55742  
55743 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55744     l_balance_type_code <> 'B' THEN
55745 IF NVL(p_source_24,9E125) =  10
55746  THEN 
55747 
55748    --
55749    XLA_AE_LINES_PKG.SetNewLine;
55750 
55751    p_balance_type_code          := l_balance_type_code;
55752    -- set the flag so later we will know whether the gain loss line needs to be created
55753    
55754    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55755      p_actual_flag :='A';
55756    END IF;
55757 
55758    --
55759    -- bulk performance
55760    --
55761    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55762                                       p_header_num   => 0); -- 4262811
55763    --
55764    -- set accounting line options
55765    --
55766    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55767            p_natural_side_code          => 'D'
55768          , p_gain_or_loss_flag          => 'N'
55769          , p_gl_transfer_mode_code      => 'S'
55770          , p_acct_entry_type_code       => 'A'
55771          , p_switch_side_flag           => 'Y'
55772          , p_merge_duplicate_code       => 'N'
55773          );
55774    --
55775    l_acc_rev_natural_side_code := 'C';  -- 4262811
55776    -- 
55777    --
55778    -- set accounting line type info
55779    --
55780    xla_ae_lines_pkg.SetAcctLineType
55781       (p_component_type             => l_component_type
55782       ,p_event_type_code            => l_event_type_code
55783       ,p_line_definition_owner_code => l_line_definition_owner_code
55784       ,p_line_definition_code       => l_line_definition_code
55785       ,p_accounting_line_code       => l_component_code
55786       ,p_accounting_line_type_code  => l_component_type_code
55787       ,p_accounting_line_appl_id    => l_component_appl_id
55788       ,p_amb_context_code           => l_amb_context_code
55789       ,p_entity_code                => l_entity_code
55790       ,p_event_class_code           => l_event_class_code);
55791    --
55792    -- set accounting class
55793    --
55794    xla_ae_lines_pkg.SetAcctClass(
55795            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
55796          , p_ae_header_id           => l_ae_header_id
55797          );
55798 
55799    --
55800    -- set rounding class
55801    --
55802    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55803                       'INTERORG_RECEIVABLES';
55804 
55805    --
55806    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55807    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55808    --
55809    -- bulk performance
55810    --
55811    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55812 
55813    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55814       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55815 
55816    -- 4955764
55817    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55818       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55819 
55820    -- 4458381 Public Sector Enh
55821    
55822    --
55823    -- set accounting attributes for the line type
55824    --
55825    l_entered_amt_idx := 3;
55826    l_accted_amt_idx  := 8;
55827    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
55828    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
55829    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
55830    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
55831    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
55832    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
55833    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
55834    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
55835    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
55836    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
55837    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
55838    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
55839    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
55840    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
55841    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
55842    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
55843    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
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_000007_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           := 'USER_DEFINE';
56268 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
56269 l_line_definition_owner_code := 'S';
56270 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
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_000007_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_TRANSFER_CREDIT';
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           := 'USER_DEFINE';
56822 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
56823 l_line_definition_owner_code := 'S';
56824 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
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) =  11
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_TRANSFER_CREDIT'
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_TRANSFER_CREDIT';
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_000007_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_TRANSFER_CREDIT';
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_RCPT_NO_TP';
57377 l_line_definition_owner_code := 'S';
57378 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
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) =  11
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_TRANSFER_CREDIT'
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_TRANSFER_CREDIT';
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_000007_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_TRANSFER_CREDIT';
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           := 'FOB_RCPT_SENDER_RCPT';
57930 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_ALL';
57931 l_line_definition_owner_code := 'S';
57932 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT';
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) =  11
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_TRANSFER_CREDIT'
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_TRANSFER_CREDIT';
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_000007_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_TRANSFER_CREDIT';
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_SHIP_NO_TP';
58485 l_line_definition_owner_code := 'S';
58486 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_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) =  11
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_TRANSFER_CREDIT'
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_TRANSFER_CREDIT';
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_000007_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           := 'FOB_SHIP_SENDER_SHIP';
59038 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_ALL';
59039 l_line_definition_owner_code := 'S';
59040 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP';
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_000007_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            := 'UDIR_INTERORG_RCPT';
59593 l_line_definition_owner_code := 'S';
59594 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
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_000007_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_TP';
60147 l_line_definition_owner_code := 'S';
60148 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
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_000007_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            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
60701 l_line_definition_owner_code := 'S';
60702 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
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_000007_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 --Applied to Application ID
61141  , p_source_6            IN NUMBER
61142 --Applied to Distribution Link Type
61143  , p_source_7            IN VARCHAR2
61144 --Applied to Entity Code
61145  , p_source_8            IN VARCHAR2
61146 --DISTRIBUTION_IDENTIFIER
61147  , p_source_11            IN NUMBER
61148 --Distribution Type
61149  , p_source_12            IN VARCHAR2
61150  , p_source_12_meaning    IN VARCHAR2
61151 --Encumbrance Reversal Amount Entered
61152  , p_source_14            IN NUMBER
61153 --Entered Currency Code
61154  , p_source_15            IN VARCHAR2
61155 --Transaction Encumbrance Reversal Amount
61156  , p_source_16            IN NUMBER
61157 --Entered Amount
61158  , p_source_18            IN NUMBER
61159 --Currency Conversion Date
61160  , p_source_19            IN DATE
61161 --Currency Conversion Rate
61162  , p_source_20            IN NUMBER
61163 --Currency Conversion Type
61164  , p_source_21            IN VARCHAR2
61165 --Accounted Amount
61166  , p_source_22            IN NUMBER
61167 --Accounting Line Type
61168  , p_source_24            IN NUMBER
61169 --Costing Encumbrance Upgrade Option
61170  , p_source_27            IN VARCHAR2
61171 --TXN_PO_DISTRIBUTION_ID
61172  , p_source_28            IN NUMBER
61173 --TXN_PO_HEADER_ID
61174  , p_source_29            IN NUMBER
61175 --Requisition Budget Account
61176  , p_source_30            IN NUMBER
61177 --Requisition Encumbrance Type Identifier
61178  , p_source_31            IN NUMBER
61179 )
61180 IS
61181 
61182 l_component_type              VARCHAR2(80);
61183 l_component_code              VARCHAR2(30);
61184 l_component_type_code         VARCHAR2(1);
61185 l_component_appl_id           INTEGER;
61186 l_amb_context_code            VARCHAR2(30);
61187 l_entity_code                 VARCHAR2(30);
61188 l_event_class_code            VARCHAR2(30);
61189 l_ae_header_id                NUMBER;
61190 l_event_type_code             VARCHAR2(30);
61191 l_line_definition_code        VARCHAR2(30);
61192 l_line_definition_owner_code  VARCHAR2(1);
61193 --
61194 -- adr variables
61195 l_segment                     VARCHAR2(30);
61196 l_ccid                        NUMBER;
61197 l_adr_transaction_coa_id      NUMBER;
61198 l_adr_accounting_coa_id       NUMBER;
61199 l_adr_flexfield_segment_code  VARCHAR2(30);
61200 l_adr_flex_value_set_id       NUMBER;
61201 l_adr_value_type_code         VARCHAR2(30);
61202 l_adr_value_combination_id    NUMBER;
61203 l_adr_value_segment_code      VARCHAR2(30);
61204 
61205 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
61206 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
61207 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
61208 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
61209 
61210 -- 4262811 Variables ------------------------------------------------------------------------------------------
61211 l_entered_amt_idx             NUMBER;
61212 l_accted_amt_idx              NUMBER;
61213 l_acc_rev_flag                VARCHAR2(1);
61214 l_accrual_line_num            NUMBER;
61215 l_tmp_amt                     NUMBER;
61216 l_acc_rev_natural_side_code   VARCHAR2(1);
61217 
61218 l_num_entries                 NUMBER;
61219 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
61220 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
61221 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
61222 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
61223 l_recog_line_1                NUMBER;
61224 l_recog_line_2                NUMBER;
61225 
61226 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
61227 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
61228 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
61229 
61230 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61231 
61232 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
61233 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
61234 
61235 ---------------------------------------------------------------------------------------------------------------
61236 
61237 
61238 --
61239 -- bulk performance
61240 --
61241 l_balance_type_code           VARCHAR2(1);
61242 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
61243 l_log_module                  VARCHAR2(240);
61244 
61245 --
61246 -- Upgrade strategy
61247 --
61248 l_actual_upg_option           VARCHAR2(1);
61249 l_enc_upg_option           VARCHAR2(1);
61250 
61251 --
61252 BEGIN
61253 --
61254 IF g_log_enabled THEN
61255       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_113';
61256 END IF;
61257 --
61258 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61259 
61260       trace
61261          (p_msg      => 'BEGIN of AcctLineType_113'
61262          ,p_level    => C_LEVEL_PROCEDURE
61263          ,p_module   => l_log_module);
61264 
61265 END IF;
61266 --
61267 l_component_type             := 'AMB_JLT';
61268 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
61269 l_component_type_code        := 'S';
61270 l_component_appl_id          :=  707;
61271 l_amb_context_code           := 'DEFAULT';
61272 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
61273 l_event_class_code           := 'DIR_INTERORG_RCPT';
61274 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
61275 l_line_definition_owner_code := 'S';
61276 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
61277 --
61278 l_balance_type_code          := 'A';
61279 l_segment                     := NULL;
61280 l_ccid                        := NULL;
61281 l_adr_transaction_coa_id      := NULL;
61282 l_adr_accounting_coa_id       := NULL;
61283 l_adr_flexfield_segment_code  := NULL;
61284 l_adr_flex_value_set_id       := NULL;
61285 l_adr_value_type_code         := NULL;
61286 l_adr_value_combination_id    := NULL;
61287 l_adr_value_segment_code      := NULL;
61288 
61289 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
61290 l_bflow_class_code           := '';    -- 4219869 Business Flow
61291 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
61292 l_budgetary_control_flag     := 'N';
61293 
61294 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
61295 l_bflow_applied_to_amt       := NULL; -- 5132302
61296 l_entered_amt_idx            := NULL;          -- 4262811
61297 l_accted_amt_idx             := NULL;          -- 4262811
61298 l_acc_rev_flag               := NULL;          -- 4262811
61299 l_accrual_line_num           := NULL;          -- 4262811
61300 l_tmp_amt                    := NULL;          -- 4262811
61301 --
61302  
61303 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61304     l_balance_type_code <> 'B' THEN
61305 IF NVL(p_source_24,9E125) =  11
61306  THEN 
61307 
61308    --
61309    XLA_AE_LINES_PKG.SetNewLine;
61310 
61311    p_balance_type_code          := l_balance_type_code;
61312    -- set the flag so later we will know whether the gain loss line needs to be created
61313    
61314    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61315      p_actual_flag :='A';
61316    END IF;
61317 
61318    --
61319    -- bulk performance
61320    --
61321    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61322                                       p_header_num   => 0); -- 4262811
61323    --
61324    -- set accounting line options
61325    --
61326    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61327            p_natural_side_code          => 'D'
61328          , p_gain_or_loss_flag          => 'N'
61329          , p_gl_transfer_mode_code      => 'S'
61330          , p_acct_entry_type_code       => 'A'
61331          , p_switch_side_flag           => 'Y'
61332          , p_merge_duplicate_code       => 'N'
61333          );
61334    --
61335    l_acc_rev_natural_side_code := 'C';  -- 4262811
61336    -- 
61337    --
61338    -- set accounting line type info
61339    --
61340    xla_ae_lines_pkg.SetAcctLineType
61341       (p_component_type             => l_component_type
61342       ,p_event_type_code            => l_event_type_code
61343       ,p_line_definition_owner_code => l_line_definition_owner_code
61344       ,p_line_definition_code       => l_line_definition_code
61345       ,p_accounting_line_code       => l_component_code
61346       ,p_accounting_line_type_code  => l_component_type_code
61347       ,p_accounting_line_appl_id    => l_component_appl_id
61348       ,p_amb_context_code           => l_amb_context_code
61349       ,p_entity_code                => l_entity_code
61350       ,p_event_class_code           => l_event_class_code);
61351    --
61352    -- set accounting class
61353    --
61354    xla_ae_lines_pkg.SetAcctClass(
61355            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
61356          , p_ae_header_id           => l_ae_header_id
61357          );
61358 
61359    --
61360    -- set rounding class
61361    --
61362    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61363                       'INTERORG_TRANSFER_CREDIT';
61364 
61365    --
61366    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61367    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61368    --
61369    -- bulk performance
61370    --
61371    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61372 
61373    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61374       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61375 
61376    -- 4955764
61377    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61378       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61379 
61380    -- 4458381 Public Sector Enh
61381    
61382    --
61383    -- set accounting attributes for the line type
61384    --
61385    l_entered_amt_idx := 17;
61386    l_accted_amt_idx  := 22;
61387    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
61388    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
61389    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
61390    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
61391    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
61392    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
61393    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
61394    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
61395    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
61396    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
61397    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
61398    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
61399    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
61400    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
61401    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
61402    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
61403    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
61404    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
61405    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
61406    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
61407    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
61408    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
61409    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
61410    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
61411    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
61412    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
61413    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
61414    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
61415    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
61416    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
61417    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
61418    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
61419    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
61420    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
61421    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
61422    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
61423    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
61424    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
61425    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
61426    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
61427    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
61428    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
61429    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
61430    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
61431    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
61432    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
61433    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
61434    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
61435    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
61436 
61437    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61438    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61439 
61440    ---------------------------------------------------------------------------------------------------------------
61441    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61442    ---------------------------------------------------------------------------------------------------------------
61443    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61444 
61445    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61446    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61447 
61448    IF xla_accounting_cache_pkg.GetValueChar
61449          (p_source_code         => 'LEDGER_CATEGORY_CODE'
61450          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61451    AND l_bflow_method_code = 'PRIOR_ENTRY'
61452 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61453    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
61454          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
61455        )
61456    THEN
61457          xla_ae_lines_pkg.BflowUpgEntry
61458            (p_business_method_code    => l_bflow_method_code
61459            ,p_business_class_code     => l_bflow_class_code
61460            ,p_balance_type            => l_balance_type_code);
61461    ELSE
61462       NULL;
61463 -- No business flow processing for business flow method of NONE.
61464    END IF;
61465 
61466    --
61467    -- call analytical criteria
61468    --
61469    
61470    --
61471    -- call description
61472    --
61473    -- No description or it is inherited.
61474    --
61475    -- call ADRs
61476    -- Bug 4922099
61477    --
61478    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61479         (NVL(l_actual_upg_option, 'N') = 'O') OR
61480         (NVL(l_enc_upg_option, 'N') = 'O')
61481       )
61482    THEN
61483    NULL;
61484    --
61485    --
61486    
61487   l_ccid := AcctDerRule_4(
61488            p_application_id           => p_application_id
61489          , p_ae_header_id             => l_ae_header_id 
61490 , p_source_4 => p_source_4
61491          , x_transaction_coa_id       => l_adr_transaction_coa_id
61492          , x_accounting_coa_id        => l_adr_accounting_coa_id
61493          , x_value_type_code          => l_adr_value_type_code
61494          , p_side                     => 'NA'
61495    );
61496 
61497    xla_ae_lines_pkg.set_ccid(
61498     p_code_combination_id          => l_ccid
61499   , p_value_type_code              => l_adr_value_type_code
61500   , p_transaction_coa_id           => l_adr_transaction_coa_id
61501   , p_accounting_coa_id            => l_adr_accounting_coa_id
61502   , p_adr_code                     => 'CST_DEFAULT'
61503   , p_adr_type_code                => 'S'
61504   , p_component_type               => l_component_type
61505   , p_component_code               => l_component_code
61506   , p_component_type_code          => l_component_type_code
61507   , p_component_appl_id            => l_component_appl_id
61508   , p_amb_context_code             => l_amb_context_code
61509   , p_side                         => 'NA'
61510   );
61511 
61512 
61513    --
61514    --
61515    END IF;
61516    --
61517    -- Bug 4922099
61518    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
61519           (NVL(l_enc_upg_option, 'N') = 'O')
61520         ) AND
61521         (l_bflow_method_code = 'PRIOR_ENTRY')
61522       )
61523    THEN
61524       IF
61525       --
61526       1 = 2
61527       --
61528       THEN
61529       xla_accounting_err_pkg.build_message
61530                                     (p_appli_s_name            => 'XLA'
61531                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61532                                     ,p_token_1                 => 'LINE_NUMBER'
61533                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
61534                                     ,p_token_2                 => 'LINE_TYPE_NAME'
61535                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
61536                                                                              l_component_type
61537                                                                             ,l_component_code
61538                                                                             ,l_component_type_code
61539                                                                             ,l_component_appl_id
61540                                                                             ,l_amb_context_code
61541                                                                             ,l_entity_code
61542                                                                             ,l_event_class_code
61543                                                                            )
61544                                     ,p_token_3                 => 'OWNER'
61545                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
61546                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
61547                                                                           ,p_lookup_code    => l_component_type_code
61548                                                                          )
61549                                     ,p_token_4                 => 'PRODUCT_NAME'
61550                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
61551                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
61552                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
61553                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
61554                                     ,p_ae_header_id            =>  NULL
61555                                        );
61556 
61557         IF (C_LEVEL_ERROR>= g_log_level) THEN
61558                  trace
61559                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61560                       ,p_level    => C_LEVEL_ERROR
61561                       ,p_module   => l_log_module);
61562         END IF;
61563       END IF;
61564    END IF;
61565    --
61566    --
61567    ------------------------------------------------------------------------------------------------
61568    -- 4219869 Business Flow
61569    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
61570    -- Prior Entry.  Currently, the following code is always generated.
61571    ------------------------------------------------------------------------------------------------
61572    XLA_AE_LINES_PKG.ValidateCurrentLine;
61573 
61574    ------------------------------------------------------------------------------------
61575    -- 4219869 Business Flow
61576    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
61577    ------------------------------------------------------------------------------------
61578    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61579 
61580    ----------------------------------------------------------------------------------
61581    -- 4219869 Business Flow
61582    -- Update journal entry status -- Need to generate this within IF <condition>
61583    ----------------------------------------------------------------------------------
61584    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61585          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
61586          ,p_balance_type_code => l_balance_type_code
61587          );
61588 
61589    -------------------------------------------------------------------------------------------
61590    -- 4262811 - Generate the Accrual Reversal lines
61591    -------------------------------------------------------------------------------------------
61592    BEGIN
61593       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
61594                               (g_array_event(p_event_id).array_value_num('header_index'));
61595       IF l_acc_rev_flag IS NULL THEN
61596          l_acc_rev_flag := 'N';
61597       END IF;
61598    EXCEPTION
61599       WHEN OTHERS THEN
61600          l_acc_rev_flag := 'N';
61601    END;
61602    --
61603    IF (l_acc_rev_flag = 'Y') THEN
61604 
61605        -- 4645092  ------------------------------------------------------------------------------
61606        -- To allow MPA report to determine if it should generate report process
61607        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
61608        ------------------------------------------------------------------------------------------
61609 
61610        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
61611        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
61612    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
61613    -- call ADRs
61614    -- Bug 4922099
61615    --
61616    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61617         (NVL(l_actual_upg_option, 'N') = 'O') OR
61618         (NVL(l_enc_upg_option, 'N') = 'O')
61619       )
61620    THEN
61621    NULL;
61622    --
61623    --
61624    
61625   l_ccid := AcctDerRule_4(
61626            p_application_id           => p_application_id
61627          , p_ae_header_id             => l_ae_header_id 
61628 , p_source_4 => p_source_4
61629          , x_transaction_coa_id       => l_adr_transaction_coa_id
61630          , x_accounting_coa_id        => l_adr_accounting_coa_id
61631          , x_value_type_code          => l_adr_value_type_code
61632          , p_side                     => 'NA'
61633    );
61634 
61635    xla_ae_lines_pkg.set_ccid(
61636     p_code_combination_id          => l_ccid
61637   , p_value_type_code              => l_adr_value_type_code
61638   , p_transaction_coa_id           => l_adr_transaction_coa_id
61639   , p_accounting_coa_id            => l_adr_accounting_coa_id
61640   , p_adr_code                     => 'CST_DEFAULT'
61641   , p_adr_type_code                => 'S'
61642   , p_component_type               => l_component_type
61643   , p_component_code               => l_component_code
61644   , p_component_type_code          => l_component_type_code
61645   , p_component_appl_id            => l_component_appl_id
61646   , p_amb_context_code             => l_amb_context_code
61647   , p_side                         => 'NA'
61648   );
61649 
61650 
61651    --
61652    --
61653    END IF;
61654 
61655        --
61656        -- Update the line information that should be overwritten
61657        --
61658        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
61659                                          p_header_num   => 1);
61660        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
61661 
61662        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
61663 
61664        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
61665           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
61666        END IF;
61667 
61668       --
61669       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
61670       --
61671       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
61672           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
61673       ELSE
61674           ---------------------------------------------------------------------------------------------------
61675           -- 4262811a Switch Sign
61676           ---------------------------------------------------------------------------------------------------
61677           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
61678           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61679                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61680           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61681                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61682           -- 5132302
61683           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
61684                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61685 
61686       END IF;
61687 
61688       -- 4955764
61689       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61690       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
61691 
61692 
61693       XLA_AE_LINES_PKG.ValidateCurrentLine;
61694       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61695 
61696       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61697                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
61698                ,p_balance_type_code => l_balance_type_code);
61699 
61700    END IF;
61701 
61702    -----------------------------------------------------------------------------------------
61703    -- 4262811 Multiperiod Accounting
61704    -----------------------------------------------------------------------------------------
61705      -- No MPA option is assigned.
61706 
61707 
61708 END IF;
61709 END IF;
61710 --
61711 
61712 --
61713 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61714    trace
61715       (p_msg      => 'END of AcctLineType_113'
61716       ,p_level    => C_LEVEL_PROCEDURE
61717       ,p_module   => l_log_module);
61718 END IF;
61719 --
61720 EXCEPTION
61721   WHEN xla_exceptions_pkg.application_exception THEN
61722       RAISE;
61723   WHEN OTHERS THEN
61724        xla_exceptions_pkg.raise_message
61725            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_113');
61726 END AcctLineType_113;
61727 --
61728 
61729 ---------------------------------------
61730 --
61731 -- PRIVATE FUNCTION
61732 --         AcctLineType_114
61733 --
61734 ---------------------------------------
61735 PROCEDURE AcctLineType_114 (
61736   p_application_id        IN NUMBER
61737  ,p_event_id              IN NUMBER
61738  ,p_calculate_acctd_flag  IN VARCHAR2
61739  ,p_calculate_g_l_flag    IN VARCHAR2
61740  ,p_actual_flag           IN OUT VARCHAR2
61741  ,p_balance_type_code     OUT VARCHAR2
61742  ,p_gain_or_loss_ref      OUT VARCHAR2
61743  
61744 --Cost Management Default Account
61745  , p_source_4            IN NUMBER
61746 --DISTRIBUTION_IDENTIFIER
61747  , p_source_11            IN NUMBER
61748 --Distribution Type
61749  , p_source_12            IN VARCHAR2
61750  , p_source_12_meaning    IN VARCHAR2
61751 --Entered Currency Code
61752  , p_source_15            IN VARCHAR2
61753 --Entered Amount
61754  , p_source_18            IN NUMBER
61755 --Currency Conversion Date
61756  , p_source_19            IN DATE
61757 --Currency Conversion Rate
61758  , p_source_20            IN NUMBER
61759 --Currency Conversion Type
61760  , p_source_21            IN VARCHAR2
61761 --Accounted Amount
61762  , p_source_22            IN NUMBER
61763 --Accounting Line Type
61764  , p_source_24            IN NUMBER
61765 )
61766 IS
61767 
61768 l_component_type              VARCHAR2(80);
61769 l_component_code              VARCHAR2(30);
61770 l_component_type_code         VARCHAR2(1);
61771 l_component_appl_id           INTEGER;
61772 l_amb_context_code            VARCHAR2(30);
61773 l_entity_code                 VARCHAR2(30);
61774 l_event_class_code            VARCHAR2(30);
61775 l_ae_header_id                NUMBER;
61776 l_event_type_code             VARCHAR2(30);
61777 l_line_definition_code        VARCHAR2(30);
61778 l_line_definition_owner_code  VARCHAR2(1);
61779 --
61780 -- adr variables
61781 l_segment                     VARCHAR2(30);
61782 l_ccid                        NUMBER;
61783 l_adr_transaction_coa_id      NUMBER;
61784 l_adr_accounting_coa_id       NUMBER;
61785 l_adr_flexfield_segment_code  VARCHAR2(30);
61786 l_adr_flex_value_set_id       NUMBER;
61787 l_adr_value_type_code         VARCHAR2(30);
61788 l_adr_value_combination_id    NUMBER;
61789 l_adr_value_segment_code      VARCHAR2(30);
61790 
61791 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
61792 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
61793 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
61794 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
61795 
61796 -- 4262811 Variables ------------------------------------------------------------------------------------------
61797 l_entered_amt_idx             NUMBER;
61798 l_accted_amt_idx              NUMBER;
61799 l_acc_rev_flag                VARCHAR2(1);
61800 l_accrual_line_num            NUMBER;
61801 l_tmp_amt                     NUMBER;
61802 l_acc_rev_natural_side_code   VARCHAR2(1);
61803 
61804 l_num_entries                 NUMBER;
61805 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
61806 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
61807 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
61808 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
61809 l_recog_line_1                NUMBER;
61810 l_recog_line_2                NUMBER;
61811 
61812 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
61813 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
61814 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
61815 
61816 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61817 
61818 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
61819 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
61820 
61821 ---------------------------------------------------------------------------------------------------------------
61822 
61823 
61824 --
61825 -- bulk performance
61826 --
61827 l_balance_type_code           VARCHAR2(1);
61828 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
61829 l_log_module                  VARCHAR2(240);
61830 
61831 --
61832 -- Upgrade strategy
61833 --
61834 l_actual_upg_option           VARCHAR2(1);
61835 l_enc_upg_option           VARCHAR2(1);
61836 
61837 --
61838 BEGIN
61839 --
61840 IF g_log_enabled THEN
61841       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_114';
61842 END IF;
61843 --
61844 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61845 
61846       trace
61847          (p_msg      => 'BEGIN of AcctLineType_114'
61848          ,p_level    => C_LEVEL_PROCEDURE
61849          ,p_module   => l_log_module);
61850 
61851 END IF;
61852 --
61853 l_component_type             := 'AMB_JLT';
61854 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
61855 l_component_type_code        := 'S';
61856 l_component_appl_id          :=  707;
61857 l_amb_context_code           := 'DEFAULT';
61858 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
61859 l_event_class_code           := 'USER_DEFINE';
61860 l_event_type_code            := 'UDIR_INTERORG_SHIP';
61861 l_line_definition_owner_code := 'S';
61862 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
61863 --
61864 l_balance_type_code          := 'A';
61865 l_segment                     := NULL;
61866 l_ccid                        := NULL;
61867 l_adr_transaction_coa_id      := NULL;
61868 l_adr_accounting_coa_id       := NULL;
61869 l_adr_flexfield_segment_code  := NULL;
61870 l_adr_flex_value_set_id       := NULL;
61871 l_adr_value_type_code         := NULL;
61872 l_adr_value_combination_id    := NULL;
61873 l_adr_value_segment_code      := NULL;
61874 
61875 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
61876 l_bflow_class_code           := '';    -- 4219869 Business Flow
61877 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
61878 l_budgetary_control_flag     := 'N';
61879 
61880 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
61881 l_bflow_applied_to_amt       := NULL; -- 5132302
61882 l_entered_amt_idx            := NULL;          -- 4262811
61883 l_accted_amt_idx             := NULL;          -- 4262811
61884 l_acc_rev_flag               := NULL;          -- 4262811
61885 l_accrual_line_num           := NULL;          -- 4262811
61886 l_tmp_amt                    := NULL;          -- 4262811
61887 --
61888  
61889 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61890     l_balance_type_code <> 'B' THEN
61891 IF NVL(p_source_24,9E125) =  11
61892  THEN 
61893 
61894    --
61895    XLA_AE_LINES_PKG.SetNewLine;
61896 
61897    p_balance_type_code          := l_balance_type_code;
61898    -- set the flag so later we will know whether the gain loss line needs to be created
61899    
61900    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61901      p_actual_flag :='A';
61902    END IF;
61903 
61904    --
61905    -- bulk performance
61906    --
61907    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61908                                       p_header_num   => 0); -- 4262811
61909    --
61910    -- set accounting line options
61911    --
61912    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61913            p_natural_side_code          => 'D'
61914          , p_gain_or_loss_flag          => 'N'
61915          , p_gl_transfer_mode_code      => 'S'
61916          , p_acct_entry_type_code       => 'A'
61917          , p_switch_side_flag           => 'Y'
61918          , p_merge_duplicate_code       => 'N'
61919          );
61920    --
61921    l_acc_rev_natural_side_code := 'C';  -- 4262811
61922    -- 
61923    --
61924    -- set accounting line type info
61925    --
61926    xla_ae_lines_pkg.SetAcctLineType
61927       (p_component_type             => l_component_type
61928       ,p_event_type_code            => l_event_type_code
61929       ,p_line_definition_owner_code => l_line_definition_owner_code
61930       ,p_line_definition_code       => l_line_definition_code
61931       ,p_accounting_line_code       => l_component_code
61932       ,p_accounting_line_type_code  => l_component_type_code
61933       ,p_accounting_line_appl_id    => l_component_appl_id
61934       ,p_amb_context_code           => l_amb_context_code
61935       ,p_entity_code                => l_entity_code
61936       ,p_event_class_code           => l_event_class_code);
61937    --
61938    -- set accounting class
61939    --
61940    xla_ae_lines_pkg.SetAcctClass(
61941            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
61942          , p_ae_header_id           => l_ae_header_id
61943          );
61944 
61945    --
61946    -- set rounding class
61947    --
61948    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61949                       'INTERORG_TRANSFER_CREDIT';
61950 
61951    --
61952    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61953    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61954    --
61955    -- bulk performance
61956    --
61957    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61958 
61959    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61960       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61961 
61962    -- 4955764
61963    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61964       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61965 
61966    -- 4458381 Public Sector Enh
61967    
61968    --
61969    -- set accounting attributes for the line type
61970    --
61971    l_entered_amt_idx := 3;
61972    l_accted_amt_idx  := 8;
61973    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
61974    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
61975    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
61976    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
61977    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
61978    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
61979    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
61980    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
61981    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
61982    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
61983    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
61984    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
61985    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
61986    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
61987    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
61988    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
61989    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
61990 
61991    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61992    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61993 
61994    ---------------------------------------------------------------------------------------------------------------
61995    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61996    ---------------------------------------------------------------------------------------------------------------
61997    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61998 
61999    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62000    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62001 
62002    IF xla_accounting_cache_pkg.GetValueChar
62003          (p_source_code         => 'LEDGER_CATEGORY_CODE'
62004          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
62005    AND l_bflow_method_code = 'PRIOR_ENTRY'
62006 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
62007    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
62008          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
62009        )
62010    THEN
62011          xla_ae_lines_pkg.BflowUpgEntry
62012            (p_business_method_code    => l_bflow_method_code
62013            ,p_business_class_code     => l_bflow_class_code
62014            ,p_balance_type            => l_balance_type_code);
62015    ELSE
62016       NULL;
62017 -- No business flow processing for business flow method of NONE.
62018    END IF;
62019 
62020    --
62021    -- call analytical criteria
62022    --
62023    
62024    --
62025    -- call description
62026    --
62027    -- No description or it is inherited.
62028    --
62029    -- call ADRs
62030    -- Bug 4922099
62031    --
62032    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62033         (NVL(l_actual_upg_option, 'N') = 'O') OR
62034         (NVL(l_enc_upg_option, 'N') = 'O')
62035       )
62036    THEN
62037    NULL;
62038    --
62039    --
62040    
62041   l_ccid := AcctDerRule_4(
62042            p_application_id           => p_application_id
62043          , p_ae_header_id             => l_ae_header_id 
62044 , p_source_4 => p_source_4
62045          , x_transaction_coa_id       => l_adr_transaction_coa_id
62046          , x_accounting_coa_id        => l_adr_accounting_coa_id
62047          , x_value_type_code          => l_adr_value_type_code
62048          , p_side                     => 'NA'
62049    );
62050 
62051    xla_ae_lines_pkg.set_ccid(
62052     p_code_combination_id          => l_ccid
62053   , p_value_type_code              => l_adr_value_type_code
62054   , p_transaction_coa_id           => l_adr_transaction_coa_id
62055   , p_accounting_coa_id            => l_adr_accounting_coa_id
62056   , p_adr_code                     => 'CST_DEFAULT'
62057   , p_adr_type_code                => 'S'
62058   , p_component_type               => l_component_type
62059   , p_component_code               => l_component_code
62060   , p_component_type_code          => l_component_type_code
62061   , p_component_appl_id            => l_component_appl_id
62062   , p_amb_context_code             => l_amb_context_code
62063   , p_side                         => 'NA'
62064   );
62065 
62066 
62067    --
62068    --
62069    END IF;
62070    --
62071    -- Bug 4922099
62072    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
62073           (NVL(l_enc_upg_option, 'N') = 'O')
62074         ) AND
62075         (l_bflow_method_code = 'PRIOR_ENTRY')
62076       )
62077    THEN
62078       IF
62079       --
62080       1 = 2
62081       --
62082       THEN
62083       xla_accounting_err_pkg.build_message
62084                                     (p_appli_s_name            => 'XLA'
62085                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62086                                     ,p_token_1                 => 'LINE_NUMBER'
62087                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
62088                                     ,p_token_2                 => 'LINE_TYPE_NAME'
62089                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
62090                                                                              l_component_type
62091                                                                             ,l_component_code
62092                                                                             ,l_component_type_code
62093                                                                             ,l_component_appl_id
62094                                                                             ,l_amb_context_code
62095                                                                             ,l_entity_code
62096                                                                             ,l_event_class_code
62097                                                                            )
62098                                     ,p_token_3                 => 'OWNER'
62099                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
62100                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
62101                                                                           ,p_lookup_code    => l_component_type_code
62102                                                                          )
62103                                     ,p_token_4                 => 'PRODUCT_NAME'
62104                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62105                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62106                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62107                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62108                                     ,p_ae_header_id            =>  NULL
62109                                        );
62110 
62111         IF (C_LEVEL_ERROR>= g_log_level) THEN
62112                  trace
62113                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62114                       ,p_level    => C_LEVEL_ERROR
62115                       ,p_module   => l_log_module);
62116         END IF;
62117       END IF;
62118    END IF;
62119    --
62120    --
62121    ------------------------------------------------------------------------------------------------
62122    -- 4219869 Business Flow
62123    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62124    -- Prior Entry.  Currently, the following code is always generated.
62125    ------------------------------------------------------------------------------------------------
62126    XLA_AE_LINES_PKG.ValidateCurrentLine;
62127 
62128    ------------------------------------------------------------------------------------
62129    -- 4219869 Business Flow
62130    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62131    ------------------------------------------------------------------------------------
62132    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62133 
62134    ----------------------------------------------------------------------------------
62135    -- 4219869 Business Flow
62136    -- Update journal entry status -- Need to generate this within IF <condition>
62137    ----------------------------------------------------------------------------------
62138    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62139          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62140          ,p_balance_type_code => l_balance_type_code
62141          );
62142 
62143    -------------------------------------------------------------------------------------------
62144    -- 4262811 - Generate the Accrual Reversal lines
62145    -------------------------------------------------------------------------------------------
62146    BEGIN
62147       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62148                               (g_array_event(p_event_id).array_value_num('header_index'));
62149       IF l_acc_rev_flag IS NULL THEN
62150          l_acc_rev_flag := 'N';
62151       END IF;
62152    EXCEPTION
62153       WHEN OTHERS THEN
62154          l_acc_rev_flag := 'N';
62155    END;
62156    --
62157    IF (l_acc_rev_flag = 'Y') THEN
62158 
62159        -- 4645092  ------------------------------------------------------------------------------
62160        -- To allow MPA report to determine if it should generate report process
62161        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62162        ------------------------------------------------------------------------------------------
62163 
62164        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62165        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62166    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
62167    -- call ADRs
62168    -- Bug 4922099
62169    --
62170    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62171         (NVL(l_actual_upg_option, 'N') = 'O') OR
62172         (NVL(l_enc_upg_option, 'N') = 'O')
62173       )
62174    THEN
62175    NULL;
62176    --
62177    --
62178    
62179   l_ccid := AcctDerRule_4(
62180            p_application_id           => p_application_id
62181          , p_ae_header_id             => l_ae_header_id 
62182 , p_source_4 => p_source_4
62183          , x_transaction_coa_id       => l_adr_transaction_coa_id
62184          , x_accounting_coa_id        => l_adr_accounting_coa_id
62185          , x_value_type_code          => l_adr_value_type_code
62186          , p_side                     => 'NA'
62187    );
62188 
62189    xla_ae_lines_pkg.set_ccid(
62190     p_code_combination_id          => l_ccid
62191   , p_value_type_code              => l_adr_value_type_code
62192   , p_transaction_coa_id           => l_adr_transaction_coa_id
62193   , p_accounting_coa_id            => l_adr_accounting_coa_id
62194   , p_adr_code                     => 'CST_DEFAULT'
62195   , p_adr_type_code                => 'S'
62196   , p_component_type               => l_component_type
62197   , p_component_code               => l_component_code
62198   , p_component_type_code          => l_component_type_code
62199   , p_component_appl_id            => l_component_appl_id
62200   , p_amb_context_code             => l_amb_context_code
62201   , p_side                         => 'NA'
62202   );
62203 
62204 
62205    --
62206    --
62207    END IF;
62208 
62209        --
62210        -- Update the line information that should be overwritten
62211        --
62212        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62213                                          p_header_num   => 1);
62214        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
62215 
62216        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62217 
62218        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
62219           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62220        END IF;
62221 
62222       --
62223       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62224       --
62225       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62226           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
62227       ELSE
62228           ---------------------------------------------------------------------------------------------------
62229           -- 4262811a Switch Sign
62230           ---------------------------------------------------------------------------------------------------
62231           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
62232           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62233                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62234           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62235                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62236           -- 5132302
62237           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62238                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62239 
62240       END IF;
62241 
62242       -- 4955764
62243       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62244       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62245 
62246 
62247       XLA_AE_LINES_PKG.ValidateCurrentLine;
62248       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62249 
62250       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62251                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62252                ,p_balance_type_code => l_balance_type_code);
62253 
62254    END IF;
62255 
62256    -----------------------------------------------------------------------------------------
62257    -- 4262811 Multiperiod Accounting
62258    -----------------------------------------------------------------------------------------
62259      -- No MPA option is assigned.
62260 
62261 
62262 END IF;
62263 END IF;
62264 --
62265 
62266 --
62267 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62268    trace
62269       (p_msg      => 'END of AcctLineType_114'
62270       ,p_level    => C_LEVEL_PROCEDURE
62271       ,p_module   => l_log_module);
62272 END IF;
62273 --
62274 EXCEPTION
62275   WHEN xla_exceptions_pkg.application_exception THEN
62276       RAISE;
62277   WHEN OTHERS THEN
62278        xla_exceptions_pkg.raise_message
62279            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_114');
62280 END AcctLineType_114;
62281 --
62282 
62283 ---------------------------------------
62284 --
62285 -- PRIVATE FUNCTION
62286 --         AcctLineType_115
62287 --
62288 ---------------------------------------
62289 PROCEDURE AcctLineType_115 (
62290   p_application_id        IN NUMBER
62291  ,p_event_id              IN NUMBER
62292  ,p_calculate_acctd_flag  IN VARCHAR2
62293  ,p_calculate_g_l_flag    IN VARCHAR2
62294  ,p_actual_flag           IN OUT VARCHAR2
62295  ,p_balance_type_code     OUT VARCHAR2
62296  ,p_gain_or_loss_ref      OUT VARCHAR2
62297  
62298 --Cost Management Default Account
62299  , p_source_4            IN NUMBER
62300 --DISTRIBUTION_IDENTIFIER
62301  , p_source_11            IN NUMBER
62302 --Distribution Type
62303  , p_source_12            IN VARCHAR2
62304  , p_source_12_meaning    IN VARCHAR2
62305 --Entered Currency Code
62306  , p_source_15            IN VARCHAR2
62307 --Entered Amount
62308  , p_source_18            IN NUMBER
62309 --Currency Conversion Date
62310  , p_source_19            IN DATE
62311 --Currency Conversion Rate
62312  , p_source_20            IN NUMBER
62313 --Currency Conversion Type
62314  , p_source_21            IN VARCHAR2
62315 --Accounted Amount
62316  , p_source_22            IN NUMBER
62317 --Accounting Line Type
62318  , p_source_24            IN NUMBER
62319 )
62320 IS
62321 
62322 l_component_type              VARCHAR2(80);
62323 l_component_code              VARCHAR2(30);
62324 l_component_type_code         VARCHAR2(1);
62325 l_component_appl_id           INTEGER;
62326 l_amb_context_code            VARCHAR2(30);
62327 l_entity_code                 VARCHAR2(30);
62328 l_event_class_code            VARCHAR2(30);
62329 l_ae_header_id                NUMBER;
62330 l_event_type_code             VARCHAR2(30);
62331 l_line_definition_code        VARCHAR2(30);
62332 l_line_definition_owner_code  VARCHAR2(1);
62333 --
62334 -- adr variables
62335 l_segment                     VARCHAR2(30);
62336 l_ccid                        NUMBER;
62337 l_adr_transaction_coa_id      NUMBER;
62338 l_adr_accounting_coa_id       NUMBER;
62339 l_adr_flexfield_segment_code  VARCHAR2(30);
62340 l_adr_flex_value_set_id       NUMBER;
62341 l_adr_value_type_code         VARCHAR2(30);
62342 l_adr_value_combination_id    NUMBER;
62343 l_adr_value_segment_code      VARCHAR2(30);
62344 
62345 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
62346 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
62347 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
62348 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
62349 
62350 -- 4262811 Variables ------------------------------------------------------------------------------------------
62351 l_entered_amt_idx             NUMBER;
62352 l_accted_amt_idx              NUMBER;
62353 l_acc_rev_flag                VARCHAR2(1);
62354 l_accrual_line_num            NUMBER;
62355 l_tmp_amt                     NUMBER;
62356 l_acc_rev_natural_side_code   VARCHAR2(1);
62357 
62358 l_num_entries                 NUMBER;
62359 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
62360 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
62361 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
62362 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
62363 l_recog_line_1                NUMBER;
62364 l_recog_line_2                NUMBER;
62365 
62366 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
62367 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
62368 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
62369 
62370 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62371 
62372 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
62373 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
62374 
62375 ---------------------------------------------------------------------------------------------------------------
62376 
62377 
62378 --
62379 -- bulk performance
62380 --
62381 l_balance_type_code           VARCHAR2(1);
62382 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
62383 l_log_module                  VARCHAR2(240);
62384 
62385 --
62386 -- Upgrade strategy
62387 --
62388 l_actual_upg_option           VARCHAR2(1);
62389 l_enc_upg_option           VARCHAR2(1);
62390 
62391 --
62392 BEGIN
62393 --
62394 IF g_log_enabled THEN
62395       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_115';
62396 END IF;
62397 --
62398 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62399 
62400       trace
62401          (p_msg      => 'BEGIN of AcctLineType_115'
62402          ,p_level    => C_LEVEL_PROCEDURE
62403          ,p_module   => l_log_module);
62404 
62405 END IF;
62406 --
62407 l_component_type             := 'AMB_JLT';
62408 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
62409 l_component_type_code        := 'S';
62410 l_component_appl_id          :=  707;
62411 l_amb_context_code           := 'DEFAULT';
62412 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
62413 l_event_class_code           := 'USER_DEFINE';
62414 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_TP';
62415 l_line_definition_owner_code := 'S';
62416 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_TP';
62417 --
62418 l_balance_type_code          := 'A';
62419 l_segment                     := NULL;
62420 l_ccid                        := NULL;
62421 l_adr_transaction_coa_id      := NULL;
62422 l_adr_accounting_coa_id       := NULL;
62423 l_adr_flexfield_segment_code  := NULL;
62424 l_adr_flex_value_set_id       := NULL;
62425 l_adr_value_type_code         := NULL;
62426 l_adr_value_combination_id    := NULL;
62427 l_adr_value_segment_code      := NULL;
62428 
62429 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
62430 l_bflow_class_code           := '';    -- 4219869 Business Flow
62431 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
62432 l_budgetary_control_flag     := 'N';
62433 
62434 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
62435 l_bflow_applied_to_amt       := NULL; -- 5132302
62436 l_entered_amt_idx            := NULL;          -- 4262811
62437 l_accted_amt_idx             := NULL;          -- 4262811
62438 l_acc_rev_flag               := NULL;          -- 4262811
62439 l_accrual_line_num           := NULL;          -- 4262811
62440 l_tmp_amt                    := NULL;          -- 4262811
62441 --
62442  
62443 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62444     l_balance_type_code <> 'B' THEN
62445 IF NVL(p_source_24,9E125) =  11
62446  THEN 
62447 
62448    --
62449    XLA_AE_LINES_PKG.SetNewLine;
62450 
62451    p_balance_type_code          := l_balance_type_code;
62452    -- set the flag so later we will know whether the gain loss line needs to be created
62453    
62454    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
62455      p_actual_flag :='A';
62456    END IF;
62457 
62458    --
62459    -- bulk performance
62460    --
62461    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
62462                                       p_header_num   => 0); -- 4262811
62463    --
62464    -- set accounting line options
62465    --
62466    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
62467            p_natural_side_code          => 'D'
62468          , p_gain_or_loss_flag          => 'N'
62469          , p_gl_transfer_mode_code      => 'S'
62470          , p_acct_entry_type_code       => 'A'
62471          , p_switch_side_flag           => 'Y'
62472          , p_merge_duplicate_code       => 'N'
62473          );
62474    --
62475    l_acc_rev_natural_side_code := 'C';  -- 4262811
62476    -- 
62477    --
62478    -- set accounting line type info
62479    --
62480    xla_ae_lines_pkg.SetAcctLineType
62481       (p_component_type             => l_component_type
62482       ,p_event_type_code            => l_event_type_code
62483       ,p_line_definition_owner_code => l_line_definition_owner_code
62484       ,p_line_definition_code       => l_line_definition_code
62485       ,p_accounting_line_code       => l_component_code
62486       ,p_accounting_line_type_code  => l_component_type_code
62487       ,p_accounting_line_appl_id    => l_component_appl_id
62488       ,p_amb_context_code           => l_amb_context_code
62489       ,p_entity_code                => l_entity_code
62490       ,p_event_class_code           => l_event_class_code);
62491    --
62492    -- set accounting class
62493    --
62494    xla_ae_lines_pkg.SetAcctClass(
62495            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
62496          , p_ae_header_id           => l_ae_header_id
62497          );
62498 
62499    --
62500    -- set rounding class
62501    --
62502    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
62503                       'INTERORG_TRANSFER_CREDIT';
62504 
62505    --
62506    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
62507    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
62508    --
62509    -- bulk performance
62510    --
62511    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
62512 
62513    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
62514       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
62515 
62516    -- 4955764
62517    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62518       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
62519 
62520    -- 4458381 Public Sector Enh
62521    
62522    --
62523    -- set accounting attributes for the line type
62524    --
62525    l_entered_amt_idx := 3;
62526    l_accted_amt_idx  := 8;
62527    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
62528    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
62529    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
62530    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
62531    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
62532    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
62533    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
62534    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
62535    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
62536    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
62537    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
62538    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
62539    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
62540    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
62541    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
62542    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
62543    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
62544 
62545    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
62546    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
62547 
62548    ---------------------------------------------------------------------------------------------------------------
62549    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
62550    ---------------------------------------------------------------------------------------------------------------
62551    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
62552 
62553    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62554    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62555 
62556    IF xla_accounting_cache_pkg.GetValueChar
62557          (p_source_code         => 'LEDGER_CATEGORY_CODE'
62558          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
62559    AND l_bflow_method_code = 'PRIOR_ENTRY'
62560 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
62561    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
62562          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
62563        )
62564    THEN
62565          xla_ae_lines_pkg.BflowUpgEntry
62566            (p_business_method_code    => l_bflow_method_code
62567            ,p_business_class_code     => l_bflow_class_code
62568            ,p_balance_type            => l_balance_type_code);
62569    ELSE
62570       NULL;
62571 -- No business flow processing for business flow method of NONE.
62572    END IF;
62573 
62574    --
62575    -- call analytical criteria
62576    --
62577    
62578    --
62579    -- call description
62580    --
62581    -- No description or it is inherited.
62582    --
62583    -- call ADRs
62584    -- Bug 4922099
62585    --
62586    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62587         (NVL(l_actual_upg_option, 'N') = 'O') OR
62588         (NVL(l_enc_upg_option, 'N') = 'O')
62589       )
62590    THEN
62591    NULL;
62592    --
62593    --
62594    
62595   l_ccid := AcctDerRule_4(
62596            p_application_id           => p_application_id
62597          , p_ae_header_id             => l_ae_header_id 
62598 , p_source_4 => p_source_4
62599          , x_transaction_coa_id       => l_adr_transaction_coa_id
62600          , x_accounting_coa_id        => l_adr_accounting_coa_id
62601          , x_value_type_code          => l_adr_value_type_code
62602          , p_side                     => 'NA'
62603    );
62604 
62605    xla_ae_lines_pkg.set_ccid(
62606     p_code_combination_id          => l_ccid
62607   , p_value_type_code              => l_adr_value_type_code
62608   , p_transaction_coa_id           => l_adr_transaction_coa_id
62609   , p_accounting_coa_id            => l_adr_accounting_coa_id
62610   , p_adr_code                     => 'CST_DEFAULT'
62611   , p_adr_type_code                => 'S'
62612   , p_component_type               => l_component_type
62613   , p_component_code               => l_component_code
62614   , p_component_type_code          => l_component_type_code
62615   , p_component_appl_id            => l_component_appl_id
62616   , p_amb_context_code             => l_amb_context_code
62617   , p_side                         => 'NA'
62618   );
62619 
62620 
62621    --
62622    --
62623    END IF;
62624    --
62625    -- Bug 4922099
62626    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
62627           (NVL(l_enc_upg_option, 'N') = 'O')
62628         ) AND
62629         (l_bflow_method_code = 'PRIOR_ENTRY')
62630       )
62631    THEN
62632       IF
62633       --
62634       1 = 2
62635       --
62636       THEN
62637       xla_accounting_err_pkg.build_message
62638                                     (p_appli_s_name            => 'XLA'
62639                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62640                                     ,p_token_1                 => 'LINE_NUMBER'
62641                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
62642                                     ,p_token_2                 => 'LINE_TYPE_NAME'
62643                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
62644                                                                              l_component_type
62645                                                                             ,l_component_code
62646                                                                             ,l_component_type_code
62647                                                                             ,l_component_appl_id
62648                                                                             ,l_amb_context_code
62649                                                                             ,l_entity_code
62650                                                                             ,l_event_class_code
62651                                                                            )
62652                                     ,p_token_3                 => 'OWNER'
62653                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
62654                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
62655                                                                           ,p_lookup_code    => l_component_type_code
62656                                                                          )
62657                                     ,p_token_4                 => 'PRODUCT_NAME'
62658                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62659                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62660                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62661                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62662                                     ,p_ae_header_id            =>  NULL
62663                                        );
62664 
62665         IF (C_LEVEL_ERROR>= g_log_level) THEN
62666                  trace
62667                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62668                       ,p_level    => C_LEVEL_ERROR
62669                       ,p_module   => l_log_module);
62670         END IF;
62671       END IF;
62672    END IF;
62673    --
62674    --
62675    ------------------------------------------------------------------------------------------------
62676    -- 4219869 Business Flow
62677    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62678    -- Prior Entry.  Currently, the following code is always generated.
62679    ------------------------------------------------------------------------------------------------
62680    XLA_AE_LINES_PKG.ValidateCurrentLine;
62681 
62682    ------------------------------------------------------------------------------------
62683    -- 4219869 Business Flow
62684    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62685    ------------------------------------------------------------------------------------
62686    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62687 
62688    ----------------------------------------------------------------------------------
62689    -- 4219869 Business Flow
62690    -- Update journal entry status -- Need to generate this within IF <condition>
62691    ----------------------------------------------------------------------------------
62692    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62693          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62694          ,p_balance_type_code => l_balance_type_code
62695          );
62696 
62697    -------------------------------------------------------------------------------------------
62698    -- 4262811 - Generate the Accrual Reversal lines
62699    -------------------------------------------------------------------------------------------
62700    BEGIN
62701       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62702                               (g_array_event(p_event_id).array_value_num('header_index'));
62703       IF l_acc_rev_flag IS NULL THEN
62704          l_acc_rev_flag := 'N';
62705       END IF;
62706    EXCEPTION
62707       WHEN OTHERS THEN
62708          l_acc_rev_flag := 'N';
62709    END;
62710    --
62711    IF (l_acc_rev_flag = 'Y') THEN
62712 
62713        -- 4645092  ------------------------------------------------------------------------------
62714        -- To allow MPA report to determine if it should generate report process
62715        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62716        ------------------------------------------------------------------------------------------
62717 
62718        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62719        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62720    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
62721    -- call ADRs
62722    -- Bug 4922099
62723    --
62724    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62725         (NVL(l_actual_upg_option, 'N') = 'O') OR
62726         (NVL(l_enc_upg_option, 'N') = 'O')
62727       )
62728    THEN
62729    NULL;
62730    --
62731    --
62732    
62733   l_ccid := AcctDerRule_4(
62734            p_application_id           => p_application_id
62735          , p_ae_header_id             => l_ae_header_id 
62736 , p_source_4 => p_source_4
62737          , x_transaction_coa_id       => l_adr_transaction_coa_id
62738          , x_accounting_coa_id        => l_adr_accounting_coa_id
62739          , x_value_type_code          => l_adr_value_type_code
62740          , p_side                     => 'NA'
62741    );
62742 
62743    xla_ae_lines_pkg.set_ccid(
62744     p_code_combination_id          => l_ccid
62745   , p_value_type_code              => l_adr_value_type_code
62746   , p_transaction_coa_id           => l_adr_transaction_coa_id
62747   , p_accounting_coa_id            => l_adr_accounting_coa_id
62748   , p_adr_code                     => 'CST_DEFAULT'
62749   , p_adr_type_code                => 'S'
62750   , p_component_type               => l_component_type
62751   , p_component_code               => l_component_code
62752   , p_component_type_code          => l_component_type_code
62753   , p_component_appl_id            => l_component_appl_id
62754   , p_amb_context_code             => l_amb_context_code
62755   , p_side                         => 'NA'
62756   );
62757 
62758 
62759    --
62760    --
62761    END IF;
62762 
62763        --
62764        -- Update the line information that should be overwritten
62765        --
62766        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62767                                          p_header_num   => 1);
62768        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
62769 
62770        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62771 
62772        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
62773           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62774        END IF;
62775 
62776       --
62777       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62778       --
62779       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62780           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
62781       ELSE
62782           ---------------------------------------------------------------------------------------------------
62783           -- 4262811a Switch Sign
62784           ---------------------------------------------------------------------------------------------------
62785           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
62786           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62787                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62788           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62789                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62790           -- 5132302
62791           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62792                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62793 
62794       END IF;
62795 
62796       -- 4955764
62797       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62798       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62799 
62800 
62801       XLA_AE_LINES_PKG.ValidateCurrentLine;
62802       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62803 
62804       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62805                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62806                ,p_balance_type_code => l_balance_type_code);
62807 
62808    END IF;
62809 
62810    -----------------------------------------------------------------------------------------
62811    -- 4262811 Multiperiod Accounting
62812    -----------------------------------------------------------------------------------------
62813      -- No MPA option is assigned.
62814 
62815 
62816 END IF;
62817 END IF;
62818 --
62819 
62820 --
62821 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62822    trace
62823       (p_msg      => 'END of AcctLineType_115'
62824       ,p_level    => C_LEVEL_PROCEDURE
62825       ,p_module   => l_log_module);
62826 END IF;
62827 --
62828 EXCEPTION
62829   WHEN xla_exceptions_pkg.application_exception THEN
62830       RAISE;
62831   WHEN OTHERS THEN
62832        xla_exceptions_pkg.raise_message
62833            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_115');
62834 END AcctLineType_115;
62835 --
62836 
62837 ---------------------------------------
62838 --
62839 -- PRIVATE FUNCTION
62840 --         AcctLineType_116
62841 --
62842 ---------------------------------------
62843 PROCEDURE AcctLineType_116 (
62844   p_application_id        IN NUMBER
62845  ,p_event_id              IN NUMBER
62846  ,p_calculate_acctd_flag  IN VARCHAR2
62847  ,p_calculate_g_l_flag    IN VARCHAR2
62848  ,p_actual_flag           IN OUT VARCHAR2
62849  ,p_balance_type_code     OUT VARCHAR2
62850  ,p_gain_or_loss_ref      OUT VARCHAR2
62851  
62852 --Cost Management Default Account
62853  , p_source_4            IN NUMBER
62854 --DISTRIBUTION_IDENTIFIER
62855  , p_source_11            IN NUMBER
62856 --Distribution Type
62857  , p_source_12            IN VARCHAR2
62858  , p_source_12_meaning    IN VARCHAR2
62859 --Entered Currency Code
62860  , p_source_15            IN VARCHAR2
62861 --Entered Amount
62862  , p_source_18            IN NUMBER
62863 --Currency Conversion Date
62864  , p_source_19            IN DATE
62865 --Currency Conversion Rate
62866  , p_source_20            IN NUMBER
62867 --Currency Conversion Type
62868  , p_source_21            IN VARCHAR2
62869 --Accounted Amount
62870  , p_source_22            IN NUMBER
62871 --Accounting Line Type
62872  , p_source_24            IN NUMBER
62873 )
62874 IS
62875 
62876 l_component_type              VARCHAR2(80);
62877 l_component_code              VARCHAR2(30);
62878 l_component_type_code         VARCHAR2(1);
62879 l_component_appl_id           INTEGER;
62880 l_amb_context_code            VARCHAR2(30);
62881 l_entity_code                 VARCHAR2(30);
62882 l_event_class_code            VARCHAR2(30);
62883 l_ae_header_id                NUMBER;
62884 l_event_type_code             VARCHAR2(30);
62885 l_line_definition_code        VARCHAR2(30);
62886 l_line_definition_owner_code  VARCHAR2(1);
62887 --
62888 -- adr variables
62889 l_segment                     VARCHAR2(30);
62890 l_ccid                        NUMBER;
62891 l_adr_transaction_coa_id      NUMBER;
62892 l_adr_accounting_coa_id       NUMBER;
62893 l_adr_flexfield_segment_code  VARCHAR2(30);
62894 l_adr_flex_value_set_id       NUMBER;
62895 l_adr_value_type_code         VARCHAR2(30);
62896 l_adr_value_combination_id    NUMBER;
62897 l_adr_value_segment_code      VARCHAR2(30);
62898 
62899 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
62900 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
62901 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
62902 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
62903 
62904 -- 4262811 Variables ------------------------------------------------------------------------------------------
62905 l_entered_amt_idx             NUMBER;
62906 l_accted_amt_idx              NUMBER;
62907 l_acc_rev_flag                VARCHAR2(1);
62908 l_accrual_line_num            NUMBER;
62909 l_tmp_amt                     NUMBER;
62910 l_acc_rev_natural_side_code   VARCHAR2(1);
62911 
62912 l_num_entries                 NUMBER;
62913 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
62914 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
62915 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
62916 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
62917 l_recog_line_1                NUMBER;
62918 l_recog_line_2                NUMBER;
62919 
62920 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
62921 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
62922 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
62923 
62924 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62925 
62926 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
62927 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
62928 
62929 ---------------------------------------------------------------------------------------------------------------
62930 
62931 
62932 --
62933 -- bulk performance
62934 --
62935 l_balance_type_code           VARCHAR2(1);
62936 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
62937 l_log_module                  VARCHAR2(240);
62938 
62939 --
62940 -- Upgrade strategy
62941 --
62942 l_actual_upg_option           VARCHAR2(1);
62943 l_enc_upg_option           VARCHAR2(1);
62944 
62945 --
62946 BEGIN
62947 --
62948 IF g_log_enabled THEN
62949       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_116';
62950 END IF;
62951 --
62952 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62953 
62954       trace
62955          (p_msg      => 'BEGIN of AcctLineType_116'
62956          ,p_level    => C_LEVEL_PROCEDURE
62957          ,p_module   => l_log_module);
62958 
62959 END IF;
62960 --
62961 l_component_type             := 'AMB_JLT';
62962 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
62963 l_component_type_code        := 'S';
62964 l_component_appl_id          :=  707;
62965 l_amb_context_code           := 'DEFAULT';
62966 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
62967 l_event_class_code           := 'DIR_INTERORG_SHIP';
62968 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
62969 l_line_definition_owner_code := 'S';
62970 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
62971 --
62972 l_balance_type_code          := 'A';
62973 l_segment                     := NULL;
62974 l_ccid                        := NULL;
62975 l_adr_transaction_coa_id      := NULL;
62976 l_adr_accounting_coa_id       := NULL;
62977 l_adr_flexfield_segment_code  := NULL;
62978 l_adr_flex_value_set_id       := NULL;
62979 l_adr_value_type_code         := NULL;
62980 l_adr_value_combination_id    := NULL;
62981 l_adr_value_segment_code      := NULL;
62982 
62983 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
62984 l_bflow_class_code           := '';    -- 4219869 Business Flow
62985 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
62986 l_budgetary_control_flag     := 'N';
62987 
62988 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
62989 l_bflow_applied_to_amt       := NULL; -- 5132302
62990 l_entered_amt_idx            := NULL;          -- 4262811
62991 l_accted_amt_idx             := NULL;          -- 4262811
62992 l_acc_rev_flag               := NULL;          -- 4262811
62993 l_accrual_line_num           := NULL;          -- 4262811
62994 l_tmp_amt                    := NULL;          -- 4262811
62995 --
62996  
62997 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62998     l_balance_type_code <> 'B' THEN
62999 IF NVL(p_source_24,9E125) =  11
63000  THEN 
63001 
63002    --
63003    XLA_AE_LINES_PKG.SetNewLine;
63004 
63005    p_balance_type_code          := l_balance_type_code;
63006    -- set the flag so later we will know whether the gain loss line needs to be created
63007    
63008    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
63009      p_actual_flag :='A';
63010    END IF;
63011 
63012    --
63013    -- bulk performance
63014    --
63015    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
63016                                       p_header_num   => 0); -- 4262811
63017    --
63018    -- set accounting line options
63019    --
63020    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
63021            p_natural_side_code          => 'D'
63022          , p_gain_or_loss_flag          => 'N'
63023          , p_gl_transfer_mode_code      => 'S'
63024          , p_acct_entry_type_code       => 'A'
63025          , p_switch_side_flag           => 'Y'
63026          , p_merge_duplicate_code       => 'N'
63027          );
63028    --
63029    l_acc_rev_natural_side_code := 'C';  -- 4262811
63030    -- 
63031    --
63032    -- set accounting line type info
63033    --
63034    xla_ae_lines_pkg.SetAcctLineType
63035       (p_component_type             => l_component_type
63036       ,p_event_type_code            => l_event_type_code
63037       ,p_line_definition_owner_code => l_line_definition_owner_code
63038       ,p_line_definition_code       => l_line_definition_code
63039       ,p_accounting_line_code       => l_component_code
63040       ,p_accounting_line_type_code  => l_component_type_code
63041       ,p_accounting_line_appl_id    => l_component_appl_id
63042       ,p_amb_context_code           => l_amb_context_code
63043       ,p_entity_code                => l_entity_code
63044       ,p_event_class_code           => l_event_class_code);
63045    --
63046    -- set accounting class
63047    --
63048    xla_ae_lines_pkg.SetAcctClass(
63049            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
63050          , p_ae_header_id           => l_ae_header_id
63051          );
63052 
63053    --
63054    -- set rounding class
63055    --
63056    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
63057                       'INTERORG_TRANSFER_CREDIT';
63058 
63059    --
63060    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
63061    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
63062    --
63063    -- bulk performance
63064    --
63065    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
63066 
63067    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
63068       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
63069 
63070    -- 4955764
63071    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63072       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
63073 
63074    -- 4458381 Public Sector Enh
63075    
63076    --
63077    -- set accounting attributes for the line type
63078    --
63079    l_entered_amt_idx := 3;
63080    l_accted_amt_idx  := 8;
63081    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
63082    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
63083    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
63084    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
63085    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
63086    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
63087    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
63088    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
63089    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
63090    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
63091    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
63092    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
63093    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
63094    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
63095    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
63096    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
63097    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
63098 
63099    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
63100    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
63101 
63102    ---------------------------------------------------------------------------------------------------------------
63103    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63104    ---------------------------------------------------------------------------------------------------------------
63105    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63106 
63107    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63108    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63109 
63110    IF xla_accounting_cache_pkg.GetValueChar
63111          (p_source_code         => 'LEDGER_CATEGORY_CODE'
63112          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63113    AND l_bflow_method_code = 'PRIOR_ENTRY'
63114 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63115    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63116          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63117        )
63118    THEN
63119          xla_ae_lines_pkg.BflowUpgEntry
63120            (p_business_method_code    => l_bflow_method_code
63121            ,p_business_class_code     => l_bflow_class_code
63122            ,p_balance_type            => l_balance_type_code);
63123    ELSE
63124       NULL;
63125 -- No business flow processing for business flow method of NONE.
63126    END IF;
63127 
63128    --
63129    -- call analytical criteria
63130    --
63131    
63132    --
63133    -- call description
63134    --
63135    -- No description or it is inherited.
63136    --
63137    -- call ADRs
63138    -- Bug 4922099
63139    --
63140    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63141         (NVL(l_actual_upg_option, 'N') = 'O') OR
63142         (NVL(l_enc_upg_option, 'N') = 'O')
63143       )
63144    THEN
63145    NULL;
63146    --
63147    --
63148    
63149   l_ccid := AcctDerRule_4(
63150            p_application_id           => p_application_id
63151          , p_ae_header_id             => l_ae_header_id 
63152 , p_source_4 => p_source_4
63153          , x_transaction_coa_id       => l_adr_transaction_coa_id
63154          , x_accounting_coa_id        => l_adr_accounting_coa_id
63155          , x_value_type_code          => l_adr_value_type_code
63156          , p_side                     => 'NA'
63157    );
63158 
63159    xla_ae_lines_pkg.set_ccid(
63160     p_code_combination_id          => l_ccid
63161   , p_value_type_code              => l_adr_value_type_code
63162   , p_transaction_coa_id           => l_adr_transaction_coa_id
63163   , p_accounting_coa_id            => l_adr_accounting_coa_id
63164   , p_adr_code                     => 'CST_DEFAULT'
63165   , p_adr_type_code                => 'S'
63166   , p_component_type               => l_component_type
63167   , p_component_code               => l_component_code
63168   , p_component_type_code          => l_component_type_code
63169   , p_component_appl_id            => l_component_appl_id
63170   , p_amb_context_code             => l_amb_context_code
63171   , p_side                         => 'NA'
63172   );
63173 
63174 
63175    --
63176    --
63177    END IF;
63178    --
63179    -- Bug 4922099
63180    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
63181           (NVL(l_enc_upg_option, 'N') = 'O')
63182         ) AND
63183         (l_bflow_method_code = 'PRIOR_ENTRY')
63184       )
63185    THEN
63186       IF
63187       --
63188       1 = 2
63189       --
63190       THEN
63191       xla_accounting_err_pkg.build_message
63192                                     (p_appli_s_name            => 'XLA'
63193                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63194                                     ,p_token_1                 => 'LINE_NUMBER'
63195                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
63196                                     ,p_token_2                 => 'LINE_TYPE_NAME'
63197                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
63198                                                                              l_component_type
63199                                                                             ,l_component_code
63200                                                                             ,l_component_type_code
63201                                                                             ,l_component_appl_id
63202                                                                             ,l_amb_context_code
63203                                                                             ,l_entity_code
63204                                                                             ,l_event_class_code
63205                                                                            )
63206                                     ,p_token_3                 => 'OWNER'
63207                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
63208                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
63209                                                                           ,p_lookup_code    => l_component_type_code
63210                                                                          )
63211                                     ,p_token_4                 => 'PRODUCT_NAME'
63212                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
63213                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
63214                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
63215                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
63216                                     ,p_ae_header_id            =>  NULL
63217                                        );
63218 
63219         IF (C_LEVEL_ERROR>= g_log_level) THEN
63220                  trace
63221                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63222                       ,p_level    => C_LEVEL_ERROR
63223                       ,p_module   => l_log_module);
63224         END IF;
63225       END IF;
63226    END IF;
63227    --
63228    --
63229    ------------------------------------------------------------------------------------------------
63230    -- 4219869 Business Flow
63231    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
63232    -- Prior Entry.  Currently, the following code is always generated.
63233    ------------------------------------------------------------------------------------------------
63234    XLA_AE_LINES_PKG.ValidateCurrentLine;
63235 
63236    ------------------------------------------------------------------------------------
63237    -- 4219869 Business Flow
63238    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
63239    ------------------------------------------------------------------------------------
63240    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63241 
63242    ----------------------------------------------------------------------------------
63243    -- 4219869 Business Flow
63244    -- Update journal entry status -- Need to generate this within IF <condition>
63245    ----------------------------------------------------------------------------------
63246    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63247          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
63248          ,p_balance_type_code => l_balance_type_code
63249          );
63250 
63251    -------------------------------------------------------------------------------------------
63252    -- 4262811 - Generate the Accrual Reversal lines
63253    -------------------------------------------------------------------------------------------
63254    BEGIN
63255       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
63256                               (g_array_event(p_event_id).array_value_num('header_index'));
63257       IF l_acc_rev_flag IS NULL THEN
63258          l_acc_rev_flag := 'N';
63259       END IF;
63260    EXCEPTION
63261       WHEN OTHERS THEN
63262          l_acc_rev_flag := 'N';
63263    END;
63264    --
63265    IF (l_acc_rev_flag = 'Y') THEN
63266 
63267        -- 4645092  ------------------------------------------------------------------------------
63268        -- To allow MPA report to determine if it should generate report process
63269        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
63270        ------------------------------------------------------------------------------------------
63271 
63272        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
63273        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
63274    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
63275    -- call ADRs
63276    -- Bug 4922099
63277    --
63278    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63279         (NVL(l_actual_upg_option, 'N') = 'O') OR
63280         (NVL(l_enc_upg_option, 'N') = 'O')
63281       )
63282    THEN
63283    NULL;
63284    --
63285    --
63286    
63287   l_ccid := AcctDerRule_4(
63288            p_application_id           => p_application_id
63289          , p_ae_header_id             => l_ae_header_id 
63290 , p_source_4 => p_source_4
63291          , x_transaction_coa_id       => l_adr_transaction_coa_id
63292          , x_accounting_coa_id        => l_adr_accounting_coa_id
63293          , x_value_type_code          => l_adr_value_type_code
63294          , p_side                     => 'NA'
63295    );
63296 
63297    xla_ae_lines_pkg.set_ccid(
63298     p_code_combination_id          => l_ccid
63299   , p_value_type_code              => l_adr_value_type_code
63300   , p_transaction_coa_id           => l_adr_transaction_coa_id
63301   , p_accounting_coa_id            => l_adr_accounting_coa_id
63302   , p_adr_code                     => 'CST_DEFAULT'
63303   , p_adr_type_code                => 'S'
63304   , p_component_type               => l_component_type
63305   , p_component_code               => l_component_code
63306   , p_component_type_code          => l_component_type_code
63307   , p_component_appl_id            => l_component_appl_id
63308   , p_amb_context_code             => l_amb_context_code
63309   , p_side                         => 'NA'
63310   );
63311 
63312 
63313    --
63314    --
63315    END IF;
63316 
63317        --
63318        -- Update the line information that should be overwritten
63319        --
63320        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63321                                          p_header_num   => 1);
63322        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
63323 
63324        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63325 
63326        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
63327           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63328        END IF;
63329 
63330       --
63331       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63332       --
63333       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63334           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
63335       ELSE
63336           ---------------------------------------------------------------------------------------------------
63337           -- 4262811a Switch Sign
63338           ---------------------------------------------------------------------------------------------------
63339           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
63340           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63341                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63342           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63343                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63344           -- 5132302
63345           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63346                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63347 
63348       END IF;
63349 
63350       -- 4955764
63351       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63352       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
63353 
63354 
63355       XLA_AE_LINES_PKG.ValidateCurrentLine;
63356       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63357 
63358       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63359                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
63360                ,p_balance_type_code => l_balance_type_code);
63361 
63362    END IF;
63363 
63364    -----------------------------------------------------------------------------------------
63365    -- 4262811 Multiperiod Accounting
63366    -----------------------------------------------------------------------------------------
63367      -- No MPA option is assigned.
63368 
63369 
63370 END IF;
63371 END IF;
63372 --
63373 
63374 --
63375 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63376    trace
63377       (p_msg      => 'END of AcctLineType_116'
63378       ,p_level    => C_LEVEL_PROCEDURE
63379       ,p_module   => l_log_module);
63380 END IF;
63381 --
63382 EXCEPTION
63383   WHEN xla_exceptions_pkg.application_exception THEN
63384       RAISE;
63385   WHEN OTHERS THEN
63386        xla_exceptions_pkg.raise_message
63387            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_116');
63388 END AcctLineType_116;
63389 --
63390 
63391 ---------------------------------------
63392 --
63393 -- PRIVATE FUNCTION
63394 --         AcctLineType_117
63395 --
63396 ---------------------------------------
63397 PROCEDURE AcctLineType_117 (
63398   p_application_id        IN NUMBER
63399  ,p_event_id              IN NUMBER
63400  ,p_calculate_acctd_flag  IN VARCHAR2
63401  ,p_calculate_g_l_flag    IN VARCHAR2
63402  ,p_actual_flag           IN OUT VARCHAR2
63403  ,p_balance_type_code     OUT VARCHAR2
63404  ,p_gain_or_loss_ref      OUT VARCHAR2
63405  
63406 --Cost Management Default Account
63407  , p_source_4            IN NUMBER
63408 --DISTRIBUTION_IDENTIFIER
63409  , p_source_11            IN NUMBER
63410 --Distribution Type
63411  , p_source_12            IN VARCHAR2
63412  , p_source_12_meaning    IN VARCHAR2
63413 --Entered Currency Code
63414  , p_source_15            IN VARCHAR2
63415 --Entered Amount
63416  , p_source_18            IN NUMBER
63417 --Currency Conversion Date
63418  , p_source_19            IN DATE
63419 --Currency Conversion Rate
63420  , p_source_20            IN NUMBER
63421 --Currency Conversion Type
63422  , p_source_21            IN VARCHAR2
63423 --Accounted Amount
63424  , p_source_22            IN NUMBER
63425 --Accounting Line Type
63426  , p_source_24            IN NUMBER
63427 )
63428 IS
63429 
63430 l_component_type              VARCHAR2(80);
63431 l_component_code              VARCHAR2(30);
63432 l_component_type_code         VARCHAR2(1);
63433 l_component_appl_id           INTEGER;
63434 l_amb_context_code            VARCHAR2(30);
63435 l_entity_code                 VARCHAR2(30);
63436 l_event_class_code            VARCHAR2(30);
63437 l_ae_header_id                NUMBER;
63438 l_event_type_code             VARCHAR2(30);
63439 l_line_definition_code        VARCHAR2(30);
63440 l_line_definition_owner_code  VARCHAR2(1);
63441 --
63442 -- adr variables
63443 l_segment                     VARCHAR2(30);
63444 l_ccid                        NUMBER;
63445 l_adr_transaction_coa_id      NUMBER;
63446 l_adr_accounting_coa_id       NUMBER;
63447 l_adr_flexfield_segment_code  VARCHAR2(30);
63448 l_adr_flex_value_set_id       NUMBER;
63449 l_adr_value_type_code         VARCHAR2(30);
63450 l_adr_value_combination_id    NUMBER;
63451 l_adr_value_segment_code      VARCHAR2(30);
63452 
63453 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
63454 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
63455 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
63456 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
63457 
63458 -- 4262811 Variables ------------------------------------------------------------------------------------------
63459 l_entered_amt_idx             NUMBER;
63460 l_accted_amt_idx              NUMBER;
63461 l_acc_rev_flag                VARCHAR2(1);
63462 l_accrual_line_num            NUMBER;
63463 l_tmp_amt                     NUMBER;
63464 l_acc_rev_natural_side_code   VARCHAR2(1);
63465 
63466 l_num_entries                 NUMBER;
63467 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
63468 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
63469 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
63470 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
63471 l_recog_line_1                NUMBER;
63472 l_recog_line_2                NUMBER;
63473 
63474 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
63475 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
63476 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
63477 
63478 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
63479 
63480 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
63481 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
63482 
63483 ---------------------------------------------------------------------------------------------------------------
63484 
63485 
63486 --
63487 -- bulk performance
63488 --
63489 l_balance_type_code           VARCHAR2(1);
63490 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
63491 l_log_module                  VARCHAR2(240);
63492 
63493 --
63494 -- Upgrade strategy
63495 --
63496 l_actual_upg_option           VARCHAR2(1);
63497 l_enc_upg_option           VARCHAR2(1);
63498 
63499 --
63500 BEGIN
63501 --
63502 IF g_log_enabled THEN
63503       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_117';
63504 END IF;
63505 --
63506 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63507 
63508       trace
63509          (p_msg      => 'BEGIN of AcctLineType_117'
63510          ,p_level    => C_LEVEL_PROCEDURE
63511          ,p_module   => l_log_module);
63512 
63513 END IF;
63514 --
63515 l_component_type             := 'AMB_JLT';
63516 l_component_code             := 'INTRANSIT_VALUATION';
63517 l_component_type_code        := 'S';
63518 l_component_appl_id          :=  707;
63519 l_amb_context_code           := 'DEFAULT';
63520 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
63521 l_event_class_code           := 'USER_DEFINE';
63522 l_event_type_code            := 'UFOB_RCPT_SENDER_SHIP';
63523 l_line_definition_owner_code := 'S';
63524 l_line_definition_code       := 'USER_FOB_RCPT_SENDER_SHIP';
63525 --
63526 l_balance_type_code          := 'A';
63527 l_segment                     := NULL;
63528 l_ccid                        := NULL;
63529 l_adr_transaction_coa_id      := NULL;
63530 l_adr_accounting_coa_id       := NULL;
63531 l_adr_flexfield_segment_code  := NULL;
63532 l_adr_flex_value_set_id       := NULL;
63533 l_adr_value_type_code         := NULL;
63534 l_adr_value_combination_id    := NULL;
63535 l_adr_value_segment_code      := NULL;
63536 
63537 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
63538 l_bflow_class_code           := '';    -- 4219869 Business Flow
63539 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
63540 l_budgetary_control_flag     := 'N';
63541 
63542 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
63543 l_bflow_applied_to_amt       := NULL; -- 5132302
63544 l_entered_amt_idx            := NULL;          -- 4262811
63545 l_accted_amt_idx             := NULL;          -- 4262811
63546 l_acc_rev_flag               := NULL;          -- 4262811
63547 l_accrual_line_num           := NULL;          -- 4262811
63548 l_tmp_amt                    := NULL;          -- 4262811
63549 --
63550  
63551 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
63552     l_balance_type_code <> 'B' THEN
63553 IF NVL(p_source_24,9E125) =  14
63554  THEN 
63555 
63556    --
63557    XLA_AE_LINES_PKG.SetNewLine;
63558 
63559    p_balance_type_code          := l_balance_type_code;
63560    -- set the flag so later we will know whether the gain loss line needs to be created
63561    
63562    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
63563      p_actual_flag :='A';
63564    END IF;
63565 
63566    --
63567    -- bulk performance
63568    --
63569    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
63570                                       p_header_num   => 0); -- 4262811
63571    --
63572    -- set accounting line options
63573    --
63574    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
63575            p_natural_side_code          => 'D'
63576          , p_gain_or_loss_flag          => 'N'
63577          , p_gl_transfer_mode_code      => 'S'
63578          , p_acct_entry_type_code       => 'A'
63579          , p_switch_side_flag           => 'Y'
63580          , p_merge_duplicate_code       => 'N'
63581          );
63582    --
63583    l_acc_rev_natural_side_code := 'C';  -- 4262811
63584    -- 
63585    --
63586    -- set accounting line type info
63587    --
63588    xla_ae_lines_pkg.SetAcctLineType
63589       (p_component_type             => l_component_type
63590       ,p_event_type_code            => l_event_type_code
63591       ,p_line_definition_owner_code => l_line_definition_owner_code
63592       ,p_line_definition_code       => l_line_definition_code
63593       ,p_accounting_line_code       => l_component_code
63594       ,p_accounting_line_type_code  => l_component_type_code
63595       ,p_accounting_line_appl_id    => l_component_appl_id
63596       ,p_amb_context_code           => l_amb_context_code
63597       ,p_entity_code                => l_entity_code
63598       ,p_event_class_code           => l_event_class_code);
63599    --
63600    -- set accounting class
63601    --
63602    xla_ae_lines_pkg.SetAcctClass(
63603            p_accounting_class_code  => 'INTRANSIT_VALUATION'
63604          , p_ae_header_id           => l_ae_header_id
63605          );
63606 
63607    --
63608    -- set rounding class
63609    --
63610    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
63611                       'INTRANSIT_VALUATION';
63612 
63613    --
63614    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
63615    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
63616    --
63617    -- bulk performance
63618    --
63619    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
63620 
63621    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
63622       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
63623 
63624    -- 4955764
63625    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63626       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
63627 
63628    -- 4458381 Public Sector Enh
63629    
63630    --
63631    -- set accounting attributes for the line type
63632    --
63633    l_entered_amt_idx := 3;
63634    l_accted_amt_idx  := 8;
63635    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
63636    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
63637    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
63638    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
63639    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
63640    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
63641    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
63642    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
63643    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
63644    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
63645    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
63646    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
63647    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
63648    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
63649    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
63650    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
63651    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
63652 
63653    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
63654    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
63655 
63656    ---------------------------------------------------------------------------------------------------------------
63657    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63658    ---------------------------------------------------------------------------------------------------------------
63659    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63660 
63661    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63662    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63663 
63664    IF xla_accounting_cache_pkg.GetValueChar
63665          (p_source_code         => 'LEDGER_CATEGORY_CODE'
63666          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63667    AND l_bflow_method_code = 'PRIOR_ENTRY'
63668 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63669    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63670          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63671        )
63672    THEN
63673          xla_ae_lines_pkg.BflowUpgEntry
63674            (p_business_method_code    => l_bflow_method_code
63675            ,p_business_class_code     => l_bflow_class_code
63676            ,p_balance_type            => l_balance_type_code);
63677    ELSE
63678       NULL;
63679 -- No business flow processing for business flow method of NONE.
63680    END IF;
63681 
63682    --
63683    -- call analytical criteria
63684    --
63685    
63686    --
63687    -- call description
63688    --
63689    -- No description or it is inherited.
63690    --
63691    -- call ADRs
63692    -- Bug 4922099
63693    --
63694    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63695         (NVL(l_actual_upg_option, 'N') = 'O') OR
63696         (NVL(l_enc_upg_option, 'N') = 'O')
63697       )
63698    THEN
63699    NULL;
63700    --
63701    --
63702    
63703   l_ccid := AcctDerRule_4(
63704            p_application_id           => p_application_id
63705          , p_ae_header_id             => l_ae_header_id 
63706 , p_source_4 => p_source_4
63707          , x_transaction_coa_id       => l_adr_transaction_coa_id
63708          , x_accounting_coa_id        => l_adr_accounting_coa_id
63709          , x_value_type_code          => l_adr_value_type_code
63710          , p_side                     => 'NA'
63711    );
63712 
63713    xla_ae_lines_pkg.set_ccid(
63714     p_code_combination_id          => l_ccid
63715   , p_value_type_code              => l_adr_value_type_code
63716   , p_transaction_coa_id           => l_adr_transaction_coa_id
63717   , p_accounting_coa_id            => l_adr_accounting_coa_id
63718   , p_adr_code                     => 'CST_DEFAULT'
63719   , p_adr_type_code                => 'S'
63720   , p_component_type               => l_component_type
63721   , p_component_code               => l_component_code
63722   , p_component_type_code          => l_component_type_code
63723   , p_component_appl_id            => l_component_appl_id
63724   , p_amb_context_code             => l_amb_context_code
63725   , p_side                         => 'NA'
63726   );
63727 
63728 
63729    --
63730    --
63731    END IF;
63732    --
63733    -- Bug 4922099
63734    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
63735           (NVL(l_enc_upg_option, 'N') = 'O')
63736         ) AND
63737         (l_bflow_method_code = 'PRIOR_ENTRY')
63738       )
63739    THEN
63740       IF
63741       --
63742       1 = 2
63743       --
63744       THEN
63745       xla_accounting_err_pkg.build_message
63746                                     (p_appli_s_name            => 'XLA'
63747                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63748                                     ,p_token_1                 => 'LINE_NUMBER'
63749                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
63750                                     ,p_token_2                 => 'LINE_TYPE_NAME'
63751                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
63752                                                                              l_component_type
63753                                                                             ,l_component_code
63754                                                                             ,l_component_type_code
63755                                                                             ,l_component_appl_id
63756                                                                             ,l_amb_context_code
63757                                                                             ,l_entity_code
63758                                                                             ,l_event_class_code
63759                                                                            )
63760                                     ,p_token_3                 => 'OWNER'
63761                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
63762                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
63763                                                                           ,p_lookup_code    => l_component_type_code
63764                                                                          )
63765                                     ,p_token_4                 => 'PRODUCT_NAME'
63766                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
63767                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
63768                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
63769                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
63770                                     ,p_ae_header_id            =>  NULL
63771                                        );
63772 
63773         IF (C_LEVEL_ERROR>= g_log_level) THEN
63774                  trace
63775                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63776                       ,p_level    => C_LEVEL_ERROR
63777                       ,p_module   => l_log_module);
63778         END IF;
63779       END IF;
63780    END IF;
63781    --
63782    --
63783    ------------------------------------------------------------------------------------------------
63784    -- 4219869 Business Flow
63785    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
63786    -- Prior Entry.  Currently, the following code is always generated.
63787    ------------------------------------------------------------------------------------------------
63788    XLA_AE_LINES_PKG.ValidateCurrentLine;
63789 
63790    ------------------------------------------------------------------------------------
63791    -- 4219869 Business Flow
63792    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
63793    ------------------------------------------------------------------------------------
63794    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63795 
63796    ----------------------------------------------------------------------------------
63797    -- 4219869 Business Flow
63798    -- Update journal entry status -- Need to generate this within IF <condition>
63799    ----------------------------------------------------------------------------------
63800    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63801          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
63802          ,p_balance_type_code => l_balance_type_code
63803          );
63804 
63805    -------------------------------------------------------------------------------------------
63806    -- 4262811 - Generate the Accrual Reversal lines
63807    -------------------------------------------------------------------------------------------
63808    BEGIN
63809       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
63810                               (g_array_event(p_event_id).array_value_num('header_index'));
63811       IF l_acc_rev_flag IS NULL THEN
63812          l_acc_rev_flag := 'N';
63813       END IF;
63814    EXCEPTION
63815       WHEN OTHERS THEN
63816          l_acc_rev_flag := 'N';
63817    END;
63818    --
63819    IF (l_acc_rev_flag = 'Y') THEN
63820 
63821        -- 4645092  ------------------------------------------------------------------------------
63822        -- To allow MPA report to determine if it should generate report process
63823        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
63824        ------------------------------------------------------------------------------------------
63825 
63826        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
63827        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
63828    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
63829    -- call ADRs
63830    -- Bug 4922099
63831    --
63832    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63833         (NVL(l_actual_upg_option, 'N') = 'O') OR
63834         (NVL(l_enc_upg_option, 'N') = 'O')
63835       )
63836    THEN
63837    NULL;
63838    --
63839    --
63840    
63841   l_ccid := AcctDerRule_4(
63842            p_application_id           => p_application_id
63843          , p_ae_header_id             => l_ae_header_id 
63844 , p_source_4 => p_source_4
63845          , x_transaction_coa_id       => l_adr_transaction_coa_id
63846          , x_accounting_coa_id        => l_adr_accounting_coa_id
63847          , x_value_type_code          => l_adr_value_type_code
63848          , p_side                     => 'NA'
63849    );
63850 
63851    xla_ae_lines_pkg.set_ccid(
63852     p_code_combination_id          => l_ccid
63853   , p_value_type_code              => l_adr_value_type_code
63854   , p_transaction_coa_id           => l_adr_transaction_coa_id
63855   , p_accounting_coa_id            => l_adr_accounting_coa_id
63856   , p_adr_code                     => 'CST_DEFAULT'
63857   , p_adr_type_code                => 'S'
63858   , p_component_type               => l_component_type
63859   , p_component_code               => l_component_code
63860   , p_component_type_code          => l_component_type_code
63861   , p_component_appl_id            => l_component_appl_id
63862   , p_amb_context_code             => l_amb_context_code
63863   , p_side                         => 'NA'
63864   );
63865 
63866 
63867    --
63868    --
63869    END IF;
63870 
63871        --
63872        -- Update the line information that should be overwritten
63873        --
63874        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63875                                          p_header_num   => 1);
63876        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
63877 
63878        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63879 
63880        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
63881           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63882        END IF;
63883 
63884       --
63885       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63886       --
63887       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63888           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
63889       ELSE
63890           ---------------------------------------------------------------------------------------------------
63891           -- 4262811a Switch Sign
63892           ---------------------------------------------------------------------------------------------------
63893           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
63894           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63895                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63896           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63897                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63898           -- 5132302
63899           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63900                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63901 
63902       END IF;
63903 
63904       -- 4955764
63905       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63906       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
63907 
63908 
63909       XLA_AE_LINES_PKG.ValidateCurrentLine;
63910       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63911 
63912       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63913                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
63914                ,p_balance_type_code => l_balance_type_code);
63915 
63916    END IF;
63917 
63918    -----------------------------------------------------------------------------------------
63919    -- 4262811 Multiperiod Accounting
63920    -----------------------------------------------------------------------------------------
63921      -- No MPA option is assigned.
63922 
63923 
63924 END IF;
63925 END IF;
63926 --
63927 
63928 --
63929 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63930    trace
63931       (p_msg      => 'END of AcctLineType_117'
63932       ,p_level    => C_LEVEL_PROCEDURE
63933       ,p_module   => l_log_module);
63934 END IF;
63935 --
63936 EXCEPTION
63937   WHEN xla_exceptions_pkg.application_exception THEN
63938       RAISE;
63939   WHEN OTHERS THEN
63940        xla_exceptions_pkg.raise_message
63941            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_117');
63942 END AcctLineType_117;
63943 --
63944 
63945 ---------------------------------------
63946 --
63947 -- PRIVATE FUNCTION
63948 --         AcctLineType_118
63949 --
63950 ---------------------------------------
63951 PROCEDURE AcctLineType_118 (
63952   p_application_id        IN NUMBER
63953  ,p_event_id              IN NUMBER
63954  ,p_calculate_acctd_flag  IN VARCHAR2
63955  ,p_calculate_g_l_flag    IN VARCHAR2
63956  ,p_actual_flag           IN OUT VARCHAR2
63957  ,p_balance_type_code     OUT VARCHAR2
63958  ,p_gain_or_loss_ref      OUT VARCHAR2
63959  
63960 --Cost Management Default Account
63961  , p_source_4            IN NUMBER
63962 --DISTRIBUTION_IDENTIFIER
63963  , p_source_11            IN NUMBER
63964 --Distribution Type
63965  , p_source_12            IN VARCHAR2
63966  , p_source_12_meaning    IN VARCHAR2
63967 --Entered Currency Code
63968  , p_source_15            IN VARCHAR2
63969 --Entered Amount
63970  , p_source_18            IN NUMBER
63971 --Currency Conversion Date
63972  , p_source_19            IN DATE
63973 --Currency Conversion Rate
63974  , p_source_20            IN NUMBER
63975 --Currency Conversion Type
63976  , p_source_21            IN VARCHAR2
63977 --Accounted Amount
63978  , p_source_22            IN NUMBER
63979 --Accounting Line Type
63980  , p_source_24            IN NUMBER
63981 )
63982 IS
63983 
63984 l_component_type              VARCHAR2(80);
63985 l_component_code              VARCHAR2(30);
63986 l_component_type_code         VARCHAR2(1);
63987 l_component_appl_id           INTEGER;
63988 l_amb_context_code            VARCHAR2(30);
63989 l_entity_code                 VARCHAR2(30);
63990 l_event_class_code            VARCHAR2(30);
63991 l_ae_header_id                NUMBER;
63992 l_event_type_code             VARCHAR2(30);
63993 l_line_definition_code        VARCHAR2(30);
63994 l_line_definition_owner_code  VARCHAR2(1);
63995 --
63996 -- adr variables
63997 l_segment                     VARCHAR2(30);
63998 l_ccid                        NUMBER;
63999 l_adr_transaction_coa_id      NUMBER;
64000 l_adr_accounting_coa_id       NUMBER;
64001 l_adr_flexfield_segment_code  VARCHAR2(30);
64002 l_adr_flex_value_set_id       NUMBER;
64003 l_adr_value_type_code         VARCHAR2(30);
64004 l_adr_value_combination_id    NUMBER;
64005 l_adr_value_segment_code      VARCHAR2(30);
64006 
64007 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
64008 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
64009 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
64010 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
64011 
64012 -- 4262811 Variables ------------------------------------------------------------------------------------------
64013 l_entered_amt_idx             NUMBER;
64014 l_accted_amt_idx              NUMBER;
64015 l_acc_rev_flag                VARCHAR2(1);
64016 l_accrual_line_num            NUMBER;
64017 l_tmp_amt                     NUMBER;
64018 l_acc_rev_natural_side_code   VARCHAR2(1);
64019 
64020 l_num_entries                 NUMBER;
64021 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
64022 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
64023 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
64024 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
64025 l_recog_line_1                NUMBER;
64026 l_recog_line_2                NUMBER;
64027 
64028 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
64029 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
64030 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
64031 
64032 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
64033 
64034 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
64035 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
64036 
64037 ---------------------------------------------------------------------------------------------------------------
64038 
64039 
64040 --
64041 -- bulk performance
64042 --
64043 l_balance_type_code           VARCHAR2(1);
64044 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
64045 l_log_module                  VARCHAR2(240);
64046 
64047 --
64048 -- Upgrade strategy
64049 --
64050 l_actual_upg_option           VARCHAR2(1);
64051 l_enc_upg_option           VARCHAR2(1);
64052 
64053 --
64054 BEGIN
64055 --
64056 IF g_log_enabled THEN
64057       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_118';
64058 END IF;
64059 --
64060 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64061 
64062       trace
64063          (p_msg      => 'BEGIN of AcctLineType_118'
64064          ,p_level    => C_LEVEL_PROCEDURE
64065          ,p_module   => l_log_module);
64066 
64067 END IF;
64068 --
64069 l_component_type             := 'AMB_JLT';
64070 l_component_code             := 'INTRANSIT_VALUATION';
64071 l_component_type_code        := 'S';
64072 l_component_appl_id          :=  707;
64073 l_amb_context_code           := 'DEFAULT';
64074 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
64075 l_event_class_code           := 'USER_DEFINE';
64076 l_event_type_code            := 'UAVG_COST_UPD';
64077 l_line_definition_owner_code := 'S';
64078 l_line_definition_code       := 'USER_COST_UPD';
64079 --
64080 l_balance_type_code          := 'A';
64081 l_segment                     := NULL;
64082 l_ccid                        := NULL;
64083 l_adr_transaction_coa_id      := NULL;
64084 l_adr_accounting_coa_id       := NULL;
64085 l_adr_flexfield_segment_code  := NULL;
64086 l_adr_flex_value_set_id       := NULL;
64087 l_adr_value_type_code         := NULL;
64088 l_adr_value_combination_id    := NULL;
64089 l_adr_value_segment_code      := NULL;
64090 
64091 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
64092 l_bflow_class_code           := '';    -- 4219869 Business Flow
64093 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
64094 l_budgetary_control_flag     := 'N';
64095 
64096 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
64097 l_bflow_applied_to_amt       := NULL; -- 5132302
64098 l_entered_amt_idx            := NULL;          -- 4262811
64099 l_accted_amt_idx             := NULL;          -- 4262811
64100 l_acc_rev_flag               := NULL;          -- 4262811
64101 l_accrual_line_num           := NULL;          -- 4262811
64102 l_tmp_amt                    := NULL;          -- 4262811
64103 --
64104  
64105 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
64106     l_balance_type_code <> 'B' THEN
64107 IF NVL(p_source_24,9E125) =  14
64108  THEN 
64109 
64110    --
64111    XLA_AE_LINES_PKG.SetNewLine;
64112 
64113    p_balance_type_code          := l_balance_type_code;
64114    -- set the flag so later we will know whether the gain loss line needs to be created
64115    
64116    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
64117      p_actual_flag :='A';
64118    END IF;
64119 
64120    --
64121    -- bulk performance
64122    --
64123    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
64124                                       p_header_num   => 0); -- 4262811
64125    --
64126    -- set accounting line options
64127    --
64128    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
64129            p_natural_side_code          => 'D'
64130          , p_gain_or_loss_flag          => 'N'
64131          , p_gl_transfer_mode_code      => 'S'
64132          , p_acct_entry_type_code       => 'A'
64133          , p_switch_side_flag           => 'Y'
64134          , p_merge_duplicate_code       => 'N'
64135          );
64136    --
64137    l_acc_rev_natural_side_code := 'C';  -- 4262811
64138    -- 
64139    --
64140    -- set accounting line type info
64141    --
64142    xla_ae_lines_pkg.SetAcctLineType
64143       (p_component_type             => l_component_type
64144       ,p_event_type_code            => l_event_type_code
64145       ,p_line_definition_owner_code => l_line_definition_owner_code
64146       ,p_line_definition_code       => l_line_definition_code
64147       ,p_accounting_line_code       => l_component_code
64148       ,p_accounting_line_type_code  => l_component_type_code
64149       ,p_accounting_line_appl_id    => l_component_appl_id
64150       ,p_amb_context_code           => l_amb_context_code
64151       ,p_entity_code                => l_entity_code
64152       ,p_event_class_code           => l_event_class_code);
64153    --
64154    -- set accounting class
64155    --
64156    xla_ae_lines_pkg.SetAcctClass(
64157            p_accounting_class_code  => 'INTRANSIT_VALUATION'
64158          , p_ae_header_id           => l_ae_header_id
64159          );
64160 
64161    --
64162    -- set rounding class
64163    --
64164    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
64165                       'INTRANSIT_VALUATION';
64166 
64167    --
64168    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
64169    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
64170    --
64171    -- bulk performance
64172    --
64173    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
64174 
64175    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
64176       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
64177 
64178    -- 4955764
64179    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64180       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
64181 
64182    -- 4458381 Public Sector Enh
64183    
64184    --
64185    -- set accounting attributes for the line type
64186    --
64187    l_entered_amt_idx := 3;
64188    l_accted_amt_idx  := 8;
64189    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
64190    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
64191    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
64192    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
64193    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
64194    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
64195    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
64196    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
64197    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
64198    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
64199    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
64200    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
64201    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
64202    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
64203    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
64204    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
64205    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
64206 
64207    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
64208    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
64209 
64210    ---------------------------------------------------------------------------------------------------------------
64211    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
64212    ---------------------------------------------------------------------------------------------------------------
64213    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
64214 
64215    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64216    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64217 
64218    IF xla_accounting_cache_pkg.GetValueChar
64219          (p_source_code         => 'LEDGER_CATEGORY_CODE'
64220          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
64221    AND l_bflow_method_code = 'PRIOR_ENTRY'
64222 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
64223    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
64224          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
64225        )
64226    THEN
64227          xla_ae_lines_pkg.BflowUpgEntry
64228            (p_business_method_code    => l_bflow_method_code
64229            ,p_business_class_code     => l_bflow_class_code
64230            ,p_balance_type            => l_balance_type_code);
64231    ELSE
64232       NULL;
64233 -- No business flow processing for business flow method of NONE.
64234    END IF;
64235 
64236    --
64237    -- call analytical criteria
64238    --
64239    
64240    --
64241    -- call description
64242    --
64243    -- No description or it is inherited.
64244    --
64245    -- call ADRs
64246    -- Bug 4922099
64247    --
64248    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64249         (NVL(l_actual_upg_option, 'N') = 'O') OR
64250         (NVL(l_enc_upg_option, 'N') = 'O')
64251       )
64252    THEN
64253    NULL;
64254    --
64255    --
64256    
64257   l_ccid := AcctDerRule_4(
64258            p_application_id           => p_application_id
64259          , p_ae_header_id             => l_ae_header_id 
64260 , p_source_4 => p_source_4
64261          , x_transaction_coa_id       => l_adr_transaction_coa_id
64262          , x_accounting_coa_id        => l_adr_accounting_coa_id
64263          , x_value_type_code          => l_adr_value_type_code
64264          , p_side                     => 'NA'
64265    );
64266 
64267    xla_ae_lines_pkg.set_ccid(
64268     p_code_combination_id          => l_ccid
64269   , p_value_type_code              => l_adr_value_type_code
64270   , p_transaction_coa_id           => l_adr_transaction_coa_id
64271   , p_accounting_coa_id            => l_adr_accounting_coa_id
64272   , p_adr_code                     => 'CST_DEFAULT'
64273   , p_adr_type_code                => 'S'
64274   , p_component_type               => l_component_type
64275   , p_component_code               => l_component_code
64276   , p_component_type_code          => l_component_type_code
64277   , p_component_appl_id            => l_component_appl_id
64278   , p_amb_context_code             => l_amb_context_code
64279   , p_side                         => 'NA'
64280   );
64281 
64282 
64283    --
64284    --
64285    END IF;
64286    --
64287    -- Bug 4922099
64288    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
64289           (NVL(l_enc_upg_option, 'N') = 'O')
64290         ) AND
64291         (l_bflow_method_code = 'PRIOR_ENTRY')
64292       )
64293    THEN
64294       IF
64295       --
64296       1 = 2
64297       --
64298       THEN
64299       xla_accounting_err_pkg.build_message
64300                                     (p_appli_s_name            => 'XLA'
64301                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64302                                     ,p_token_1                 => 'LINE_NUMBER'
64303                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
64304                                     ,p_token_2                 => 'LINE_TYPE_NAME'
64305                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
64306                                                                              l_component_type
64307                                                                             ,l_component_code
64308                                                                             ,l_component_type_code
64309                                                                             ,l_component_appl_id
64310                                                                             ,l_amb_context_code
64311                                                                             ,l_entity_code
64312                                                                             ,l_event_class_code
64313                                                                            )
64314                                     ,p_token_3                 => 'OWNER'
64315                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
64316                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
64317                                                                           ,p_lookup_code    => l_component_type_code
64318                                                                          )
64319                                     ,p_token_4                 => 'PRODUCT_NAME'
64320                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
64321                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
64322                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
64323                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
64324                                     ,p_ae_header_id            =>  NULL
64325                                        );
64326 
64327         IF (C_LEVEL_ERROR>= g_log_level) THEN
64328                  trace
64329                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64330                       ,p_level    => C_LEVEL_ERROR
64331                       ,p_module   => l_log_module);
64332         END IF;
64333       END IF;
64334    END IF;
64335    --
64336    --
64337    ------------------------------------------------------------------------------------------------
64338    -- 4219869 Business Flow
64339    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
64340    -- Prior Entry.  Currently, the following code is always generated.
64341    ------------------------------------------------------------------------------------------------
64342    XLA_AE_LINES_PKG.ValidateCurrentLine;
64343 
64344    ------------------------------------------------------------------------------------
64345    -- 4219869 Business Flow
64346    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
64347    ------------------------------------------------------------------------------------
64348    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64349 
64350    ----------------------------------------------------------------------------------
64351    -- 4219869 Business Flow
64352    -- Update journal entry status -- Need to generate this within IF <condition>
64353    ----------------------------------------------------------------------------------
64354    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64355          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
64356          ,p_balance_type_code => l_balance_type_code
64357          );
64358 
64359    -------------------------------------------------------------------------------------------
64360    -- 4262811 - Generate the Accrual Reversal lines
64361    -------------------------------------------------------------------------------------------
64362    BEGIN
64363       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
64364                               (g_array_event(p_event_id).array_value_num('header_index'));
64365       IF l_acc_rev_flag IS NULL THEN
64366          l_acc_rev_flag := 'N';
64367       END IF;
64368    EXCEPTION
64369       WHEN OTHERS THEN
64370          l_acc_rev_flag := 'N';
64371    END;
64372    --
64373    IF (l_acc_rev_flag = 'Y') THEN
64374 
64375        -- 4645092  ------------------------------------------------------------------------------
64376        -- To allow MPA report to determine if it should generate report process
64377        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
64378        ------------------------------------------------------------------------------------------
64379 
64380        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
64381        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
64382    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
64383    -- call ADRs
64384    -- Bug 4922099
64385    --
64386    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64387         (NVL(l_actual_upg_option, 'N') = 'O') OR
64388         (NVL(l_enc_upg_option, 'N') = 'O')
64389       )
64390    THEN
64391    NULL;
64392    --
64393    --
64394    
64395   l_ccid := AcctDerRule_4(
64396            p_application_id           => p_application_id
64397          , p_ae_header_id             => l_ae_header_id 
64398 , p_source_4 => p_source_4
64399          , x_transaction_coa_id       => l_adr_transaction_coa_id
64400          , x_accounting_coa_id        => l_adr_accounting_coa_id
64401          , x_value_type_code          => l_adr_value_type_code
64402          , p_side                     => 'NA'
64403    );
64404 
64405    xla_ae_lines_pkg.set_ccid(
64406     p_code_combination_id          => l_ccid
64407   , p_value_type_code              => l_adr_value_type_code
64408   , p_transaction_coa_id           => l_adr_transaction_coa_id
64409   , p_accounting_coa_id            => l_adr_accounting_coa_id
64410   , p_adr_code                     => 'CST_DEFAULT'
64411   , p_adr_type_code                => 'S'
64412   , p_component_type               => l_component_type
64413   , p_component_code               => l_component_code
64414   , p_component_type_code          => l_component_type_code
64415   , p_component_appl_id            => l_component_appl_id
64416   , p_amb_context_code             => l_amb_context_code
64417   , p_side                         => 'NA'
64418   );
64419 
64420 
64421    --
64422    --
64423    END IF;
64424 
64425        --
64426        -- Update the line information that should be overwritten
64427        --
64428        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
64429                                          p_header_num   => 1);
64430        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
64431 
64432        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
64433 
64434        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
64435           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
64436        END IF;
64437 
64438       --
64439       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
64440       --
64441       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
64442           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
64443       ELSE
64444           ---------------------------------------------------------------------------------------------------
64445           -- 4262811a Switch Sign
64446           ---------------------------------------------------------------------------------------------------
64447           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
64448           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64449                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64450           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64451                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64452           -- 5132302
64453           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
64454                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64455 
64456       END IF;
64457 
64458       -- 4955764
64459       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64460       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
64461 
64462 
64463       XLA_AE_LINES_PKG.ValidateCurrentLine;
64464       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64465 
64466       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64467                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
64468                ,p_balance_type_code => l_balance_type_code);
64469 
64470    END IF;
64471 
64472    -----------------------------------------------------------------------------------------
64473    -- 4262811 Multiperiod Accounting
64474    -----------------------------------------------------------------------------------------
64475      -- No MPA option is assigned.
64476 
64477 
64478 END IF;
64479 END IF;
64480 --
64481 
64482 --
64483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64484    trace
64485       (p_msg      => 'END of AcctLineType_118'
64486       ,p_level    => C_LEVEL_PROCEDURE
64487       ,p_module   => l_log_module);
64488 END IF;
64489 --
64490 EXCEPTION
64491   WHEN xla_exceptions_pkg.application_exception THEN
64492       RAISE;
64493   WHEN OTHERS THEN
64494        xla_exceptions_pkg.raise_message
64495            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_118');
64496 END AcctLineType_118;
64497 --
64498 
64499 ---------------------------------------
64500 --
64501 -- PRIVATE FUNCTION
64502 --         AcctLineType_119
64503 --
64504 ---------------------------------------
64505 PROCEDURE AcctLineType_119 (
64506   p_application_id        IN NUMBER
64507  ,p_event_id              IN NUMBER
64508  ,p_calculate_acctd_flag  IN VARCHAR2
64509  ,p_calculate_g_l_flag    IN VARCHAR2
64510  ,p_actual_flag           IN OUT VARCHAR2
64511  ,p_balance_type_code     OUT VARCHAR2
64512  ,p_gain_or_loss_ref      OUT VARCHAR2
64513  
64514 --Cost Management Default Account
64515  , p_source_4            IN NUMBER
64516 --Applied to Application ID
64517  , p_source_6            IN NUMBER
64518 --Applied to Distribution Link Type
64519  , p_source_7            IN VARCHAR2
64520 --Applied to Entity Code
64521  , p_source_8            IN VARCHAR2
64522 --DISTRIBUTION_IDENTIFIER
64523  , p_source_11            IN NUMBER
64524 --Distribution Type
64525  , p_source_12            IN VARCHAR2
64526  , p_source_12_meaning    IN VARCHAR2
64527 --Encumbrance Reversal Amount Entered
64528  , p_source_14            IN NUMBER
64529 --Entered Currency Code
64530  , p_source_15            IN VARCHAR2
64531 --Transaction Encumbrance Reversal Amount
64532  , p_source_16            IN NUMBER
64533 --Entered Amount
64534  , p_source_18            IN NUMBER
64535 --Currency Conversion Date
64536  , p_source_19            IN DATE
64537 --Currency Conversion Rate
64538  , p_source_20            IN NUMBER
64539 --Currency Conversion Type
64540  , p_source_21            IN VARCHAR2
64541 --Accounted Amount
64542  , p_source_22            IN NUMBER
64543 --Accounting Line Type
64544  , p_source_24            IN NUMBER
64545 --Costing Encumbrance Upgrade Option
64546  , p_source_27            IN VARCHAR2
64547 --TXN_PO_DISTRIBUTION_ID
64548  , p_source_28            IN NUMBER
64549 --TXN_PO_HEADER_ID
64550  , p_source_29            IN NUMBER
64551 --Requisition Budget Account
64552  , p_source_30            IN NUMBER
64553 --Requisition Encumbrance Type Identifier
64554  , p_source_31            IN NUMBER
64555 )
64556 IS
64557 
64558 l_component_type              VARCHAR2(80);
64559 l_component_code              VARCHAR2(30);
64560 l_component_type_code         VARCHAR2(1);
64561 l_component_appl_id           INTEGER;
64562 l_amb_context_code            VARCHAR2(30);
64563 l_entity_code                 VARCHAR2(30);
64564 l_event_class_code            VARCHAR2(30);
64565 l_ae_header_id                NUMBER;
64566 l_event_type_code             VARCHAR2(30);
64567 l_line_definition_code        VARCHAR2(30);
64568 l_line_definition_owner_code  VARCHAR2(1);
64569 --
64570 -- adr variables
64571 l_segment                     VARCHAR2(30);
64572 l_ccid                        NUMBER;
64573 l_adr_transaction_coa_id      NUMBER;
64574 l_adr_accounting_coa_id       NUMBER;
64575 l_adr_flexfield_segment_code  VARCHAR2(30);
64576 l_adr_flex_value_set_id       NUMBER;
64577 l_adr_value_type_code         VARCHAR2(30);
64578 l_adr_value_combination_id    NUMBER;
64579 l_adr_value_segment_code      VARCHAR2(30);
64580 
64581 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
64582 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
64583 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
64584 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
64585 
64586 -- 4262811 Variables ------------------------------------------------------------------------------------------
64587 l_entered_amt_idx             NUMBER;
64588 l_accted_amt_idx              NUMBER;
64589 l_acc_rev_flag                VARCHAR2(1);
64590 l_accrual_line_num            NUMBER;
64591 l_tmp_amt                     NUMBER;
64592 l_acc_rev_natural_side_code   VARCHAR2(1);
64593 
64594 l_num_entries                 NUMBER;
64595 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
64596 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
64597 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
64598 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
64599 l_recog_line_1                NUMBER;
64600 l_recog_line_2                NUMBER;
64601 
64602 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
64603 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
64604 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
64605 
64606 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
64607 
64608 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
64609 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
64610 
64611 ---------------------------------------------------------------------------------------------------------------
64612 
64613 
64614 --
64615 -- bulk performance
64616 --
64617 l_balance_type_code           VARCHAR2(1);
64618 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
64619 l_log_module                  VARCHAR2(240);
64620 
64621 --
64622 -- Upgrade strategy
64623 --
64624 l_actual_upg_option           VARCHAR2(1);
64625 l_enc_upg_option           VARCHAR2(1);
64626 
64627 --
64628 BEGIN
64629 --
64630 IF g_log_enabled THEN
64631       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_119';
64632 END IF;
64633 --
64634 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64635 
64636       trace
64637          (p_msg      => 'BEGIN of AcctLineType_119'
64638          ,p_level    => C_LEVEL_PROCEDURE
64639          ,p_module   => l_log_module);
64640 
64641 END IF;
64642 --
64643 l_component_type             := 'AMB_JLT';
64644 l_component_code             := 'INTRANSIT_VALUATION';
64645 l_component_type_code        := 'S';
64646 l_component_appl_id          :=  707;
64647 l_amb_context_code           := 'DEFAULT';
64648 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
64649 l_event_class_code           := 'FOB_SHIP_RECIPIENT_RCPT';
64650 l_event_type_code            := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
64651 l_line_definition_owner_code := 'S';
64652 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_RCPT';
64653 --
64654 l_balance_type_code          := 'A';
64655 l_segment                     := NULL;
64656 l_ccid                        := NULL;
64657 l_adr_transaction_coa_id      := NULL;
64658 l_adr_accounting_coa_id       := NULL;
64659 l_adr_flexfield_segment_code  := NULL;
64660 l_adr_flex_value_set_id       := NULL;
64661 l_adr_value_type_code         := NULL;
64662 l_adr_value_combination_id    := NULL;
64663 l_adr_value_segment_code      := NULL;
64664 
64665 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
64666 l_bflow_class_code           := '';    -- 4219869 Business Flow
64667 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
64668 l_budgetary_control_flag     := 'N';
64669 
64670 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
64671 l_bflow_applied_to_amt       := NULL; -- 5132302
64672 l_entered_amt_idx            := NULL;          -- 4262811
64673 l_accted_amt_idx             := NULL;          -- 4262811
64674 l_acc_rev_flag               := NULL;          -- 4262811
64675 l_accrual_line_num           := NULL;          -- 4262811
64676 l_tmp_amt                    := NULL;          -- 4262811
64677 --
64678  
64679 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
64680     l_balance_type_code <> 'B' THEN
64681 IF NVL(p_source_24,9E125) =  14
64682  THEN 
64683 
64684    --
64685    XLA_AE_LINES_PKG.SetNewLine;
64686 
64687    p_balance_type_code          := l_balance_type_code;
64688    -- set the flag so later we will know whether the gain loss line needs to be created
64689    
64690    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
64691      p_actual_flag :='A';
64692    END IF;
64693 
64694    --
64695    -- bulk performance
64696    --
64697    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
64698                                       p_header_num   => 0); -- 4262811
64699    --
64700    -- set accounting line options
64701    --
64702    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
64703            p_natural_side_code          => 'D'
64704          , p_gain_or_loss_flag          => 'N'
64705          , p_gl_transfer_mode_code      => 'S'
64706          , p_acct_entry_type_code       => 'A'
64707          , p_switch_side_flag           => 'Y'
64708          , p_merge_duplicate_code       => 'N'
64709          );
64710    --
64711    l_acc_rev_natural_side_code := 'C';  -- 4262811
64712    -- 
64713    --
64714    -- set accounting line type info
64715    --
64716    xla_ae_lines_pkg.SetAcctLineType
64717       (p_component_type             => l_component_type
64718       ,p_event_type_code            => l_event_type_code
64719       ,p_line_definition_owner_code => l_line_definition_owner_code
64720       ,p_line_definition_code       => l_line_definition_code
64721       ,p_accounting_line_code       => l_component_code
64722       ,p_accounting_line_type_code  => l_component_type_code
64723       ,p_accounting_line_appl_id    => l_component_appl_id
64724       ,p_amb_context_code           => l_amb_context_code
64725       ,p_entity_code                => l_entity_code
64726       ,p_event_class_code           => l_event_class_code);
64727    --
64728    -- set accounting class
64729    --
64730    xla_ae_lines_pkg.SetAcctClass(
64731            p_accounting_class_code  => 'INTRANSIT_VALUATION'
64732          , p_ae_header_id           => l_ae_header_id
64733          );
64734 
64735    --
64736    -- set rounding class
64737    --
64738    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
64739                       'INTRANSIT_VALUATION';
64740 
64741    --
64742    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
64743    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
64744    --
64745    -- bulk performance
64746    --
64747    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
64748 
64749    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
64750       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
64751 
64752    -- 4955764
64753    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64754       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
64755 
64756    -- 4458381 Public Sector Enh
64757    
64758    --
64759    -- set accounting attributes for the line type
64760    --
64761    l_entered_amt_idx := 17;
64762    l_accted_amt_idx  := 22;
64763    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
64764    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
64765    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
64766    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
64767    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
64768    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
64769    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
64770    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
64771    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
64772    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
64773    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
64774    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
64775    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
64776    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
64777    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
64778    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
64779    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
64780    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
64781    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
64782    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
64783    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
64784    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
64785    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
64786    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
64787    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
64788    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
64789    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
64790    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
64791    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
64792    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
64793    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
64794    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
64795    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
64796    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
64797    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
64798    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
64799    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
64800    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
64801    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
64802    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
64803    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
64804    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
64805    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
64806    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
64807    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
64808    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
64809    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
64810    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
64811    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
64812 
64813    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
64814    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
64815 
64816    ---------------------------------------------------------------------------------------------------------------
64817    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
64818    ---------------------------------------------------------------------------------------------------------------
64819    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
64820 
64821    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64822    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64823 
64824    IF xla_accounting_cache_pkg.GetValueChar
64825          (p_source_code         => 'LEDGER_CATEGORY_CODE'
64826          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
64827    AND l_bflow_method_code = 'PRIOR_ENTRY'
64828 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
64829    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
64830          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
64831        )
64832    THEN
64833          xla_ae_lines_pkg.BflowUpgEntry
64834            (p_business_method_code    => l_bflow_method_code
64835            ,p_business_class_code     => l_bflow_class_code
64836            ,p_balance_type            => l_balance_type_code);
64837    ELSE
64838       NULL;
64839 -- No business flow processing for business flow method of NONE.
64840    END IF;
64841 
64842    --
64843    -- call analytical criteria
64844    --
64845    
64846    --
64847    -- call description
64848    --
64849    -- No description or it is inherited.
64850    --
64851    -- call ADRs
64852    -- Bug 4922099
64853    --
64854    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64855         (NVL(l_actual_upg_option, 'N') = 'O') OR
64856         (NVL(l_enc_upg_option, 'N') = 'O')
64857       )
64858    THEN
64859    NULL;
64860    --
64861    --
64862    
64863   l_ccid := AcctDerRule_4(
64864            p_application_id           => p_application_id
64865          , p_ae_header_id             => l_ae_header_id 
64866 , p_source_4 => p_source_4
64867          , x_transaction_coa_id       => l_adr_transaction_coa_id
64868          , x_accounting_coa_id        => l_adr_accounting_coa_id
64869          , x_value_type_code          => l_adr_value_type_code
64870          , p_side                     => 'NA'
64871    );
64872 
64873    xla_ae_lines_pkg.set_ccid(
64874     p_code_combination_id          => l_ccid
64875   , p_value_type_code              => l_adr_value_type_code
64876   , p_transaction_coa_id           => l_adr_transaction_coa_id
64877   , p_accounting_coa_id            => l_adr_accounting_coa_id
64878   , p_adr_code                     => 'CST_DEFAULT'
64879   , p_adr_type_code                => 'S'
64880   , p_component_type               => l_component_type
64881   , p_component_code               => l_component_code
64882   , p_component_type_code          => l_component_type_code
64883   , p_component_appl_id            => l_component_appl_id
64884   , p_amb_context_code             => l_amb_context_code
64885   , p_side                         => 'NA'
64886   );
64887 
64888 
64889    --
64890    --
64891    END IF;
64892    --
64893    -- Bug 4922099
64894    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
64895           (NVL(l_enc_upg_option, 'N') = 'O')
64896         ) AND
64897         (l_bflow_method_code = 'PRIOR_ENTRY')
64898       )
64899    THEN
64900       IF
64901       --
64902       1 = 2
64903       --
64904       THEN
64905       xla_accounting_err_pkg.build_message
64906                                     (p_appli_s_name            => 'XLA'
64907                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64908                                     ,p_token_1                 => 'LINE_NUMBER'
64909                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
64910                                     ,p_token_2                 => 'LINE_TYPE_NAME'
64911                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
64912                                                                              l_component_type
64913                                                                             ,l_component_code
64914                                                                             ,l_component_type_code
64915                                                                             ,l_component_appl_id
64916                                                                             ,l_amb_context_code
64917                                                                             ,l_entity_code
64918                                                                             ,l_event_class_code
64919                                                                            )
64920                                     ,p_token_3                 => 'OWNER'
64921                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
64922                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
64923                                                                           ,p_lookup_code    => l_component_type_code
64924                                                                          )
64925                                     ,p_token_4                 => 'PRODUCT_NAME'
64926                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
64927                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
64928                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
64929                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
64930                                     ,p_ae_header_id            =>  NULL
64931                                        );
64932 
64933         IF (C_LEVEL_ERROR>= g_log_level) THEN
64934                  trace
64935                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64936                       ,p_level    => C_LEVEL_ERROR
64937                       ,p_module   => l_log_module);
64938         END IF;
64939       END IF;
64940    END IF;
64941    --
64942    --
64943    ------------------------------------------------------------------------------------------------
64944    -- 4219869 Business Flow
64945    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
64946    -- Prior Entry.  Currently, the following code is always generated.
64947    ------------------------------------------------------------------------------------------------
64948    XLA_AE_LINES_PKG.ValidateCurrentLine;
64949 
64950    ------------------------------------------------------------------------------------
64951    -- 4219869 Business Flow
64952    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
64953    ------------------------------------------------------------------------------------
64954    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64955 
64956    ----------------------------------------------------------------------------------
64957    -- 4219869 Business Flow
64958    -- Update journal entry status -- Need to generate this within IF <condition>
64959    ----------------------------------------------------------------------------------
64960    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64961          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
64962          ,p_balance_type_code => l_balance_type_code
64963          );
64964 
64965    -------------------------------------------------------------------------------------------
64966    -- 4262811 - Generate the Accrual Reversal lines
64967    -------------------------------------------------------------------------------------------
64968    BEGIN
64969       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
64970                               (g_array_event(p_event_id).array_value_num('header_index'));
64971       IF l_acc_rev_flag IS NULL THEN
64972          l_acc_rev_flag := 'N';
64973       END IF;
64974    EXCEPTION
64975       WHEN OTHERS THEN
64976          l_acc_rev_flag := 'N';
64977    END;
64978    --
64979    IF (l_acc_rev_flag = 'Y') THEN
64980 
64981        -- 4645092  ------------------------------------------------------------------------------
64982        -- To allow MPA report to determine if it should generate report process
64983        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
64984        ------------------------------------------------------------------------------------------
64985 
64986        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
64987        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
64988    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
64989    -- call ADRs
64990    -- Bug 4922099
64991    --
64992    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64993         (NVL(l_actual_upg_option, 'N') = 'O') OR
64994         (NVL(l_enc_upg_option, 'N') = 'O')
64995       )
64996    THEN
64997    NULL;
64998    --
64999    --
65000    
65001   l_ccid := AcctDerRule_4(
65002            p_application_id           => p_application_id
65003          , p_ae_header_id             => l_ae_header_id 
65004 , p_source_4 => p_source_4
65005          , x_transaction_coa_id       => l_adr_transaction_coa_id
65006          , x_accounting_coa_id        => l_adr_accounting_coa_id
65007          , x_value_type_code          => l_adr_value_type_code
65008          , p_side                     => 'NA'
65009    );
65010 
65011    xla_ae_lines_pkg.set_ccid(
65012     p_code_combination_id          => l_ccid
65013   , p_value_type_code              => l_adr_value_type_code
65014   , p_transaction_coa_id           => l_adr_transaction_coa_id
65015   , p_accounting_coa_id            => l_adr_accounting_coa_id
65016   , p_adr_code                     => 'CST_DEFAULT'
65017   , p_adr_type_code                => 'S'
65018   , p_component_type               => l_component_type
65019   , p_component_code               => l_component_code
65020   , p_component_type_code          => l_component_type_code
65021   , p_component_appl_id            => l_component_appl_id
65022   , p_amb_context_code             => l_amb_context_code
65023   , p_side                         => 'NA'
65024   );
65025 
65026 
65027    --
65028    --
65029    END IF;
65030 
65031        --
65032        -- Update the line information that should be overwritten
65033        --
65034        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
65035                                          p_header_num   => 1);
65036        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
65037 
65038        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
65039 
65040        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
65041           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
65042        END IF;
65043 
65044       --
65045       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
65046       --
65047       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
65048           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
65049       ELSE
65050           ---------------------------------------------------------------------------------------------------
65051           -- 4262811a Switch Sign
65052           ---------------------------------------------------------------------------------------------------
65053           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
65054           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65055                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65056           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65057                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65058           -- 5132302
65059           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
65060                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65061 
65062       END IF;
65063 
65064       -- 4955764
65065       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65066       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
65067 
65068 
65069       XLA_AE_LINES_PKG.ValidateCurrentLine;
65070       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65071 
65072       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65073                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
65074                ,p_balance_type_code => l_balance_type_code);
65075 
65076    END IF;
65077 
65078    -----------------------------------------------------------------------------------------
65079    -- 4262811 Multiperiod Accounting
65080    -----------------------------------------------------------------------------------------
65081      -- No MPA option is assigned.
65082 
65083 
65084 END IF;
65085 END IF;
65086 --
65087 
65088 --
65089 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65090    trace
65091       (p_msg      => 'END of AcctLineType_119'
65092       ,p_level    => C_LEVEL_PROCEDURE
65093       ,p_module   => l_log_module);
65094 END IF;
65095 --
65096 EXCEPTION
65097   WHEN xla_exceptions_pkg.application_exception THEN
65098       RAISE;
65099   WHEN OTHERS THEN
65100        xla_exceptions_pkg.raise_message
65101            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_119');
65102 END AcctLineType_119;
65103 --
65104 
65105 ---------------------------------------
65106 --
65107 -- PRIVATE FUNCTION
65108 --         AcctLineType_120
65109 --
65110 ---------------------------------------
65111 PROCEDURE AcctLineType_120 (
65112   p_application_id        IN NUMBER
65113  ,p_event_id              IN NUMBER
65114  ,p_calculate_acctd_flag  IN VARCHAR2
65115  ,p_calculate_g_l_flag    IN VARCHAR2
65116  ,p_actual_flag           IN OUT VARCHAR2
65117  ,p_balance_type_code     OUT VARCHAR2
65118  ,p_gain_or_loss_ref      OUT VARCHAR2
65119  
65120 --Cost Management Default Account
65121  , p_source_4            IN NUMBER
65122 --DISTRIBUTION_IDENTIFIER
65123  , p_source_11            IN NUMBER
65124 --Distribution Type
65125  , p_source_12            IN VARCHAR2
65126  , p_source_12_meaning    IN VARCHAR2
65127 --Entered Currency Code
65128  , p_source_15            IN VARCHAR2
65129 --Entered Amount
65130  , p_source_18            IN NUMBER
65131 --Currency Conversion Date
65132  , p_source_19            IN DATE
65133 --Currency Conversion Rate
65134  , p_source_20            IN NUMBER
65135 --Currency Conversion Type
65136  , p_source_21            IN VARCHAR2
65137 --Accounted Amount
65138  , p_source_22            IN NUMBER
65139 --Accounting Line Type
65140  , p_source_24            IN NUMBER
65141 )
65142 IS
65143 
65144 l_component_type              VARCHAR2(80);
65145 l_component_code              VARCHAR2(30);
65146 l_component_type_code         VARCHAR2(1);
65147 l_component_appl_id           INTEGER;
65148 l_amb_context_code            VARCHAR2(30);
65149 l_entity_code                 VARCHAR2(30);
65150 l_event_class_code            VARCHAR2(30);
65151 l_ae_header_id                NUMBER;
65152 l_event_type_code             VARCHAR2(30);
65153 l_line_definition_code        VARCHAR2(30);
65154 l_line_definition_owner_code  VARCHAR2(1);
65155 --
65156 -- adr variables
65157 l_segment                     VARCHAR2(30);
65158 l_ccid                        NUMBER;
65159 l_adr_transaction_coa_id      NUMBER;
65160 l_adr_accounting_coa_id       NUMBER;
65161 l_adr_flexfield_segment_code  VARCHAR2(30);
65162 l_adr_flex_value_set_id       NUMBER;
65163 l_adr_value_type_code         VARCHAR2(30);
65164 l_adr_value_combination_id    NUMBER;
65165 l_adr_value_segment_code      VARCHAR2(30);
65166 
65167 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
65168 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
65169 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
65170 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
65171 
65172 -- 4262811 Variables ------------------------------------------------------------------------------------------
65173 l_entered_amt_idx             NUMBER;
65174 l_accted_amt_idx              NUMBER;
65175 l_acc_rev_flag                VARCHAR2(1);
65176 l_accrual_line_num            NUMBER;
65177 l_tmp_amt                     NUMBER;
65178 l_acc_rev_natural_side_code   VARCHAR2(1);
65179 
65180 l_num_entries                 NUMBER;
65181 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
65182 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
65183 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
65184 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
65185 l_recog_line_1                NUMBER;
65186 l_recog_line_2                NUMBER;
65187 
65188 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
65189 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
65190 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
65191 
65192 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
65193 
65194 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
65195 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
65196 
65197 ---------------------------------------------------------------------------------------------------------------
65198 
65199 
65200 --
65201 -- bulk performance
65202 --
65203 l_balance_type_code           VARCHAR2(1);
65204 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
65205 l_log_module                  VARCHAR2(240);
65206 
65207 --
65208 -- Upgrade strategy
65209 --
65210 l_actual_upg_option           VARCHAR2(1);
65211 l_enc_upg_option           VARCHAR2(1);
65212 
65213 --
65214 BEGIN
65215 --
65216 IF g_log_enabled THEN
65217       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_120';
65218 END IF;
65219 --
65220 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65221 
65222       trace
65223          (p_msg      => 'BEGIN of AcctLineType_120'
65224          ,p_level    => C_LEVEL_PROCEDURE
65225          ,p_module   => l_log_module);
65226 
65227 END IF;
65228 --
65229 l_component_type             := 'AMB_JLT';
65230 l_component_code             := 'INTRANSIT_VALUATION';
65231 l_component_type_code        := 'S';
65232 l_component_appl_id          :=  707;
65233 l_amb_context_code           := 'DEFAULT';
65234 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
65235 l_event_class_code           := 'FOB_RCPT_SENDER_SHIP';
65236 l_event_type_code            := 'FOB_RCPT_SENDER_SHIP_ALL';
65237 l_line_definition_owner_code := 'S';
65238 l_line_definition_code       := 'FOB_RCPT_SEND_SHIP';
65239 --
65240 l_balance_type_code          := 'A';
65241 l_segment                     := NULL;
65242 l_ccid                        := NULL;
65243 l_adr_transaction_coa_id      := NULL;
65244 l_adr_accounting_coa_id       := NULL;
65245 l_adr_flexfield_segment_code  := NULL;
65246 l_adr_flex_value_set_id       := NULL;
65247 l_adr_value_type_code         := NULL;
65248 l_adr_value_combination_id    := NULL;
65249 l_adr_value_segment_code      := NULL;
65250 
65251 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
65252 l_bflow_class_code           := '';    -- 4219869 Business Flow
65253 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
65254 l_budgetary_control_flag     := 'N';
65255 
65256 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
65257 l_bflow_applied_to_amt       := NULL; -- 5132302
65258 l_entered_amt_idx            := NULL;          -- 4262811
65259 l_accted_amt_idx             := NULL;          -- 4262811
65260 l_acc_rev_flag               := NULL;          -- 4262811
65261 l_accrual_line_num           := NULL;          -- 4262811
65262 l_tmp_amt                    := NULL;          -- 4262811
65263 --
65264  
65265 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
65266     l_balance_type_code <> 'B' THEN
65267 IF NVL(p_source_24,9E125) =  14
65268  THEN 
65269 
65270    --
65271    XLA_AE_LINES_PKG.SetNewLine;
65272 
65273    p_balance_type_code          := l_balance_type_code;
65274    -- set the flag so later we will know whether the gain loss line needs to be created
65275    
65276    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
65277      p_actual_flag :='A';
65278    END IF;
65279 
65280    --
65281    -- bulk performance
65282    --
65283    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
65284                                       p_header_num   => 0); -- 4262811
65285    --
65286    -- set accounting line options
65287    --
65288    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
65289            p_natural_side_code          => 'D'
65290          , p_gain_or_loss_flag          => 'N'
65291          , p_gl_transfer_mode_code      => 'S'
65292          , p_acct_entry_type_code       => 'A'
65293          , p_switch_side_flag           => 'Y'
65294          , p_merge_duplicate_code       => 'N'
65295          );
65296    --
65297    l_acc_rev_natural_side_code := 'C';  -- 4262811
65298    -- 
65299    --
65300    -- set accounting line type info
65301    --
65302    xla_ae_lines_pkg.SetAcctLineType
65303       (p_component_type             => l_component_type
65304       ,p_event_type_code            => l_event_type_code
65305       ,p_line_definition_owner_code => l_line_definition_owner_code
65306       ,p_line_definition_code       => l_line_definition_code
65307       ,p_accounting_line_code       => l_component_code
65308       ,p_accounting_line_type_code  => l_component_type_code
65309       ,p_accounting_line_appl_id    => l_component_appl_id
65310       ,p_amb_context_code           => l_amb_context_code
65311       ,p_entity_code                => l_entity_code
65312       ,p_event_class_code           => l_event_class_code);
65313    --
65314    -- set accounting class
65315    --
65316    xla_ae_lines_pkg.SetAcctClass(
65317            p_accounting_class_code  => 'INTRANSIT_VALUATION'
65318          , p_ae_header_id           => l_ae_header_id
65319          );
65320 
65321    --
65322    -- set rounding class
65323    --
65324    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
65325                       'INTRANSIT_VALUATION';
65326 
65327    --
65328    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
65329    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
65330    --
65331    -- bulk performance
65332    --
65333    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
65334 
65335    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
65336       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
65337 
65338    -- 4955764
65339    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65340       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
65341 
65342    -- 4458381 Public Sector Enh
65343    
65344    --
65345    -- set accounting attributes for the line type
65346    --
65347    l_entered_amt_idx := 3;
65348    l_accted_amt_idx  := 8;
65349    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
65350    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
65351    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
65352    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
65353    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
65354    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
65355    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
65356    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
65357    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
65358    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
65359    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
65360    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
65361    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
65362    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
65363    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
65364    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
65365    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
65366 
65367    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
65368    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
65369 
65370    ---------------------------------------------------------------------------------------------------------------
65371    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
65372    ---------------------------------------------------------------------------------------------------------------
65373    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
65374 
65375    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65376    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65377 
65378    IF xla_accounting_cache_pkg.GetValueChar
65379          (p_source_code         => 'LEDGER_CATEGORY_CODE'
65380          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
65381    AND l_bflow_method_code = 'PRIOR_ENTRY'
65382 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
65383    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
65384          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
65385        )
65386    THEN
65387          xla_ae_lines_pkg.BflowUpgEntry
65388            (p_business_method_code    => l_bflow_method_code
65389            ,p_business_class_code     => l_bflow_class_code
65390            ,p_balance_type            => l_balance_type_code);
65391    ELSE
65392       NULL;
65393 -- No business flow processing for business flow method of NONE.
65394    END IF;
65395 
65396    --
65397    -- call analytical criteria
65398    --
65399    
65400    --
65401    -- call description
65402    --
65403    -- No description or it is inherited.
65404    --
65405    -- call ADRs
65406    -- Bug 4922099
65407    --
65408    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65409         (NVL(l_actual_upg_option, 'N') = 'O') OR
65410         (NVL(l_enc_upg_option, 'N') = 'O')
65411       )
65412    THEN
65413    NULL;
65414    --
65415    --
65416    
65417   l_ccid := AcctDerRule_4(
65418            p_application_id           => p_application_id
65419          , p_ae_header_id             => l_ae_header_id 
65420 , p_source_4 => p_source_4
65421          , x_transaction_coa_id       => l_adr_transaction_coa_id
65422          , x_accounting_coa_id        => l_adr_accounting_coa_id
65423          , x_value_type_code          => l_adr_value_type_code
65424          , p_side                     => 'NA'
65425    );
65426 
65427    xla_ae_lines_pkg.set_ccid(
65428     p_code_combination_id          => l_ccid
65429   , p_value_type_code              => l_adr_value_type_code
65430   , p_transaction_coa_id           => l_adr_transaction_coa_id
65431   , p_accounting_coa_id            => l_adr_accounting_coa_id
65432   , p_adr_code                     => 'CST_DEFAULT'
65433   , p_adr_type_code                => 'S'
65434   , p_component_type               => l_component_type
65435   , p_component_code               => l_component_code
65436   , p_component_type_code          => l_component_type_code
65437   , p_component_appl_id            => l_component_appl_id
65438   , p_amb_context_code             => l_amb_context_code
65439   , p_side                         => 'NA'
65440   );
65441 
65442 
65443    --
65444    --
65445    END IF;
65446    --
65447    -- Bug 4922099
65448    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
65449           (NVL(l_enc_upg_option, 'N') = 'O')
65450         ) AND
65451         (l_bflow_method_code = 'PRIOR_ENTRY')
65452       )
65453    THEN
65454       IF
65455       --
65456       1 = 2
65457       --
65458       THEN
65459       xla_accounting_err_pkg.build_message
65460                                     (p_appli_s_name            => 'XLA'
65461                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65462                                     ,p_token_1                 => 'LINE_NUMBER'
65463                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
65464                                     ,p_token_2                 => 'LINE_TYPE_NAME'
65465                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
65466                                                                              l_component_type
65467                                                                             ,l_component_code
65468                                                                             ,l_component_type_code
65469                                                                             ,l_component_appl_id
65470                                                                             ,l_amb_context_code
65471                                                                             ,l_entity_code
65472                                                                             ,l_event_class_code
65473                                                                            )
65474                                     ,p_token_3                 => 'OWNER'
65475                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
65476                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
65477                                                                           ,p_lookup_code    => l_component_type_code
65478                                                                          )
65479                                     ,p_token_4                 => 'PRODUCT_NAME'
65480                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
65481                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
65482                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
65483                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
65484                                     ,p_ae_header_id            =>  NULL
65485                                        );
65486 
65487         IF (C_LEVEL_ERROR>= g_log_level) THEN
65488                  trace
65489                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65490                       ,p_level    => C_LEVEL_ERROR
65491                       ,p_module   => l_log_module);
65492         END IF;
65493       END IF;
65494    END IF;
65495    --
65496    --
65497    ------------------------------------------------------------------------------------------------
65498    -- 4219869 Business Flow
65499    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
65500    -- Prior Entry.  Currently, the following code is always generated.
65501    ------------------------------------------------------------------------------------------------
65502    XLA_AE_LINES_PKG.ValidateCurrentLine;
65503 
65504    ------------------------------------------------------------------------------------
65505    -- 4219869 Business Flow
65506    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
65507    ------------------------------------------------------------------------------------
65508    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65509 
65510    ----------------------------------------------------------------------------------
65511    -- 4219869 Business Flow
65512    -- Update journal entry status -- Need to generate this within IF <condition>
65513    ----------------------------------------------------------------------------------
65514    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65515          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
65516          ,p_balance_type_code => l_balance_type_code
65517          );
65518 
65519    -------------------------------------------------------------------------------------------
65520    -- 4262811 - Generate the Accrual Reversal lines
65521    -------------------------------------------------------------------------------------------
65522    BEGIN
65523       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
65524                               (g_array_event(p_event_id).array_value_num('header_index'));
65525       IF l_acc_rev_flag IS NULL THEN
65526          l_acc_rev_flag := 'N';
65527       END IF;
65528    EXCEPTION
65529       WHEN OTHERS THEN
65530          l_acc_rev_flag := 'N';
65531    END;
65532    --
65533    IF (l_acc_rev_flag = 'Y') THEN
65534 
65535        -- 4645092  ------------------------------------------------------------------------------
65536        -- To allow MPA report to determine if it should generate report process
65537        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
65538        ------------------------------------------------------------------------------------------
65539 
65540        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
65541        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
65542    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
65543    -- call ADRs
65544    -- Bug 4922099
65545    --
65546    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65547         (NVL(l_actual_upg_option, 'N') = 'O') OR
65548         (NVL(l_enc_upg_option, 'N') = 'O')
65549       )
65550    THEN
65551    NULL;
65552    --
65553    --
65554    
65555   l_ccid := AcctDerRule_4(
65556            p_application_id           => p_application_id
65557          , p_ae_header_id             => l_ae_header_id 
65558 , p_source_4 => p_source_4
65559          , x_transaction_coa_id       => l_adr_transaction_coa_id
65560          , x_accounting_coa_id        => l_adr_accounting_coa_id
65561          , x_value_type_code          => l_adr_value_type_code
65562          , p_side                     => 'NA'
65563    );
65564 
65565    xla_ae_lines_pkg.set_ccid(
65566     p_code_combination_id          => l_ccid
65567   , p_value_type_code              => l_adr_value_type_code
65568   , p_transaction_coa_id           => l_adr_transaction_coa_id
65569   , p_accounting_coa_id            => l_adr_accounting_coa_id
65570   , p_adr_code                     => 'CST_DEFAULT'
65571   , p_adr_type_code                => 'S'
65572   , p_component_type               => l_component_type
65573   , p_component_code               => l_component_code
65574   , p_component_type_code          => l_component_type_code
65575   , p_component_appl_id            => l_component_appl_id
65576   , p_amb_context_code             => l_amb_context_code
65577   , p_side                         => 'NA'
65578   );
65579 
65580 
65581    --
65582    --
65583    END IF;
65584 
65585        --
65586        -- Update the line information that should be overwritten
65587        --
65588        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
65589                                          p_header_num   => 1);
65590        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
65591 
65592        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
65593 
65594        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
65595           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
65596        END IF;
65597 
65598       --
65599       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
65600       --
65601       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
65602           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
65603       ELSE
65604           ---------------------------------------------------------------------------------------------------
65605           -- 4262811a Switch Sign
65606           ---------------------------------------------------------------------------------------------------
65607           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
65608           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65609                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65610           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65611                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65612           -- 5132302
65613           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
65614                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65615 
65616       END IF;
65617 
65618       -- 4955764
65619       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65620       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
65621 
65622 
65623       XLA_AE_LINES_PKG.ValidateCurrentLine;
65624       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65625 
65626       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65627                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
65628                ,p_balance_type_code => l_balance_type_code);
65629 
65630    END IF;
65631 
65632    -----------------------------------------------------------------------------------------
65633    -- 4262811 Multiperiod Accounting
65634    -----------------------------------------------------------------------------------------
65635      -- No MPA option is assigned.
65636 
65637 
65638 END IF;
65639 END IF;
65640 --
65641 
65642 --
65643 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65644    trace
65645       (p_msg      => 'END of AcctLineType_120'
65646       ,p_level    => C_LEVEL_PROCEDURE
65647       ,p_module   => l_log_module);
65648 END IF;
65649 --
65650 EXCEPTION
65651   WHEN xla_exceptions_pkg.application_exception THEN
65652       RAISE;
65653   WHEN OTHERS THEN
65654        xla_exceptions_pkg.raise_message
65655            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_120');
65656 END AcctLineType_120;
65657 --
65658 
65659 ---------------------------------------
65660 --
65661 -- PRIVATE FUNCTION
65662 --         AcctLineType_121
65663 --
65664 ---------------------------------------
65665 PROCEDURE AcctLineType_121 (
65666   p_application_id        IN NUMBER
65667  ,p_event_id              IN NUMBER
65668  ,p_calculate_acctd_flag  IN VARCHAR2
65669  ,p_calculate_g_l_flag    IN VARCHAR2
65670  ,p_actual_flag           IN OUT VARCHAR2
65671  ,p_balance_type_code     OUT VARCHAR2
65672  ,p_gain_or_loss_ref      OUT VARCHAR2
65673  
65674 --Cost Management Default Account
65675  , p_source_4            IN NUMBER
65676 --DISTRIBUTION_IDENTIFIER
65677  , p_source_11            IN NUMBER
65678 --Distribution Type
65679  , p_source_12            IN VARCHAR2
65680  , p_source_12_meaning    IN VARCHAR2
65681 --Entered Currency Code
65682  , p_source_15            IN VARCHAR2
65683 --Entered Amount
65684  , p_source_18            IN NUMBER
65685 --Currency Conversion Date
65686  , p_source_19            IN DATE
65687 --Currency Conversion Rate
65688  , p_source_20            IN NUMBER
65689 --Currency Conversion Type
65690  , p_source_21            IN VARCHAR2
65691 --Accounted Amount
65692  , p_source_22            IN NUMBER
65693 --Accounting Line Type
65694  , p_source_24            IN NUMBER
65695 )
65696 IS
65697 
65698 l_component_type              VARCHAR2(80);
65699 l_component_code              VARCHAR2(30);
65700 l_component_type_code         VARCHAR2(1);
65701 l_component_appl_id           INTEGER;
65702 l_amb_context_code            VARCHAR2(30);
65703 l_entity_code                 VARCHAR2(30);
65704 l_event_class_code            VARCHAR2(30);
65705 l_ae_header_id                NUMBER;
65706 l_event_type_code             VARCHAR2(30);
65707 l_line_definition_code        VARCHAR2(30);
65708 l_line_definition_owner_code  VARCHAR2(1);
65709 --
65710 -- adr variables
65711 l_segment                     VARCHAR2(30);
65712 l_ccid                        NUMBER;
65713 l_adr_transaction_coa_id      NUMBER;
65714 l_adr_accounting_coa_id       NUMBER;
65715 l_adr_flexfield_segment_code  VARCHAR2(30);
65716 l_adr_flex_value_set_id       NUMBER;
65717 l_adr_value_type_code         VARCHAR2(30);
65718 l_adr_value_combination_id    NUMBER;
65719 l_adr_value_segment_code      VARCHAR2(30);
65720 
65721 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
65722 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
65723 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
65724 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
65725 
65726 -- 4262811 Variables ------------------------------------------------------------------------------------------
65727 l_entered_amt_idx             NUMBER;
65728 l_accted_amt_idx              NUMBER;
65729 l_acc_rev_flag                VARCHAR2(1);
65730 l_accrual_line_num            NUMBER;
65731 l_tmp_amt                     NUMBER;
65732 l_acc_rev_natural_side_code   VARCHAR2(1);
65733 
65734 l_num_entries                 NUMBER;
65735 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
65736 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
65737 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
65738 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
65739 l_recog_line_1                NUMBER;
65740 l_recog_line_2                NUMBER;
65741 
65742 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
65743 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
65744 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
65745 
65746 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
65747 
65748 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
65749 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
65750 
65751 ---------------------------------------------------------------------------------------------------------------
65752 
65753 
65754 --
65755 -- bulk performance
65756 --
65757 l_balance_type_code           VARCHAR2(1);
65758 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
65759 l_log_module                  VARCHAR2(240);
65760 
65761 --
65762 -- Upgrade strategy
65763 --
65764 l_actual_upg_option           VARCHAR2(1);
65765 l_enc_upg_option           VARCHAR2(1);
65766 
65767 --
65768 BEGIN
65769 --
65770 IF g_log_enabled THEN
65771       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_121';
65772 END IF;
65773 --
65774 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65775 
65776       trace
65777          (p_msg      => 'BEGIN of AcctLineType_121'
65778          ,p_level    => C_LEVEL_PROCEDURE
65779          ,p_module   => l_log_module);
65780 
65781 END IF;
65782 --
65783 l_component_type             := 'AMB_JLT';
65784 l_component_code             := 'INTRANSIT_VALUATION';
65785 l_component_type_code        := 'S';
65786 l_component_appl_id          :=  707;
65787 l_amb_context_code           := 'DEFAULT';
65788 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
65789 l_event_class_code           := 'USER_DEFINE';
65790 l_event_type_code            := 'UIPV_TXFR';
65791 l_line_definition_owner_code := 'S';
65792 l_line_definition_code       := 'USER_IPV_TXFR';
65793 --
65794 l_balance_type_code          := 'A';
65795 l_segment                     := NULL;
65796 l_ccid                        := NULL;
65797 l_adr_transaction_coa_id      := NULL;
65798 l_adr_accounting_coa_id       := NULL;
65799 l_adr_flexfield_segment_code  := NULL;
65800 l_adr_flex_value_set_id       := NULL;
65801 l_adr_value_type_code         := NULL;
65802 l_adr_value_combination_id    := NULL;
65803 l_adr_value_segment_code      := NULL;
65804 
65805 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
65806 l_bflow_class_code           := '';    -- 4219869 Business Flow
65807 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
65808 l_budgetary_control_flag     := 'N';
65809 
65810 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
65811 l_bflow_applied_to_amt       := NULL; -- 5132302
65812 l_entered_amt_idx            := NULL;          -- 4262811
65813 l_accted_amt_idx             := NULL;          -- 4262811
65814 l_acc_rev_flag               := NULL;          -- 4262811
65815 l_accrual_line_num           := NULL;          -- 4262811
65816 l_tmp_amt                    := NULL;          -- 4262811
65817 --
65818  
65819 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
65820     l_balance_type_code <> 'B' THEN
65821 IF NVL(p_source_24,9E125) =  14
65822  THEN 
65823 
65824    --
65825    XLA_AE_LINES_PKG.SetNewLine;
65826 
65827    p_balance_type_code          := l_balance_type_code;
65828    -- set the flag so later we will know whether the gain loss line needs to be created
65829    
65830    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
65831      p_actual_flag :='A';
65832    END IF;
65833 
65834    --
65835    -- bulk performance
65836    --
65837    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
65838                                       p_header_num   => 0); -- 4262811
65839    --
65840    -- set accounting line options
65841    --
65842    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
65843            p_natural_side_code          => 'D'
65844          , p_gain_or_loss_flag          => 'N'
65845          , p_gl_transfer_mode_code      => 'S'
65846          , p_acct_entry_type_code       => 'A'
65847          , p_switch_side_flag           => 'Y'
65848          , p_merge_duplicate_code       => 'N'
65849          );
65850    --
65851    l_acc_rev_natural_side_code := 'C';  -- 4262811
65852    -- 
65853    --
65854    -- set accounting line type info
65855    --
65856    xla_ae_lines_pkg.SetAcctLineType
65857       (p_component_type             => l_component_type
65858       ,p_event_type_code            => l_event_type_code
65859       ,p_line_definition_owner_code => l_line_definition_owner_code
65860       ,p_line_definition_code       => l_line_definition_code
65861       ,p_accounting_line_code       => l_component_code
65862       ,p_accounting_line_type_code  => l_component_type_code
65863       ,p_accounting_line_appl_id    => l_component_appl_id
65864       ,p_amb_context_code           => l_amb_context_code
65865       ,p_entity_code                => l_entity_code
65866       ,p_event_class_code           => l_event_class_code);
65867    --
65868    -- set accounting class
65869    --
65870    xla_ae_lines_pkg.SetAcctClass(
65871            p_accounting_class_code  => 'INTRANSIT_VALUATION'
65872          , p_ae_header_id           => l_ae_header_id
65873          );
65874 
65875    --
65876    -- set rounding class
65877    --
65878    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
65879                       'INTRANSIT_VALUATION';
65880 
65881    --
65882    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
65883    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
65884    --
65885    -- bulk performance
65886    --
65887    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
65888 
65889    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
65890       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
65891 
65892    -- 4955764
65893    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65894       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
65895 
65896    -- 4458381 Public Sector Enh
65897    
65898    --
65899    -- set accounting attributes for the line type
65900    --
65901    l_entered_amt_idx := 3;
65902    l_accted_amt_idx  := 8;
65903    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
65904    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
65905    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
65906    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
65907    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
65908    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
65909    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
65910    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
65911    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
65912    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
65913    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
65914    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
65915    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
65916    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
65917    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
65918    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
65919    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
65920 
65921    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
65922    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
65923 
65924    ---------------------------------------------------------------------------------------------------------------
65925    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
65926    ---------------------------------------------------------------------------------------------------------------
65927    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
65928 
65929    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65930    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65931 
65932    IF xla_accounting_cache_pkg.GetValueChar
65933          (p_source_code         => 'LEDGER_CATEGORY_CODE'
65934          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
65935    AND l_bflow_method_code = 'PRIOR_ENTRY'
65936 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
65937    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
65938          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
65939        )
65940    THEN
65941          xla_ae_lines_pkg.BflowUpgEntry
65942            (p_business_method_code    => l_bflow_method_code
65943            ,p_business_class_code     => l_bflow_class_code
65944            ,p_balance_type            => l_balance_type_code);
65945    ELSE
65946       NULL;
65947 -- No business flow processing for business flow method of NONE.
65948    END IF;
65949 
65950    --
65951    -- call analytical criteria
65952    --
65953    
65954    --
65955    -- call description
65956    --
65957    -- No description or it is inherited.
65958    --
65959    -- call ADRs
65960    -- Bug 4922099
65961    --
65962    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65963         (NVL(l_actual_upg_option, 'N') = 'O') OR
65964         (NVL(l_enc_upg_option, 'N') = 'O')
65965       )
65966    THEN
65967    NULL;
65968    --
65969    --
65970    
65971   l_ccid := AcctDerRule_4(
65972            p_application_id           => p_application_id
65973          , p_ae_header_id             => l_ae_header_id 
65974 , p_source_4 => p_source_4
65975          , x_transaction_coa_id       => l_adr_transaction_coa_id
65976          , x_accounting_coa_id        => l_adr_accounting_coa_id
65977          , x_value_type_code          => l_adr_value_type_code
65978          , p_side                     => 'NA'
65979    );
65980 
65981    xla_ae_lines_pkg.set_ccid(
65982     p_code_combination_id          => l_ccid
65983   , p_value_type_code              => l_adr_value_type_code
65984   , p_transaction_coa_id           => l_adr_transaction_coa_id
65985   , p_accounting_coa_id            => l_adr_accounting_coa_id
65986   , p_adr_code                     => 'CST_DEFAULT'
65987   , p_adr_type_code                => 'S'
65988   , p_component_type               => l_component_type
65989   , p_component_code               => l_component_code
65990   , p_component_type_code          => l_component_type_code
65991   , p_component_appl_id            => l_component_appl_id
65992   , p_amb_context_code             => l_amb_context_code
65993   , p_side                         => 'NA'
65994   );
65995 
65996 
65997    --
65998    --
65999    END IF;
66000    --
66001    -- Bug 4922099
66002    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
66003           (NVL(l_enc_upg_option, 'N') = 'O')
66004         ) AND
66005         (l_bflow_method_code = 'PRIOR_ENTRY')
66006       )
66007    THEN
66008       IF
66009       --
66010       1 = 2
66011       --
66012       THEN
66013       xla_accounting_err_pkg.build_message
66014                                     (p_appli_s_name            => 'XLA'
66015                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66016                                     ,p_token_1                 => 'LINE_NUMBER'
66017                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
66018                                     ,p_token_2                 => 'LINE_TYPE_NAME'
66019                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
66020                                                                              l_component_type
66021                                                                             ,l_component_code
66022                                                                             ,l_component_type_code
66023                                                                             ,l_component_appl_id
66024                                                                             ,l_amb_context_code
66025                                                                             ,l_entity_code
66026                                                                             ,l_event_class_code
66027                                                                            )
66028                                     ,p_token_3                 => 'OWNER'
66029                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
66030                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
66031                                                                           ,p_lookup_code    => l_component_type_code
66032                                                                          )
66033                                     ,p_token_4                 => 'PRODUCT_NAME'
66034                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
66035                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
66036                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
66037                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
66038                                     ,p_ae_header_id            =>  NULL
66039                                        );
66040 
66041         IF (C_LEVEL_ERROR>= g_log_level) THEN
66042                  trace
66043                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66044                       ,p_level    => C_LEVEL_ERROR
66045                       ,p_module   => l_log_module);
66046         END IF;
66047       END IF;
66048    END IF;
66049    --
66050    --
66051    ------------------------------------------------------------------------------------------------
66052    -- 4219869 Business Flow
66053    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
66054    -- Prior Entry.  Currently, the following code is always generated.
66055    ------------------------------------------------------------------------------------------------
66056    XLA_AE_LINES_PKG.ValidateCurrentLine;
66057 
66058    ------------------------------------------------------------------------------------
66059    -- 4219869 Business Flow
66060    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
66061    ------------------------------------------------------------------------------------
66062    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66063 
66064    ----------------------------------------------------------------------------------
66065    -- 4219869 Business Flow
66066    -- Update journal entry status -- Need to generate this within IF <condition>
66067    ----------------------------------------------------------------------------------
66068    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66069          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
66070          ,p_balance_type_code => l_balance_type_code
66071          );
66072 
66073    -------------------------------------------------------------------------------------------
66074    -- 4262811 - Generate the Accrual Reversal lines
66075    -------------------------------------------------------------------------------------------
66076    BEGIN
66077       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
66078                               (g_array_event(p_event_id).array_value_num('header_index'));
66079       IF l_acc_rev_flag IS NULL THEN
66080          l_acc_rev_flag := 'N';
66081       END IF;
66082    EXCEPTION
66083       WHEN OTHERS THEN
66084          l_acc_rev_flag := 'N';
66085    END;
66086    --
66087    IF (l_acc_rev_flag = 'Y') THEN
66088 
66089        -- 4645092  ------------------------------------------------------------------------------
66090        -- To allow MPA report to determine if it should generate report process
66091        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
66092        ------------------------------------------------------------------------------------------
66093 
66094        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
66095        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
66096    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
66097    -- call ADRs
66098    -- Bug 4922099
66099    --
66100    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66101         (NVL(l_actual_upg_option, 'N') = 'O') OR
66102         (NVL(l_enc_upg_option, 'N') = 'O')
66103       )
66104    THEN
66105    NULL;
66106    --
66107    --
66108    
66109   l_ccid := AcctDerRule_4(
66110            p_application_id           => p_application_id
66111          , p_ae_header_id             => l_ae_header_id 
66112 , p_source_4 => p_source_4
66113          , x_transaction_coa_id       => l_adr_transaction_coa_id
66114          , x_accounting_coa_id        => l_adr_accounting_coa_id
66115          , x_value_type_code          => l_adr_value_type_code
66116          , p_side                     => 'NA'
66117    );
66118 
66119    xla_ae_lines_pkg.set_ccid(
66120     p_code_combination_id          => l_ccid
66121   , p_value_type_code              => l_adr_value_type_code
66122   , p_transaction_coa_id           => l_adr_transaction_coa_id
66123   , p_accounting_coa_id            => l_adr_accounting_coa_id
66124   , p_adr_code                     => 'CST_DEFAULT'
66125   , p_adr_type_code                => 'S'
66126   , p_component_type               => l_component_type
66127   , p_component_code               => l_component_code
66128   , p_component_type_code          => l_component_type_code
66129   , p_component_appl_id            => l_component_appl_id
66130   , p_amb_context_code             => l_amb_context_code
66131   , p_side                         => 'NA'
66132   );
66133 
66134 
66135    --
66136    --
66137    END IF;
66138 
66139        --
66140        -- Update the line information that should be overwritten
66141        --
66142        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
66143                                          p_header_num   => 1);
66144        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
66145 
66146        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
66147 
66148        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
66149           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
66150        END IF;
66151 
66152       --
66153       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
66154       --
66155       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
66156           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
66157       ELSE
66158           ---------------------------------------------------------------------------------------------------
66159           -- 4262811a Switch Sign
66160           ---------------------------------------------------------------------------------------------------
66161           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
66162           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66163                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66164           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66165                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66166           -- 5132302
66167           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
66168                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66169 
66170       END IF;
66171 
66172       -- 4955764
66173       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66174       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
66175 
66176 
66177       XLA_AE_LINES_PKG.ValidateCurrentLine;
66178       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66179 
66180       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66181                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
66182                ,p_balance_type_code => l_balance_type_code);
66183 
66184    END IF;
66185 
66186    -----------------------------------------------------------------------------------------
66187    -- 4262811 Multiperiod Accounting
66188    -----------------------------------------------------------------------------------------
66189      -- No MPA option is assigned.
66190 
66191 
66192 END IF;
66193 END IF;
66194 --
66195 
66196 --
66197 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66198    trace
66199       (p_msg      => 'END of AcctLineType_121'
66200       ,p_level    => C_LEVEL_PROCEDURE
66201       ,p_module   => l_log_module);
66202 END IF;
66203 --
66204 EXCEPTION
66205   WHEN xla_exceptions_pkg.application_exception THEN
66206       RAISE;
66207   WHEN OTHERS THEN
66208        xla_exceptions_pkg.raise_message
66209            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_121');
66210 END AcctLineType_121;
66211 --
66212 
66213 ---------------------------------------
66214 --
66215 -- PRIVATE FUNCTION
66216 --         AcctLineType_122
66217 --
66218 ---------------------------------------
66219 PROCEDURE AcctLineType_122 (
66220   p_application_id        IN NUMBER
66221  ,p_event_id              IN NUMBER
66222  ,p_calculate_acctd_flag  IN VARCHAR2
66223  ,p_calculate_g_l_flag    IN VARCHAR2
66224  ,p_actual_flag           IN OUT VARCHAR2
66225  ,p_balance_type_code     OUT VARCHAR2
66226  ,p_gain_or_loss_ref      OUT VARCHAR2
66227  
66228 --Cost Management Default Account
66229  , p_source_4            IN NUMBER
66230 --DISTRIBUTION_IDENTIFIER
66231  , p_source_11            IN NUMBER
66232 --Distribution Type
66233  , p_source_12            IN VARCHAR2
66234  , p_source_12_meaning    IN VARCHAR2
66235 --Entered Currency Code
66236  , p_source_15            IN VARCHAR2
66237 --Entered Amount
66238  , p_source_18            IN NUMBER
66239 --Currency Conversion Date
66240  , p_source_19            IN DATE
66241 --Currency Conversion Rate
66242  , p_source_20            IN NUMBER
66243 --Currency Conversion Type
66244  , p_source_21            IN VARCHAR2
66245 --Accounted Amount
66246  , p_source_22            IN NUMBER
66247 --Accounting Line Type
66248  , p_source_24            IN NUMBER
66249 )
66250 IS
66251 
66252 l_component_type              VARCHAR2(80);
66253 l_component_code              VARCHAR2(30);
66254 l_component_type_code         VARCHAR2(1);
66255 l_component_appl_id           INTEGER;
66256 l_amb_context_code            VARCHAR2(30);
66257 l_entity_code                 VARCHAR2(30);
66258 l_event_class_code            VARCHAR2(30);
66259 l_ae_header_id                NUMBER;
66260 l_event_type_code             VARCHAR2(30);
66261 l_line_definition_code        VARCHAR2(30);
66262 l_line_definition_owner_code  VARCHAR2(1);
66263 --
66264 -- adr variables
66265 l_segment                     VARCHAR2(30);
66266 l_ccid                        NUMBER;
66267 l_adr_transaction_coa_id      NUMBER;
66268 l_adr_accounting_coa_id       NUMBER;
66269 l_adr_flexfield_segment_code  VARCHAR2(30);
66270 l_adr_flex_value_set_id       NUMBER;
66271 l_adr_value_type_code         VARCHAR2(30);
66272 l_adr_value_combination_id    NUMBER;
66273 l_adr_value_segment_code      VARCHAR2(30);
66274 
66275 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
66276 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
66277 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
66278 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
66279 
66280 -- 4262811 Variables ------------------------------------------------------------------------------------------
66281 l_entered_amt_idx             NUMBER;
66282 l_accted_amt_idx              NUMBER;
66283 l_acc_rev_flag                VARCHAR2(1);
66284 l_accrual_line_num            NUMBER;
66285 l_tmp_amt                     NUMBER;
66286 l_acc_rev_natural_side_code   VARCHAR2(1);
66287 
66288 l_num_entries                 NUMBER;
66289 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
66290 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
66291 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
66292 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
66293 l_recog_line_1                NUMBER;
66294 l_recog_line_2                NUMBER;
66295 
66296 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
66297 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
66298 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
66299 
66300 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
66301 
66302 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
66303 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
66304 
66305 ---------------------------------------------------------------------------------------------------------------
66306 
66307 
66308 --
66309 -- bulk performance
66310 --
66311 l_balance_type_code           VARCHAR2(1);
66312 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
66313 l_log_module                  VARCHAR2(240);
66314 
66315 --
66316 -- Upgrade strategy
66317 --
66318 l_actual_upg_option           VARCHAR2(1);
66319 l_enc_upg_option           VARCHAR2(1);
66320 
66321 --
66322 BEGIN
66323 --
66324 IF g_log_enabled THEN
66325       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_122';
66326 END IF;
66327 --
66328 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66329 
66330       trace
66331          (p_msg      => 'BEGIN of AcctLineType_122'
66332          ,p_level    => C_LEVEL_PROCEDURE
66333          ,p_module   => l_log_module);
66334 
66335 END IF;
66336 --
66337 l_component_type             := 'AMB_JLT';
66338 l_component_code             := 'INTRANSIT_VALUATION';
66339 l_component_type_code        := 'S';
66340 l_component_appl_id          :=  707;
66341 l_amb_context_code           := 'DEFAULT';
66342 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
66343 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
66344 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_ALL';
66345 l_line_definition_owner_code := 'S';
66346 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT';
66347 --
66348 l_balance_type_code          := 'A';
66349 l_segment                     := NULL;
66350 l_ccid                        := NULL;
66351 l_adr_transaction_coa_id      := NULL;
66352 l_adr_accounting_coa_id       := NULL;
66353 l_adr_flexfield_segment_code  := NULL;
66354 l_adr_flex_value_set_id       := NULL;
66355 l_adr_value_type_code         := NULL;
66356 l_adr_value_combination_id    := NULL;
66357 l_adr_value_segment_code      := NULL;
66358 
66359 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
66360 l_bflow_class_code           := '';    -- 4219869 Business Flow
66361 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
66362 l_budgetary_control_flag     := 'N';
66363 
66364 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
66365 l_bflow_applied_to_amt       := NULL; -- 5132302
66366 l_entered_amt_idx            := NULL;          -- 4262811
66367 l_accted_amt_idx             := NULL;          -- 4262811
66368 l_acc_rev_flag               := NULL;          -- 4262811
66369 l_accrual_line_num           := NULL;          -- 4262811
66370 l_tmp_amt                    := NULL;          -- 4262811
66371 --
66372  
66373 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
66374     l_balance_type_code <> 'B' THEN
66375 IF NVL(p_source_24,9E125) =  14
66376  THEN 
66377 
66378    --
66379    XLA_AE_LINES_PKG.SetNewLine;
66380 
66381    p_balance_type_code          := l_balance_type_code;
66382    -- set the flag so later we will know whether the gain loss line needs to be created
66383    
66384    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
66385      p_actual_flag :='A';
66386    END IF;
66387 
66388    --
66389    -- bulk performance
66390    --
66391    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
66392                                       p_header_num   => 0); -- 4262811
66393    --
66394    -- set accounting line options
66395    --
66396    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
66397            p_natural_side_code          => 'D'
66398          , p_gain_or_loss_flag          => 'N'
66399          , p_gl_transfer_mode_code      => 'S'
66400          , p_acct_entry_type_code       => 'A'
66401          , p_switch_side_flag           => 'Y'
66402          , p_merge_duplicate_code       => 'N'
66403          );
66404    --
66405    l_acc_rev_natural_side_code := 'C';  -- 4262811
66406    -- 
66407    --
66408    -- set accounting line type info
66409    --
66410    xla_ae_lines_pkg.SetAcctLineType
66411       (p_component_type             => l_component_type
66412       ,p_event_type_code            => l_event_type_code
66413       ,p_line_definition_owner_code => l_line_definition_owner_code
66414       ,p_line_definition_code       => l_line_definition_code
66415       ,p_accounting_line_code       => l_component_code
66416       ,p_accounting_line_type_code  => l_component_type_code
66417       ,p_accounting_line_appl_id    => l_component_appl_id
66418       ,p_amb_context_code           => l_amb_context_code
66419       ,p_entity_code                => l_entity_code
66420       ,p_event_class_code           => l_event_class_code);
66421    --
66422    -- set accounting class
66423    --
66424    xla_ae_lines_pkg.SetAcctClass(
66425            p_accounting_class_code  => 'INTRANSIT_VALUATION'
66426          , p_ae_header_id           => l_ae_header_id
66427          );
66428 
66429    --
66430    -- set rounding class
66431    --
66432    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
66433                       'INTRANSIT_VALUATION';
66434 
66435    --
66436    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
66437    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
66438    --
66439    -- bulk performance
66440    --
66441    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
66442 
66443    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
66444       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
66445 
66446    -- 4955764
66447    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66448       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
66449 
66450    -- 4458381 Public Sector Enh
66451    
66452    --
66453    -- set accounting attributes for the line type
66454    --
66455    l_entered_amt_idx := 3;
66456    l_accted_amt_idx  := 8;
66457    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
66458    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
66459    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
66460    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
66461    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
66462    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
66463    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
66464    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
66465    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
66466    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
66467    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
66468    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
66469    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
66470    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
66471    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
66472    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
66473    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
66474 
66475    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
66476    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
66477 
66478    ---------------------------------------------------------------------------------------------------------------
66479    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
66480    ---------------------------------------------------------------------------------------------------------------
66481    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
66482 
66483    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66484    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66485 
66486    IF xla_accounting_cache_pkg.GetValueChar
66487          (p_source_code         => 'LEDGER_CATEGORY_CODE'
66488          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
66489    AND l_bflow_method_code = 'PRIOR_ENTRY'
66490 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
66491    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
66492          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
66493        )
66494    THEN
66495          xla_ae_lines_pkg.BflowUpgEntry
66496            (p_business_method_code    => l_bflow_method_code
66497            ,p_business_class_code     => l_bflow_class_code
66498            ,p_balance_type            => l_balance_type_code);
66499    ELSE
66500       NULL;
66501 -- No business flow processing for business flow method of NONE.
66502    END IF;
66503 
66504    --
66505    -- call analytical criteria
66506    --
66507    
66508    --
66509    -- call description
66510    --
66511    -- No description or it is inherited.
66512    --
66513    -- call ADRs
66514    -- Bug 4922099
66515    --
66516    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66517         (NVL(l_actual_upg_option, 'N') = 'O') OR
66518         (NVL(l_enc_upg_option, 'N') = 'O')
66519       )
66520    THEN
66521    NULL;
66522    --
66523    --
66524    
66525   l_ccid := AcctDerRule_4(
66526            p_application_id           => p_application_id
66527          , p_ae_header_id             => l_ae_header_id 
66528 , p_source_4 => p_source_4
66529          , x_transaction_coa_id       => l_adr_transaction_coa_id
66530          , x_accounting_coa_id        => l_adr_accounting_coa_id
66531          , x_value_type_code          => l_adr_value_type_code
66532          , p_side                     => 'NA'
66533    );
66534 
66535    xla_ae_lines_pkg.set_ccid(
66536     p_code_combination_id          => l_ccid
66537   , p_value_type_code              => l_adr_value_type_code
66538   , p_transaction_coa_id           => l_adr_transaction_coa_id
66539   , p_accounting_coa_id            => l_adr_accounting_coa_id
66540   , p_adr_code                     => 'CST_DEFAULT'
66541   , p_adr_type_code                => 'S'
66542   , p_component_type               => l_component_type
66543   , p_component_code               => l_component_code
66544   , p_component_type_code          => l_component_type_code
66545   , p_component_appl_id            => l_component_appl_id
66546   , p_amb_context_code             => l_amb_context_code
66547   , p_side                         => 'NA'
66548   );
66549 
66550 
66551    --
66552    --
66553    END IF;
66554    --
66555    -- Bug 4922099
66556    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
66557           (NVL(l_enc_upg_option, 'N') = 'O')
66558         ) AND
66559         (l_bflow_method_code = 'PRIOR_ENTRY')
66560       )
66561    THEN
66562       IF
66563       --
66564       1 = 2
66565       --
66566       THEN
66567       xla_accounting_err_pkg.build_message
66568                                     (p_appli_s_name            => 'XLA'
66569                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66570                                     ,p_token_1                 => 'LINE_NUMBER'
66571                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
66572                                     ,p_token_2                 => 'LINE_TYPE_NAME'
66573                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
66574                                                                              l_component_type
66575                                                                             ,l_component_code
66576                                                                             ,l_component_type_code
66577                                                                             ,l_component_appl_id
66578                                                                             ,l_amb_context_code
66579                                                                             ,l_entity_code
66580                                                                             ,l_event_class_code
66581                                                                            )
66582                                     ,p_token_3                 => 'OWNER'
66583                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
66584                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
66585                                                                           ,p_lookup_code    => l_component_type_code
66586                                                                          )
66587                                     ,p_token_4                 => 'PRODUCT_NAME'
66588                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
66589                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
66590                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
66591                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
66592                                     ,p_ae_header_id            =>  NULL
66593                                        );
66594 
66595         IF (C_LEVEL_ERROR>= g_log_level) THEN
66596                  trace
66597                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66598                       ,p_level    => C_LEVEL_ERROR
66599                       ,p_module   => l_log_module);
66600         END IF;
66601       END IF;
66602    END IF;
66603    --
66604    --
66605    ------------------------------------------------------------------------------------------------
66606    -- 4219869 Business Flow
66607    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
66608    -- Prior Entry.  Currently, the following code is always generated.
66609    ------------------------------------------------------------------------------------------------
66610    XLA_AE_LINES_PKG.ValidateCurrentLine;
66611 
66612    ------------------------------------------------------------------------------------
66613    -- 4219869 Business Flow
66614    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
66615    ------------------------------------------------------------------------------------
66616    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66617 
66618    ----------------------------------------------------------------------------------
66619    -- 4219869 Business Flow
66620    -- Update journal entry status -- Need to generate this within IF <condition>
66621    ----------------------------------------------------------------------------------
66622    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66623          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
66624          ,p_balance_type_code => l_balance_type_code
66625          );
66626 
66627    -------------------------------------------------------------------------------------------
66628    -- 4262811 - Generate the Accrual Reversal lines
66629    -------------------------------------------------------------------------------------------
66630    BEGIN
66631       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
66632                               (g_array_event(p_event_id).array_value_num('header_index'));
66633       IF l_acc_rev_flag IS NULL THEN
66634          l_acc_rev_flag := 'N';
66635       END IF;
66636    EXCEPTION
66637       WHEN OTHERS THEN
66638          l_acc_rev_flag := 'N';
66639    END;
66640    --
66641    IF (l_acc_rev_flag = 'Y') THEN
66642 
66643        -- 4645092  ------------------------------------------------------------------------------
66644        -- To allow MPA report to determine if it should generate report process
66645        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
66646        ------------------------------------------------------------------------------------------
66647 
66648        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
66649        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
66650    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
66651    -- call ADRs
66652    -- Bug 4922099
66653    --
66654    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66655         (NVL(l_actual_upg_option, 'N') = 'O') OR
66656         (NVL(l_enc_upg_option, 'N') = 'O')
66657       )
66658    THEN
66659    NULL;
66660    --
66661    --
66662    
66663   l_ccid := AcctDerRule_4(
66664            p_application_id           => p_application_id
66665          , p_ae_header_id             => l_ae_header_id 
66666 , p_source_4 => p_source_4
66667          , x_transaction_coa_id       => l_adr_transaction_coa_id
66668          , x_accounting_coa_id        => l_adr_accounting_coa_id
66669          , x_value_type_code          => l_adr_value_type_code
66670          , p_side                     => 'NA'
66671    );
66672 
66673    xla_ae_lines_pkg.set_ccid(
66674     p_code_combination_id          => l_ccid
66675   , p_value_type_code              => l_adr_value_type_code
66676   , p_transaction_coa_id           => l_adr_transaction_coa_id
66677   , p_accounting_coa_id            => l_adr_accounting_coa_id
66678   , p_adr_code                     => 'CST_DEFAULT'
66679   , p_adr_type_code                => 'S'
66680   , p_component_type               => l_component_type
66681   , p_component_code               => l_component_code
66682   , p_component_type_code          => l_component_type_code
66683   , p_component_appl_id            => l_component_appl_id
66684   , p_amb_context_code             => l_amb_context_code
66685   , p_side                         => 'NA'
66686   );
66687 
66688 
66689    --
66690    --
66691    END IF;
66692 
66693        --
66694        -- Update the line information that should be overwritten
66695        --
66696        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
66697                                          p_header_num   => 1);
66698        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
66699 
66700        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
66701 
66702        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
66703           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
66704        END IF;
66705 
66706       --
66707       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
66708       --
66709       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
66710           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
66711       ELSE
66712           ---------------------------------------------------------------------------------------------------
66713           -- 4262811a Switch Sign
66714           ---------------------------------------------------------------------------------------------------
66715           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
66716           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66717                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66718           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66719                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66720           -- 5132302
66721           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
66722                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66723 
66724       END IF;
66725 
66726       -- 4955764
66727       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66728       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
66729 
66730 
66731       XLA_AE_LINES_PKG.ValidateCurrentLine;
66732       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66733 
66734       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66735                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
66736                ,p_balance_type_code => l_balance_type_code);
66737 
66738    END IF;
66739 
66740    -----------------------------------------------------------------------------------------
66741    -- 4262811 Multiperiod Accounting
66742    -----------------------------------------------------------------------------------------
66743      -- No MPA option is assigned.
66744 
66745 
66746 END IF;
66747 END IF;
66748 --
66749 
66750 --
66751 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66752    trace
66753       (p_msg      => 'END of AcctLineType_122'
66754       ,p_level    => C_LEVEL_PROCEDURE
66755       ,p_module   => l_log_module);
66756 END IF;
66757 --
66758 EXCEPTION
66759   WHEN xla_exceptions_pkg.application_exception THEN
66760       RAISE;
66761   WHEN OTHERS THEN
66762        xla_exceptions_pkg.raise_message
66763            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_122');
66764 END AcctLineType_122;
66765 --
66766 
66767 ---------------------------------------
66768 --
66769 -- PRIVATE FUNCTION
66770 --         AcctLineType_123
66771 --
66772 ---------------------------------------
66773 PROCEDURE AcctLineType_123 (
66774   p_application_id        IN NUMBER
66775  ,p_event_id              IN NUMBER
66776  ,p_calculate_acctd_flag  IN VARCHAR2
66777  ,p_calculate_g_l_flag    IN VARCHAR2
66778  ,p_actual_flag           IN OUT VARCHAR2
66779  ,p_balance_type_code     OUT VARCHAR2
66780  ,p_gain_or_loss_ref      OUT VARCHAR2
66781  
66782 --Cost Management Default Account
66783  , p_source_4            IN NUMBER
66784 --DISTRIBUTION_IDENTIFIER
66785  , p_source_11            IN NUMBER
66786 --Distribution Type
66787  , p_source_12            IN VARCHAR2
66788  , p_source_12_meaning    IN VARCHAR2
66789 --Entered Currency Code
66790  , p_source_15            IN VARCHAR2
66791 --Entered Amount
66792  , p_source_18            IN NUMBER
66793 --Currency Conversion Date
66794  , p_source_19            IN DATE
66795 --Currency Conversion Rate
66796  , p_source_20            IN NUMBER
66797 --Currency Conversion Type
66798  , p_source_21            IN VARCHAR2
66799 --Accounted Amount
66800  , p_source_22            IN NUMBER
66801 --Accounting Line Type
66802  , p_source_24            IN NUMBER
66803 )
66804 IS
66805 
66806 l_component_type              VARCHAR2(80);
66807 l_component_code              VARCHAR2(30);
66808 l_component_type_code         VARCHAR2(1);
66809 l_component_appl_id           INTEGER;
66810 l_amb_context_code            VARCHAR2(30);
66811 l_entity_code                 VARCHAR2(30);
66812 l_event_class_code            VARCHAR2(30);
66813 l_ae_header_id                NUMBER;
66814 l_event_type_code             VARCHAR2(30);
66815 l_line_definition_code        VARCHAR2(30);
66816 l_line_definition_owner_code  VARCHAR2(1);
66817 --
66818 -- adr variables
66819 l_segment                     VARCHAR2(30);
66820 l_ccid                        NUMBER;
66821 l_adr_transaction_coa_id      NUMBER;
66822 l_adr_accounting_coa_id       NUMBER;
66823 l_adr_flexfield_segment_code  VARCHAR2(30);
66824 l_adr_flex_value_set_id       NUMBER;
66825 l_adr_value_type_code         VARCHAR2(30);
66826 l_adr_value_combination_id    NUMBER;
66827 l_adr_value_segment_code      VARCHAR2(30);
66828 
66829 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
66830 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
66831 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
66832 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
66833 
66834 -- 4262811 Variables ------------------------------------------------------------------------------------------
66835 l_entered_amt_idx             NUMBER;
66836 l_accted_amt_idx              NUMBER;
66837 l_acc_rev_flag                VARCHAR2(1);
66838 l_accrual_line_num            NUMBER;
66839 l_tmp_amt                     NUMBER;
66840 l_acc_rev_natural_side_code   VARCHAR2(1);
66841 
66842 l_num_entries                 NUMBER;
66843 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
66844 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
66845 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
66846 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
66847 l_recog_line_1                NUMBER;
66848 l_recog_line_2                NUMBER;
66849 
66850 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
66851 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
66852 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
66853 
66854 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
66855 
66856 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
66857 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
66858 
66859 ---------------------------------------------------------------------------------------------------------------
66860 
66861 
66862 --
66863 -- bulk performance
66864 --
66865 l_balance_type_code           VARCHAR2(1);
66866 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
66867 l_log_module                  VARCHAR2(240);
66868 
66869 --
66870 -- Upgrade strategy
66871 --
66872 l_actual_upg_option           VARCHAR2(1);
66873 l_enc_upg_option           VARCHAR2(1);
66874 
66875 --
66876 BEGIN
66877 --
66878 IF g_log_enabled THEN
66879       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_123';
66880 END IF;
66881 --
66882 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66883 
66884       trace
66885          (p_msg      => 'BEGIN of AcctLineType_123'
66886          ,p_level    => C_LEVEL_PROCEDURE
66887          ,p_module   => l_log_module);
66888 
66889 END IF;
66890 --
66891 l_component_type             := 'AMB_JLT';
66892 l_component_code             := 'INTRANSIT_VALUATION';
66893 l_component_type_code        := 'S';
66894 l_component_appl_id          :=  707;
66895 l_amb_context_code           := 'DEFAULT';
66896 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
66897 l_event_class_code           := 'USER_DEFINE';
66898 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
66899 l_line_definition_owner_code := 'S';
66900 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
66901 --
66902 l_balance_type_code          := 'A';
66903 l_segment                     := NULL;
66904 l_ccid                        := NULL;
66905 l_adr_transaction_coa_id      := NULL;
66906 l_adr_accounting_coa_id       := NULL;
66907 l_adr_flexfield_segment_code  := NULL;
66908 l_adr_flex_value_set_id       := NULL;
66909 l_adr_value_type_code         := NULL;
66910 l_adr_value_combination_id    := NULL;
66911 l_adr_value_segment_code      := NULL;
66912 
66913 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
66914 l_bflow_class_code           := '';    -- 4219869 Business Flow
66915 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
66916 l_budgetary_control_flag     := 'N';
66917 
66918 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
66919 l_bflow_applied_to_amt       := NULL; -- 5132302
66920 l_entered_amt_idx            := NULL;          -- 4262811
66921 l_accted_amt_idx             := NULL;          -- 4262811
66922 l_acc_rev_flag               := NULL;          -- 4262811
66923 l_accrual_line_num           := NULL;          -- 4262811
66924 l_tmp_amt                    := NULL;          -- 4262811
66925 --
66926  
66927 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
66928     l_balance_type_code <> 'B' THEN
66929 IF NVL(p_source_24,9E125) =  14
66930  THEN 
66931 
66932    --
66933    XLA_AE_LINES_PKG.SetNewLine;
66934 
66935    p_balance_type_code          := l_balance_type_code;
66936    -- set the flag so later we will know whether the gain loss line needs to be created
66937    
66938    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
66939      p_actual_flag :='A';
66940    END IF;
66941 
66942    --
66943    -- bulk performance
66944    --
66945    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
66946                                       p_header_num   => 0); -- 4262811
66947    --
66948    -- set accounting line options
66949    --
66950    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
66951            p_natural_side_code          => 'D'
66952          , p_gain_or_loss_flag          => 'N'
66953          , p_gl_transfer_mode_code      => 'S'
66954          , p_acct_entry_type_code       => 'A'
66955          , p_switch_side_flag           => 'Y'
66956          , p_merge_duplicate_code       => 'N'
66957          );
66958    --
66959    l_acc_rev_natural_side_code := 'C';  -- 4262811
66960    -- 
66961    --
66962    -- set accounting line type info
66963    --
66964    xla_ae_lines_pkg.SetAcctLineType
66965       (p_component_type             => l_component_type
66966       ,p_event_type_code            => l_event_type_code
66967       ,p_line_definition_owner_code => l_line_definition_owner_code
66968       ,p_line_definition_code       => l_line_definition_code
66969       ,p_accounting_line_code       => l_component_code
66970       ,p_accounting_line_type_code  => l_component_type_code
66971       ,p_accounting_line_appl_id    => l_component_appl_id
66972       ,p_amb_context_code           => l_amb_context_code
66973       ,p_entity_code                => l_entity_code
66974       ,p_event_class_code           => l_event_class_code);
66975    --
66976    -- set accounting class
66977    --
66978    xla_ae_lines_pkg.SetAcctClass(
66979            p_accounting_class_code  => 'INTRANSIT_VALUATION'
66980          , p_ae_header_id           => l_ae_header_id
66981          );
66982 
66983    --
66984    -- set rounding class
66985    --
66986    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
66987                       'INTRANSIT_VALUATION';
66988 
66989    --
66990    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
66991    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
66992    --
66993    -- bulk performance
66994    --
66995    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
66996 
66997    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
66998       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
66999 
67000    -- 4955764
67001    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67002       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
67003 
67004    -- 4458381 Public Sector Enh
67005    
67006    --
67007    -- set accounting attributes for the line type
67008    --
67009    l_entered_amt_idx := 3;
67010    l_accted_amt_idx  := 8;
67011    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
67012    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
67013    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
67014    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
67015    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
67016    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
67017    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
67018    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
67019    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
67020    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
67021    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
67022    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
67023    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
67024    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
67025    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
67026    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
67027    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
67028 
67029    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
67030    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
67031 
67032    ---------------------------------------------------------------------------------------------------------------
67033    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
67034    ---------------------------------------------------------------------------------------------------------------
67035    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
67036 
67037    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67038    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67039 
67040    IF xla_accounting_cache_pkg.GetValueChar
67041          (p_source_code         => 'LEDGER_CATEGORY_CODE'
67042          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
67043    AND l_bflow_method_code = 'PRIOR_ENTRY'
67044 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
67045    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
67046          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
67047        )
67048    THEN
67049          xla_ae_lines_pkg.BflowUpgEntry
67050            (p_business_method_code    => l_bflow_method_code
67051            ,p_business_class_code     => l_bflow_class_code
67052            ,p_balance_type            => l_balance_type_code);
67053    ELSE
67054       NULL;
67055 -- No business flow processing for business flow method of NONE.
67056    END IF;
67057 
67058    --
67059    -- call analytical criteria
67060    --
67061    
67062    --
67063    -- call description
67064    --
67065    -- No description or it is inherited.
67066    --
67067    -- call ADRs
67068    -- Bug 4922099
67069    --
67070    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67071         (NVL(l_actual_upg_option, 'N') = 'O') OR
67072         (NVL(l_enc_upg_option, 'N') = 'O')
67073       )
67074    THEN
67075    NULL;
67076    --
67077    --
67078    
67079   l_ccid := AcctDerRule_4(
67080            p_application_id           => p_application_id
67081          , p_ae_header_id             => l_ae_header_id 
67082 , p_source_4 => p_source_4
67083          , x_transaction_coa_id       => l_adr_transaction_coa_id
67084          , x_accounting_coa_id        => l_adr_accounting_coa_id
67085          , x_value_type_code          => l_adr_value_type_code
67086          , p_side                     => 'NA'
67087    );
67088 
67089    xla_ae_lines_pkg.set_ccid(
67090     p_code_combination_id          => l_ccid
67091   , p_value_type_code              => l_adr_value_type_code
67092   , p_transaction_coa_id           => l_adr_transaction_coa_id
67093   , p_accounting_coa_id            => l_adr_accounting_coa_id
67094   , p_adr_code                     => 'CST_DEFAULT'
67095   , p_adr_type_code                => 'S'
67096   , p_component_type               => l_component_type
67097   , p_component_code               => l_component_code
67098   , p_component_type_code          => l_component_type_code
67099   , p_component_appl_id            => l_component_appl_id
67100   , p_amb_context_code             => l_amb_context_code
67101   , p_side                         => 'NA'
67102   );
67103 
67104 
67105    --
67106    --
67107    END IF;
67108    --
67109    -- Bug 4922099
67110    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
67111           (NVL(l_enc_upg_option, 'N') = 'O')
67112         ) AND
67113         (l_bflow_method_code = 'PRIOR_ENTRY')
67114       )
67115    THEN
67116       IF
67117       --
67118       1 = 2
67119       --
67120       THEN
67121       xla_accounting_err_pkg.build_message
67122                                     (p_appli_s_name            => 'XLA'
67123                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67124                                     ,p_token_1                 => 'LINE_NUMBER'
67125                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
67126                                     ,p_token_2                 => 'LINE_TYPE_NAME'
67127                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
67128                                                                              l_component_type
67129                                                                             ,l_component_code
67130                                                                             ,l_component_type_code
67131                                                                             ,l_component_appl_id
67132                                                                             ,l_amb_context_code
67133                                                                             ,l_entity_code
67134                                                                             ,l_event_class_code
67135                                                                            )
67136                                     ,p_token_3                 => 'OWNER'
67137                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
67138                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
67139                                                                           ,p_lookup_code    => l_component_type_code
67140                                                                          )
67141                                     ,p_token_4                 => 'PRODUCT_NAME'
67142                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
67143                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
67144                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
67145                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
67146                                     ,p_ae_header_id            =>  NULL
67147                                        );
67148 
67149         IF (C_LEVEL_ERROR>= g_log_level) THEN
67150                  trace
67151                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67152                       ,p_level    => C_LEVEL_ERROR
67153                       ,p_module   => l_log_module);
67154         END IF;
67155       END IF;
67156    END IF;
67157    --
67158    --
67159    ------------------------------------------------------------------------------------------------
67160    -- 4219869 Business Flow
67161    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
67162    -- Prior Entry.  Currently, the following code is always generated.
67163    ------------------------------------------------------------------------------------------------
67164    XLA_AE_LINES_PKG.ValidateCurrentLine;
67165 
67166    ------------------------------------------------------------------------------------
67167    -- 4219869 Business Flow
67168    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
67169    ------------------------------------------------------------------------------------
67170    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67171 
67172    ----------------------------------------------------------------------------------
67173    -- 4219869 Business Flow
67174    -- Update journal entry status -- Need to generate this within IF <condition>
67175    ----------------------------------------------------------------------------------
67176    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67177          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
67178          ,p_balance_type_code => l_balance_type_code
67179          );
67180 
67181    -------------------------------------------------------------------------------------------
67182    -- 4262811 - Generate the Accrual Reversal lines
67183    -------------------------------------------------------------------------------------------
67184    BEGIN
67185       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
67186                               (g_array_event(p_event_id).array_value_num('header_index'));
67187       IF l_acc_rev_flag IS NULL THEN
67188          l_acc_rev_flag := 'N';
67189       END IF;
67190    EXCEPTION
67191       WHEN OTHERS THEN
67192          l_acc_rev_flag := 'N';
67193    END;
67194    --
67195    IF (l_acc_rev_flag = 'Y') THEN
67196 
67197        -- 4645092  ------------------------------------------------------------------------------
67198        -- To allow MPA report to determine if it should generate report process
67199        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
67200        ------------------------------------------------------------------------------------------
67201 
67202        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
67203        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
67204    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
67205    -- call ADRs
67206    -- Bug 4922099
67207    --
67208    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67209         (NVL(l_actual_upg_option, 'N') = 'O') OR
67210         (NVL(l_enc_upg_option, 'N') = 'O')
67211       )
67212    THEN
67213    NULL;
67214    --
67215    --
67216    
67217   l_ccid := AcctDerRule_4(
67218            p_application_id           => p_application_id
67219          , p_ae_header_id             => l_ae_header_id 
67220 , p_source_4 => p_source_4
67221          , x_transaction_coa_id       => l_adr_transaction_coa_id
67222          , x_accounting_coa_id        => l_adr_accounting_coa_id
67223          , x_value_type_code          => l_adr_value_type_code
67224          , p_side                     => 'NA'
67225    );
67226 
67227    xla_ae_lines_pkg.set_ccid(
67228     p_code_combination_id          => l_ccid
67229   , p_value_type_code              => l_adr_value_type_code
67230   , p_transaction_coa_id           => l_adr_transaction_coa_id
67231   , p_accounting_coa_id            => l_adr_accounting_coa_id
67232   , p_adr_code                     => 'CST_DEFAULT'
67233   , p_adr_type_code                => 'S'
67234   , p_component_type               => l_component_type
67235   , p_component_code               => l_component_code
67236   , p_component_type_code          => l_component_type_code
67237   , p_component_appl_id            => l_component_appl_id
67238   , p_amb_context_code             => l_amb_context_code
67239   , p_side                         => 'NA'
67240   );
67241 
67242 
67243    --
67244    --
67245    END IF;
67246 
67247        --
67248        -- Update the line information that should be overwritten
67249        --
67250        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
67251                                          p_header_num   => 1);
67252        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
67253 
67254        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
67255 
67256        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
67257           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
67258        END IF;
67259 
67260       --
67261       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
67262       --
67263       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
67264           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
67265       ELSE
67266           ---------------------------------------------------------------------------------------------------
67267           -- 4262811a Switch Sign
67268           ---------------------------------------------------------------------------------------------------
67269           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
67270           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67271                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67272           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67273                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67274           -- 5132302
67275           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
67276                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67277 
67278       END IF;
67279 
67280       -- 4955764
67281       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67282       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
67283 
67284 
67285       XLA_AE_LINES_PKG.ValidateCurrentLine;
67286       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67287 
67288       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67289                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
67290                ,p_balance_type_code => l_balance_type_code);
67291 
67292    END IF;
67293 
67294    -----------------------------------------------------------------------------------------
67295    -- 4262811 Multiperiod Accounting
67296    -----------------------------------------------------------------------------------------
67297      -- No MPA option is assigned.
67298 
67299 
67300 END IF;
67301 END IF;
67302 --
67303 
67304 --
67305 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67306    trace
67307       (p_msg      => 'END of AcctLineType_123'
67308       ,p_level    => C_LEVEL_PROCEDURE
67309       ,p_module   => l_log_module);
67310 END IF;
67311 --
67312 EXCEPTION
67313   WHEN xla_exceptions_pkg.application_exception THEN
67314       RAISE;
67315   WHEN OTHERS THEN
67316        xla_exceptions_pkg.raise_message
67317            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_123');
67318 END AcctLineType_123;
67319 --
67320 
67321 ---------------------------------------
67322 --
67323 -- PRIVATE FUNCTION
67324 --         AcctLineType_124
67325 --
67326 ---------------------------------------
67327 PROCEDURE AcctLineType_124 (
67328   p_application_id        IN NUMBER
67329  ,p_event_id              IN NUMBER
67330  ,p_calculate_acctd_flag  IN VARCHAR2
67331  ,p_calculate_g_l_flag    IN VARCHAR2
67332  ,p_actual_flag           IN OUT VARCHAR2
67333  ,p_balance_type_code     OUT VARCHAR2
67334  ,p_gain_or_loss_ref      OUT VARCHAR2
67335  
67336 --Cost Management Default Account
67337  , p_source_4            IN NUMBER
67338 --DISTRIBUTION_IDENTIFIER
67339  , p_source_11            IN NUMBER
67340 --Distribution Type
67341  , p_source_12            IN VARCHAR2
67342  , p_source_12_meaning    IN VARCHAR2
67343 --Entered Currency Code
67344  , p_source_15            IN VARCHAR2
67345 --Entered Amount
67346  , p_source_18            IN NUMBER
67347 --Currency Conversion Date
67348  , p_source_19            IN DATE
67349 --Currency Conversion Rate
67350  , p_source_20            IN NUMBER
67351 --Currency Conversion Type
67352  , p_source_21            IN VARCHAR2
67353 --Accounted Amount
67354  , p_source_22            IN NUMBER
67355 --Accounting Line Type
67356  , p_source_24            IN NUMBER
67357 )
67358 IS
67359 
67360 l_component_type              VARCHAR2(80);
67361 l_component_code              VARCHAR2(30);
67362 l_component_type_code         VARCHAR2(1);
67363 l_component_appl_id           INTEGER;
67364 l_amb_context_code            VARCHAR2(30);
67365 l_entity_code                 VARCHAR2(30);
67366 l_event_class_code            VARCHAR2(30);
67367 l_ae_header_id                NUMBER;
67368 l_event_type_code             VARCHAR2(30);
67369 l_line_definition_code        VARCHAR2(30);
67370 l_line_definition_owner_code  VARCHAR2(1);
67371 --
67372 -- adr variables
67373 l_segment                     VARCHAR2(30);
67374 l_ccid                        NUMBER;
67375 l_adr_transaction_coa_id      NUMBER;
67376 l_adr_accounting_coa_id       NUMBER;
67377 l_adr_flexfield_segment_code  VARCHAR2(30);
67378 l_adr_flex_value_set_id       NUMBER;
67379 l_adr_value_type_code         VARCHAR2(30);
67380 l_adr_value_combination_id    NUMBER;
67381 l_adr_value_segment_code      VARCHAR2(30);
67382 
67383 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
67384 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
67385 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
67386 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
67387 
67388 -- 4262811 Variables ------------------------------------------------------------------------------------------
67389 l_entered_amt_idx             NUMBER;
67390 l_accted_amt_idx              NUMBER;
67391 l_acc_rev_flag                VARCHAR2(1);
67392 l_accrual_line_num            NUMBER;
67393 l_tmp_amt                     NUMBER;
67394 l_acc_rev_natural_side_code   VARCHAR2(1);
67395 
67396 l_num_entries                 NUMBER;
67397 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
67398 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
67399 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
67400 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
67401 l_recog_line_1                NUMBER;
67402 l_recog_line_2                NUMBER;
67403 
67404 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
67405 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
67406 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
67407 
67408 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
67409 
67410 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
67411 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
67412 
67413 ---------------------------------------------------------------------------------------------------------------
67414 
67415 
67416 --
67417 -- bulk performance
67418 --
67419 l_balance_type_code           VARCHAR2(1);
67420 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
67421 l_log_module                  VARCHAR2(240);
67422 
67423 --
67424 -- Upgrade strategy
67425 --
67426 l_actual_upg_option           VARCHAR2(1);
67427 l_enc_upg_option           VARCHAR2(1);
67428 
67429 --
67430 BEGIN
67431 --
67432 IF g_log_enabled THEN
67433       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_124';
67434 END IF;
67435 --
67436 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67437 
67438       trace
67439          (p_msg      => 'BEGIN of AcctLineType_124'
67440          ,p_level    => C_LEVEL_PROCEDURE
67441          ,p_module   => l_log_module);
67442 
67443 END IF;
67444 --
67445 l_component_type             := 'AMB_JLT';
67446 l_component_code             := 'INTRANSIT_VALUATION';
67447 l_component_type_code        := 'S';
67448 l_component_appl_id          :=  707;
67449 l_amb_context_code           := 'DEFAULT';
67450 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
67451 l_event_class_code           := 'USER_DEFINE';
67452 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
67453 l_line_definition_owner_code := 'S';
67454 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
67455 --
67456 l_balance_type_code          := 'A';
67457 l_segment                     := NULL;
67458 l_ccid                        := NULL;
67459 l_adr_transaction_coa_id      := NULL;
67460 l_adr_accounting_coa_id       := NULL;
67461 l_adr_flexfield_segment_code  := NULL;
67462 l_adr_flex_value_set_id       := NULL;
67463 l_adr_value_type_code         := NULL;
67464 l_adr_value_combination_id    := NULL;
67465 l_adr_value_segment_code      := NULL;
67466 
67467 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
67468 l_bflow_class_code           := '';    -- 4219869 Business Flow
67469 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
67470 l_budgetary_control_flag     := 'N';
67471 
67472 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
67473 l_bflow_applied_to_amt       := NULL; -- 5132302
67474 l_entered_amt_idx            := NULL;          -- 4262811
67475 l_accted_amt_idx             := NULL;          -- 4262811
67476 l_acc_rev_flag               := NULL;          -- 4262811
67477 l_accrual_line_num           := NULL;          -- 4262811
67478 l_tmp_amt                    := NULL;          -- 4262811
67479 --
67480  
67481 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
67482     l_balance_type_code <> 'B' THEN
67483 IF NVL(p_source_24,9E125) =  14
67484  THEN 
67485 
67486    --
67487    XLA_AE_LINES_PKG.SetNewLine;
67488 
67489    p_balance_type_code          := l_balance_type_code;
67490    -- set the flag so later we will know whether the gain loss line needs to be created
67491    
67492    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
67493      p_actual_flag :='A';
67494    END IF;
67495 
67496    --
67497    -- bulk performance
67498    --
67499    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
67500                                       p_header_num   => 0); -- 4262811
67501    --
67502    -- set accounting line options
67503    --
67504    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
67505            p_natural_side_code          => 'D'
67506          , p_gain_or_loss_flag          => 'N'
67507          , p_gl_transfer_mode_code      => 'S'
67508          , p_acct_entry_type_code       => 'A'
67509          , p_switch_side_flag           => 'Y'
67510          , p_merge_duplicate_code       => 'N'
67511          );
67512    --
67513    l_acc_rev_natural_side_code := 'C';  -- 4262811
67514    -- 
67515    --
67516    -- set accounting line type info
67517    --
67518    xla_ae_lines_pkg.SetAcctLineType
67519       (p_component_type             => l_component_type
67520       ,p_event_type_code            => l_event_type_code
67521       ,p_line_definition_owner_code => l_line_definition_owner_code
67522       ,p_line_definition_code       => l_line_definition_code
67523       ,p_accounting_line_code       => l_component_code
67524       ,p_accounting_line_type_code  => l_component_type_code
67525       ,p_accounting_line_appl_id    => l_component_appl_id
67526       ,p_amb_context_code           => l_amb_context_code
67527       ,p_entity_code                => l_entity_code
67528       ,p_event_class_code           => l_event_class_code);
67529    --
67530    -- set accounting class
67531    --
67532    xla_ae_lines_pkg.SetAcctClass(
67533            p_accounting_class_code  => 'INTRANSIT_VALUATION'
67534          , p_ae_header_id           => l_ae_header_id
67535          );
67536 
67537    --
67538    -- set rounding class
67539    --
67540    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
67541                       'INTRANSIT_VALUATION';
67542 
67543    --
67544    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
67545    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
67546    --
67547    -- bulk performance
67548    --
67549    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
67550 
67551    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
67552       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
67553 
67554    -- 4955764
67555    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67556       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
67557 
67558    -- 4458381 Public Sector Enh
67559    
67560    --
67561    -- set accounting attributes for the line type
67562    --
67563    l_entered_amt_idx := 3;
67564    l_accted_amt_idx  := 8;
67565    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
67566    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
67567    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
67568    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
67569    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
67570    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
67571    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
67572    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
67573    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
67574    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
67575    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
67576    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
67577    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
67578    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
67579    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
67580    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
67581    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
67582 
67583    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
67584    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
67585 
67586    ---------------------------------------------------------------------------------------------------------------
67587    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
67588    ---------------------------------------------------------------------------------------------------------------
67589    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
67590 
67591    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67592    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67593 
67594    IF xla_accounting_cache_pkg.GetValueChar
67595          (p_source_code         => 'LEDGER_CATEGORY_CODE'
67596          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
67597    AND l_bflow_method_code = 'PRIOR_ENTRY'
67598 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
67599    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
67600          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
67601        )
67602    THEN
67603          xla_ae_lines_pkg.BflowUpgEntry
67604            (p_business_method_code    => l_bflow_method_code
67605            ,p_business_class_code     => l_bflow_class_code
67606            ,p_balance_type            => l_balance_type_code);
67607    ELSE
67608       NULL;
67609 -- No business flow processing for business flow method of NONE.
67610    END IF;
67611 
67612    --
67613    -- call analytical criteria
67614    --
67615    
67616    --
67617    -- call description
67618    --
67619    -- No description or it is inherited.
67620    --
67621    -- call ADRs
67622    -- Bug 4922099
67623    --
67624    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67625         (NVL(l_actual_upg_option, 'N') = 'O') OR
67626         (NVL(l_enc_upg_option, 'N') = 'O')
67627       )
67628    THEN
67629    NULL;
67630    --
67631    --
67632    
67633   l_ccid := AcctDerRule_4(
67634            p_application_id           => p_application_id
67635          , p_ae_header_id             => l_ae_header_id 
67636 , p_source_4 => p_source_4
67637          , x_transaction_coa_id       => l_adr_transaction_coa_id
67638          , x_accounting_coa_id        => l_adr_accounting_coa_id
67639          , x_value_type_code          => l_adr_value_type_code
67640          , p_side                     => 'NA'
67641    );
67642 
67643    xla_ae_lines_pkg.set_ccid(
67644     p_code_combination_id          => l_ccid
67645   , p_value_type_code              => l_adr_value_type_code
67646   , p_transaction_coa_id           => l_adr_transaction_coa_id
67647   , p_accounting_coa_id            => l_adr_accounting_coa_id
67648   , p_adr_code                     => 'CST_DEFAULT'
67649   , p_adr_type_code                => 'S'
67650   , p_component_type               => l_component_type
67651   , p_component_code               => l_component_code
67652   , p_component_type_code          => l_component_type_code
67653   , p_component_appl_id            => l_component_appl_id
67654   , p_amb_context_code             => l_amb_context_code
67655   , p_side                         => 'NA'
67656   );
67657 
67658 
67659    --
67660    --
67661    END IF;
67662    --
67663    -- Bug 4922099
67664    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
67665           (NVL(l_enc_upg_option, 'N') = 'O')
67666         ) AND
67667         (l_bflow_method_code = 'PRIOR_ENTRY')
67668       )
67669    THEN
67670       IF
67671       --
67672       1 = 2
67673       --
67674       THEN
67675       xla_accounting_err_pkg.build_message
67676                                     (p_appli_s_name            => 'XLA'
67677                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67678                                     ,p_token_1                 => 'LINE_NUMBER'
67679                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
67680                                     ,p_token_2                 => 'LINE_TYPE_NAME'
67681                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
67682                                                                              l_component_type
67683                                                                             ,l_component_code
67684                                                                             ,l_component_type_code
67685                                                                             ,l_component_appl_id
67686                                                                             ,l_amb_context_code
67687                                                                             ,l_entity_code
67688                                                                             ,l_event_class_code
67689                                                                            )
67690                                     ,p_token_3                 => 'OWNER'
67691                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
67692                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
67693                                                                           ,p_lookup_code    => l_component_type_code
67694                                                                          )
67695                                     ,p_token_4                 => 'PRODUCT_NAME'
67696                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
67697                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
67698                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
67699                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
67700                                     ,p_ae_header_id            =>  NULL
67701                                        );
67702 
67703         IF (C_LEVEL_ERROR>= g_log_level) THEN
67704                  trace
67705                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67706                       ,p_level    => C_LEVEL_ERROR
67707                       ,p_module   => l_log_module);
67708         END IF;
67709       END IF;
67710    END IF;
67711    --
67712    --
67713    ------------------------------------------------------------------------------------------------
67714    -- 4219869 Business Flow
67715    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
67716    -- Prior Entry.  Currently, the following code is always generated.
67717    ------------------------------------------------------------------------------------------------
67718    XLA_AE_LINES_PKG.ValidateCurrentLine;
67719 
67720    ------------------------------------------------------------------------------------
67721    -- 4219869 Business Flow
67722    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
67723    ------------------------------------------------------------------------------------
67724    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67725 
67726    ----------------------------------------------------------------------------------
67727    -- 4219869 Business Flow
67728    -- Update journal entry status -- Need to generate this within IF <condition>
67729    ----------------------------------------------------------------------------------
67730    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67731          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
67732          ,p_balance_type_code => l_balance_type_code
67733          );
67734 
67735    -------------------------------------------------------------------------------------------
67736    -- 4262811 - Generate the Accrual Reversal lines
67737    -------------------------------------------------------------------------------------------
67738    BEGIN
67739       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
67740                               (g_array_event(p_event_id).array_value_num('header_index'));
67741       IF l_acc_rev_flag IS NULL THEN
67742          l_acc_rev_flag := 'N';
67743       END IF;
67744    EXCEPTION
67745       WHEN OTHERS THEN
67746          l_acc_rev_flag := 'N';
67747    END;
67748    --
67749    IF (l_acc_rev_flag = 'Y') THEN
67750 
67751        -- 4645092  ------------------------------------------------------------------------------
67752        -- To allow MPA report to determine if it should generate report process
67753        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
67754        ------------------------------------------------------------------------------------------
67755 
67756        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
67757        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
67758    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
67759    -- call ADRs
67760    -- Bug 4922099
67761    --
67762    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67763         (NVL(l_actual_upg_option, 'N') = 'O') OR
67764         (NVL(l_enc_upg_option, 'N') = 'O')
67765       )
67766    THEN
67767    NULL;
67768    --
67769    --
67770    
67771   l_ccid := AcctDerRule_4(
67772            p_application_id           => p_application_id
67773          , p_ae_header_id             => l_ae_header_id 
67774 , p_source_4 => p_source_4
67775          , x_transaction_coa_id       => l_adr_transaction_coa_id
67776          , x_accounting_coa_id        => l_adr_accounting_coa_id
67777          , x_value_type_code          => l_adr_value_type_code
67778          , p_side                     => 'NA'
67779    );
67780 
67781    xla_ae_lines_pkg.set_ccid(
67782     p_code_combination_id          => l_ccid
67783   , p_value_type_code              => l_adr_value_type_code
67784   , p_transaction_coa_id           => l_adr_transaction_coa_id
67785   , p_accounting_coa_id            => l_adr_accounting_coa_id
67786   , p_adr_code                     => 'CST_DEFAULT'
67787   , p_adr_type_code                => 'S'
67788   , p_component_type               => l_component_type
67789   , p_component_code               => l_component_code
67790   , p_component_type_code          => l_component_type_code
67791   , p_component_appl_id            => l_component_appl_id
67792   , p_amb_context_code             => l_amb_context_code
67793   , p_side                         => 'NA'
67794   );
67795 
67796 
67797    --
67798    --
67799    END IF;
67800 
67801        --
67802        -- Update the line information that should be overwritten
67803        --
67804        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
67805                                          p_header_num   => 1);
67806        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
67807 
67808        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
67809 
67810        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
67811           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
67812        END IF;
67813 
67814       --
67815       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
67816       --
67817       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
67818           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
67819       ELSE
67820           ---------------------------------------------------------------------------------------------------
67821           -- 4262811a Switch Sign
67822           ---------------------------------------------------------------------------------------------------
67823           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
67824           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67825                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67826           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67827                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67828           -- 5132302
67829           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
67830                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67831 
67832       END IF;
67833 
67834       -- 4955764
67835       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67836       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
67837 
67838 
67839       XLA_AE_LINES_PKG.ValidateCurrentLine;
67840       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67841 
67842       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67843                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
67844                ,p_balance_type_code => l_balance_type_code);
67845 
67846    END IF;
67847 
67848    -----------------------------------------------------------------------------------------
67849    -- 4262811 Multiperiod Accounting
67850    -----------------------------------------------------------------------------------------
67851      -- No MPA option is assigned.
67852 
67853 
67854 END IF;
67855 END IF;
67856 --
67857 
67858 --
67859 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67860    trace
67861       (p_msg      => 'END of AcctLineType_124'
67862       ,p_level    => C_LEVEL_PROCEDURE
67863       ,p_module   => l_log_module);
67864 END IF;
67865 --
67866 EXCEPTION
67867   WHEN xla_exceptions_pkg.application_exception THEN
67868       RAISE;
67869   WHEN OTHERS THEN
67870        xla_exceptions_pkg.raise_message
67871            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_124');
67872 END AcctLineType_124;
67873 --
67874 
67875 ---------------------------------------
67876 --
67877 -- PRIVATE FUNCTION
67878 --         AcctLineType_125
67879 --
67880 ---------------------------------------
67881 PROCEDURE AcctLineType_125 (
67882   p_application_id        IN NUMBER
67883  ,p_event_id              IN NUMBER
67884  ,p_calculate_acctd_flag  IN VARCHAR2
67885  ,p_calculate_g_l_flag    IN VARCHAR2
67886  ,p_actual_flag           IN OUT VARCHAR2
67887  ,p_balance_type_code     OUT VARCHAR2
67888  ,p_gain_or_loss_ref      OUT VARCHAR2
67889  
67890 --Cost Management Default Account
67891  , p_source_4            IN NUMBER
67892 --DISTRIBUTION_IDENTIFIER
67893  , p_source_11            IN NUMBER
67894 --Distribution Type
67895  , p_source_12            IN VARCHAR2
67896  , p_source_12_meaning    IN VARCHAR2
67897 --Entered Currency Code
67898  , p_source_15            IN VARCHAR2
67899 --Entered Amount
67900  , p_source_18            IN NUMBER
67901 --Currency Conversion Date
67902  , p_source_19            IN DATE
67903 --Currency Conversion Rate
67904  , p_source_20            IN NUMBER
67905 --Currency Conversion Type
67906  , p_source_21            IN VARCHAR2
67907 --Accounted Amount
67908  , p_source_22            IN NUMBER
67909 --Accounting Line Type
67910  , p_source_24            IN NUMBER
67911 )
67912 IS
67913 
67914 l_component_type              VARCHAR2(80);
67915 l_component_code              VARCHAR2(30);
67916 l_component_type_code         VARCHAR2(1);
67917 l_component_appl_id           INTEGER;
67918 l_amb_context_code            VARCHAR2(30);
67919 l_entity_code                 VARCHAR2(30);
67920 l_event_class_code            VARCHAR2(30);
67921 l_ae_header_id                NUMBER;
67922 l_event_type_code             VARCHAR2(30);
67923 l_line_definition_code        VARCHAR2(30);
67924 l_line_definition_owner_code  VARCHAR2(1);
67925 --
67926 -- adr variables
67927 l_segment                     VARCHAR2(30);
67928 l_ccid                        NUMBER;
67929 l_adr_transaction_coa_id      NUMBER;
67930 l_adr_accounting_coa_id       NUMBER;
67931 l_adr_flexfield_segment_code  VARCHAR2(30);
67932 l_adr_flex_value_set_id       NUMBER;
67933 l_adr_value_type_code         VARCHAR2(30);
67934 l_adr_value_combination_id    NUMBER;
67935 l_adr_value_segment_code      VARCHAR2(30);
67936 
67937 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
67938 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
67939 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
67940 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
67941 
67942 -- 4262811 Variables ------------------------------------------------------------------------------------------
67943 l_entered_amt_idx             NUMBER;
67944 l_accted_amt_idx              NUMBER;
67945 l_acc_rev_flag                VARCHAR2(1);
67946 l_accrual_line_num            NUMBER;
67947 l_tmp_amt                     NUMBER;
67948 l_acc_rev_natural_side_code   VARCHAR2(1);
67949 
67950 l_num_entries                 NUMBER;
67951 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
67952 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
67953 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
67954 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
67955 l_recog_line_1                NUMBER;
67956 l_recog_line_2                NUMBER;
67957 
67958 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
67959 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
67960 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
67961 
67962 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
67963 
67964 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
67965 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
67966 
67967 ---------------------------------------------------------------------------------------------------------------
67968 
67969 
67970 --
67971 -- bulk performance
67972 --
67973 l_balance_type_code           VARCHAR2(1);
67974 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
67975 l_log_module                  VARCHAR2(240);
67976 
67977 --
67978 -- Upgrade strategy
67979 --
67980 l_actual_upg_option           VARCHAR2(1);
67981 l_enc_upg_option           VARCHAR2(1);
67982 
67983 --
67984 BEGIN
67985 --
67986 IF g_log_enabled THEN
67987       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_125';
67988 END IF;
67989 --
67990 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67991 
67992       trace
67993          (p_msg      => 'BEGIN of AcctLineType_125'
67994          ,p_level    => C_LEVEL_PROCEDURE
67995          ,p_module   => l_log_module);
67996 
67997 END IF;
67998 --
67999 l_component_type             := 'AMB_JLT';
68000 l_component_code             := 'INTRANSIT_VALUATION';
68001 l_component_type_code        := 'S';
68002 l_component_appl_id          :=  707;
68003 l_amb_context_code           := 'DEFAULT';
68004 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
68005 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
68006 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
68007 l_line_definition_owner_code := 'S';
68008 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
68009 --
68010 l_balance_type_code          := 'A';
68011 l_segment                     := NULL;
68012 l_ccid                        := NULL;
68013 l_adr_transaction_coa_id      := NULL;
68014 l_adr_accounting_coa_id       := NULL;
68015 l_adr_flexfield_segment_code  := NULL;
68016 l_adr_flex_value_set_id       := NULL;
68017 l_adr_value_type_code         := NULL;
68018 l_adr_value_combination_id    := NULL;
68019 l_adr_value_segment_code      := NULL;
68020 
68021 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
68022 l_bflow_class_code           := '';    -- 4219869 Business Flow
68023 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
68024 l_budgetary_control_flag     := 'N';
68025 
68026 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
68027 l_bflow_applied_to_amt       := NULL; -- 5132302
68028 l_entered_amt_idx            := NULL;          -- 4262811
68029 l_accted_amt_idx             := NULL;          -- 4262811
68030 l_acc_rev_flag               := NULL;          -- 4262811
68031 l_accrual_line_num           := NULL;          -- 4262811
68032 l_tmp_amt                    := NULL;          -- 4262811
68033 --
68034  
68035 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
68036     l_balance_type_code <> 'B' THEN
68037 IF NVL(p_source_24,9E125) =  14
68038  THEN 
68039 
68040    --
68041    XLA_AE_LINES_PKG.SetNewLine;
68042 
68043    p_balance_type_code          := l_balance_type_code;
68044    -- set the flag so later we will know whether the gain loss line needs to be created
68045    
68046    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
68047      p_actual_flag :='A';
68048    END IF;
68049 
68050    --
68051    -- bulk performance
68052    --
68053    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
68054                                       p_header_num   => 0); -- 4262811
68055    --
68056    -- set accounting line options
68057    --
68058    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
68059            p_natural_side_code          => 'D'
68060          , p_gain_or_loss_flag          => 'N'
68061          , p_gl_transfer_mode_code      => 'S'
68062          , p_acct_entry_type_code       => 'A'
68063          , p_switch_side_flag           => 'Y'
68064          , p_merge_duplicate_code       => 'N'
68065          );
68066    --
68067    l_acc_rev_natural_side_code := 'C';  -- 4262811
68068    -- 
68069    --
68070    -- set accounting line type info
68071    --
68072    xla_ae_lines_pkg.SetAcctLineType
68073       (p_component_type             => l_component_type
68074       ,p_event_type_code            => l_event_type_code
68075       ,p_line_definition_owner_code => l_line_definition_owner_code
68076       ,p_line_definition_code       => l_line_definition_code
68077       ,p_accounting_line_code       => l_component_code
68078       ,p_accounting_line_type_code  => l_component_type_code
68079       ,p_accounting_line_appl_id    => l_component_appl_id
68080       ,p_amb_context_code           => l_amb_context_code
68081       ,p_entity_code                => l_entity_code
68082       ,p_event_class_code           => l_event_class_code);
68083    --
68084    -- set accounting class
68085    --
68086    xla_ae_lines_pkg.SetAcctClass(
68087            p_accounting_class_code  => 'INTRANSIT_VALUATION'
68088          , p_ae_header_id           => l_ae_header_id
68089          );
68090 
68091    --
68092    -- set rounding class
68093    --
68094    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
68095                       'INTRANSIT_VALUATION';
68096 
68097    --
68098    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
68099    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
68100    --
68101    -- bulk performance
68102    --
68103    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
68104 
68105    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
68106       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
68107 
68108    -- 4955764
68109    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68110       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
68111 
68112    -- 4458381 Public Sector Enh
68113    
68114    --
68115    -- set accounting attributes for the line type
68116    --
68117    l_entered_amt_idx := 3;
68118    l_accted_amt_idx  := 8;
68119    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
68120    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
68121    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
68122    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
68123    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
68124    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
68125    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
68126    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
68127    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
68128    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
68129    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
68130    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
68131    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
68132    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
68133    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
68134    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
68135    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
68136 
68137    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
68138    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
68139 
68140    ---------------------------------------------------------------------------------------------------------------
68141    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
68142    ---------------------------------------------------------------------------------------------------------------
68143    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
68144 
68145    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68146    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68147 
68148    IF xla_accounting_cache_pkg.GetValueChar
68149          (p_source_code         => 'LEDGER_CATEGORY_CODE'
68150          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
68151    AND l_bflow_method_code = 'PRIOR_ENTRY'
68152 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
68153    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
68154          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
68155        )
68156    THEN
68157          xla_ae_lines_pkg.BflowUpgEntry
68158            (p_business_method_code    => l_bflow_method_code
68159            ,p_business_class_code     => l_bflow_class_code
68160            ,p_balance_type            => l_balance_type_code);
68161    ELSE
68162       NULL;
68163 -- No business flow processing for business flow method of NONE.
68164    END IF;
68165 
68166    --
68167    -- call analytical criteria
68168    --
68169    
68170    --
68171    -- call description
68172    --
68173    -- No description or it is inherited.
68174    --
68175    -- call ADRs
68176    -- Bug 4922099
68177    --
68178    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68179         (NVL(l_actual_upg_option, 'N') = 'O') OR
68180         (NVL(l_enc_upg_option, 'N') = 'O')
68181       )
68182    THEN
68183    NULL;
68184    --
68185    --
68186    
68187   l_ccid := AcctDerRule_4(
68188            p_application_id           => p_application_id
68189          , p_ae_header_id             => l_ae_header_id 
68190 , p_source_4 => p_source_4
68191          , x_transaction_coa_id       => l_adr_transaction_coa_id
68192          , x_accounting_coa_id        => l_adr_accounting_coa_id
68193          , x_value_type_code          => l_adr_value_type_code
68194          , p_side                     => 'NA'
68195    );
68196 
68197    xla_ae_lines_pkg.set_ccid(
68198     p_code_combination_id          => l_ccid
68199   , p_value_type_code              => l_adr_value_type_code
68200   , p_transaction_coa_id           => l_adr_transaction_coa_id
68201   , p_accounting_coa_id            => l_adr_accounting_coa_id
68202   , p_adr_code                     => 'CST_DEFAULT'
68203   , p_adr_type_code                => 'S'
68204   , p_component_type               => l_component_type
68205   , p_component_code               => l_component_code
68206   , p_component_type_code          => l_component_type_code
68207   , p_component_appl_id            => l_component_appl_id
68208   , p_amb_context_code             => l_amb_context_code
68209   , p_side                         => 'NA'
68210   );
68211 
68212 
68213    --
68214    --
68215    END IF;
68216    --
68217    -- Bug 4922099
68218    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
68219           (NVL(l_enc_upg_option, 'N') = 'O')
68220         ) AND
68221         (l_bflow_method_code = 'PRIOR_ENTRY')
68222       )
68223    THEN
68224       IF
68225       --
68226       1 = 2
68227       --
68228       THEN
68229       xla_accounting_err_pkg.build_message
68230                                     (p_appli_s_name            => 'XLA'
68231                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68232                                     ,p_token_1                 => 'LINE_NUMBER'
68233                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
68234                                     ,p_token_2                 => 'LINE_TYPE_NAME'
68235                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
68236                                                                              l_component_type
68237                                                                             ,l_component_code
68238                                                                             ,l_component_type_code
68239                                                                             ,l_component_appl_id
68240                                                                             ,l_amb_context_code
68241                                                                             ,l_entity_code
68242                                                                             ,l_event_class_code
68243                                                                            )
68244                                     ,p_token_3                 => 'OWNER'
68245                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
68246                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
68247                                                                           ,p_lookup_code    => l_component_type_code
68248                                                                          )
68249                                     ,p_token_4                 => 'PRODUCT_NAME'
68250                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
68251                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
68252                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
68253                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
68254                                     ,p_ae_header_id            =>  NULL
68255                                        );
68256 
68257         IF (C_LEVEL_ERROR>= g_log_level) THEN
68258                  trace
68259                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68260                       ,p_level    => C_LEVEL_ERROR
68261                       ,p_module   => l_log_module);
68262         END IF;
68263       END IF;
68264    END IF;
68265    --
68266    --
68267    ------------------------------------------------------------------------------------------------
68268    -- 4219869 Business Flow
68269    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
68270    -- Prior Entry.  Currently, the following code is always generated.
68271    ------------------------------------------------------------------------------------------------
68272    XLA_AE_LINES_PKG.ValidateCurrentLine;
68273 
68274    ------------------------------------------------------------------------------------
68275    -- 4219869 Business Flow
68276    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
68277    ------------------------------------------------------------------------------------
68278    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68279 
68280    ----------------------------------------------------------------------------------
68281    -- 4219869 Business Flow
68282    -- Update journal entry status -- Need to generate this within IF <condition>
68283    ----------------------------------------------------------------------------------
68284    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68285          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
68286          ,p_balance_type_code => l_balance_type_code
68287          );
68288 
68289    -------------------------------------------------------------------------------------------
68290    -- 4262811 - Generate the Accrual Reversal lines
68291    -------------------------------------------------------------------------------------------
68292    BEGIN
68293       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
68294                               (g_array_event(p_event_id).array_value_num('header_index'));
68295       IF l_acc_rev_flag IS NULL THEN
68296          l_acc_rev_flag := 'N';
68297       END IF;
68298    EXCEPTION
68299       WHEN OTHERS THEN
68300          l_acc_rev_flag := 'N';
68301    END;
68302    --
68303    IF (l_acc_rev_flag = 'Y') THEN
68304 
68305        -- 4645092  ------------------------------------------------------------------------------
68306        -- To allow MPA report to determine if it should generate report process
68307        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
68308        ------------------------------------------------------------------------------------------
68309 
68310        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
68311        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
68312    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
68313    -- call ADRs
68314    -- Bug 4922099
68315    --
68316    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68317         (NVL(l_actual_upg_option, 'N') = 'O') OR
68318         (NVL(l_enc_upg_option, 'N') = 'O')
68319       )
68320    THEN
68321    NULL;
68322    --
68323    --
68324    
68325   l_ccid := AcctDerRule_4(
68326            p_application_id           => p_application_id
68327          , p_ae_header_id             => l_ae_header_id 
68328 , p_source_4 => p_source_4
68329          , x_transaction_coa_id       => l_adr_transaction_coa_id
68330          , x_accounting_coa_id        => l_adr_accounting_coa_id
68331          , x_value_type_code          => l_adr_value_type_code
68332          , p_side                     => 'NA'
68333    );
68334 
68335    xla_ae_lines_pkg.set_ccid(
68336     p_code_combination_id          => l_ccid
68337   , p_value_type_code              => l_adr_value_type_code
68338   , p_transaction_coa_id           => l_adr_transaction_coa_id
68339   , p_accounting_coa_id            => l_adr_accounting_coa_id
68340   , p_adr_code                     => 'CST_DEFAULT'
68341   , p_adr_type_code                => 'S'
68342   , p_component_type               => l_component_type
68343   , p_component_code               => l_component_code
68344   , p_component_type_code          => l_component_type_code
68345   , p_component_appl_id            => l_component_appl_id
68346   , p_amb_context_code             => l_amb_context_code
68347   , p_side                         => 'NA'
68348   );
68349 
68350 
68351    --
68352    --
68353    END IF;
68354 
68355        --
68356        -- Update the line information that should be overwritten
68357        --
68358        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
68359                                          p_header_num   => 1);
68360        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
68361 
68362        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
68363 
68364        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
68365           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
68366        END IF;
68367 
68368       --
68369       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
68370       --
68371       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
68372           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
68373       ELSE
68374           ---------------------------------------------------------------------------------------------------
68375           -- 4262811a Switch Sign
68376           ---------------------------------------------------------------------------------------------------
68377           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
68378           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68379                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68380           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68381                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68382           -- 5132302
68383           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
68384                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68385 
68386       END IF;
68387 
68388       -- 4955764
68389       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68390       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
68391 
68392 
68393       XLA_AE_LINES_PKG.ValidateCurrentLine;
68394       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68395 
68396       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68397                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
68398                ,p_balance_type_code => l_balance_type_code);
68399 
68400    END IF;
68401 
68402    -----------------------------------------------------------------------------------------
68403    -- 4262811 Multiperiod Accounting
68404    -----------------------------------------------------------------------------------------
68405      -- No MPA option is assigned.
68406 
68407 
68408 END IF;
68409 END IF;
68410 --
68411 
68412 --
68413 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68414    trace
68415       (p_msg      => 'END of AcctLineType_125'
68416       ,p_level    => C_LEVEL_PROCEDURE
68417       ,p_module   => l_log_module);
68418 END IF;
68419 --
68420 EXCEPTION
68421   WHEN xla_exceptions_pkg.application_exception THEN
68422       RAISE;
68423   WHEN OTHERS THEN
68424        xla_exceptions_pkg.raise_message
68425            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_125');
68426 END AcctLineType_125;
68427 --
68428 
68429 ---------------------------------------
68430 --
68431 -- PRIVATE FUNCTION
68432 --         AcctLineType_126
68433 --
68434 ---------------------------------------
68435 PROCEDURE AcctLineType_126 (
68436   p_application_id        IN NUMBER
68437  ,p_event_id              IN NUMBER
68438  ,p_calculate_acctd_flag  IN VARCHAR2
68439  ,p_calculate_g_l_flag    IN VARCHAR2
68440  ,p_actual_flag           IN OUT VARCHAR2
68441  ,p_balance_type_code     OUT VARCHAR2
68442  ,p_gain_or_loss_ref      OUT VARCHAR2
68443  
68444 --Cost Management Default Account
68445  , p_source_4            IN NUMBER
68446 --DISTRIBUTION_IDENTIFIER
68447  , p_source_11            IN NUMBER
68448 --Distribution Type
68449  , p_source_12            IN VARCHAR2
68450  , p_source_12_meaning    IN VARCHAR2
68451 --Entered Currency Code
68452  , p_source_15            IN VARCHAR2
68453 --Entered Amount
68454  , p_source_18            IN NUMBER
68455 --Currency Conversion Date
68456  , p_source_19            IN DATE
68457 --Currency Conversion Rate
68458  , p_source_20            IN NUMBER
68459 --Currency Conversion Type
68460  , p_source_21            IN VARCHAR2
68461 --Accounted Amount
68462  , p_source_22            IN NUMBER
68463 --Accounting Line Type
68464  , p_source_24            IN NUMBER
68465 )
68466 IS
68467 
68468 l_component_type              VARCHAR2(80);
68469 l_component_code              VARCHAR2(30);
68470 l_component_type_code         VARCHAR2(1);
68471 l_component_appl_id           INTEGER;
68472 l_amb_context_code            VARCHAR2(30);
68473 l_entity_code                 VARCHAR2(30);
68474 l_event_class_code            VARCHAR2(30);
68475 l_ae_header_id                NUMBER;
68476 l_event_type_code             VARCHAR2(30);
68477 l_line_definition_code        VARCHAR2(30);
68478 l_line_definition_owner_code  VARCHAR2(1);
68479 --
68480 -- adr variables
68481 l_segment                     VARCHAR2(30);
68482 l_ccid                        NUMBER;
68483 l_adr_transaction_coa_id      NUMBER;
68484 l_adr_accounting_coa_id       NUMBER;
68485 l_adr_flexfield_segment_code  VARCHAR2(30);
68486 l_adr_flex_value_set_id       NUMBER;
68487 l_adr_value_type_code         VARCHAR2(30);
68488 l_adr_value_combination_id    NUMBER;
68489 l_adr_value_segment_code      VARCHAR2(30);
68490 
68491 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
68492 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
68493 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
68494 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
68495 
68496 -- 4262811 Variables ------------------------------------------------------------------------------------------
68497 l_entered_amt_idx             NUMBER;
68498 l_accted_amt_idx              NUMBER;
68499 l_acc_rev_flag                VARCHAR2(1);
68500 l_accrual_line_num            NUMBER;
68501 l_tmp_amt                     NUMBER;
68502 l_acc_rev_natural_side_code   VARCHAR2(1);
68503 
68504 l_num_entries                 NUMBER;
68505 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
68506 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
68507 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
68508 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
68509 l_recog_line_1                NUMBER;
68510 l_recog_line_2                NUMBER;
68511 
68512 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
68513 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
68514 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
68515 
68516 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
68517 
68518 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
68519 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
68520 
68521 ---------------------------------------------------------------------------------------------------------------
68522 
68523 
68524 --
68525 -- bulk performance
68526 --
68527 l_balance_type_code           VARCHAR2(1);
68528 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
68529 l_log_module                  VARCHAR2(240);
68530 
68531 --
68532 -- Upgrade strategy
68533 --
68534 l_actual_upg_option           VARCHAR2(1);
68535 l_enc_upg_option           VARCHAR2(1);
68536 
68537 --
68538 BEGIN
68539 --
68540 IF g_log_enabled THEN
68541       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_126';
68542 END IF;
68543 --
68544 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68545 
68546       trace
68547          (p_msg      => 'BEGIN of AcctLineType_126'
68548          ,p_level    => C_LEVEL_PROCEDURE
68549          ,p_module   => l_log_module);
68550 
68551 END IF;
68552 --
68553 l_component_type             := 'AMB_JLT';
68554 l_component_code             := 'INVENTORY_VALUATION';
68555 l_component_type_code        := 'S';
68556 l_component_appl_id          :=  707;
68557 l_amb_context_code           := 'DEFAULT';
68558 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
68559 l_event_class_code           := 'LOG_INTERCOMPANY';
68560 l_event_type_code            := 'LOG_INTERCOMPANY_ALL';
68561 l_line_definition_owner_code := 'S';
68562 l_line_definition_code       := 'LOG_INTERCOMPANY';
68563 --
68564 l_balance_type_code          := 'A';
68565 l_segment                     := NULL;
68566 l_ccid                        := NULL;
68567 l_adr_transaction_coa_id      := NULL;
68568 l_adr_accounting_coa_id       := NULL;
68569 l_adr_flexfield_segment_code  := NULL;
68570 l_adr_flex_value_set_id       := NULL;
68571 l_adr_value_type_code         := NULL;
68572 l_adr_value_combination_id    := NULL;
68573 l_adr_value_segment_code      := NULL;
68574 
68575 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
68576 l_bflow_class_code           := '';    -- 4219869 Business Flow
68577 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
68578 l_budgetary_control_flag     := 'N';
68579 
68580 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
68581 l_bflow_applied_to_amt       := NULL; -- 5132302
68582 l_entered_amt_idx            := NULL;          -- 4262811
68583 l_accted_amt_idx             := NULL;          -- 4262811
68584 l_acc_rev_flag               := NULL;          -- 4262811
68585 l_accrual_line_num           := NULL;          -- 4262811
68586 l_tmp_amt                    := NULL;          -- 4262811
68587 --
68588  
68589 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
68590     l_balance_type_code <> 'B' THEN
68591 IF NVL(p_source_24,9E125) =  1
68592  THEN 
68593 
68594    --
68595    XLA_AE_LINES_PKG.SetNewLine;
68596 
68597    p_balance_type_code          := l_balance_type_code;
68598    -- set the flag so later we will know whether the gain loss line needs to be created
68599    
68600    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
68601      p_actual_flag :='A';
68602    END IF;
68603 
68604    --
68605    -- bulk performance
68606    --
68607    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
68608                                       p_header_num   => 0); -- 4262811
68609    --
68610    -- set accounting line options
68611    --
68612    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
68613            p_natural_side_code          => 'D'
68614          , p_gain_or_loss_flag          => 'N'
68615          , p_gl_transfer_mode_code      => 'S'
68616          , p_acct_entry_type_code       => 'A'
68617          , p_switch_side_flag           => 'Y'
68618          , p_merge_duplicate_code       => 'N'
68619          );
68620    --
68621    l_acc_rev_natural_side_code := 'C';  -- 4262811
68622    -- 
68623    --
68624    -- set accounting line type info
68625    --
68626    xla_ae_lines_pkg.SetAcctLineType
68627       (p_component_type             => l_component_type
68628       ,p_event_type_code            => l_event_type_code
68629       ,p_line_definition_owner_code => l_line_definition_owner_code
68630       ,p_line_definition_code       => l_line_definition_code
68631       ,p_accounting_line_code       => l_component_code
68632       ,p_accounting_line_type_code  => l_component_type_code
68633       ,p_accounting_line_appl_id    => l_component_appl_id
68634       ,p_amb_context_code           => l_amb_context_code
68635       ,p_entity_code                => l_entity_code
68636       ,p_event_class_code           => l_event_class_code);
68637    --
68638    -- set accounting class
68639    --
68640    xla_ae_lines_pkg.SetAcctClass(
68641            p_accounting_class_code  => 'INVENTORY_VALUATION'
68642          , p_ae_header_id           => l_ae_header_id
68643          );
68644 
68645    --
68646    -- set rounding class
68647    --
68648    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
68649                       'INVENTORY_VALUATION';
68650 
68651    --
68652    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
68653    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
68654    --
68655    -- bulk performance
68656    --
68657    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
68658 
68659    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
68660       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
68661 
68662    -- 4955764
68663    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68664       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
68665 
68666    -- 4458381 Public Sector Enh
68667    
68668    --
68669    -- set accounting attributes for the line type
68670    --
68671    l_entered_amt_idx := 3;
68672    l_accted_amt_idx  := 8;
68673    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
68674    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
68675    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
68676    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
68677    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
68678    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
68679    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
68680    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
68681    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
68682    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
68683    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
68684    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
68685    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
68686    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
68687    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
68688    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
68689    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
68690 
68691    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
68692    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
68693 
68694    ---------------------------------------------------------------------------------------------------------------
68695    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
68696    ---------------------------------------------------------------------------------------------------------------
68697    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
68698 
68699    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68700    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68701 
68702    IF xla_accounting_cache_pkg.GetValueChar
68703          (p_source_code         => 'LEDGER_CATEGORY_CODE'
68704          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
68705    AND l_bflow_method_code = 'PRIOR_ENTRY'
68706 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
68707    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
68708          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
68709        )
68710    THEN
68711          xla_ae_lines_pkg.BflowUpgEntry
68712            (p_business_method_code    => l_bflow_method_code
68713            ,p_business_class_code     => l_bflow_class_code
68714            ,p_balance_type            => l_balance_type_code);
68715    ELSE
68716       NULL;
68717 -- No business flow processing for business flow method of NONE.
68718    END IF;
68719 
68720    --
68721    -- call analytical criteria
68722    --
68723    
68724    --
68725    -- call description
68726    --
68727    -- No description or it is inherited.
68728    --
68729    -- call ADRs
68730    -- Bug 4922099
68731    --
68732    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68733         (NVL(l_actual_upg_option, 'N') = 'O') OR
68734         (NVL(l_enc_upg_option, 'N') = 'O')
68735       )
68736    THEN
68737    NULL;
68738    --
68739    --
68740    
68741   l_ccid := AcctDerRule_4(
68742            p_application_id           => p_application_id
68743          , p_ae_header_id             => l_ae_header_id 
68744 , p_source_4 => p_source_4
68745          , x_transaction_coa_id       => l_adr_transaction_coa_id
68746          , x_accounting_coa_id        => l_adr_accounting_coa_id
68747          , x_value_type_code          => l_adr_value_type_code
68748          , p_side                     => 'NA'
68749    );
68750 
68751    xla_ae_lines_pkg.set_ccid(
68752     p_code_combination_id          => l_ccid
68753   , p_value_type_code              => l_adr_value_type_code
68754   , p_transaction_coa_id           => l_adr_transaction_coa_id
68755   , p_accounting_coa_id            => l_adr_accounting_coa_id
68756   , p_adr_code                     => 'CST_DEFAULT'
68757   , p_adr_type_code                => 'S'
68758   , p_component_type               => l_component_type
68759   , p_component_code               => l_component_code
68760   , p_component_type_code          => l_component_type_code
68761   , p_component_appl_id            => l_component_appl_id
68762   , p_amb_context_code             => l_amb_context_code
68763   , p_side                         => 'NA'
68764   );
68765 
68766 
68767    --
68768    --
68769    END IF;
68770    --
68771    -- Bug 4922099
68772    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
68773           (NVL(l_enc_upg_option, 'N') = 'O')
68774         ) AND
68775         (l_bflow_method_code = 'PRIOR_ENTRY')
68776       )
68777    THEN
68778       IF
68779       --
68780       1 = 2
68781       --
68782       THEN
68783       xla_accounting_err_pkg.build_message
68784                                     (p_appli_s_name            => 'XLA'
68785                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68786                                     ,p_token_1                 => 'LINE_NUMBER'
68787                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
68788                                     ,p_token_2                 => 'LINE_TYPE_NAME'
68789                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
68790                                                                              l_component_type
68791                                                                             ,l_component_code
68792                                                                             ,l_component_type_code
68793                                                                             ,l_component_appl_id
68794                                                                             ,l_amb_context_code
68795                                                                             ,l_entity_code
68796                                                                             ,l_event_class_code
68797                                                                            )
68798                                     ,p_token_3                 => 'OWNER'
68799                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
68800                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
68801                                                                           ,p_lookup_code    => l_component_type_code
68802                                                                          )
68803                                     ,p_token_4                 => 'PRODUCT_NAME'
68804                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
68805                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
68806                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
68807                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
68808                                     ,p_ae_header_id            =>  NULL
68809                                        );
68810 
68811         IF (C_LEVEL_ERROR>= g_log_level) THEN
68812                  trace
68813                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68814                       ,p_level    => C_LEVEL_ERROR
68815                       ,p_module   => l_log_module);
68816         END IF;
68817       END IF;
68818    END IF;
68819    --
68820    --
68821    ------------------------------------------------------------------------------------------------
68822    -- 4219869 Business Flow
68823    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
68824    -- Prior Entry.  Currently, the following code is always generated.
68825    ------------------------------------------------------------------------------------------------
68826    XLA_AE_LINES_PKG.ValidateCurrentLine;
68827 
68828    ------------------------------------------------------------------------------------
68829    -- 4219869 Business Flow
68830    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
68831    ------------------------------------------------------------------------------------
68832    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68833 
68834    ----------------------------------------------------------------------------------
68835    -- 4219869 Business Flow
68836    -- Update journal entry status -- Need to generate this within IF <condition>
68837    ----------------------------------------------------------------------------------
68838    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68839          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
68840          ,p_balance_type_code => l_balance_type_code
68841          );
68842 
68843    -------------------------------------------------------------------------------------------
68844    -- 4262811 - Generate the Accrual Reversal lines
68845    -------------------------------------------------------------------------------------------
68846    BEGIN
68847       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
68848                               (g_array_event(p_event_id).array_value_num('header_index'));
68849       IF l_acc_rev_flag IS NULL THEN
68850          l_acc_rev_flag := 'N';
68851       END IF;
68852    EXCEPTION
68853       WHEN OTHERS THEN
68854          l_acc_rev_flag := 'N';
68855    END;
68856    --
68857    IF (l_acc_rev_flag = 'Y') THEN
68858 
68859        -- 4645092  ------------------------------------------------------------------------------
68860        -- To allow MPA report to determine if it should generate report process
68861        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
68862        ------------------------------------------------------------------------------------------
68863 
68864        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
68865        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
68866    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
68867    -- call ADRs
68868    -- Bug 4922099
68869    --
68870    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68871         (NVL(l_actual_upg_option, 'N') = 'O') OR
68872         (NVL(l_enc_upg_option, 'N') = 'O')
68873       )
68874    THEN
68875    NULL;
68876    --
68877    --
68878    
68879   l_ccid := AcctDerRule_4(
68880            p_application_id           => p_application_id
68881          , p_ae_header_id             => l_ae_header_id 
68882 , p_source_4 => p_source_4
68883          , x_transaction_coa_id       => l_adr_transaction_coa_id
68884          , x_accounting_coa_id        => l_adr_accounting_coa_id
68885          , x_value_type_code          => l_adr_value_type_code
68886          , p_side                     => 'NA'
68887    );
68888 
68889    xla_ae_lines_pkg.set_ccid(
68890     p_code_combination_id          => l_ccid
68891   , p_value_type_code              => l_adr_value_type_code
68892   , p_transaction_coa_id           => l_adr_transaction_coa_id
68893   , p_accounting_coa_id            => l_adr_accounting_coa_id
68894   , p_adr_code                     => 'CST_DEFAULT'
68895   , p_adr_type_code                => 'S'
68896   , p_component_type               => l_component_type
68897   , p_component_code               => l_component_code
68898   , p_component_type_code          => l_component_type_code
68899   , p_component_appl_id            => l_component_appl_id
68900   , p_amb_context_code             => l_amb_context_code
68901   , p_side                         => 'NA'
68902   );
68903 
68904 
68905    --
68906    --
68907    END IF;
68908 
68909        --
68910        -- Update the line information that should be overwritten
68911        --
68912        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
68913                                          p_header_num   => 1);
68914        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
68915 
68916        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
68917 
68918        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
68919           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
68920        END IF;
68921 
68922       --
68923       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
68924       --
68925       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
68926           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
68927       ELSE
68928           ---------------------------------------------------------------------------------------------------
68929           -- 4262811a Switch Sign
68930           ---------------------------------------------------------------------------------------------------
68931           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
68932           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68933                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68934           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68935                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68936           -- 5132302
68937           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
68938                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68939 
68940       END IF;
68941 
68942       -- 4955764
68943       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68944       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
68945 
68946 
68947       XLA_AE_LINES_PKG.ValidateCurrentLine;
68948       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68949 
68950       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68951                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
68952                ,p_balance_type_code => l_balance_type_code);
68953 
68954    END IF;
68955 
68956    -----------------------------------------------------------------------------------------
68957    -- 4262811 Multiperiod Accounting
68958    -----------------------------------------------------------------------------------------
68959      -- No MPA option is assigned.
68960 
68961 
68962 END IF;
68963 END IF;
68964 --
68965 
68966 --
68967 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68968    trace
68969       (p_msg      => 'END of AcctLineType_126'
68970       ,p_level    => C_LEVEL_PROCEDURE
68971       ,p_module   => l_log_module);
68972 END IF;
68973 --
68974 EXCEPTION
68975   WHEN xla_exceptions_pkg.application_exception THEN
68976       RAISE;
68977   WHEN OTHERS THEN
68978        xla_exceptions_pkg.raise_message
68979            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_126');
68980 END AcctLineType_126;
68981 --
68982 
68983 ---------------------------------------
68984 --
68985 -- PRIVATE FUNCTION
68986 --         AcctLineType_127
68987 --
68988 ---------------------------------------
68989 PROCEDURE AcctLineType_127 (
68990   p_application_id        IN NUMBER
68991  ,p_event_id              IN NUMBER
68992  ,p_calculate_acctd_flag  IN VARCHAR2
68993  ,p_calculate_g_l_flag    IN VARCHAR2
68994  ,p_actual_flag           IN OUT VARCHAR2
68995  ,p_balance_type_code     OUT VARCHAR2
68996  ,p_gain_or_loss_ref      OUT VARCHAR2
68997  
68998 --Cost Management Default Account
68999  , p_source_4            IN NUMBER
69000 --DISTRIBUTION_IDENTIFIER
69001  , p_source_11            IN NUMBER
69002 --Distribution Type
69003  , p_source_12            IN VARCHAR2
69004  , p_source_12_meaning    IN VARCHAR2
69005 --Entered Currency Code
69006  , p_source_15            IN VARCHAR2
69007 --Entered Amount
69008  , p_source_18            IN NUMBER
69009 --Currency Conversion Date
69010  , p_source_19            IN DATE
69011 --Currency Conversion Rate
69012  , p_source_20            IN NUMBER
69013 --Currency Conversion Type
69014  , p_source_21            IN VARCHAR2
69015 --Accounted Amount
69016  , p_source_22            IN NUMBER
69017 --Accounting Line Type
69018  , p_source_24            IN NUMBER
69019 )
69020 IS
69021 
69022 l_component_type              VARCHAR2(80);
69023 l_component_code              VARCHAR2(30);
69024 l_component_type_code         VARCHAR2(1);
69025 l_component_appl_id           INTEGER;
69026 l_amb_context_code            VARCHAR2(30);
69027 l_entity_code                 VARCHAR2(30);
69028 l_event_class_code            VARCHAR2(30);
69029 l_ae_header_id                NUMBER;
69030 l_event_type_code             VARCHAR2(30);
69031 l_line_definition_code        VARCHAR2(30);
69032 l_line_definition_owner_code  VARCHAR2(1);
69033 --
69034 -- adr variables
69035 l_segment                     VARCHAR2(30);
69036 l_ccid                        NUMBER;
69037 l_adr_transaction_coa_id      NUMBER;
69038 l_adr_accounting_coa_id       NUMBER;
69039 l_adr_flexfield_segment_code  VARCHAR2(30);
69040 l_adr_flex_value_set_id       NUMBER;
69041 l_adr_value_type_code         VARCHAR2(30);
69042 l_adr_value_combination_id    NUMBER;
69043 l_adr_value_segment_code      VARCHAR2(30);
69044 
69045 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
69046 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
69047 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
69048 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
69049 
69050 -- 4262811 Variables ------------------------------------------------------------------------------------------
69051 l_entered_amt_idx             NUMBER;
69052 l_accted_amt_idx              NUMBER;
69053 l_acc_rev_flag                VARCHAR2(1);
69054 l_accrual_line_num            NUMBER;
69055 l_tmp_amt                     NUMBER;
69056 l_acc_rev_natural_side_code   VARCHAR2(1);
69057 
69058 l_num_entries                 NUMBER;
69059 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
69060 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
69061 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
69062 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
69063 l_recog_line_1                NUMBER;
69064 l_recog_line_2                NUMBER;
69065 
69066 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
69067 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
69068 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
69069 
69070 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
69071 
69072 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
69073 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
69074 
69075 ---------------------------------------------------------------------------------------------------------------
69076 
69077 
69078 --
69079 -- bulk performance
69080 --
69081 l_balance_type_code           VARCHAR2(1);
69082 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
69083 l_log_module                  VARCHAR2(240);
69084 
69085 --
69086 -- Upgrade strategy
69087 --
69088 l_actual_upg_option           VARCHAR2(1);
69089 l_enc_upg_option           VARCHAR2(1);
69090 
69091 --
69092 BEGIN
69093 --
69094 IF g_log_enabled THEN
69095       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_127';
69096 END IF;
69097 --
69098 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69099 
69100       trace
69101          (p_msg      => 'BEGIN of AcctLineType_127'
69102          ,p_level    => C_LEVEL_PROCEDURE
69103          ,p_module   => l_log_module);
69104 
69105 END IF;
69106 --
69107 l_component_type             := 'AMB_JLT';
69108 l_component_code             := 'INVENTORY_VALUATION';
69109 l_component_type_code        := 'S';
69110 l_component_appl_id          :=  707;
69111 l_amb_context_code           := 'DEFAULT';
69112 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
69113 l_event_class_code           := 'SALES_ORDER';
69114 l_event_type_code            := 'SALES_ORDER_ALL';
69115 l_line_definition_owner_code := 'S';
69116 l_line_definition_code       := 'SALES_ORDER';
69117 --
69118 l_balance_type_code          := 'A';
69119 l_segment                     := NULL;
69120 l_ccid                        := NULL;
69121 l_adr_transaction_coa_id      := NULL;
69122 l_adr_accounting_coa_id       := NULL;
69123 l_adr_flexfield_segment_code  := NULL;
69124 l_adr_flex_value_set_id       := NULL;
69125 l_adr_value_type_code         := NULL;
69126 l_adr_value_combination_id    := NULL;
69127 l_adr_value_segment_code      := NULL;
69128 
69129 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
69130 l_bflow_class_code           := '';    -- 4219869 Business Flow
69131 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
69132 l_budgetary_control_flag     := 'N';
69133 
69134 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
69135 l_bflow_applied_to_amt       := NULL; -- 5132302
69136 l_entered_amt_idx            := NULL;          -- 4262811
69137 l_accted_amt_idx             := NULL;          -- 4262811
69138 l_acc_rev_flag               := NULL;          -- 4262811
69139 l_accrual_line_num           := NULL;          -- 4262811
69140 l_tmp_amt                    := NULL;          -- 4262811
69141 --
69142  
69143 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
69144     l_balance_type_code <> 'B' THEN
69145 IF NVL(p_source_24,9E125) =  1
69146  THEN 
69147 
69148    --
69149    XLA_AE_LINES_PKG.SetNewLine;
69150 
69151    p_balance_type_code          := l_balance_type_code;
69152    -- set the flag so later we will know whether the gain loss line needs to be created
69153    
69154    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
69155      p_actual_flag :='A';
69156    END IF;
69157 
69158    --
69159    -- bulk performance
69160    --
69161    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
69162                                       p_header_num   => 0); -- 4262811
69163    --
69164    -- set accounting line options
69165    --
69166    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
69167            p_natural_side_code          => 'D'
69168          , p_gain_or_loss_flag          => 'N'
69169          , p_gl_transfer_mode_code      => 'S'
69170          , p_acct_entry_type_code       => 'A'
69171          , p_switch_side_flag           => 'Y'
69172          , p_merge_duplicate_code       => 'N'
69173          );
69174    --
69175    l_acc_rev_natural_side_code := 'C';  -- 4262811
69176    -- 
69177    --
69178    -- set accounting line type info
69179    --
69180    xla_ae_lines_pkg.SetAcctLineType
69181       (p_component_type             => l_component_type
69182       ,p_event_type_code            => l_event_type_code
69183       ,p_line_definition_owner_code => l_line_definition_owner_code
69184       ,p_line_definition_code       => l_line_definition_code
69185       ,p_accounting_line_code       => l_component_code
69186       ,p_accounting_line_type_code  => l_component_type_code
69187       ,p_accounting_line_appl_id    => l_component_appl_id
69188       ,p_amb_context_code           => l_amb_context_code
69189       ,p_entity_code                => l_entity_code
69190       ,p_event_class_code           => l_event_class_code);
69191    --
69192    -- set accounting class
69193    --
69194    xla_ae_lines_pkg.SetAcctClass(
69195            p_accounting_class_code  => 'INVENTORY_VALUATION'
69196          , p_ae_header_id           => l_ae_header_id
69197          );
69198 
69199    --
69200    -- set rounding class
69201    --
69202    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
69203                       'INVENTORY_VALUATION';
69204 
69205    --
69206    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
69207    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
69208    --
69209    -- bulk performance
69210    --
69211    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
69212 
69213    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
69214       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
69215 
69216    -- 4955764
69217    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69218       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
69219 
69220    -- 4458381 Public Sector Enh
69221    
69222    --
69223    -- set accounting attributes for the line type
69224    --
69225    l_entered_amt_idx := 3;
69226    l_accted_amt_idx  := 8;
69227    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
69228    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
69229    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
69230    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
69231    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
69232    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
69233    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
69234    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
69235    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
69236    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
69237    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
69238    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
69239    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
69240    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
69241    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
69242    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
69243    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
69244 
69245    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
69246    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
69247 
69248    ---------------------------------------------------------------------------------------------------------------
69249    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
69250    ---------------------------------------------------------------------------------------------------------------
69251    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
69252 
69253    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69254    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69255 
69256    IF xla_accounting_cache_pkg.GetValueChar
69257          (p_source_code         => 'LEDGER_CATEGORY_CODE'
69258          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
69259    AND l_bflow_method_code = 'PRIOR_ENTRY'
69260 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
69261    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
69262          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
69263        )
69264    THEN
69265          xla_ae_lines_pkg.BflowUpgEntry
69266            (p_business_method_code    => l_bflow_method_code
69267            ,p_business_class_code     => l_bflow_class_code
69268            ,p_balance_type            => l_balance_type_code);
69269    ELSE
69270       NULL;
69271 -- No business flow processing for business flow method of NONE.
69272    END IF;
69273 
69274    --
69275    -- call analytical criteria
69276    --
69277    
69278    --
69279    -- call description
69280    --
69281    -- No description or it is inherited.
69282    --
69283    -- call ADRs
69284    -- Bug 4922099
69285    --
69286    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69287         (NVL(l_actual_upg_option, 'N') = 'O') OR
69288         (NVL(l_enc_upg_option, 'N') = 'O')
69289       )
69290    THEN
69291    NULL;
69292    --
69293    --
69294    
69295   l_ccid := AcctDerRule_4(
69296            p_application_id           => p_application_id
69297          , p_ae_header_id             => l_ae_header_id 
69298 , p_source_4 => p_source_4
69299          , x_transaction_coa_id       => l_adr_transaction_coa_id
69300          , x_accounting_coa_id        => l_adr_accounting_coa_id
69301          , x_value_type_code          => l_adr_value_type_code
69302          , p_side                     => 'NA'
69303    );
69304 
69305    xla_ae_lines_pkg.set_ccid(
69306     p_code_combination_id          => l_ccid
69307   , p_value_type_code              => l_adr_value_type_code
69308   , p_transaction_coa_id           => l_adr_transaction_coa_id
69309   , p_accounting_coa_id            => l_adr_accounting_coa_id
69310   , p_adr_code                     => 'CST_DEFAULT'
69311   , p_adr_type_code                => 'S'
69312   , p_component_type               => l_component_type
69313   , p_component_code               => l_component_code
69314   , p_component_type_code          => l_component_type_code
69315   , p_component_appl_id            => l_component_appl_id
69316   , p_amb_context_code             => l_amb_context_code
69317   , p_side                         => 'NA'
69318   );
69319 
69320 
69321    --
69322    --
69323    END IF;
69324    --
69325    -- Bug 4922099
69326    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
69327           (NVL(l_enc_upg_option, 'N') = 'O')
69328         ) AND
69329         (l_bflow_method_code = 'PRIOR_ENTRY')
69330       )
69331    THEN
69332       IF
69333       --
69334       1 = 2
69335       --
69336       THEN
69337       xla_accounting_err_pkg.build_message
69338                                     (p_appli_s_name            => 'XLA'
69339                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69340                                     ,p_token_1                 => 'LINE_NUMBER'
69341                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
69342                                     ,p_token_2                 => 'LINE_TYPE_NAME'
69343                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
69344                                                                              l_component_type
69345                                                                             ,l_component_code
69346                                                                             ,l_component_type_code
69347                                                                             ,l_component_appl_id
69348                                                                             ,l_amb_context_code
69349                                                                             ,l_entity_code
69350                                                                             ,l_event_class_code
69351                                                                            )
69352                                     ,p_token_3                 => 'OWNER'
69353                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
69354                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
69355                                                                           ,p_lookup_code    => l_component_type_code
69356                                                                          )
69357                                     ,p_token_4                 => 'PRODUCT_NAME'
69358                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
69359                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
69360                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
69361                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
69362                                     ,p_ae_header_id            =>  NULL
69363                                        );
69364 
69365         IF (C_LEVEL_ERROR>= g_log_level) THEN
69366                  trace
69367                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69368                       ,p_level    => C_LEVEL_ERROR
69369                       ,p_module   => l_log_module);
69370         END IF;
69371       END IF;
69372    END IF;
69373    --
69374    --
69375    ------------------------------------------------------------------------------------------------
69376    -- 4219869 Business Flow
69377    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
69378    -- Prior Entry.  Currently, the following code is always generated.
69379    ------------------------------------------------------------------------------------------------
69380    XLA_AE_LINES_PKG.ValidateCurrentLine;
69381 
69382    ------------------------------------------------------------------------------------
69383    -- 4219869 Business Flow
69384    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
69385    ------------------------------------------------------------------------------------
69386    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69387 
69388    ----------------------------------------------------------------------------------
69389    -- 4219869 Business Flow
69390    -- Update journal entry status -- Need to generate this within IF <condition>
69391    ----------------------------------------------------------------------------------
69392    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69393          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
69394          ,p_balance_type_code => l_balance_type_code
69395          );
69396 
69397    -------------------------------------------------------------------------------------------
69398    -- 4262811 - Generate the Accrual Reversal lines
69399    -------------------------------------------------------------------------------------------
69400    BEGIN
69401       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
69402                               (g_array_event(p_event_id).array_value_num('header_index'));
69403       IF l_acc_rev_flag IS NULL THEN
69404          l_acc_rev_flag := 'N';
69405       END IF;
69406    EXCEPTION
69407       WHEN OTHERS THEN
69408          l_acc_rev_flag := 'N';
69409    END;
69410    --
69411    IF (l_acc_rev_flag = 'Y') THEN
69412 
69413        -- 4645092  ------------------------------------------------------------------------------
69414        -- To allow MPA report to determine if it should generate report process
69415        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
69416        ------------------------------------------------------------------------------------------
69417 
69418        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
69419        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
69420    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
69421    -- call ADRs
69422    -- Bug 4922099
69423    --
69424    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69425         (NVL(l_actual_upg_option, 'N') = 'O') OR
69426         (NVL(l_enc_upg_option, 'N') = 'O')
69427       )
69428    THEN
69429    NULL;
69430    --
69431    --
69432    
69433   l_ccid := AcctDerRule_4(
69434            p_application_id           => p_application_id
69435          , p_ae_header_id             => l_ae_header_id 
69436 , p_source_4 => p_source_4
69437          , x_transaction_coa_id       => l_adr_transaction_coa_id
69438          , x_accounting_coa_id        => l_adr_accounting_coa_id
69439          , x_value_type_code          => l_adr_value_type_code
69440          , p_side                     => 'NA'
69441    );
69442 
69443    xla_ae_lines_pkg.set_ccid(
69444     p_code_combination_id          => l_ccid
69445   , p_value_type_code              => l_adr_value_type_code
69446   , p_transaction_coa_id           => l_adr_transaction_coa_id
69447   , p_accounting_coa_id            => l_adr_accounting_coa_id
69448   , p_adr_code                     => 'CST_DEFAULT'
69449   , p_adr_type_code                => 'S'
69450   , p_component_type               => l_component_type
69451   , p_component_code               => l_component_code
69452   , p_component_type_code          => l_component_type_code
69453   , p_component_appl_id            => l_component_appl_id
69454   , p_amb_context_code             => l_amb_context_code
69455   , p_side                         => 'NA'
69456   );
69457 
69458 
69459    --
69460    --
69461    END IF;
69462 
69463        --
69464        -- Update the line information that should be overwritten
69465        --
69466        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
69467                                          p_header_num   => 1);
69468        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
69469 
69470        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
69471 
69472        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
69473           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
69474        END IF;
69475 
69476       --
69477       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
69478       --
69479       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
69480           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
69481       ELSE
69482           ---------------------------------------------------------------------------------------------------
69483           -- 4262811a Switch Sign
69484           ---------------------------------------------------------------------------------------------------
69485           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
69486           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69487                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69488           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69489                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69490           -- 5132302
69491           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
69492                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69493 
69494       END IF;
69495 
69496       -- 4955764
69497       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69498       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
69499 
69500 
69501       XLA_AE_LINES_PKG.ValidateCurrentLine;
69502       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69503 
69504       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69505                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
69506                ,p_balance_type_code => l_balance_type_code);
69507 
69508    END IF;
69509 
69510    -----------------------------------------------------------------------------------------
69511    -- 4262811 Multiperiod Accounting
69512    -----------------------------------------------------------------------------------------
69513      -- No MPA option is assigned.
69514 
69515 
69516 END IF;
69517 END IF;
69518 --
69519 
69520 --
69521 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69522    trace
69523       (p_msg      => 'END of AcctLineType_127'
69524       ,p_level    => C_LEVEL_PROCEDURE
69525       ,p_module   => l_log_module);
69526 END IF;
69527 --
69528 EXCEPTION
69529   WHEN xla_exceptions_pkg.application_exception THEN
69530       RAISE;
69531   WHEN OTHERS THEN
69532        xla_exceptions_pkg.raise_message
69533            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_127');
69534 END AcctLineType_127;
69535 --
69536 
69537 ---------------------------------------
69538 --
69539 -- PRIVATE FUNCTION
69540 --         AcctLineType_128
69541 --
69542 ---------------------------------------
69543 PROCEDURE AcctLineType_128 (
69544   p_application_id        IN NUMBER
69545  ,p_event_id              IN NUMBER
69546  ,p_calculate_acctd_flag  IN VARCHAR2
69547  ,p_calculate_g_l_flag    IN VARCHAR2
69548  ,p_actual_flag           IN OUT VARCHAR2
69549  ,p_balance_type_code     OUT VARCHAR2
69550  ,p_gain_or_loss_ref      OUT VARCHAR2
69551  
69552 --Cost Management Default Account
69553  , p_source_4            IN NUMBER
69554 --DISTRIBUTION_IDENTIFIER
69555  , p_source_11            IN NUMBER
69556 --Distribution Type
69557  , p_source_12            IN VARCHAR2
69558  , p_source_12_meaning    IN VARCHAR2
69559 --Entered Currency Code
69560  , p_source_15            IN VARCHAR2
69561 --Entered Amount
69562  , p_source_18            IN NUMBER
69563 --Currency Conversion Date
69564  , p_source_19            IN DATE
69565 --Currency Conversion Rate
69566  , p_source_20            IN NUMBER
69567 --Currency Conversion Type
69568  , p_source_21            IN VARCHAR2
69569 --Accounted Amount
69570  , p_source_22            IN NUMBER
69571 --Accounting Line Type
69572  , p_source_24            IN NUMBER
69573 )
69574 IS
69575 
69576 l_component_type              VARCHAR2(80);
69577 l_component_code              VARCHAR2(30);
69578 l_component_type_code         VARCHAR2(1);
69579 l_component_appl_id           INTEGER;
69580 l_amb_context_code            VARCHAR2(30);
69581 l_entity_code                 VARCHAR2(30);
69582 l_event_class_code            VARCHAR2(30);
69583 l_ae_header_id                NUMBER;
69584 l_event_type_code             VARCHAR2(30);
69585 l_line_definition_code        VARCHAR2(30);
69586 l_line_definition_owner_code  VARCHAR2(1);
69587 --
69588 -- adr variables
69589 l_segment                     VARCHAR2(30);
69590 l_ccid                        NUMBER;
69591 l_adr_transaction_coa_id      NUMBER;
69592 l_adr_accounting_coa_id       NUMBER;
69593 l_adr_flexfield_segment_code  VARCHAR2(30);
69594 l_adr_flex_value_set_id       NUMBER;
69595 l_adr_value_type_code         VARCHAR2(30);
69596 l_adr_value_combination_id    NUMBER;
69597 l_adr_value_segment_code      VARCHAR2(30);
69598 
69599 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
69600 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
69601 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
69602 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
69603 
69604 -- 4262811 Variables ------------------------------------------------------------------------------------------
69605 l_entered_amt_idx             NUMBER;
69606 l_accted_amt_idx              NUMBER;
69607 l_acc_rev_flag                VARCHAR2(1);
69608 l_accrual_line_num            NUMBER;
69609 l_tmp_amt                     NUMBER;
69610 l_acc_rev_natural_side_code   VARCHAR2(1);
69611 
69612 l_num_entries                 NUMBER;
69613 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
69614 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
69615 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
69616 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
69617 l_recog_line_1                NUMBER;
69618 l_recog_line_2                NUMBER;
69619 
69620 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
69621 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
69622 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
69623 
69624 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
69625 
69626 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
69627 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
69628 
69629 ---------------------------------------------------------------------------------------------------------------
69630 
69631 
69632 --
69633 -- bulk performance
69634 --
69635 l_balance_type_code           VARCHAR2(1);
69636 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
69637 l_log_module                  VARCHAR2(240);
69638 
69639 --
69640 -- Upgrade strategy
69641 --
69642 l_actual_upg_option           VARCHAR2(1);
69643 l_enc_upg_option           VARCHAR2(1);
69644 
69645 --
69646 BEGIN
69647 --
69648 IF g_log_enabled THEN
69649       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_128';
69650 END IF;
69651 --
69652 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69653 
69654       trace
69655          (p_msg      => 'BEGIN of AcctLineType_128'
69656          ,p_level    => C_LEVEL_PROCEDURE
69657          ,p_module   => l_log_module);
69658 
69659 END IF;
69660 --
69661 l_component_type             := 'AMB_JLT';
69662 l_component_code             := 'INVENTORY_VALUATION';
69663 l_component_type_code        := 'S';
69664 l_component_appl_id          :=  707;
69665 l_amb_context_code           := 'DEFAULT';
69666 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
69667 l_event_class_code           := 'USER_DEFINE';
69668 l_event_type_code            := 'UDIR_INTERORG_SHIP';
69669 l_line_definition_owner_code := 'S';
69670 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
69671 --
69672 l_balance_type_code          := 'A';
69673 l_segment                     := NULL;
69674 l_ccid                        := NULL;
69675 l_adr_transaction_coa_id      := NULL;
69676 l_adr_accounting_coa_id       := NULL;
69677 l_adr_flexfield_segment_code  := NULL;
69678 l_adr_flex_value_set_id       := NULL;
69679 l_adr_value_type_code         := NULL;
69680 l_adr_value_combination_id    := NULL;
69681 l_adr_value_segment_code      := NULL;
69682 
69683 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
69684 l_bflow_class_code           := '';    -- 4219869 Business Flow
69685 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
69686 l_budgetary_control_flag     := 'N';
69687 
69688 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
69689 l_bflow_applied_to_amt       := NULL; -- 5132302
69690 l_entered_amt_idx            := NULL;          -- 4262811
69691 l_accted_amt_idx             := NULL;          -- 4262811
69692 l_acc_rev_flag               := NULL;          -- 4262811
69693 l_accrual_line_num           := NULL;          -- 4262811
69694 l_tmp_amt                    := NULL;          -- 4262811
69695 --
69696  
69697 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
69698     l_balance_type_code <> 'B' THEN
69699 IF NVL(p_source_24,9E125) =  1
69700  THEN 
69701 
69702    --
69703    XLA_AE_LINES_PKG.SetNewLine;
69704 
69705    p_balance_type_code          := l_balance_type_code;
69706    -- set the flag so later we will know whether the gain loss line needs to be created
69707    
69708    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
69709      p_actual_flag :='A';
69710    END IF;
69711 
69712    --
69713    -- bulk performance
69714    --
69715    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
69716                                       p_header_num   => 0); -- 4262811
69717    --
69718    -- set accounting line options
69719    --
69720    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
69721            p_natural_side_code          => 'D'
69722          , p_gain_or_loss_flag          => 'N'
69723          , p_gl_transfer_mode_code      => 'S'
69724          , p_acct_entry_type_code       => 'A'
69725          , p_switch_side_flag           => 'Y'
69726          , p_merge_duplicate_code       => 'N'
69727          );
69728    --
69729    l_acc_rev_natural_side_code := 'C';  -- 4262811
69730    -- 
69731    --
69732    -- set accounting line type info
69733    --
69734    xla_ae_lines_pkg.SetAcctLineType
69735       (p_component_type             => l_component_type
69736       ,p_event_type_code            => l_event_type_code
69737       ,p_line_definition_owner_code => l_line_definition_owner_code
69738       ,p_line_definition_code       => l_line_definition_code
69739       ,p_accounting_line_code       => l_component_code
69740       ,p_accounting_line_type_code  => l_component_type_code
69741       ,p_accounting_line_appl_id    => l_component_appl_id
69742       ,p_amb_context_code           => l_amb_context_code
69743       ,p_entity_code                => l_entity_code
69744       ,p_event_class_code           => l_event_class_code);
69745    --
69746    -- set accounting class
69747    --
69748    xla_ae_lines_pkg.SetAcctClass(
69749            p_accounting_class_code  => 'INVENTORY_VALUATION'
69750          , p_ae_header_id           => l_ae_header_id
69751          );
69752 
69753    --
69754    -- set rounding class
69755    --
69756    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
69757                       'INVENTORY_VALUATION';
69758 
69759    --
69760    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
69761    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
69762    --
69763    -- bulk performance
69764    --
69765    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
69766 
69767    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
69768       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
69769 
69770    -- 4955764
69771    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69772       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
69773 
69774    -- 4458381 Public Sector Enh
69775    
69776    --
69777    -- set accounting attributes for the line type
69778    --
69779    l_entered_amt_idx := 3;
69780    l_accted_amt_idx  := 8;
69781    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
69782    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
69783    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
69784    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
69785    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
69786    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
69787    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
69788    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
69789    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
69790    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
69791    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
69792    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
69793    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
69794    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
69795    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
69796    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
69797    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
69798 
69799    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
69800    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
69801 
69802    ---------------------------------------------------------------------------------------------------------------
69803    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
69804    ---------------------------------------------------------------------------------------------------------------
69805    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
69806 
69807    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69808    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69809 
69810    IF xla_accounting_cache_pkg.GetValueChar
69811          (p_source_code         => 'LEDGER_CATEGORY_CODE'
69812          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
69813    AND l_bflow_method_code = 'PRIOR_ENTRY'
69814 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
69815    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
69816          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
69817        )
69818    THEN
69819          xla_ae_lines_pkg.BflowUpgEntry
69820            (p_business_method_code    => l_bflow_method_code
69821            ,p_business_class_code     => l_bflow_class_code
69822            ,p_balance_type            => l_balance_type_code);
69823    ELSE
69824       NULL;
69825 -- No business flow processing for business flow method of NONE.
69826    END IF;
69827 
69828    --
69829    -- call analytical criteria
69830    --
69831    
69832    --
69833    -- call description
69834    --
69835    -- No description or it is inherited.
69836    --
69837    -- call ADRs
69838    -- Bug 4922099
69839    --
69840    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69841         (NVL(l_actual_upg_option, 'N') = 'O') OR
69842         (NVL(l_enc_upg_option, 'N') = 'O')
69843       )
69844    THEN
69845    NULL;
69846    --
69847    --
69848    
69849   l_ccid := AcctDerRule_4(
69850            p_application_id           => p_application_id
69851          , p_ae_header_id             => l_ae_header_id 
69852 , p_source_4 => p_source_4
69853          , x_transaction_coa_id       => l_adr_transaction_coa_id
69854          , x_accounting_coa_id        => l_adr_accounting_coa_id
69855          , x_value_type_code          => l_adr_value_type_code
69856          , p_side                     => 'NA'
69857    );
69858 
69859    xla_ae_lines_pkg.set_ccid(
69860     p_code_combination_id          => l_ccid
69861   , p_value_type_code              => l_adr_value_type_code
69862   , p_transaction_coa_id           => l_adr_transaction_coa_id
69863   , p_accounting_coa_id            => l_adr_accounting_coa_id
69864   , p_adr_code                     => 'CST_DEFAULT'
69865   , p_adr_type_code                => 'S'
69866   , p_component_type               => l_component_type
69867   , p_component_code               => l_component_code
69868   , p_component_type_code          => l_component_type_code
69869   , p_component_appl_id            => l_component_appl_id
69870   , p_amb_context_code             => l_amb_context_code
69871   , p_side                         => 'NA'
69872   );
69873 
69874 
69875    --
69876    --
69877    END IF;
69878    --
69879    -- Bug 4922099
69880    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
69881           (NVL(l_enc_upg_option, 'N') = 'O')
69882         ) AND
69883         (l_bflow_method_code = 'PRIOR_ENTRY')
69884       )
69885    THEN
69886       IF
69887       --
69888       1 = 2
69889       --
69890       THEN
69891       xla_accounting_err_pkg.build_message
69892                                     (p_appli_s_name            => 'XLA'
69893                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69894                                     ,p_token_1                 => 'LINE_NUMBER'
69895                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
69896                                     ,p_token_2                 => 'LINE_TYPE_NAME'
69897                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
69898                                                                              l_component_type
69899                                                                             ,l_component_code
69900                                                                             ,l_component_type_code
69901                                                                             ,l_component_appl_id
69902                                                                             ,l_amb_context_code
69903                                                                             ,l_entity_code
69904                                                                             ,l_event_class_code
69905                                                                            )
69906                                     ,p_token_3                 => 'OWNER'
69907                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
69908                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
69909                                                                           ,p_lookup_code    => l_component_type_code
69910                                                                          )
69911                                     ,p_token_4                 => 'PRODUCT_NAME'
69912                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
69913                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
69914                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
69915                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
69916                                     ,p_ae_header_id            =>  NULL
69917                                        );
69918 
69919         IF (C_LEVEL_ERROR>= g_log_level) THEN
69920                  trace
69921                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69922                       ,p_level    => C_LEVEL_ERROR
69923                       ,p_module   => l_log_module);
69924         END IF;
69925       END IF;
69926    END IF;
69927    --
69928    --
69929    ------------------------------------------------------------------------------------------------
69930    -- 4219869 Business Flow
69931    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
69932    -- Prior Entry.  Currently, the following code is always generated.
69933    ------------------------------------------------------------------------------------------------
69934    XLA_AE_LINES_PKG.ValidateCurrentLine;
69935 
69936    ------------------------------------------------------------------------------------
69937    -- 4219869 Business Flow
69938    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
69939    ------------------------------------------------------------------------------------
69940    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69941 
69942    ----------------------------------------------------------------------------------
69943    -- 4219869 Business Flow
69944    -- Update journal entry status -- Need to generate this within IF <condition>
69945    ----------------------------------------------------------------------------------
69946    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69947          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
69948          ,p_balance_type_code => l_balance_type_code
69949          );
69950 
69951    -------------------------------------------------------------------------------------------
69952    -- 4262811 - Generate the Accrual Reversal lines
69953    -------------------------------------------------------------------------------------------
69954    BEGIN
69955       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
69956                               (g_array_event(p_event_id).array_value_num('header_index'));
69957       IF l_acc_rev_flag IS NULL THEN
69958          l_acc_rev_flag := 'N';
69959       END IF;
69960    EXCEPTION
69961       WHEN OTHERS THEN
69962          l_acc_rev_flag := 'N';
69963    END;
69964    --
69965    IF (l_acc_rev_flag = 'Y') THEN
69966 
69967        -- 4645092  ------------------------------------------------------------------------------
69968        -- To allow MPA report to determine if it should generate report process
69969        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
69970        ------------------------------------------------------------------------------------------
69971 
69972        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
69973        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
69974    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
69975    -- call ADRs
69976    -- Bug 4922099
69977    --
69978    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69979         (NVL(l_actual_upg_option, 'N') = 'O') OR
69980         (NVL(l_enc_upg_option, 'N') = 'O')
69981       )
69982    THEN
69983    NULL;
69984    --
69985    --
69986    
69987   l_ccid := AcctDerRule_4(
69988            p_application_id           => p_application_id
69989          , p_ae_header_id             => l_ae_header_id 
69990 , p_source_4 => p_source_4
69991          , x_transaction_coa_id       => l_adr_transaction_coa_id
69992          , x_accounting_coa_id        => l_adr_accounting_coa_id
69993          , x_value_type_code          => l_adr_value_type_code
69994          , p_side                     => 'NA'
69995    );
69996 
69997    xla_ae_lines_pkg.set_ccid(
69998     p_code_combination_id          => l_ccid
69999   , p_value_type_code              => l_adr_value_type_code
70000   , p_transaction_coa_id           => l_adr_transaction_coa_id
70001   , p_accounting_coa_id            => l_adr_accounting_coa_id
70002   , p_adr_code                     => 'CST_DEFAULT'
70003   , p_adr_type_code                => 'S'
70004   , p_component_type               => l_component_type
70005   , p_component_code               => l_component_code
70006   , p_component_type_code          => l_component_type_code
70007   , p_component_appl_id            => l_component_appl_id
70008   , p_amb_context_code             => l_amb_context_code
70009   , p_side                         => 'NA'
70010   );
70011 
70012 
70013    --
70014    --
70015    END IF;
70016 
70017        --
70018        -- Update the line information that should be overwritten
70019        --
70020        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
70021                                          p_header_num   => 1);
70022        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
70023 
70024        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
70025 
70026        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
70027           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
70028        END IF;
70029 
70030       --
70031       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
70032       --
70033       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
70034           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
70035       ELSE
70036           ---------------------------------------------------------------------------------------------------
70037           -- 4262811a Switch Sign
70038           ---------------------------------------------------------------------------------------------------
70039           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
70040           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
70041                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70042           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
70043                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70044           -- 5132302
70045           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
70046                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70047 
70048       END IF;
70049 
70050       -- 4955764
70051       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70052       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
70053 
70054 
70055       XLA_AE_LINES_PKG.ValidateCurrentLine;
70056       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70057 
70058       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70059                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
70060                ,p_balance_type_code => l_balance_type_code);
70061 
70062    END IF;
70063 
70064    -----------------------------------------------------------------------------------------
70065    -- 4262811 Multiperiod Accounting
70066    -----------------------------------------------------------------------------------------
70067      -- No MPA option is assigned.
70068 
70069 
70070 END IF;
70071 END IF;
70072 --
70073 
70074 --
70075 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70076    trace
70077       (p_msg      => 'END of AcctLineType_128'
70078       ,p_level    => C_LEVEL_PROCEDURE
70079       ,p_module   => l_log_module);
70080 END IF;
70081 --
70082 EXCEPTION
70083   WHEN xla_exceptions_pkg.application_exception THEN
70084       RAISE;
70085   WHEN OTHERS THEN
70086        xla_exceptions_pkg.raise_message
70087            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_128');
70088 END AcctLineType_128;
70089 --
70090 
70091 ---------------------------------------
70092 --
70093 -- PRIVATE FUNCTION
70094 --         AcctLineType_129
70095 --
70096 ---------------------------------------
70097 PROCEDURE AcctLineType_129 (
70098   p_application_id        IN NUMBER
70099  ,p_event_id              IN NUMBER
70100  ,p_calculate_acctd_flag  IN VARCHAR2
70101  ,p_calculate_g_l_flag    IN VARCHAR2
70102  ,p_actual_flag           IN OUT VARCHAR2
70103  ,p_balance_type_code     OUT VARCHAR2
70104  ,p_gain_or_loss_ref      OUT VARCHAR2
70105  
70106 --Cost Management Default Account
70107  , p_source_4            IN NUMBER
70108 --DISTRIBUTION_IDENTIFIER
70109  , p_source_11            IN NUMBER
70110 --Distribution Type
70111  , p_source_12            IN VARCHAR2
70112  , p_source_12_meaning    IN VARCHAR2
70113 --Entered Currency Code
70114  , p_source_15            IN VARCHAR2
70115 --Entered Amount
70116  , p_source_18            IN NUMBER
70117 --Currency Conversion Date
70118  , p_source_19            IN DATE
70119 --Currency Conversion Rate
70120  , p_source_20            IN NUMBER
70121 --Currency Conversion Type
70122  , p_source_21            IN VARCHAR2
70123 --Accounted Amount
70124  , p_source_22            IN NUMBER
70125 --Accounting Line Type
70126  , p_source_24            IN NUMBER
70127 )
70128 IS
70129 
70130 l_component_type              VARCHAR2(80);
70131 l_component_code              VARCHAR2(30);
70132 l_component_type_code         VARCHAR2(1);
70133 l_component_appl_id           INTEGER;
70134 l_amb_context_code            VARCHAR2(30);
70135 l_entity_code                 VARCHAR2(30);
70136 l_event_class_code            VARCHAR2(30);
70137 l_ae_header_id                NUMBER;
70138 l_event_type_code             VARCHAR2(30);
70139 l_line_definition_code        VARCHAR2(30);
70140 l_line_definition_owner_code  VARCHAR2(1);
70141 --
70142 -- adr variables
70143 l_segment                     VARCHAR2(30);
70144 l_ccid                        NUMBER;
70145 l_adr_transaction_coa_id      NUMBER;
70146 l_adr_accounting_coa_id       NUMBER;
70147 l_adr_flexfield_segment_code  VARCHAR2(30);
70148 l_adr_flex_value_set_id       NUMBER;
70149 l_adr_value_type_code         VARCHAR2(30);
70150 l_adr_value_combination_id    NUMBER;
70151 l_adr_value_segment_code      VARCHAR2(30);
70152 
70153 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
70154 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
70155 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
70156 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
70157 
70158 -- 4262811 Variables ------------------------------------------------------------------------------------------
70159 l_entered_amt_idx             NUMBER;
70160 l_accted_amt_idx              NUMBER;
70161 l_acc_rev_flag                VARCHAR2(1);
70162 l_accrual_line_num            NUMBER;
70163 l_tmp_amt                     NUMBER;
70164 l_acc_rev_natural_side_code   VARCHAR2(1);
70165 
70166 l_num_entries                 NUMBER;
70167 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
70168 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
70169 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
70170 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
70171 l_recog_line_1                NUMBER;
70172 l_recog_line_2                NUMBER;
70173 
70174 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
70175 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
70176 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
70177 
70178 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
70179 
70180 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
70181 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
70182 
70183 ---------------------------------------------------------------------------------------------------------------
70184 
70185 
70186 --
70187 -- bulk performance
70188 --
70189 l_balance_type_code           VARCHAR2(1);
70190 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
70191 l_log_module                  VARCHAR2(240);
70192 
70193 --
70194 -- Upgrade strategy
70195 --
70196 l_actual_upg_option           VARCHAR2(1);
70197 l_enc_upg_option           VARCHAR2(1);
70198 
70199 --
70200 BEGIN
70201 --
70202 IF g_log_enabled THEN
70203       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_129';
70204 END IF;
70205 --
70206 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70207 
70208       trace
70209          (p_msg      => 'BEGIN of AcctLineType_129'
70210          ,p_level    => C_LEVEL_PROCEDURE
70211          ,p_module   => l_log_module);
70212 
70213 END IF;
70214 --
70215 l_component_type             := 'AMB_JLT';
70216 l_component_code             := 'INVENTORY_VALUATION';
70217 l_component_type_code        := 'S';
70218 l_component_appl_id          :=  707;
70219 l_amb_context_code           := 'DEFAULT';
70220 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
70221 l_event_class_code           := 'CON_INV_OWNR_TXFR';
70222 l_event_type_code            := 'CON_INV_OWNR_TXFR_ALL';
70223 l_line_definition_owner_code := 'S';
70224 l_line_definition_code       := 'CON_INV_OWNR_TXFR';
70225 --
70226 l_balance_type_code          := 'A';
70227 l_segment                     := NULL;
70228 l_ccid                        := NULL;
70229 l_adr_transaction_coa_id      := NULL;
70230 l_adr_accounting_coa_id       := NULL;
70231 l_adr_flexfield_segment_code  := NULL;
70232 l_adr_flex_value_set_id       := NULL;
70233 l_adr_value_type_code         := NULL;
70234 l_adr_value_combination_id    := NULL;
70235 l_adr_value_segment_code      := NULL;
70236 
70237 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
70238 l_bflow_class_code           := '';    -- 4219869 Business Flow
70239 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
70240 l_budgetary_control_flag     := 'N';
70241 
70242 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
70243 l_bflow_applied_to_amt       := NULL; -- 5132302
70244 l_entered_amt_idx            := NULL;          -- 4262811
70245 l_accted_amt_idx             := NULL;          -- 4262811
70246 l_acc_rev_flag               := NULL;          -- 4262811
70247 l_accrual_line_num           := NULL;          -- 4262811
70248 l_tmp_amt                    := NULL;          -- 4262811
70249 --
70250  
70251 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
70252     l_balance_type_code <> 'B' THEN
70253 IF NVL(p_source_24,9E125) =  1
70254  THEN 
70255 
70256    --
70257    XLA_AE_LINES_PKG.SetNewLine;
70258 
70259    p_balance_type_code          := l_balance_type_code;
70260    -- set the flag so later we will know whether the gain loss line needs to be created
70261    
70262    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
70263      p_actual_flag :='A';
70264    END IF;
70265 
70266    --
70267    -- bulk performance
70268    --
70269    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
70270                                       p_header_num   => 0); -- 4262811
70271    --
70272    -- set accounting line options
70273    --
70274    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
70275            p_natural_side_code          => 'D'
70276          , p_gain_or_loss_flag          => 'N'
70277          , p_gl_transfer_mode_code      => 'S'
70278          , p_acct_entry_type_code       => 'A'
70279          , p_switch_side_flag           => 'Y'
70280          , p_merge_duplicate_code       => 'N'
70281          );
70282    --
70283    l_acc_rev_natural_side_code := 'C';  -- 4262811
70284    -- 
70285    --
70286    -- set accounting line type info
70287    --
70288    xla_ae_lines_pkg.SetAcctLineType
70289       (p_component_type             => l_component_type
70290       ,p_event_type_code            => l_event_type_code
70291       ,p_line_definition_owner_code => l_line_definition_owner_code
70292       ,p_line_definition_code       => l_line_definition_code
70293       ,p_accounting_line_code       => l_component_code
70294       ,p_accounting_line_type_code  => l_component_type_code
70295       ,p_accounting_line_appl_id    => l_component_appl_id
70296       ,p_amb_context_code           => l_amb_context_code
70297       ,p_entity_code                => l_entity_code
70298       ,p_event_class_code           => l_event_class_code);
70299    --
70300    -- set accounting class
70301    --
70302    xla_ae_lines_pkg.SetAcctClass(
70303            p_accounting_class_code  => 'INVENTORY_VALUATION'
70304          , p_ae_header_id           => l_ae_header_id
70305          );
70306 
70307    --
70308    -- set rounding class
70309    --
70310    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
70311                       'INVENTORY_VALUATION';
70312 
70313    --
70314    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
70315    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
70316    --
70317    -- bulk performance
70318    --
70319    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
70320 
70321    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
70322       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
70323 
70324    -- 4955764
70325    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70326       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
70327 
70328    -- 4458381 Public Sector Enh
70329    
70330    --
70331    -- set accounting attributes for the line type
70332    --
70333    l_entered_amt_idx := 3;
70334    l_accted_amt_idx  := 8;
70335    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
70336    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
70337    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
70338    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
70339    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
70340    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
70341    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
70342    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
70343    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
70344    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
70345    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
70346    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
70347    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
70348    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
70349    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
70350    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
70351    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
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_000007_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             := 'INVENTORY_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           := 'DIR_INTERORG_SHIP';
70776 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
70777 l_line_definition_owner_code := 'S';
70778 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
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) =  1
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  => 'INVENTORY_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                       'INVENTORY_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_000007_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            := 'UCG_TXFR';
71331 l_line_definition_owner_code := 'S';
71332 l_line_definition_code       := 'USER_CG_TXFR';
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_000007_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            := 'UDIR_INTERORG_RCPT_TP';
71885 l_line_definition_owner_code := 'S';
71886 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
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_000007_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            := 'UFOB_SHIP_SENDER_SHIP_TP';
72439 l_line_definition_owner_code := 'S';
72440 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_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_000007_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            := 'UMISC_RCPT';
72993 l_line_definition_owner_code := 'S';
72994 l_line_definition_code       := 'USER_RCPT';
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_000007_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           := 'USER_DEFINE';
73546 l_event_type_code            := 'UAVG_COST_UPD';
73547 l_line_definition_owner_code := 'S';
73548 l_line_definition_code       := 'USER_COST_UPD';
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_000007_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 --DISTRIBUTION_IDENTIFIER
73987  , p_source_11            IN NUMBER
73988 --Distribution Type
73989  , p_source_12            IN VARCHAR2
73990  , p_source_12_meaning    IN VARCHAR2
73991 --Entered Currency Code
73992  , p_source_15            IN VARCHAR2
73993 --Entered Amount
73994  , p_source_18            IN NUMBER
73995 --Currency Conversion Date
73996  , p_source_19            IN DATE
73997 --Currency Conversion Rate
73998  , p_source_20            IN NUMBER
73999 --Currency Conversion Type
74000  , p_source_21            IN VARCHAR2
74001 --Accounted Amount
74002  , p_source_22            IN NUMBER
74003 --Accounting Line Type
74004  , p_source_24            IN NUMBER
74005 )
74006 IS
74007 
74008 l_component_type              VARCHAR2(80);
74009 l_component_code              VARCHAR2(30);
74010 l_component_type_code         VARCHAR2(1);
74011 l_component_appl_id           INTEGER;
74012 l_amb_context_code            VARCHAR2(30);
74013 l_entity_code                 VARCHAR2(30);
74014 l_event_class_code            VARCHAR2(30);
74015 l_ae_header_id                NUMBER;
74016 l_event_type_code             VARCHAR2(30);
74017 l_line_definition_code        VARCHAR2(30);
74018 l_line_definition_owner_code  VARCHAR2(1);
74019 --
74020 -- adr variables
74021 l_segment                     VARCHAR2(30);
74022 l_ccid                        NUMBER;
74023 l_adr_transaction_coa_id      NUMBER;
74024 l_adr_accounting_coa_id       NUMBER;
74025 l_adr_flexfield_segment_code  VARCHAR2(30);
74026 l_adr_flex_value_set_id       NUMBER;
74027 l_adr_value_type_code         VARCHAR2(30);
74028 l_adr_value_combination_id    NUMBER;
74029 l_adr_value_segment_code      VARCHAR2(30);
74030 
74031 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
74032 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
74033 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
74034 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
74035 
74036 -- 4262811 Variables ------------------------------------------------------------------------------------------
74037 l_entered_amt_idx             NUMBER;
74038 l_accted_amt_idx              NUMBER;
74039 l_acc_rev_flag                VARCHAR2(1);
74040 l_accrual_line_num            NUMBER;
74041 l_tmp_amt                     NUMBER;
74042 l_acc_rev_natural_side_code   VARCHAR2(1);
74043 
74044 l_num_entries                 NUMBER;
74045 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
74046 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
74047 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
74048 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
74049 l_recog_line_1                NUMBER;
74050 l_recog_line_2                NUMBER;
74051 
74052 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
74053 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
74054 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
74055 
74056 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
74057 
74058 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
74059 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
74060 
74061 ---------------------------------------------------------------------------------------------------------------
74062 
74063 
74064 --
74065 -- bulk performance
74066 --
74067 l_balance_type_code           VARCHAR2(1);
74068 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
74069 l_log_module                  VARCHAR2(240);
74070 
74071 --
74072 -- Upgrade strategy
74073 --
74074 l_actual_upg_option           VARCHAR2(1);
74075 l_enc_upg_option           VARCHAR2(1);
74076 
74077 --
74078 BEGIN
74079 --
74080 IF g_log_enabled THEN
74081       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_136';
74082 END IF;
74083 --
74084 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74085 
74086       trace
74087          (p_msg      => 'BEGIN of AcctLineType_136'
74088          ,p_level    => C_LEVEL_PROCEDURE
74089          ,p_module   => l_log_module);
74090 
74091 END IF;
74092 --
74093 l_component_type             := 'AMB_JLT';
74094 l_component_code             := 'INVENTORY_VALUATION';
74095 l_component_type_code        := 'S';
74096 l_component_appl_id          :=  707;
74097 l_amb_context_code           := 'DEFAULT';
74098 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
74099 l_event_class_code           := 'USER_DEFINE';
74100 l_event_type_code            := 'UDIR_INTERORG_RCPT';
74101 l_line_definition_owner_code := 'S';
74102 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
74103 --
74104 l_balance_type_code          := 'A';
74105 l_segment                     := NULL;
74106 l_ccid                        := NULL;
74107 l_adr_transaction_coa_id      := NULL;
74108 l_adr_accounting_coa_id       := NULL;
74109 l_adr_flexfield_segment_code  := NULL;
74110 l_adr_flex_value_set_id       := NULL;
74111 l_adr_value_type_code         := NULL;
74112 l_adr_value_combination_id    := NULL;
74113 l_adr_value_segment_code      := NULL;
74114 
74115 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
74116 l_bflow_class_code           := '';    -- 4219869 Business Flow
74117 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
74118 l_budgetary_control_flag     := 'N';
74119 
74120 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
74121 l_bflow_applied_to_amt       := NULL; -- 5132302
74122 l_entered_amt_idx            := NULL;          -- 4262811
74123 l_accted_amt_idx             := NULL;          -- 4262811
74124 l_acc_rev_flag               := NULL;          -- 4262811
74125 l_accrual_line_num           := NULL;          -- 4262811
74126 l_tmp_amt                    := NULL;          -- 4262811
74127 --
74128  
74129 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
74130     l_balance_type_code <> 'B' THEN
74131 IF NVL(p_source_24,9E125) =  1
74132  THEN 
74133 
74134    --
74135    XLA_AE_LINES_PKG.SetNewLine;
74136 
74137    p_balance_type_code          := l_balance_type_code;
74138    -- set the flag so later we will know whether the gain loss line needs to be created
74139    
74140    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
74141      p_actual_flag :='A';
74142    END IF;
74143 
74144    --
74145    -- bulk performance
74146    --
74147    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
74148                                       p_header_num   => 0); -- 4262811
74149    --
74150    -- set accounting line options
74151    --
74152    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
74153            p_natural_side_code          => 'D'
74154          , p_gain_or_loss_flag          => 'N'
74155          , p_gl_transfer_mode_code      => 'S'
74156          , p_acct_entry_type_code       => 'A'
74157          , p_switch_side_flag           => 'Y'
74158          , p_merge_duplicate_code       => 'N'
74159          );
74160    --
74161    l_acc_rev_natural_side_code := 'C';  -- 4262811
74162    -- 
74163    --
74164    -- set accounting line type info
74165    --
74166    xla_ae_lines_pkg.SetAcctLineType
74167       (p_component_type             => l_component_type
74168       ,p_event_type_code            => l_event_type_code
74169       ,p_line_definition_owner_code => l_line_definition_owner_code
74170       ,p_line_definition_code       => l_line_definition_code
74171       ,p_accounting_line_code       => l_component_code
74172       ,p_accounting_line_type_code  => l_component_type_code
74173       ,p_accounting_line_appl_id    => l_component_appl_id
74174       ,p_amb_context_code           => l_amb_context_code
74175       ,p_entity_code                => l_entity_code
74176       ,p_event_class_code           => l_event_class_code);
74177    --
74178    -- set accounting class
74179    --
74180    xla_ae_lines_pkg.SetAcctClass(
74181            p_accounting_class_code  => 'INVENTORY_VALUATION'
74182          , p_ae_header_id           => l_ae_header_id
74183          );
74184 
74185    --
74186    -- set rounding class
74187    --
74188    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
74189                       'INVENTORY_VALUATION';
74190 
74191    --
74192    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
74193    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
74194    --
74195    -- bulk performance
74196    --
74197    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
74198 
74199    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
74200       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
74201 
74202    -- 4955764
74203    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74204       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
74205 
74206    -- 4458381 Public Sector Enh
74207    
74208    --
74209    -- set accounting attributes for the line type
74210    --
74211    l_entered_amt_idx := 3;
74212    l_accted_amt_idx  := 8;
74213    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
74214    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
74215    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
74216    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
74217    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
74218    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
74219    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
74220    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
74221    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
74222    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
74223    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
74224    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
74225    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
74226    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
74227    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
74228    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
74229    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
74230 
74231    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
74232    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
74233 
74234    ---------------------------------------------------------------------------------------------------------------
74235    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
74236    ---------------------------------------------------------------------------------------------------------------
74237    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
74238 
74239    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74240    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74241 
74242    IF xla_accounting_cache_pkg.GetValueChar
74243          (p_source_code         => 'LEDGER_CATEGORY_CODE'
74244          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
74245    AND l_bflow_method_code = 'PRIOR_ENTRY'
74246 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
74247    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
74248          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
74249        )
74250    THEN
74251          xla_ae_lines_pkg.BflowUpgEntry
74252            (p_business_method_code    => l_bflow_method_code
74253            ,p_business_class_code     => l_bflow_class_code
74254            ,p_balance_type            => l_balance_type_code);
74255    ELSE
74256       NULL;
74257 -- No business flow processing for business flow method of NONE.
74258    END IF;
74259 
74260    --
74261    -- call analytical criteria
74262    --
74263    
74264    --
74265    -- call description
74266    --
74267    -- No description or it is inherited.
74268    --
74269    -- call ADRs
74270    -- Bug 4922099
74271    --
74272    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74273         (NVL(l_actual_upg_option, 'N') = 'O') OR
74274         (NVL(l_enc_upg_option, 'N') = 'O')
74275       )
74276    THEN
74277    NULL;
74278    --
74279    --
74280    
74281   l_ccid := AcctDerRule_4(
74282            p_application_id           => p_application_id
74283          , p_ae_header_id             => l_ae_header_id 
74284 , p_source_4 => p_source_4
74285          , x_transaction_coa_id       => l_adr_transaction_coa_id
74286          , x_accounting_coa_id        => l_adr_accounting_coa_id
74287          , x_value_type_code          => l_adr_value_type_code
74288          , p_side                     => 'NA'
74289    );
74290 
74291    xla_ae_lines_pkg.set_ccid(
74292     p_code_combination_id          => l_ccid
74293   , p_value_type_code              => l_adr_value_type_code
74294   , p_transaction_coa_id           => l_adr_transaction_coa_id
74295   , p_accounting_coa_id            => l_adr_accounting_coa_id
74296   , p_adr_code                     => 'CST_DEFAULT'
74297   , p_adr_type_code                => 'S'
74298   , p_component_type               => l_component_type
74299   , p_component_code               => l_component_code
74300   , p_component_type_code          => l_component_type_code
74301   , p_component_appl_id            => l_component_appl_id
74302   , p_amb_context_code             => l_amb_context_code
74303   , p_side                         => 'NA'
74304   );
74305 
74306 
74307    --
74308    --
74309    END IF;
74310    --
74311    -- Bug 4922099
74312    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
74313           (NVL(l_enc_upg_option, 'N') = 'O')
74314         ) AND
74315         (l_bflow_method_code = 'PRIOR_ENTRY')
74316       )
74317    THEN
74318       IF
74319       --
74320       1 = 2
74321       --
74322       THEN
74323       xla_accounting_err_pkg.build_message
74324                                     (p_appli_s_name            => 'XLA'
74325                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74326                                     ,p_token_1                 => 'LINE_NUMBER'
74327                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
74328                                     ,p_token_2                 => 'LINE_TYPE_NAME'
74329                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
74330                                                                              l_component_type
74331                                                                             ,l_component_code
74332                                                                             ,l_component_type_code
74333                                                                             ,l_component_appl_id
74334                                                                             ,l_amb_context_code
74335                                                                             ,l_entity_code
74336                                                                             ,l_event_class_code
74337                                                                            )
74338                                     ,p_token_3                 => 'OWNER'
74339                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
74340                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
74341                                                                           ,p_lookup_code    => l_component_type_code
74342                                                                          )
74343                                     ,p_token_4                 => 'PRODUCT_NAME'
74344                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
74345                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
74346                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
74347                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
74348                                     ,p_ae_header_id            =>  NULL
74349                                        );
74350 
74351         IF (C_LEVEL_ERROR>= g_log_level) THEN
74352                  trace
74353                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74354                       ,p_level    => C_LEVEL_ERROR
74355                       ,p_module   => l_log_module);
74356         END IF;
74357       END IF;
74358    END IF;
74359    --
74360    --
74361    ------------------------------------------------------------------------------------------------
74362    -- 4219869 Business Flow
74363    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
74364    -- Prior Entry.  Currently, the following code is always generated.
74365    ------------------------------------------------------------------------------------------------
74366    XLA_AE_LINES_PKG.ValidateCurrentLine;
74367 
74368    ------------------------------------------------------------------------------------
74369    -- 4219869 Business Flow
74370    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
74371    ------------------------------------------------------------------------------------
74372    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74373 
74374    ----------------------------------------------------------------------------------
74375    -- 4219869 Business Flow
74376    -- Update journal entry status -- Need to generate this within IF <condition>
74377    ----------------------------------------------------------------------------------
74378    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74379          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
74380          ,p_balance_type_code => l_balance_type_code
74381          );
74382 
74383    -------------------------------------------------------------------------------------------
74384    -- 4262811 - Generate the Accrual Reversal lines
74385    -------------------------------------------------------------------------------------------
74386    BEGIN
74387       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
74388                               (g_array_event(p_event_id).array_value_num('header_index'));
74389       IF l_acc_rev_flag IS NULL THEN
74390          l_acc_rev_flag := 'N';
74391       END IF;
74392    EXCEPTION
74393       WHEN OTHERS THEN
74394          l_acc_rev_flag := 'N';
74395    END;
74396    --
74397    IF (l_acc_rev_flag = 'Y') THEN
74398 
74399        -- 4645092  ------------------------------------------------------------------------------
74400        -- To allow MPA report to determine if it should generate report process
74401        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
74402        ------------------------------------------------------------------------------------------
74403 
74404        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
74405        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
74406    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
74407    -- call ADRs
74408    -- Bug 4922099
74409    --
74410    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74411         (NVL(l_actual_upg_option, 'N') = 'O') OR
74412         (NVL(l_enc_upg_option, 'N') = 'O')
74413       )
74414    THEN
74415    NULL;
74416    --
74417    --
74418    
74419   l_ccid := AcctDerRule_4(
74420            p_application_id           => p_application_id
74421          , p_ae_header_id             => l_ae_header_id 
74422 , p_source_4 => p_source_4
74423          , x_transaction_coa_id       => l_adr_transaction_coa_id
74424          , x_accounting_coa_id        => l_adr_accounting_coa_id
74425          , x_value_type_code          => l_adr_value_type_code
74426          , p_side                     => 'NA'
74427    );
74428 
74429    xla_ae_lines_pkg.set_ccid(
74430     p_code_combination_id          => l_ccid
74431   , p_value_type_code              => l_adr_value_type_code
74432   , p_transaction_coa_id           => l_adr_transaction_coa_id
74433   , p_accounting_coa_id            => l_adr_accounting_coa_id
74434   , p_adr_code                     => 'CST_DEFAULT'
74435   , p_adr_type_code                => 'S'
74436   , p_component_type               => l_component_type
74437   , p_component_code               => l_component_code
74438   , p_component_type_code          => l_component_type_code
74439   , p_component_appl_id            => l_component_appl_id
74440   , p_amb_context_code             => l_amb_context_code
74441   , p_side                         => 'NA'
74442   );
74443 
74444 
74445    --
74446    --
74447    END IF;
74448 
74449        --
74450        -- Update the line information that should be overwritten
74451        --
74452        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
74453                                          p_header_num   => 1);
74454        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
74455 
74456        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
74457 
74458        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
74459           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
74460        END IF;
74461 
74462       --
74463       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
74464       --
74465       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
74466           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
74467       ELSE
74468           ---------------------------------------------------------------------------------------------------
74469           -- 4262811a Switch Sign
74470           ---------------------------------------------------------------------------------------------------
74471           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
74472           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74473                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74474           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74475                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74476           -- 5132302
74477           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
74478                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74479 
74480       END IF;
74481 
74482       -- 4955764
74483       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74484       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
74485 
74486 
74487       XLA_AE_LINES_PKG.ValidateCurrentLine;
74488       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74489 
74490       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74491                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
74492                ,p_balance_type_code => l_balance_type_code);
74493 
74494    END IF;
74495 
74496    -----------------------------------------------------------------------------------------
74497    -- 4262811 Multiperiod Accounting
74498    -----------------------------------------------------------------------------------------
74499      -- No MPA option is assigned.
74500 
74501 
74502 END IF;
74503 END IF;
74504 --
74505 
74506 --
74507 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74508    trace
74509       (p_msg      => 'END of AcctLineType_136'
74510       ,p_level    => C_LEVEL_PROCEDURE
74511       ,p_module   => l_log_module);
74512 END IF;
74513 --
74514 EXCEPTION
74515   WHEN xla_exceptions_pkg.application_exception THEN
74516       RAISE;
74517   WHEN OTHERS THEN
74518        xla_exceptions_pkg.raise_message
74519            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_136');
74520 END AcctLineType_136;
74521 --
74522 
74523 ---------------------------------------
74524 --
74525 -- PRIVATE FUNCTION
74526 --         AcctLineType_137
74527 --
74528 ---------------------------------------
74529 PROCEDURE AcctLineType_137 (
74530   p_application_id        IN NUMBER
74531  ,p_event_id              IN NUMBER
74532  ,p_calculate_acctd_flag  IN VARCHAR2
74533  ,p_calculate_g_l_flag    IN VARCHAR2
74534  ,p_actual_flag           IN OUT VARCHAR2
74535  ,p_balance_type_code     OUT VARCHAR2
74536  ,p_gain_or_loss_ref      OUT VARCHAR2
74537  
74538 --Cost Management Default Account
74539  , p_source_4            IN NUMBER
74540 --DISTRIBUTION_IDENTIFIER
74541  , p_source_11            IN NUMBER
74542 --Distribution Type
74543  , p_source_12            IN VARCHAR2
74544  , p_source_12_meaning    IN VARCHAR2
74545 --Entered Currency Code
74546  , p_source_15            IN VARCHAR2
74547 --Entered Amount
74548  , p_source_18            IN NUMBER
74549 --Currency Conversion Date
74550  , p_source_19            IN DATE
74551 --Currency Conversion Rate
74552  , p_source_20            IN NUMBER
74553 --Currency Conversion Type
74554  , p_source_21            IN VARCHAR2
74555 --Accounted Amount
74556  , p_source_22            IN NUMBER
74557 --Accounting Line Type
74558  , p_source_24            IN NUMBER
74559 )
74560 IS
74561 
74562 l_component_type              VARCHAR2(80);
74563 l_component_code              VARCHAR2(30);
74564 l_component_type_code         VARCHAR2(1);
74565 l_component_appl_id           INTEGER;
74566 l_amb_context_code            VARCHAR2(30);
74567 l_entity_code                 VARCHAR2(30);
74568 l_event_class_code            VARCHAR2(30);
74569 l_ae_header_id                NUMBER;
74570 l_event_type_code             VARCHAR2(30);
74571 l_line_definition_code        VARCHAR2(30);
74572 l_line_definition_owner_code  VARCHAR2(1);
74573 --
74574 -- adr variables
74575 l_segment                     VARCHAR2(30);
74576 l_ccid                        NUMBER;
74577 l_adr_transaction_coa_id      NUMBER;
74578 l_adr_accounting_coa_id       NUMBER;
74579 l_adr_flexfield_segment_code  VARCHAR2(30);
74580 l_adr_flex_value_set_id       NUMBER;
74581 l_adr_value_type_code         VARCHAR2(30);
74582 l_adr_value_combination_id    NUMBER;
74583 l_adr_value_segment_code      VARCHAR2(30);
74584 
74585 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
74586 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
74587 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
74588 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
74589 
74590 -- 4262811 Variables ------------------------------------------------------------------------------------------
74591 l_entered_amt_idx             NUMBER;
74592 l_accted_amt_idx              NUMBER;
74593 l_acc_rev_flag                VARCHAR2(1);
74594 l_accrual_line_num            NUMBER;
74595 l_tmp_amt                     NUMBER;
74596 l_acc_rev_natural_side_code   VARCHAR2(1);
74597 
74598 l_num_entries                 NUMBER;
74599 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
74600 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
74601 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
74602 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
74603 l_recog_line_1                NUMBER;
74604 l_recog_line_2                NUMBER;
74605 
74606 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
74607 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
74608 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
74609 
74610 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
74611 
74612 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
74613 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
74614 
74615 ---------------------------------------------------------------------------------------------------------------
74616 
74617 
74618 --
74619 -- bulk performance
74620 --
74621 l_balance_type_code           VARCHAR2(1);
74622 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
74623 l_log_module                  VARCHAR2(240);
74624 
74625 --
74626 -- Upgrade strategy
74627 --
74628 l_actual_upg_option           VARCHAR2(1);
74629 l_enc_upg_option           VARCHAR2(1);
74630 
74631 --
74632 BEGIN
74633 --
74634 IF g_log_enabled THEN
74635       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_137';
74636 END IF;
74637 --
74638 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74639 
74640       trace
74641          (p_msg      => 'BEGIN of AcctLineType_137'
74642          ,p_level    => C_LEVEL_PROCEDURE
74643          ,p_module   => l_log_module);
74644 
74645 END IF;
74646 --
74647 l_component_type             := 'AMB_JLT';
74648 l_component_code             := 'INVENTORY_VALUATION';
74649 l_component_type_code        := 'S';
74650 l_component_appl_id          :=  707;
74651 l_amb_context_code           := 'DEFAULT';
74652 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
74653 l_event_class_code           := 'USER_DEFINE';
74654 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
74655 l_line_definition_owner_code := 'S';
74656 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
74657 --
74658 l_balance_type_code          := 'A';
74659 l_segment                     := NULL;
74660 l_ccid                        := NULL;
74661 l_adr_transaction_coa_id      := NULL;
74662 l_adr_accounting_coa_id       := NULL;
74663 l_adr_flexfield_segment_code  := NULL;
74664 l_adr_flex_value_set_id       := NULL;
74665 l_adr_value_type_code         := NULL;
74666 l_adr_value_combination_id    := NULL;
74667 l_adr_value_segment_code      := NULL;
74668 
74669 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
74670 l_bflow_class_code           := '';    -- 4219869 Business Flow
74671 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
74672 l_budgetary_control_flag     := 'N';
74673 
74674 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
74675 l_bflow_applied_to_amt       := NULL; -- 5132302
74676 l_entered_amt_idx            := NULL;          -- 4262811
74677 l_accted_amt_idx             := NULL;          -- 4262811
74678 l_acc_rev_flag               := NULL;          -- 4262811
74679 l_accrual_line_num           := NULL;          -- 4262811
74680 l_tmp_amt                    := NULL;          -- 4262811
74681 --
74682  
74683 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
74684     l_balance_type_code <> 'B' THEN
74685 IF NVL(p_source_24,9E125) =  1
74686  THEN 
74687 
74688    --
74689    XLA_AE_LINES_PKG.SetNewLine;
74690 
74691    p_balance_type_code          := l_balance_type_code;
74692    -- set the flag so later we will know whether the gain loss line needs to be created
74693    
74694    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
74695      p_actual_flag :='A';
74696    END IF;
74697 
74698    --
74699    -- bulk performance
74700    --
74701    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
74702                                       p_header_num   => 0); -- 4262811
74703    --
74704    -- set accounting line options
74705    --
74706    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
74707            p_natural_side_code          => 'D'
74708          , p_gain_or_loss_flag          => 'N'
74709          , p_gl_transfer_mode_code      => 'S'
74710          , p_acct_entry_type_code       => 'A'
74711          , p_switch_side_flag           => 'Y'
74712          , p_merge_duplicate_code       => 'N'
74713          );
74714    --
74715    l_acc_rev_natural_side_code := 'C';  -- 4262811
74716    -- 
74717    --
74718    -- set accounting line type info
74719    --
74720    xla_ae_lines_pkg.SetAcctLineType
74721       (p_component_type             => l_component_type
74722       ,p_event_type_code            => l_event_type_code
74723       ,p_line_definition_owner_code => l_line_definition_owner_code
74724       ,p_line_definition_code       => l_line_definition_code
74725       ,p_accounting_line_code       => l_component_code
74726       ,p_accounting_line_type_code  => l_component_type_code
74727       ,p_accounting_line_appl_id    => l_component_appl_id
74728       ,p_amb_context_code           => l_amb_context_code
74729       ,p_entity_code                => l_entity_code
74730       ,p_event_class_code           => l_event_class_code);
74731    --
74732    -- set accounting class
74733    --
74734    xla_ae_lines_pkg.SetAcctClass(
74735            p_accounting_class_code  => 'INVENTORY_VALUATION'
74736          , p_ae_header_id           => l_ae_header_id
74737          );
74738 
74739    --
74740    -- set rounding class
74741    --
74742    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
74743                       'INVENTORY_VALUATION';
74744 
74745    --
74746    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
74747    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
74748    --
74749    -- bulk performance
74750    --
74751    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
74752 
74753    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
74754       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
74755 
74756    -- 4955764
74757    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74758       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
74759 
74760    -- 4458381 Public Sector Enh
74761    
74762    --
74763    -- set accounting attributes for the line type
74764    --
74765    l_entered_amt_idx := 3;
74766    l_accted_amt_idx  := 8;
74767    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
74768    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
74769    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
74770    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
74771    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
74772    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
74773    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
74774    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
74775    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
74776    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
74777    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
74778    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
74779    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
74780    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
74781    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
74782    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
74783    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
74784 
74785    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
74786    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
74787 
74788    ---------------------------------------------------------------------------------------------------------------
74789    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
74790    ---------------------------------------------------------------------------------------------------------------
74791    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
74792 
74793    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74794    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74795 
74796    IF xla_accounting_cache_pkg.GetValueChar
74797          (p_source_code         => 'LEDGER_CATEGORY_CODE'
74798          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
74799    AND l_bflow_method_code = 'PRIOR_ENTRY'
74800 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
74801    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
74802          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
74803        )
74804    THEN
74805          xla_ae_lines_pkg.BflowUpgEntry
74806            (p_business_method_code    => l_bflow_method_code
74807            ,p_business_class_code     => l_bflow_class_code
74808            ,p_balance_type            => l_balance_type_code);
74809    ELSE
74810       NULL;
74811 -- No business flow processing for business flow method of NONE.
74812    END IF;
74813 
74814    --
74815    -- call analytical criteria
74816    --
74817    
74818    --
74819    -- call description
74820    --
74821    -- No description or it is inherited.
74822    --
74823    -- call ADRs
74824    -- Bug 4922099
74825    --
74826    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74827         (NVL(l_actual_upg_option, 'N') = 'O') OR
74828         (NVL(l_enc_upg_option, 'N') = 'O')
74829       )
74830    THEN
74831    NULL;
74832    --
74833    --
74834    
74835   l_ccid := AcctDerRule_4(
74836            p_application_id           => p_application_id
74837          , p_ae_header_id             => l_ae_header_id 
74838 , p_source_4 => p_source_4
74839          , x_transaction_coa_id       => l_adr_transaction_coa_id
74840          , x_accounting_coa_id        => l_adr_accounting_coa_id
74841          , x_value_type_code          => l_adr_value_type_code
74842          , p_side                     => 'NA'
74843    );
74844 
74845    xla_ae_lines_pkg.set_ccid(
74846     p_code_combination_id          => l_ccid
74847   , p_value_type_code              => l_adr_value_type_code
74848   , p_transaction_coa_id           => l_adr_transaction_coa_id
74849   , p_accounting_coa_id            => l_adr_accounting_coa_id
74850   , p_adr_code                     => 'CST_DEFAULT'
74851   , p_adr_type_code                => 'S'
74852   , p_component_type               => l_component_type
74853   , p_component_code               => l_component_code
74854   , p_component_type_code          => l_component_type_code
74855   , p_component_appl_id            => l_component_appl_id
74856   , p_amb_context_code             => l_amb_context_code
74857   , p_side                         => 'NA'
74858   );
74859 
74860 
74861    --
74862    --
74863    END IF;
74864    --
74865    -- Bug 4922099
74866    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
74867           (NVL(l_enc_upg_option, 'N') = 'O')
74868         ) AND
74869         (l_bflow_method_code = 'PRIOR_ENTRY')
74870       )
74871    THEN
74872       IF
74873       --
74874       1 = 2
74875       --
74876       THEN
74877       xla_accounting_err_pkg.build_message
74878                                     (p_appli_s_name            => 'XLA'
74879                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74880                                     ,p_token_1                 => 'LINE_NUMBER'
74881                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
74882                                     ,p_token_2                 => 'LINE_TYPE_NAME'
74883                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
74884                                                                              l_component_type
74885                                                                             ,l_component_code
74886                                                                             ,l_component_type_code
74887                                                                             ,l_component_appl_id
74888                                                                             ,l_amb_context_code
74889                                                                             ,l_entity_code
74890                                                                             ,l_event_class_code
74891                                                                            )
74892                                     ,p_token_3                 => 'OWNER'
74893                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
74894                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
74895                                                                           ,p_lookup_code    => l_component_type_code
74896                                                                          )
74897                                     ,p_token_4                 => 'PRODUCT_NAME'
74898                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
74899                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
74900                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
74901                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
74902                                     ,p_ae_header_id            =>  NULL
74903                                        );
74904 
74905         IF (C_LEVEL_ERROR>= g_log_level) THEN
74906                  trace
74907                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74908                       ,p_level    => C_LEVEL_ERROR
74909                       ,p_module   => l_log_module);
74910         END IF;
74911       END IF;
74912    END IF;
74913    --
74914    --
74915    ------------------------------------------------------------------------------------------------
74916    -- 4219869 Business Flow
74917    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
74918    -- Prior Entry.  Currently, the following code is always generated.
74919    ------------------------------------------------------------------------------------------------
74920    XLA_AE_LINES_PKG.ValidateCurrentLine;
74921 
74922    ------------------------------------------------------------------------------------
74923    -- 4219869 Business Flow
74924    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
74925    ------------------------------------------------------------------------------------
74926    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74927 
74928    ----------------------------------------------------------------------------------
74929    -- 4219869 Business Flow
74930    -- Update journal entry status -- Need to generate this within IF <condition>
74931    ----------------------------------------------------------------------------------
74932    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74933          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
74934          ,p_balance_type_code => l_balance_type_code
74935          );
74936 
74937    -------------------------------------------------------------------------------------------
74938    -- 4262811 - Generate the Accrual Reversal lines
74939    -------------------------------------------------------------------------------------------
74940    BEGIN
74941       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
74942                               (g_array_event(p_event_id).array_value_num('header_index'));
74943       IF l_acc_rev_flag IS NULL THEN
74944          l_acc_rev_flag := 'N';
74945       END IF;
74946    EXCEPTION
74947       WHEN OTHERS THEN
74948          l_acc_rev_flag := 'N';
74949    END;
74950    --
74951    IF (l_acc_rev_flag = 'Y') THEN
74952 
74953        -- 4645092  ------------------------------------------------------------------------------
74954        -- To allow MPA report to determine if it should generate report process
74955        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
74956        ------------------------------------------------------------------------------------------
74957 
74958        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
74959        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
74960    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
74961    -- call ADRs
74962    -- Bug 4922099
74963    --
74964    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74965         (NVL(l_actual_upg_option, 'N') = 'O') OR
74966         (NVL(l_enc_upg_option, 'N') = 'O')
74967       )
74968    THEN
74969    NULL;
74970    --
74971    --
74972    
74973   l_ccid := AcctDerRule_4(
74974            p_application_id           => p_application_id
74975          , p_ae_header_id             => l_ae_header_id 
74976 , p_source_4 => p_source_4
74977          , x_transaction_coa_id       => l_adr_transaction_coa_id
74978          , x_accounting_coa_id        => l_adr_accounting_coa_id
74979          , x_value_type_code          => l_adr_value_type_code
74980          , p_side                     => 'NA'
74981    );
74982 
74983    xla_ae_lines_pkg.set_ccid(
74984     p_code_combination_id          => l_ccid
74985   , p_value_type_code              => l_adr_value_type_code
74986   , p_transaction_coa_id           => l_adr_transaction_coa_id
74987   , p_accounting_coa_id            => l_adr_accounting_coa_id
74988   , p_adr_code                     => 'CST_DEFAULT'
74989   , p_adr_type_code                => 'S'
74990   , p_component_type               => l_component_type
74991   , p_component_code               => l_component_code
74992   , p_component_type_code          => l_component_type_code
74993   , p_component_appl_id            => l_component_appl_id
74994   , p_amb_context_code             => l_amb_context_code
74995   , p_side                         => 'NA'
74996   );
74997 
74998 
74999    --
75000    --
75001    END IF;
75002 
75003        --
75004        -- Update the line information that should be overwritten
75005        --
75006        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
75007                                          p_header_num   => 1);
75008        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
75009 
75010        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
75011 
75012        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
75013           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
75014        END IF;
75015 
75016       --
75017       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
75018       --
75019       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
75020           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
75021       ELSE
75022           ---------------------------------------------------------------------------------------------------
75023           -- 4262811a Switch Sign
75024           ---------------------------------------------------------------------------------------------------
75025           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
75026           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75027                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75028           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75029                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75030           -- 5132302
75031           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
75032                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75033 
75034       END IF;
75035 
75036       -- 4955764
75037       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75038       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
75039 
75040 
75041       XLA_AE_LINES_PKG.ValidateCurrentLine;
75042       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75043 
75044       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75045                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
75046                ,p_balance_type_code => l_balance_type_code);
75047 
75048    END IF;
75049 
75050    -----------------------------------------------------------------------------------------
75051    -- 4262811 Multiperiod Accounting
75052    -----------------------------------------------------------------------------------------
75053      -- No MPA option is assigned.
75054 
75055 
75056 END IF;
75057 END IF;
75058 --
75059 
75060 --
75061 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75062    trace
75063       (p_msg      => 'END of AcctLineType_137'
75064       ,p_level    => C_LEVEL_PROCEDURE
75065       ,p_module   => l_log_module);
75066 END IF;
75067 --
75068 EXCEPTION
75069   WHEN xla_exceptions_pkg.application_exception THEN
75070       RAISE;
75071   WHEN OTHERS THEN
75072        xla_exceptions_pkg.raise_message
75073            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_137');
75074 END AcctLineType_137;
75075 --
75076 
75077 ---------------------------------------
75078 --
75079 -- PRIVATE FUNCTION
75080 --         AcctLineType_138
75081 --
75082 ---------------------------------------
75083 PROCEDURE AcctLineType_138 (
75084   p_application_id        IN NUMBER
75085  ,p_event_id              IN NUMBER
75086  ,p_calculate_acctd_flag  IN VARCHAR2
75087  ,p_calculate_g_l_flag    IN VARCHAR2
75088  ,p_actual_flag           IN OUT VARCHAR2
75089  ,p_balance_type_code     OUT VARCHAR2
75090  ,p_gain_or_loss_ref      OUT VARCHAR2
75091  
75092 --Cost Management Default Account
75093  , p_source_4            IN NUMBER
75094 --DISTRIBUTION_IDENTIFIER
75095  , p_source_11            IN NUMBER
75096 --Distribution Type
75097  , p_source_12            IN VARCHAR2
75098  , p_source_12_meaning    IN VARCHAR2
75099 --Entered Currency Code
75100  , p_source_15            IN VARCHAR2
75101 --Entered Amount
75102  , p_source_18            IN NUMBER
75103 --Currency Conversion Date
75104  , p_source_19            IN DATE
75105 --Currency Conversion Rate
75106  , p_source_20            IN NUMBER
75107 --Currency Conversion Type
75108  , p_source_21            IN VARCHAR2
75109 --Accounted Amount
75110  , p_source_22            IN NUMBER
75111 --Accounting Line Type
75112  , p_source_24            IN NUMBER
75113 )
75114 IS
75115 
75116 l_component_type              VARCHAR2(80);
75117 l_component_code              VARCHAR2(30);
75118 l_component_type_code         VARCHAR2(1);
75119 l_component_appl_id           INTEGER;
75120 l_amb_context_code            VARCHAR2(30);
75121 l_entity_code                 VARCHAR2(30);
75122 l_event_class_code            VARCHAR2(30);
75123 l_ae_header_id                NUMBER;
75124 l_event_type_code             VARCHAR2(30);
75125 l_line_definition_code        VARCHAR2(30);
75126 l_line_definition_owner_code  VARCHAR2(1);
75127 --
75128 -- adr variables
75129 l_segment                     VARCHAR2(30);
75130 l_ccid                        NUMBER;
75131 l_adr_transaction_coa_id      NUMBER;
75132 l_adr_accounting_coa_id       NUMBER;
75133 l_adr_flexfield_segment_code  VARCHAR2(30);
75134 l_adr_flex_value_set_id       NUMBER;
75135 l_adr_value_type_code         VARCHAR2(30);
75136 l_adr_value_combination_id    NUMBER;
75137 l_adr_value_segment_code      VARCHAR2(30);
75138 
75139 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
75140 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
75141 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
75142 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
75143 
75144 -- 4262811 Variables ------------------------------------------------------------------------------------------
75145 l_entered_amt_idx             NUMBER;
75146 l_accted_amt_idx              NUMBER;
75147 l_acc_rev_flag                VARCHAR2(1);
75148 l_accrual_line_num            NUMBER;
75149 l_tmp_amt                     NUMBER;
75150 l_acc_rev_natural_side_code   VARCHAR2(1);
75151 
75152 l_num_entries                 NUMBER;
75153 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
75154 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
75155 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
75156 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
75157 l_recog_line_1                NUMBER;
75158 l_recog_line_2                NUMBER;
75159 
75160 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
75161 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
75162 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
75163 
75164 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
75165 
75166 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
75167 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
75168 
75169 ---------------------------------------------------------------------------------------------------------------
75170 
75171 
75172 --
75173 -- bulk performance
75174 --
75175 l_balance_type_code           VARCHAR2(1);
75176 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
75177 l_log_module                  VARCHAR2(240);
75178 
75179 --
75180 -- Upgrade strategy
75181 --
75182 l_actual_upg_option           VARCHAR2(1);
75183 l_enc_upg_option           VARCHAR2(1);
75184 
75185 --
75186 BEGIN
75187 --
75188 IF g_log_enabled THEN
75189       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_138';
75190 END IF;
75191 --
75192 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75193 
75194       trace
75195          (p_msg      => 'BEGIN of AcctLineType_138'
75196          ,p_level    => C_LEVEL_PROCEDURE
75197          ,p_module   => l_log_module);
75198 
75199 END IF;
75200 --
75201 l_component_type             := 'AMB_JLT';
75202 l_component_code             := 'INVENTORY_VALUATION';
75203 l_component_type_code        := 'S';
75204 l_component_appl_id          :=  707;
75205 l_amb_context_code           := 'DEFAULT';
75206 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
75207 l_event_class_code           := 'USER_DEFINE';
75208 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
75209 l_line_definition_owner_code := 'S';
75210 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
75211 --
75212 l_balance_type_code          := 'A';
75213 l_segment                     := NULL;
75214 l_ccid                        := NULL;
75215 l_adr_transaction_coa_id      := NULL;
75216 l_adr_accounting_coa_id       := NULL;
75217 l_adr_flexfield_segment_code  := NULL;
75218 l_adr_flex_value_set_id       := NULL;
75219 l_adr_value_type_code         := NULL;
75220 l_adr_value_combination_id    := NULL;
75221 l_adr_value_segment_code      := NULL;
75222 
75223 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
75224 l_bflow_class_code           := '';    -- 4219869 Business Flow
75225 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
75226 l_budgetary_control_flag     := 'N';
75227 
75228 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
75229 l_bflow_applied_to_amt       := NULL; -- 5132302
75230 l_entered_amt_idx            := NULL;          -- 4262811
75231 l_accted_amt_idx             := NULL;          -- 4262811
75232 l_acc_rev_flag               := NULL;          -- 4262811
75233 l_accrual_line_num           := NULL;          -- 4262811
75234 l_tmp_amt                    := NULL;          -- 4262811
75235 --
75236  
75237 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
75238     l_balance_type_code <> 'B' THEN
75239 IF NVL(p_source_24,9E125) =  1
75240  THEN 
75241 
75242    --
75243    XLA_AE_LINES_PKG.SetNewLine;
75244 
75245    p_balance_type_code          := l_balance_type_code;
75246    -- set the flag so later we will know whether the gain loss line needs to be created
75247    
75248    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
75249      p_actual_flag :='A';
75250    END IF;
75251 
75252    --
75253    -- bulk performance
75254    --
75255    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
75256                                       p_header_num   => 0); -- 4262811
75257    --
75258    -- set accounting line options
75259    --
75260    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
75261            p_natural_side_code          => 'D'
75262          , p_gain_or_loss_flag          => 'N'
75263          , p_gl_transfer_mode_code      => 'S'
75264          , p_acct_entry_type_code       => 'A'
75265          , p_switch_side_flag           => 'Y'
75266          , p_merge_duplicate_code       => 'N'
75267          );
75268    --
75269    l_acc_rev_natural_side_code := 'C';  -- 4262811
75270    -- 
75271    --
75272    -- set accounting line type info
75273    --
75274    xla_ae_lines_pkg.SetAcctLineType
75275       (p_component_type             => l_component_type
75276       ,p_event_type_code            => l_event_type_code
75277       ,p_line_definition_owner_code => l_line_definition_owner_code
75278       ,p_line_definition_code       => l_line_definition_code
75279       ,p_accounting_line_code       => l_component_code
75280       ,p_accounting_line_type_code  => l_component_type_code
75281       ,p_accounting_line_appl_id    => l_component_appl_id
75282       ,p_amb_context_code           => l_amb_context_code
75283       ,p_entity_code                => l_entity_code
75284       ,p_event_class_code           => l_event_class_code);
75285    --
75286    -- set accounting class
75287    --
75288    xla_ae_lines_pkg.SetAcctClass(
75289            p_accounting_class_code  => 'INVENTORY_VALUATION'
75290          , p_ae_header_id           => l_ae_header_id
75291          );
75292 
75293    --
75294    -- set rounding class
75295    --
75296    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
75297                       'INVENTORY_VALUATION';
75298 
75299    --
75300    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
75301    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
75302    --
75303    -- bulk performance
75304    --
75305    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
75306 
75307    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
75308       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
75309 
75310    -- 4955764
75311    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75312       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
75313 
75314    -- 4458381 Public Sector Enh
75315    
75316    --
75317    -- set accounting attributes for the line type
75318    --
75319    l_entered_amt_idx := 3;
75320    l_accted_amt_idx  := 8;
75321    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
75322    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
75323    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
75324    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
75325    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
75326    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
75327    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
75328    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
75329    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
75330    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
75331    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
75332    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
75333    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
75334    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
75335    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
75336    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
75337    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
75338 
75339    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
75340    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
75341 
75342    ---------------------------------------------------------------------------------------------------------------
75343    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
75344    ---------------------------------------------------------------------------------------------------------------
75345    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
75346 
75347    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75348    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75349 
75350    IF xla_accounting_cache_pkg.GetValueChar
75351          (p_source_code         => 'LEDGER_CATEGORY_CODE'
75352          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
75353    AND l_bflow_method_code = 'PRIOR_ENTRY'
75354 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
75355    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
75356          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
75357        )
75358    THEN
75359          xla_ae_lines_pkg.BflowUpgEntry
75360            (p_business_method_code    => l_bflow_method_code
75361            ,p_business_class_code     => l_bflow_class_code
75362            ,p_balance_type            => l_balance_type_code);
75363    ELSE
75364       NULL;
75365 -- No business flow processing for business flow method of NONE.
75366    END IF;
75367 
75368    --
75369    -- call analytical criteria
75370    --
75371    
75372    --
75373    -- call description
75374    --
75375    -- No description or it is inherited.
75376    --
75377    -- call ADRs
75378    -- Bug 4922099
75379    --
75380    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75381         (NVL(l_actual_upg_option, 'N') = 'O') OR
75382         (NVL(l_enc_upg_option, 'N') = 'O')
75383       )
75384    THEN
75385    NULL;
75386    --
75387    --
75388    
75389   l_ccid := AcctDerRule_4(
75390            p_application_id           => p_application_id
75391          , p_ae_header_id             => l_ae_header_id 
75392 , p_source_4 => p_source_4
75393          , x_transaction_coa_id       => l_adr_transaction_coa_id
75394          , x_accounting_coa_id        => l_adr_accounting_coa_id
75395          , x_value_type_code          => l_adr_value_type_code
75396          , p_side                     => 'NA'
75397    );
75398 
75399    xla_ae_lines_pkg.set_ccid(
75400     p_code_combination_id          => l_ccid
75401   , p_value_type_code              => l_adr_value_type_code
75402   , p_transaction_coa_id           => l_adr_transaction_coa_id
75403   , p_accounting_coa_id            => l_adr_accounting_coa_id
75404   , p_adr_code                     => 'CST_DEFAULT'
75405   , p_adr_type_code                => 'S'
75406   , p_component_type               => l_component_type
75407   , p_component_code               => l_component_code
75408   , p_component_type_code          => l_component_type_code
75409   , p_component_appl_id            => l_component_appl_id
75410   , p_amb_context_code             => l_amb_context_code
75411   , p_side                         => 'NA'
75412   );
75413 
75414 
75415    --
75416    --
75417    END IF;
75418    --
75419    -- Bug 4922099
75420    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
75421           (NVL(l_enc_upg_option, 'N') = 'O')
75422         ) AND
75423         (l_bflow_method_code = 'PRIOR_ENTRY')
75424       )
75425    THEN
75426       IF
75427       --
75428       1 = 2
75429       --
75430       THEN
75431       xla_accounting_err_pkg.build_message
75432                                     (p_appli_s_name            => 'XLA'
75433                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75434                                     ,p_token_1                 => 'LINE_NUMBER'
75435                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
75436                                     ,p_token_2                 => 'LINE_TYPE_NAME'
75437                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
75438                                                                              l_component_type
75439                                                                             ,l_component_code
75440                                                                             ,l_component_type_code
75441                                                                             ,l_component_appl_id
75442                                                                             ,l_amb_context_code
75443                                                                             ,l_entity_code
75444                                                                             ,l_event_class_code
75445                                                                            )
75446                                     ,p_token_3                 => 'OWNER'
75447                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
75448                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
75449                                                                           ,p_lookup_code    => l_component_type_code
75450                                                                          )
75451                                     ,p_token_4                 => 'PRODUCT_NAME'
75452                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
75453                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
75454                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
75455                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
75456                                     ,p_ae_header_id            =>  NULL
75457                                        );
75458 
75459         IF (C_LEVEL_ERROR>= g_log_level) THEN
75460                  trace
75461                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75462                       ,p_level    => C_LEVEL_ERROR
75463                       ,p_module   => l_log_module);
75464         END IF;
75465       END IF;
75466    END IF;
75467    --
75468    --
75469    ------------------------------------------------------------------------------------------------
75470    -- 4219869 Business Flow
75471    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
75472    -- Prior Entry.  Currently, the following code is always generated.
75473    ------------------------------------------------------------------------------------------------
75474    XLA_AE_LINES_PKG.ValidateCurrentLine;
75475 
75476    ------------------------------------------------------------------------------------
75477    -- 4219869 Business Flow
75478    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
75479    ------------------------------------------------------------------------------------
75480    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75481 
75482    ----------------------------------------------------------------------------------
75483    -- 4219869 Business Flow
75484    -- Update journal entry status -- Need to generate this within IF <condition>
75485    ----------------------------------------------------------------------------------
75486    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75487          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
75488          ,p_balance_type_code => l_balance_type_code
75489          );
75490 
75491    -------------------------------------------------------------------------------------------
75492    -- 4262811 - Generate the Accrual Reversal lines
75493    -------------------------------------------------------------------------------------------
75494    BEGIN
75495       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
75496                               (g_array_event(p_event_id).array_value_num('header_index'));
75497       IF l_acc_rev_flag IS NULL THEN
75498          l_acc_rev_flag := 'N';
75499       END IF;
75500    EXCEPTION
75501       WHEN OTHERS THEN
75502          l_acc_rev_flag := 'N';
75503    END;
75504    --
75505    IF (l_acc_rev_flag = 'Y') THEN
75506 
75507        -- 4645092  ------------------------------------------------------------------------------
75508        -- To allow MPA report to determine if it should generate report process
75509        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
75510        ------------------------------------------------------------------------------------------
75511 
75512        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
75513        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
75514    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
75515    -- call ADRs
75516    -- Bug 4922099
75517    --
75518    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75519         (NVL(l_actual_upg_option, 'N') = 'O') OR
75520         (NVL(l_enc_upg_option, 'N') = 'O')
75521       )
75522    THEN
75523    NULL;
75524    --
75525    --
75526    
75527   l_ccid := AcctDerRule_4(
75528            p_application_id           => p_application_id
75529          , p_ae_header_id             => l_ae_header_id 
75530 , p_source_4 => p_source_4
75531          , x_transaction_coa_id       => l_adr_transaction_coa_id
75532          , x_accounting_coa_id        => l_adr_accounting_coa_id
75533          , x_value_type_code          => l_adr_value_type_code
75534          , p_side                     => 'NA'
75535    );
75536 
75537    xla_ae_lines_pkg.set_ccid(
75538     p_code_combination_id          => l_ccid
75539   , p_value_type_code              => l_adr_value_type_code
75540   , p_transaction_coa_id           => l_adr_transaction_coa_id
75541   , p_accounting_coa_id            => l_adr_accounting_coa_id
75542   , p_adr_code                     => 'CST_DEFAULT'
75543   , p_adr_type_code                => 'S'
75544   , p_component_type               => l_component_type
75545   , p_component_code               => l_component_code
75546   , p_component_type_code          => l_component_type_code
75547   , p_component_appl_id            => l_component_appl_id
75548   , p_amb_context_code             => l_amb_context_code
75549   , p_side                         => 'NA'
75550   );
75551 
75552 
75553    --
75554    --
75555    END IF;
75556 
75557        --
75558        -- Update the line information that should be overwritten
75559        --
75560        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
75561                                          p_header_num   => 1);
75562        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
75563 
75564        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
75565 
75566        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
75567           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
75568        END IF;
75569 
75570       --
75571       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
75572       --
75573       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
75574           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
75575       ELSE
75576           ---------------------------------------------------------------------------------------------------
75577           -- 4262811a Switch Sign
75578           ---------------------------------------------------------------------------------------------------
75579           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
75580           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75581                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75582           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75583                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75584           -- 5132302
75585           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
75586                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75587 
75588       END IF;
75589 
75590       -- 4955764
75591       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75592       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
75593 
75594 
75595       XLA_AE_LINES_PKG.ValidateCurrentLine;
75596       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75597 
75598       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75599                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
75600                ,p_balance_type_code => l_balance_type_code);
75601 
75602    END IF;
75603 
75604    -----------------------------------------------------------------------------------------
75605    -- 4262811 Multiperiod Accounting
75606    -----------------------------------------------------------------------------------------
75607      -- No MPA option is assigned.
75608 
75609 
75610 END IF;
75611 END IF;
75612 --
75613 
75614 --
75615 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75616    trace
75617       (p_msg      => 'END of AcctLineType_138'
75618       ,p_level    => C_LEVEL_PROCEDURE
75619       ,p_module   => l_log_module);
75620 END IF;
75621 --
75622 EXCEPTION
75623   WHEN xla_exceptions_pkg.application_exception THEN
75624       RAISE;
75625   WHEN OTHERS THEN
75626        xla_exceptions_pkg.raise_message
75627            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_138');
75628 END AcctLineType_138;
75629 --
75630 
75631 ---------------------------------------
75632 --
75633 -- PRIVATE FUNCTION
75634 --         AcctLineType_139
75635 --
75636 ---------------------------------------
75637 PROCEDURE AcctLineType_139 (
75638   p_application_id        IN NUMBER
75639  ,p_event_id              IN NUMBER
75640  ,p_calculate_acctd_flag  IN VARCHAR2
75641  ,p_calculate_g_l_flag    IN VARCHAR2
75642  ,p_actual_flag           IN OUT VARCHAR2
75643  ,p_balance_type_code     OUT VARCHAR2
75644  ,p_gain_or_loss_ref      OUT VARCHAR2
75645  
75646 --Cost Management Default Account
75647  , p_source_4            IN NUMBER
75648 --DISTRIBUTION_IDENTIFIER
75649  , p_source_11            IN NUMBER
75650 --Distribution Type
75651  , p_source_12            IN VARCHAR2
75652  , p_source_12_meaning    IN VARCHAR2
75653 --Entered Currency Code
75654  , p_source_15            IN VARCHAR2
75655 --Entered Amount
75656  , p_source_18            IN NUMBER
75657 --Currency Conversion Date
75658  , p_source_19            IN DATE
75659 --Currency Conversion Rate
75660  , p_source_20            IN NUMBER
75661 --Currency Conversion Type
75662  , p_source_21            IN VARCHAR2
75663 --Accounted Amount
75664  , p_source_22            IN NUMBER
75665 --Accounting Line Type
75666  , p_source_24            IN NUMBER
75667 )
75668 IS
75669 
75670 l_component_type              VARCHAR2(80);
75671 l_component_code              VARCHAR2(30);
75672 l_component_type_code         VARCHAR2(1);
75673 l_component_appl_id           INTEGER;
75674 l_amb_context_code            VARCHAR2(30);
75675 l_entity_code                 VARCHAR2(30);
75676 l_event_class_code            VARCHAR2(30);
75677 l_ae_header_id                NUMBER;
75678 l_event_type_code             VARCHAR2(30);
75679 l_line_definition_code        VARCHAR2(30);
75680 l_line_definition_owner_code  VARCHAR2(1);
75681 --
75682 -- adr variables
75683 l_segment                     VARCHAR2(30);
75684 l_ccid                        NUMBER;
75685 l_adr_transaction_coa_id      NUMBER;
75686 l_adr_accounting_coa_id       NUMBER;
75687 l_adr_flexfield_segment_code  VARCHAR2(30);
75688 l_adr_flex_value_set_id       NUMBER;
75689 l_adr_value_type_code         VARCHAR2(30);
75690 l_adr_value_combination_id    NUMBER;
75691 l_adr_value_segment_code      VARCHAR2(30);
75692 
75693 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
75694 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
75695 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
75696 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
75697 
75698 -- 4262811 Variables ------------------------------------------------------------------------------------------
75699 l_entered_amt_idx             NUMBER;
75700 l_accted_amt_idx              NUMBER;
75701 l_acc_rev_flag                VARCHAR2(1);
75702 l_accrual_line_num            NUMBER;
75703 l_tmp_amt                     NUMBER;
75704 l_acc_rev_natural_side_code   VARCHAR2(1);
75705 
75706 l_num_entries                 NUMBER;
75707 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
75708 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
75709 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
75710 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
75711 l_recog_line_1                NUMBER;
75712 l_recog_line_2                NUMBER;
75713 
75714 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
75715 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
75716 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
75717 
75718 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
75719 
75720 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
75721 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
75722 
75723 ---------------------------------------------------------------------------------------------------------------
75724 
75725 
75726 --
75727 -- bulk performance
75728 --
75729 l_balance_type_code           VARCHAR2(1);
75730 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
75731 l_log_module                  VARCHAR2(240);
75732 
75733 --
75734 -- Upgrade strategy
75735 --
75736 l_actual_upg_option           VARCHAR2(1);
75737 l_enc_upg_option           VARCHAR2(1);
75738 
75739 --
75740 BEGIN
75741 --
75742 IF g_log_enabled THEN
75743       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_139';
75744 END IF;
75745 --
75746 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75747 
75748       trace
75749          (p_msg      => 'BEGIN of AcctLineType_139'
75750          ,p_level    => C_LEVEL_PROCEDURE
75751          ,p_module   => l_log_module);
75752 
75753 END IF;
75754 --
75755 l_component_type             := 'AMB_JLT';
75756 l_component_code             := 'INVENTORY_VALUATION';
75757 l_component_type_code        := 'S';
75758 l_component_appl_id          :=  707;
75759 l_amb_context_code           := 'DEFAULT';
75760 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
75761 l_event_class_code           := 'WIP_MTL';
75762 l_event_type_code            := 'WIP_MTL_ALL';
75763 l_line_definition_owner_code := 'S';
75764 l_line_definition_code       := 'WIP_MTL';
75765 --
75766 l_balance_type_code          := 'A';
75767 l_segment                     := NULL;
75768 l_ccid                        := NULL;
75769 l_adr_transaction_coa_id      := NULL;
75770 l_adr_accounting_coa_id       := NULL;
75771 l_adr_flexfield_segment_code  := NULL;
75772 l_adr_flex_value_set_id       := NULL;
75773 l_adr_value_type_code         := NULL;
75774 l_adr_value_combination_id    := NULL;
75775 l_adr_value_segment_code      := NULL;
75776 
75777 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
75778 l_bflow_class_code           := '';    -- 4219869 Business Flow
75779 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
75780 l_budgetary_control_flag     := 'N';
75781 
75782 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
75783 l_bflow_applied_to_amt       := NULL; -- 5132302
75784 l_entered_amt_idx            := NULL;          -- 4262811
75785 l_accted_amt_idx             := NULL;          -- 4262811
75786 l_acc_rev_flag               := NULL;          -- 4262811
75787 l_accrual_line_num           := NULL;          -- 4262811
75788 l_tmp_amt                    := NULL;          -- 4262811
75789 --
75790  
75791 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
75792     l_balance_type_code <> 'B' THEN
75793 IF NVL(p_source_24,9E125) =  1
75794  THEN 
75795 
75796    --
75797    XLA_AE_LINES_PKG.SetNewLine;
75798 
75799    p_balance_type_code          := l_balance_type_code;
75800    -- set the flag so later we will know whether the gain loss line needs to be created
75801    
75802    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
75803      p_actual_flag :='A';
75804    END IF;
75805 
75806    --
75807    -- bulk performance
75808    --
75809    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
75810                                       p_header_num   => 0); -- 4262811
75811    --
75812    -- set accounting line options
75813    --
75814    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
75815            p_natural_side_code          => 'D'
75816          , p_gain_or_loss_flag          => 'N'
75817          , p_gl_transfer_mode_code      => 'S'
75818          , p_acct_entry_type_code       => 'A'
75819          , p_switch_side_flag           => 'Y'
75820          , p_merge_duplicate_code       => 'N'
75821          );
75822    --
75823    l_acc_rev_natural_side_code := 'C';  -- 4262811
75824    -- 
75825    --
75826    -- set accounting line type info
75827    --
75828    xla_ae_lines_pkg.SetAcctLineType
75829       (p_component_type             => l_component_type
75830       ,p_event_type_code            => l_event_type_code
75831       ,p_line_definition_owner_code => l_line_definition_owner_code
75832       ,p_line_definition_code       => l_line_definition_code
75833       ,p_accounting_line_code       => l_component_code
75834       ,p_accounting_line_type_code  => l_component_type_code
75835       ,p_accounting_line_appl_id    => l_component_appl_id
75836       ,p_amb_context_code           => l_amb_context_code
75837       ,p_entity_code                => l_entity_code
75838       ,p_event_class_code           => l_event_class_code);
75839    --
75840    -- set accounting class
75841    --
75842    xla_ae_lines_pkg.SetAcctClass(
75843            p_accounting_class_code  => 'INVENTORY_VALUATION'
75844          , p_ae_header_id           => l_ae_header_id
75845          );
75846 
75847    --
75848    -- set rounding class
75849    --
75850    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
75851                       'INVENTORY_VALUATION';
75852 
75853    --
75854    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
75855    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
75856    --
75857    -- bulk performance
75858    --
75859    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
75860 
75861    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
75862       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
75863 
75864    -- 4955764
75865    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75866       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
75867 
75868    -- 4458381 Public Sector Enh
75869    
75870    --
75871    -- set accounting attributes for the line type
75872    --
75873    l_entered_amt_idx := 3;
75874    l_accted_amt_idx  := 8;
75875    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
75876    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
75877    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
75878    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
75879    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
75880    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
75881    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
75882    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
75883    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
75884    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
75885    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
75886    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
75887    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
75888    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
75889    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
75890    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
75891    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
75892 
75893    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
75894    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
75895 
75896    ---------------------------------------------------------------------------------------------------------------
75897    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
75898    ---------------------------------------------------------------------------------------------------------------
75899    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
75900 
75901    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75902    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75903 
75904    IF xla_accounting_cache_pkg.GetValueChar
75905          (p_source_code         => 'LEDGER_CATEGORY_CODE'
75906          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
75907    AND l_bflow_method_code = 'PRIOR_ENTRY'
75908 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
75909    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
75910          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
75911        )
75912    THEN
75913          xla_ae_lines_pkg.BflowUpgEntry
75914            (p_business_method_code    => l_bflow_method_code
75915            ,p_business_class_code     => l_bflow_class_code
75916            ,p_balance_type            => l_balance_type_code);
75917    ELSE
75918       NULL;
75919 -- No business flow processing for business flow method of NONE.
75920    END IF;
75921 
75922    --
75923    -- call analytical criteria
75924    --
75925    
75926    --
75927    -- call description
75928    --
75929    -- No description or it is inherited.
75930    --
75931    -- call ADRs
75932    -- Bug 4922099
75933    --
75934    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75935         (NVL(l_actual_upg_option, 'N') = 'O') OR
75936         (NVL(l_enc_upg_option, 'N') = 'O')
75937       )
75938    THEN
75939    NULL;
75940    --
75941    --
75942    
75943   l_ccid := AcctDerRule_4(
75944            p_application_id           => p_application_id
75945          , p_ae_header_id             => l_ae_header_id 
75946 , p_source_4 => p_source_4
75947          , x_transaction_coa_id       => l_adr_transaction_coa_id
75948          , x_accounting_coa_id        => l_adr_accounting_coa_id
75949          , x_value_type_code          => l_adr_value_type_code
75950          , p_side                     => 'NA'
75951    );
75952 
75953    xla_ae_lines_pkg.set_ccid(
75954     p_code_combination_id          => l_ccid
75955   , p_value_type_code              => l_adr_value_type_code
75956   , p_transaction_coa_id           => l_adr_transaction_coa_id
75957   , p_accounting_coa_id            => l_adr_accounting_coa_id
75958   , p_adr_code                     => 'CST_DEFAULT'
75959   , p_adr_type_code                => 'S'
75960   , p_component_type               => l_component_type
75961   , p_component_code               => l_component_code
75962   , p_component_type_code          => l_component_type_code
75963   , p_component_appl_id            => l_component_appl_id
75964   , p_amb_context_code             => l_amb_context_code
75965   , p_side                         => 'NA'
75966   );
75967 
75968 
75969    --
75970    --
75971    END IF;
75972    --
75973    -- Bug 4922099
75974    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
75975           (NVL(l_enc_upg_option, 'N') = 'O')
75976         ) AND
75977         (l_bflow_method_code = 'PRIOR_ENTRY')
75978       )
75979    THEN
75980       IF
75981       --
75982       1 = 2
75983       --
75984       THEN
75985       xla_accounting_err_pkg.build_message
75986                                     (p_appli_s_name            => 'XLA'
75987                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75988                                     ,p_token_1                 => 'LINE_NUMBER'
75989                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
75990                                     ,p_token_2                 => 'LINE_TYPE_NAME'
75991                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
75992                                                                              l_component_type
75993                                                                             ,l_component_code
75994                                                                             ,l_component_type_code
75995                                                                             ,l_component_appl_id
75996                                                                             ,l_amb_context_code
75997                                                                             ,l_entity_code
75998                                                                             ,l_event_class_code
75999                                                                            )
76000                                     ,p_token_3                 => 'OWNER'
76001                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
76002                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
76003                                                                           ,p_lookup_code    => l_component_type_code
76004                                                                          )
76005                                     ,p_token_4                 => 'PRODUCT_NAME'
76006                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
76007                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
76008                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
76009                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
76010                                     ,p_ae_header_id            =>  NULL
76011                                        );
76012 
76013         IF (C_LEVEL_ERROR>= g_log_level) THEN
76014                  trace
76015                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76016                       ,p_level    => C_LEVEL_ERROR
76017                       ,p_module   => l_log_module);
76018         END IF;
76019       END IF;
76020    END IF;
76021    --
76022    --
76023    ------------------------------------------------------------------------------------------------
76024    -- 4219869 Business Flow
76025    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
76026    -- Prior Entry.  Currently, the following code is always generated.
76027    ------------------------------------------------------------------------------------------------
76028    XLA_AE_LINES_PKG.ValidateCurrentLine;
76029 
76030    ------------------------------------------------------------------------------------
76031    -- 4219869 Business Flow
76032    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
76033    ------------------------------------------------------------------------------------
76034    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76035 
76036    ----------------------------------------------------------------------------------
76037    -- 4219869 Business Flow
76038    -- Update journal entry status -- Need to generate this within IF <condition>
76039    ----------------------------------------------------------------------------------
76040    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76041          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
76042          ,p_balance_type_code => l_balance_type_code
76043          );
76044 
76045    -------------------------------------------------------------------------------------------
76046    -- 4262811 - Generate the Accrual Reversal lines
76047    -------------------------------------------------------------------------------------------
76048    BEGIN
76049       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
76050                               (g_array_event(p_event_id).array_value_num('header_index'));
76051       IF l_acc_rev_flag IS NULL THEN
76052          l_acc_rev_flag := 'N';
76053       END IF;
76054    EXCEPTION
76055       WHEN OTHERS THEN
76056          l_acc_rev_flag := 'N';
76057    END;
76058    --
76059    IF (l_acc_rev_flag = 'Y') THEN
76060 
76061        -- 4645092  ------------------------------------------------------------------------------
76062        -- To allow MPA report to determine if it should generate report process
76063        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
76064        ------------------------------------------------------------------------------------------
76065 
76066        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
76067        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
76068    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
76069    -- call ADRs
76070    -- Bug 4922099
76071    --
76072    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76073         (NVL(l_actual_upg_option, 'N') = 'O') OR
76074         (NVL(l_enc_upg_option, 'N') = 'O')
76075       )
76076    THEN
76077    NULL;
76078    --
76079    --
76080    
76081   l_ccid := AcctDerRule_4(
76082            p_application_id           => p_application_id
76083          , p_ae_header_id             => l_ae_header_id 
76084 , p_source_4 => p_source_4
76085          , x_transaction_coa_id       => l_adr_transaction_coa_id
76086          , x_accounting_coa_id        => l_adr_accounting_coa_id
76087          , x_value_type_code          => l_adr_value_type_code
76088          , p_side                     => 'NA'
76089    );
76090 
76091    xla_ae_lines_pkg.set_ccid(
76092     p_code_combination_id          => l_ccid
76093   , p_value_type_code              => l_adr_value_type_code
76094   , p_transaction_coa_id           => l_adr_transaction_coa_id
76095   , p_accounting_coa_id            => l_adr_accounting_coa_id
76096   , p_adr_code                     => 'CST_DEFAULT'
76097   , p_adr_type_code                => 'S'
76098   , p_component_type               => l_component_type
76099   , p_component_code               => l_component_code
76100   , p_component_type_code          => l_component_type_code
76101   , p_component_appl_id            => l_component_appl_id
76102   , p_amb_context_code             => l_amb_context_code
76103   , p_side                         => 'NA'
76104   );
76105 
76106 
76107    --
76108    --
76109    END IF;
76110 
76111        --
76112        -- Update the line information that should be overwritten
76113        --
76114        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
76115                                          p_header_num   => 1);
76116        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
76117 
76118        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
76119 
76120        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
76121           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
76122        END IF;
76123 
76124       --
76125       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
76126       --
76127       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
76128           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
76129       ELSE
76130           ---------------------------------------------------------------------------------------------------
76131           -- 4262811a Switch Sign
76132           ---------------------------------------------------------------------------------------------------
76133           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
76134           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76135                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76136           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76137                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76138           -- 5132302
76139           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
76140                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76141 
76142       END IF;
76143 
76144       -- 4955764
76145       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76146       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
76147 
76148 
76149       XLA_AE_LINES_PKG.ValidateCurrentLine;
76150       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76151 
76152       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76153                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
76154                ,p_balance_type_code => l_balance_type_code);
76155 
76156    END IF;
76157 
76158    -----------------------------------------------------------------------------------------
76159    -- 4262811 Multiperiod Accounting
76160    -----------------------------------------------------------------------------------------
76161      -- No MPA option is assigned.
76162 
76163 
76164 END IF;
76165 END IF;
76166 --
76167 
76168 --
76169 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76170    trace
76171       (p_msg      => 'END of AcctLineType_139'
76172       ,p_level    => C_LEVEL_PROCEDURE
76173       ,p_module   => l_log_module);
76174 END IF;
76175 --
76176 EXCEPTION
76177   WHEN xla_exceptions_pkg.application_exception THEN
76178       RAISE;
76179   WHEN OTHERS THEN
76180        xla_exceptions_pkg.raise_message
76181            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_139');
76182 END AcctLineType_139;
76183 --
76184 
76185 ---------------------------------------
76186 --
76187 -- PRIVATE FUNCTION
76188 --         AcctLineType_140
76189 --
76190 ---------------------------------------
76191 PROCEDURE AcctLineType_140 (
76192   p_application_id        IN NUMBER
76193  ,p_event_id              IN NUMBER
76194  ,p_calculate_acctd_flag  IN VARCHAR2
76195  ,p_calculate_g_l_flag    IN VARCHAR2
76196  ,p_actual_flag           IN OUT VARCHAR2
76197  ,p_balance_type_code     OUT VARCHAR2
76198  ,p_gain_or_loss_ref      OUT VARCHAR2
76199  
76200 --Cost Management Default Account
76201  , p_source_4            IN NUMBER
76202 --Applied to Application ID
76203  , p_source_6            IN NUMBER
76204 --Applied to Distribution Link Type
76205  , p_source_7            IN VARCHAR2
76206 --Applied to Entity Code
76207  , p_source_8            IN VARCHAR2
76208 --Applied To Purchase Document Identifier
76209  , p_source_10            IN NUMBER
76210 --DISTRIBUTION_IDENTIFIER
76211  , p_source_11            IN NUMBER
76212 --Distribution Type
76213  , p_source_12            IN VARCHAR2
76214  , p_source_12_meaning    IN VARCHAR2
76215 --PO Budget Account
76216  , p_source_13            IN NUMBER
76217 --Encumbrance Reversal Amount Entered
76218  , p_source_14            IN NUMBER
76219 --Entered Currency Code
76220  , p_source_15            IN VARCHAR2
76221 --Transaction Encumbrance Reversal Amount
76222  , p_source_16            IN NUMBER
76223 --Entered Amount
76224  , p_source_18            IN NUMBER
76225 --Currency Conversion Date
76226  , p_source_19            IN DATE
76227 --Currency Conversion Rate
76228  , p_source_20            IN NUMBER
76229 --Currency Conversion Type
76230  , p_source_21            IN VARCHAR2
76231 --Accounted Amount
76232  , p_source_22            IN NUMBER
76233 --Purchasing Encumbrance Type Identifier
76234  , p_source_23            IN NUMBER
76235 --Accounting Line Type
76236  , p_source_24            IN NUMBER
76237 --Costing Encumbrance Upgrade Option
76238  , p_source_27            IN VARCHAR2
76239 --TXN_PO_DISTRIBUTION_ID
76240  , p_source_28            IN NUMBER
76241 )
76242 IS
76243 
76244 l_component_type              VARCHAR2(80);
76245 l_component_code              VARCHAR2(30);
76246 l_component_type_code         VARCHAR2(1);
76247 l_component_appl_id           INTEGER;
76248 l_amb_context_code            VARCHAR2(30);
76249 l_entity_code                 VARCHAR2(30);
76250 l_event_class_code            VARCHAR2(30);
76251 l_ae_header_id                NUMBER;
76252 l_event_type_code             VARCHAR2(30);
76253 l_line_definition_code        VARCHAR2(30);
76254 l_line_definition_owner_code  VARCHAR2(1);
76255 --
76256 -- adr variables
76257 l_segment                     VARCHAR2(30);
76258 l_ccid                        NUMBER;
76259 l_adr_transaction_coa_id      NUMBER;
76260 l_adr_accounting_coa_id       NUMBER;
76261 l_adr_flexfield_segment_code  VARCHAR2(30);
76262 l_adr_flex_value_set_id       NUMBER;
76263 l_adr_value_type_code         VARCHAR2(30);
76264 l_adr_value_combination_id    NUMBER;
76265 l_adr_value_segment_code      VARCHAR2(30);
76266 
76267 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
76268 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
76269 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
76270 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
76271 
76272 -- 4262811 Variables ------------------------------------------------------------------------------------------
76273 l_entered_amt_idx             NUMBER;
76274 l_accted_amt_idx              NUMBER;
76275 l_acc_rev_flag                VARCHAR2(1);
76276 l_accrual_line_num            NUMBER;
76277 l_tmp_amt                     NUMBER;
76278 l_acc_rev_natural_side_code   VARCHAR2(1);
76279 
76280 l_num_entries                 NUMBER;
76281 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
76282 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
76283 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
76284 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
76285 l_recog_line_1                NUMBER;
76286 l_recog_line_2                NUMBER;
76287 
76288 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
76289 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
76290 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
76291 
76292 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
76293 
76294 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
76295 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
76296 
76297 ---------------------------------------------------------------------------------------------------------------
76298 
76299 
76300 --
76301 -- bulk performance
76302 --
76303 l_balance_type_code           VARCHAR2(1);
76304 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
76305 l_log_module                  VARCHAR2(240);
76306 
76307 --
76308 -- Upgrade strategy
76309 --
76310 l_actual_upg_option           VARCHAR2(1);
76311 l_enc_upg_option           VARCHAR2(1);
76312 
76313 --
76314 BEGIN
76315 --
76316 IF g_log_enabled THEN
76317       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_140';
76318 END IF;
76319 --
76320 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76321 
76322       trace
76323          (p_msg      => 'BEGIN of AcctLineType_140'
76324          ,p_level    => C_LEVEL_PROCEDURE
76325          ,p_module   => l_log_module);
76326 
76327 END IF;
76328 --
76329 l_component_type             := 'AMB_JLT';
76330 l_component_code             := 'INVENTORY_VALUATION';
76331 l_component_type_code        := 'S';
76332 l_component_appl_id          :=  707;
76333 l_amb_context_code           := 'DEFAULT';
76334 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
76335 l_event_class_code           := 'PURCHASE_ORDER';
76336 l_event_type_code            := 'PURCHASE_ORDER_ALL';
76337 l_line_definition_owner_code := 'S';
76338 l_line_definition_code       := 'PURCHASE_ORDER';
76339 --
76340 l_balance_type_code          := 'A';
76341 l_segment                     := NULL;
76342 l_ccid                        := NULL;
76343 l_adr_transaction_coa_id      := NULL;
76344 l_adr_accounting_coa_id       := NULL;
76345 l_adr_flexfield_segment_code  := NULL;
76346 l_adr_flex_value_set_id       := NULL;
76347 l_adr_value_type_code         := NULL;
76348 l_adr_value_combination_id    := NULL;
76349 l_adr_value_segment_code      := NULL;
76350 
76351 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
76352 l_bflow_class_code           := '';    -- 4219869 Business Flow
76353 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
76354 l_budgetary_control_flag     := 'N';
76355 
76356 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
76357 l_bflow_applied_to_amt       := NULL; -- 5132302
76358 l_entered_amt_idx            := NULL;          -- 4262811
76359 l_accted_amt_idx             := NULL;          -- 4262811
76360 l_acc_rev_flag               := NULL;          -- 4262811
76361 l_accrual_line_num           := NULL;          -- 4262811
76362 l_tmp_amt                    := NULL;          -- 4262811
76363 --
76364  
76365 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
76366     l_balance_type_code <> 'B' THEN
76367 IF NVL(p_source_24,9E125) =  1
76368  THEN 
76369 
76370    --
76371    XLA_AE_LINES_PKG.SetNewLine;
76372 
76373    p_balance_type_code          := l_balance_type_code;
76374    -- set the flag so later we will know whether the gain loss line needs to be created
76375    
76376    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
76377      p_actual_flag :='A';
76378    END IF;
76379 
76380    --
76381    -- bulk performance
76382    --
76383    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
76384                                       p_header_num   => 0); -- 4262811
76385    --
76386    -- set accounting line options
76387    --
76388    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
76389            p_natural_side_code          => 'D'
76390          , p_gain_or_loss_flag          => 'N'
76391          , p_gl_transfer_mode_code      => 'S'
76392          , p_acct_entry_type_code       => 'A'
76393          , p_switch_side_flag           => 'Y'
76394          , p_merge_duplicate_code       => 'N'
76395          );
76396    --
76397    l_acc_rev_natural_side_code := 'C';  -- 4262811
76398    -- 
76399    --
76400    -- set accounting line type info
76401    --
76402    xla_ae_lines_pkg.SetAcctLineType
76403       (p_component_type             => l_component_type
76404       ,p_event_type_code            => l_event_type_code
76405       ,p_line_definition_owner_code => l_line_definition_owner_code
76406       ,p_line_definition_code       => l_line_definition_code
76407       ,p_accounting_line_code       => l_component_code
76408       ,p_accounting_line_type_code  => l_component_type_code
76409       ,p_accounting_line_appl_id    => l_component_appl_id
76410       ,p_amb_context_code           => l_amb_context_code
76411       ,p_entity_code                => l_entity_code
76412       ,p_event_class_code           => l_event_class_code);
76413    --
76414    -- set accounting class
76415    --
76416    xla_ae_lines_pkg.SetAcctClass(
76417            p_accounting_class_code  => 'INVENTORY_VALUATION'
76418          , p_ae_header_id           => l_ae_header_id
76419          );
76420 
76421    --
76422    -- set rounding class
76423    --
76424    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
76425                       'INVENTORY_VALUATION';
76426 
76427    --
76428    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
76429    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
76430    --
76431    -- bulk performance
76432    --
76433    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
76434 
76435    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
76436       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
76437 
76438    -- 4955764
76439    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76440       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
76441 
76442    -- 4458381 Public Sector Enh
76443    
76444    --
76445    -- set accounting attributes for the line type
76446    --
76447    l_entered_amt_idx := 17;
76448    l_accted_amt_idx  := 22;
76449    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
76450    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
76451    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
76452    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
76453    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
76454    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
76455    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
76456    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
76457    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
76458    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
76459    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
76460    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
76461    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
76462    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
76463    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
76464    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
76465    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
76466    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
76467    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
76468    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
76469    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
76470    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
76471    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
76472    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
76473    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
76474    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
76475    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
76476    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
76477    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
76478    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
76479    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
76480    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
76481    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
76482    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
76483    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
76484    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
76485    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
76486    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
76487    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
76488    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
76489    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
76490    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
76491    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
76492    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
76493    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
76494    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
76495    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
76496    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
76497    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
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_000007_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 --DISTRIBUTION_IDENTIFIER
76809  , p_source_11            IN NUMBER
76810 --Distribution Type
76811  , p_source_12            IN VARCHAR2
76812  , p_source_12_meaning    IN VARCHAR2
76813 --Entered Currency Code
76814  , p_source_15            IN VARCHAR2
76815 --Entered Amount
76816  , p_source_18            IN NUMBER
76817 --Currency Conversion Date
76818  , p_source_19            IN DATE
76819 --Currency Conversion Rate
76820  , p_source_20            IN NUMBER
76821 --Currency Conversion Type
76822  , p_source_21            IN VARCHAR2
76823 --Accounted Amount
76824  , p_source_22            IN NUMBER
76825 --Accounting Line Type
76826  , p_source_24            IN NUMBER
76827 )
76828 IS
76829 
76830 l_component_type              VARCHAR2(80);
76831 l_component_code              VARCHAR2(30);
76832 l_component_type_code         VARCHAR2(1);
76833 l_component_appl_id           INTEGER;
76834 l_amb_context_code            VARCHAR2(30);
76835 l_entity_code                 VARCHAR2(30);
76836 l_event_class_code            VARCHAR2(30);
76837 l_ae_header_id                NUMBER;
76838 l_event_type_code             VARCHAR2(30);
76839 l_line_definition_code        VARCHAR2(30);
76840 l_line_definition_owner_code  VARCHAR2(1);
76841 --
76842 -- adr variables
76843 l_segment                     VARCHAR2(30);
76844 l_ccid                        NUMBER;
76845 l_adr_transaction_coa_id      NUMBER;
76846 l_adr_accounting_coa_id       NUMBER;
76847 l_adr_flexfield_segment_code  VARCHAR2(30);
76848 l_adr_flex_value_set_id       NUMBER;
76849 l_adr_value_type_code         VARCHAR2(30);
76850 l_adr_value_combination_id    NUMBER;
76851 l_adr_value_segment_code      VARCHAR2(30);
76852 
76853 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
76854 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
76855 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
76856 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
76857 
76858 -- 4262811 Variables ------------------------------------------------------------------------------------------
76859 l_entered_amt_idx             NUMBER;
76860 l_accted_amt_idx              NUMBER;
76861 l_acc_rev_flag                VARCHAR2(1);
76862 l_accrual_line_num            NUMBER;
76863 l_tmp_amt                     NUMBER;
76864 l_acc_rev_natural_side_code   VARCHAR2(1);
76865 
76866 l_num_entries                 NUMBER;
76867 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
76868 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
76869 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
76870 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
76871 l_recog_line_1                NUMBER;
76872 l_recog_line_2                NUMBER;
76873 
76874 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
76875 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
76876 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
76877 
76878 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
76879 
76880 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
76881 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
76882 
76883 ---------------------------------------------------------------------------------------------------------------
76884 
76885 
76886 --
76887 -- bulk performance
76888 --
76889 l_balance_type_code           VARCHAR2(1);
76890 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
76891 l_log_module                  VARCHAR2(240);
76892 
76893 --
76894 -- Upgrade strategy
76895 --
76896 l_actual_upg_option           VARCHAR2(1);
76897 l_enc_upg_option           VARCHAR2(1);
76898 
76899 --
76900 BEGIN
76901 --
76902 IF g_log_enabled THEN
76903       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_141';
76904 END IF;
76905 --
76906 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76907 
76908       trace
76909          (p_msg      => 'BEGIN of AcctLineType_141'
76910          ,p_level    => C_LEVEL_PROCEDURE
76911          ,p_module   => l_log_module);
76912 
76913 END IF;
76914 --
76915 l_component_type             := 'AMB_JLT';
76916 l_component_code             := 'INVENTORY_VALUATION';
76917 l_component_type_code        := 'S';
76918 l_component_appl_id          :=  707;
76919 l_amb_context_code           := 'DEFAULT';
76920 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
76921 l_event_class_code           := 'INT_ORDER_TO_EXP';
76922 l_event_type_code            := 'INT_ORDER_TO_EXP_ALL';
76923 l_line_definition_owner_code := 'S';
76924 l_line_definition_code       := 'INT_ORDER_TO_EXP';
76925 --
76926 l_balance_type_code          := 'A';
76927 l_segment                     := NULL;
76928 l_ccid                        := NULL;
76929 l_adr_transaction_coa_id      := NULL;
76930 l_adr_accounting_coa_id       := NULL;
76931 l_adr_flexfield_segment_code  := NULL;
76932 l_adr_flex_value_set_id       := NULL;
76933 l_adr_value_type_code         := NULL;
76934 l_adr_value_combination_id    := NULL;
76935 l_adr_value_segment_code      := NULL;
76936 
76937 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
76938 l_bflow_class_code           := '';    -- 4219869 Business Flow
76939 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
76940 l_budgetary_control_flag     := 'N';
76941 
76942 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
76943 l_bflow_applied_to_amt       := NULL; -- 5132302
76944 l_entered_amt_idx            := NULL;          -- 4262811
76945 l_accted_amt_idx             := NULL;          -- 4262811
76946 l_acc_rev_flag               := NULL;          -- 4262811
76947 l_accrual_line_num           := NULL;          -- 4262811
76948 l_tmp_amt                    := NULL;          -- 4262811
76949 --
76950  
76951 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
76952     l_balance_type_code <> 'B' THEN
76953 IF NVL(p_source_24,9E125) =  1
76954  THEN 
76955 
76956    --
76957    XLA_AE_LINES_PKG.SetNewLine;
76958 
76959    p_balance_type_code          := l_balance_type_code;
76960    -- set the flag so later we will know whether the gain loss line needs to be created
76961    
76962    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
76963      p_actual_flag :='A';
76964    END IF;
76965 
76966    --
76967    -- bulk performance
76968    --
76969    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
76970                                       p_header_num   => 0); -- 4262811
76971    --
76972    -- set accounting line options
76973    --
76974    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
76975            p_natural_side_code          => 'D'
76976          , p_gain_or_loss_flag          => 'N'
76977          , p_gl_transfer_mode_code      => 'S'
76978          , p_acct_entry_type_code       => 'A'
76979          , p_switch_side_flag           => 'Y'
76980          , p_merge_duplicate_code       => 'N'
76981          );
76982    --
76983    l_acc_rev_natural_side_code := 'C';  -- 4262811
76984    -- 
76985    --
76986    -- set accounting line type info
76987    --
76988    xla_ae_lines_pkg.SetAcctLineType
76989       (p_component_type             => l_component_type
76990       ,p_event_type_code            => l_event_type_code
76991       ,p_line_definition_owner_code => l_line_definition_owner_code
76992       ,p_line_definition_code       => l_line_definition_code
76993       ,p_accounting_line_code       => l_component_code
76994       ,p_accounting_line_type_code  => l_component_type_code
76995       ,p_accounting_line_appl_id    => l_component_appl_id
76996       ,p_amb_context_code           => l_amb_context_code
76997       ,p_entity_code                => l_entity_code
76998       ,p_event_class_code           => l_event_class_code);
76999    --
77000    -- set accounting class
77001    --
77002    xla_ae_lines_pkg.SetAcctClass(
77003            p_accounting_class_code  => 'INVENTORY_VALUATION'
77004          , p_ae_header_id           => l_ae_header_id
77005          );
77006 
77007    --
77008    -- set rounding class
77009    --
77010    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
77011                       'INVENTORY_VALUATION';
77012 
77013    --
77014    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
77015    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
77016    --
77017    -- bulk performance
77018    --
77019    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
77020 
77021    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
77022       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
77023 
77024    -- 4955764
77025    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77026       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
77027 
77028    -- 4458381 Public Sector Enh
77029    
77030    --
77031    -- set accounting attributes for the line type
77032    --
77033    l_entered_amt_idx := 3;
77034    l_accted_amt_idx  := 8;
77035    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
77036    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
77037    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
77038    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
77039    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
77040    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
77041    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
77042    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
77043    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
77044    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
77045    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
77046    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
77047    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
77048    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
77049    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
77050    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
77051    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
77052 
77053    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
77054    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
77055 
77056    ---------------------------------------------------------------------------------------------------------------
77057    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
77058    ---------------------------------------------------------------------------------------------------------------
77059    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
77060 
77061    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77062    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77063 
77064    IF xla_accounting_cache_pkg.GetValueChar
77065          (p_source_code         => 'LEDGER_CATEGORY_CODE'
77066          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
77067    AND l_bflow_method_code = 'PRIOR_ENTRY'
77068 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
77069    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
77070          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
77071        )
77072    THEN
77073          xla_ae_lines_pkg.BflowUpgEntry
77074            (p_business_method_code    => l_bflow_method_code
77075            ,p_business_class_code     => l_bflow_class_code
77076            ,p_balance_type            => l_balance_type_code);
77077    ELSE
77078       NULL;
77079 -- No business flow processing for business flow method of NONE.
77080    END IF;
77081 
77082    --
77083    -- call analytical criteria
77084    --
77085    
77086    --
77087    -- call description
77088    --
77089    -- No description or it is inherited.
77090    --
77091    -- call ADRs
77092    -- Bug 4922099
77093    --
77094    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77095         (NVL(l_actual_upg_option, 'N') = 'O') OR
77096         (NVL(l_enc_upg_option, 'N') = 'O')
77097       )
77098    THEN
77099    NULL;
77100    --
77101    --
77102    
77103   l_ccid := AcctDerRule_4(
77104            p_application_id           => p_application_id
77105          , p_ae_header_id             => l_ae_header_id 
77106 , p_source_4 => p_source_4
77107          , x_transaction_coa_id       => l_adr_transaction_coa_id
77108          , x_accounting_coa_id        => l_adr_accounting_coa_id
77109          , x_value_type_code          => l_adr_value_type_code
77110          , p_side                     => 'NA'
77111    );
77112 
77113    xla_ae_lines_pkg.set_ccid(
77114     p_code_combination_id          => l_ccid
77115   , p_value_type_code              => l_adr_value_type_code
77116   , p_transaction_coa_id           => l_adr_transaction_coa_id
77117   , p_accounting_coa_id            => l_adr_accounting_coa_id
77118   , p_adr_code                     => 'CST_DEFAULT'
77119   , p_adr_type_code                => 'S'
77120   , p_component_type               => l_component_type
77121   , p_component_code               => l_component_code
77122   , p_component_type_code          => l_component_type_code
77123   , p_component_appl_id            => l_component_appl_id
77124   , p_amb_context_code             => l_amb_context_code
77125   , p_side                         => 'NA'
77126   );
77127 
77128 
77129    --
77130    --
77131    END IF;
77132    --
77133    -- Bug 4922099
77134    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
77135           (NVL(l_enc_upg_option, 'N') = 'O')
77136         ) AND
77137         (l_bflow_method_code = 'PRIOR_ENTRY')
77138       )
77139    THEN
77140       IF
77141       --
77142       1 = 2
77143       --
77144       THEN
77145       xla_accounting_err_pkg.build_message
77146                                     (p_appli_s_name            => 'XLA'
77147                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77148                                     ,p_token_1                 => 'LINE_NUMBER'
77149                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
77150                                     ,p_token_2                 => 'LINE_TYPE_NAME'
77151                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
77152                                                                              l_component_type
77153                                                                             ,l_component_code
77154                                                                             ,l_component_type_code
77155                                                                             ,l_component_appl_id
77156                                                                             ,l_amb_context_code
77157                                                                             ,l_entity_code
77158                                                                             ,l_event_class_code
77159                                                                            )
77160                                     ,p_token_3                 => 'OWNER'
77161                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
77162                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
77163                                                                           ,p_lookup_code    => l_component_type_code
77164                                                                          )
77165                                     ,p_token_4                 => 'PRODUCT_NAME'
77166                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
77167                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
77168                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
77169                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
77170                                     ,p_ae_header_id            =>  NULL
77171                                        );
77172 
77173         IF (C_LEVEL_ERROR>= g_log_level) THEN
77174                  trace
77175                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77176                       ,p_level    => C_LEVEL_ERROR
77177                       ,p_module   => l_log_module);
77178         END IF;
77179       END IF;
77180    END IF;
77181    --
77182    --
77183    ------------------------------------------------------------------------------------------------
77184    -- 4219869 Business Flow
77185    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
77186    -- Prior Entry.  Currently, the following code is always generated.
77187    ------------------------------------------------------------------------------------------------
77188    XLA_AE_LINES_PKG.ValidateCurrentLine;
77189 
77190    ------------------------------------------------------------------------------------
77191    -- 4219869 Business Flow
77192    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
77193    ------------------------------------------------------------------------------------
77194    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77195 
77196    ----------------------------------------------------------------------------------
77197    -- 4219869 Business Flow
77198    -- Update journal entry status -- Need to generate this within IF <condition>
77199    ----------------------------------------------------------------------------------
77200    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77201          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
77202          ,p_balance_type_code => l_balance_type_code
77203          );
77204 
77205    -------------------------------------------------------------------------------------------
77206    -- 4262811 - Generate the Accrual Reversal lines
77207    -------------------------------------------------------------------------------------------
77208    BEGIN
77209       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
77210                               (g_array_event(p_event_id).array_value_num('header_index'));
77211       IF l_acc_rev_flag IS NULL THEN
77212          l_acc_rev_flag := 'N';
77213       END IF;
77214    EXCEPTION
77215       WHEN OTHERS THEN
77216          l_acc_rev_flag := 'N';
77217    END;
77218    --
77219    IF (l_acc_rev_flag = 'Y') THEN
77220 
77221        -- 4645092  ------------------------------------------------------------------------------
77222        -- To allow MPA report to determine if it should generate report process
77223        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
77224        ------------------------------------------------------------------------------------------
77225 
77226        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
77227        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
77228    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
77229    -- call ADRs
77230    -- Bug 4922099
77231    --
77232    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77233         (NVL(l_actual_upg_option, 'N') = 'O') OR
77234         (NVL(l_enc_upg_option, 'N') = 'O')
77235       )
77236    THEN
77237    NULL;
77238    --
77239    --
77240    
77241   l_ccid := AcctDerRule_4(
77242            p_application_id           => p_application_id
77243          , p_ae_header_id             => l_ae_header_id 
77244 , p_source_4 => p_source_4
77245          , x_transaction_coa_id       => l_adr_transaction_coa_id
77246          , x_accounting_coa_id        => l_adr_accounting_coa_id
77247          , x_value_type_code          => l_adr_value_type_code
77248          , p_side                     => 'NA'
77249    );
77250 
77251    xla_ae_lines_pkg.set_ccid(
77252     p_code_combination_id          => l_ccid
77253   , p_value_type_code              => l_adr_value_type_code
77254   , p_transaction_coa_id           => l_adr_transaction_coa_id
77255   , p_accounting_coa_id            => l_adr_accounting_coa_id
77256   , p_adr_code                     => 'CST_DEFAULT'
77257   , p_adr_type_code                => 'S'
77258   , p_component_type               => l_component_type
77259   , p_component_code               => l_component_code
77260   , p_component_type_code          => l_component_type_code
77261   , p_component_appl_id            => l_component_appl_id
77262   , p_amb_context_code             => l_amb_context_code
77263   , p_side                         => 'NA'
77264   );
77265 
77266 
77267    --
77268    --
77269    END IF;
77270 
77271        --
77272        -- Update the line information that should be overwritten
77273        --
77274        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
77275                                          p_header_num   => 1);
77276        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
77277 
77278        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
77279 
77280        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
77281           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
77282        END IF;
77283 
77284       --
77285       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
77286       --
77287       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
77288           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
77289       ELSE
77290           ---------------------------------------------------------------------------------------------------
77291           -- 4262811a Switch Sign
77292           ---------------------------------------------------------------------------------------------------
77293           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
77294           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77295                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77296           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77297                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77298           -- 5132302
77299           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
77300                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77301 
77302       END IF;
77303 
77304       -- 4955764
77305       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77306       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
77307 
77308 
77309       XLA_AE_LINES_PKG.ValidateCurrentLine;
77310       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77311 
77312       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77313                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
77314                ,p_balance_type_code => l_balance_type_code);
77315 
77316    END IF;
77317 
77318    -----------------------------------------------------------------------------------------
77319    -- 4262811 Multiperiod Accounting
77320    -----------------------------------------------------------------------------------------
77321      -- No MPA option is assigned.
77322 
77323 
77324 END IF;
77325 END IF;
77326 --
77327 
77328 --
77329 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77330    trace
77331       (p_msg      => 'END of AcctLineType_141'
77332       ,p_level    => C_LEVEL_PROCEDURE
77333       ,p_module   => l_log_module);
77334 END IF;
77335 --
77336 EXCEPTION
77337   WHEN xla_exceptions_pkg.application_exception THEN
77338       RAISE;
77339   WHEN OTHERS THEN
77340        xla_exceptions_pkg.raise_message
77341            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_141');
77342 END AcctLineType_141;
77343 --
77344 
77345 ---------------------------------------
77346 --
77347 -- PRIVATE FUNCTION
77348 --         AcctLineType_142
77349 --
77350 ---------------------------------------
77351 PROCEDURE AcctLineType_142 (
77352   p_application_id        IN NUMBER
77353  ,p_event_id              IN NUMBER
77354  ,p_calculate_acctd_flag  IN VARCHAR2
77355  ,p_calculate_g_l_flag    IN VARCHAR2
77356  ,p_actual_flag           IN OUT VARCHAR2
77357  ,p_balance_type_code     OUT VARCHAR2
77358  ,p_gain_or_loss_ref      OUT VARCHAR2
77359  
77360 --Cost Management Default Account
77361  , p_source_4            IN NUMBER
77362 --DISTRIBUTION_IDENTIFIER
77363  , p_source_11            IN NUMBER
77364 --Distribution Type
77365  , p_source_12            IN VARCHAR2
77366  , p_source_12_meaning    IN VARCHAR2
77367 --Entered Currency Code
77368  , p_source_15            IN VARCHAR2
77369 --Entered Amount
77370  , p_source_18            IN NUMBER
77371 --Currency Conversion Date
77372  , p_source_19            IN DATE
77373 --Currency Conversion Rate
77374  , p_source_20            IN NUMBER
77375 --Currency Conversion Type
77376  , p_source_21            IN VARCHAR2
77377 --Accounted Amount
77378  , p_source_22            IN NUMBER
77379 --Accounting Line Type
77380  , p_source_24            IN NUMBER
77381 )
77382 IS
77383 
77384 l_component_type              VARCHAR2(80);
77385 l_component_code              VARCHAR2(30);
77386 l_component_type_code         VARCHAR2(1);
77387 l_component_appl_id           INTEGER;
77388 l_amb_context_code            VARCHAR2(30);
77389 l_entity_code                 VARCHAR2(30);
77390 l_event_class_code            VARCHAR2(30);
77391 l_ae_header_id                NUMBER;
77392 l_event_type_code             VARCHAR2(30);
77393 l_line_definition_code        VARCHAR2(30);
77394 l_line_definition_owner_code  VARCHAR2(1);
77395 --
77396 -- adr variables
77397 l_segment                     VARCHAR2(30);
77398 l_ccid                        NUMBER;
77399 l_adr_transaction_coa_id      NUMBER;
77400 l_adr_accounting_coa_id       NUMBER;
77401 l_adr_flexfield_segment_code  VARCHAR2(30);
77402 l_adr_flex_value_set_id       NUMBER;
77403 l_adr_value_type_code         VARCHAR2(30);
77404 l_adr_value_combination_id    NUMBER;
77405 l_adr_value_segment_code      VARCHAR2(30);
77406 
77407 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
77408 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
77409 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
77410 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
77411 
77412 -- 4262811 Variables ------------------------------------------------------------------------------------------
77413 l_entered_amt_idx             NUMBER;
77414 l_accted_amt_idx              NUMBER;
77415 l_acc_rev_flag                VARCHAR2(1);
77416 l_accrual_line_num            NUMBER;
77417 l_tmp_amt                     NUMBER;
77418 l_acc_rev_natural_side_code   VARCHAR2(1);
77419 
77420 l_num_entries                 NUMBER;
77421 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
77422 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
77423 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
77424 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
77425 l_recog_line_1                NUMBER;
77426 l_recog_line_2                NUMBER;
77427 
77428 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
77429 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
77430 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
77431 
77432 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
77433 
77434 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
77435 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
77436 
77437 ---------------------------------------------------------------------------------------------------------------
77438 
77439 
77440 --
77441 -- bulk performance
77442 --
77443 l_balance_type_code           VARCHAR2(1);
77444 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
77445 l_log_module                  VARCHAR2(240);
77446 
77447 --
77448 -- Upgrade strategy
77449 --
77450 l_actual_upg_option           VARCHAR2(1);
77451 l_enc_upg_option           VARCHAR2(1);
77452 
77453 --
77454 BEGIN
77455 --
77456 IF g_log_enabled THEN
77457       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_142';
77458 END IF;
77459 --
77460 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77461 
77462       trace
77463          (p_msg      => 'BEGIN of AcctLineType_142'
77464          ,p_level    => C_LEVEL_PROCEDURE
77465          ,p_module   => l_log_module);
77466 
77467 END IF;
77468 --
77469 l_component_type             := 'AMB_JLT';
77470 l_component_code             := 'INVENTORY_VALUATION';
77471 l_component_type_code        := 'S';
77472 l_component_appl_id          :=  707;
77473 l_amb_context_code           := 'DEFAULT';
77474 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
77475 l_event_class_code           := 'USER_DEFINE';
77476 l_event_type_code            := 'UFOB_RCPT_SENDER_SHIP';
77477 l_line_definition_owner_code := 'S';
77478 l_line_definition_code       := 'USER_FOB_RCPT_SENDER_SHIP';
77479 --
77480 l_balance_type_code          := 'A';
77481 l_segment                     := NULL;
77482 l_ccid                        := NULL;
77483 l_adr_transaction_coa_id      := NULL;
77484 l_adr_accounting_coa_id       := NULL;
77485 l_adr_flexfield_segment_code  := NULL;
77486 l_adr_flex_value_set_id       := NULL;
77487 l_adr_value_type_code         := NULL;
77488 l_adr_value_combination_id    := NULL;
77489 l_adr_value_segment_code      := NULL;
77490 
77491 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
77492 l_bflow_class_code           := '';    -- 4219869 Business Flow
77493 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
77494 l_budgetary_control_flag     := 'N';
77495 
77496 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
77497 l_bflow_applied_to_amt       := NULL; -- 5132302
77498 l_entered_amt_idx            := NULL;          -- 4262811
77499 l_accted_amt_idx             := NULL;          -- 4262811
77500 l_acc_rev_flag               := NULL;          -- 4262811
77501 l_accrual_line_num           := NULL;          -- 4262811
77502 l_tmp_amt                    := NULL;          -- 4262811
77503 --
77504  
77505 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
77506     l_balance_type_code <> 'B' THEN
77507 IF NVL(p_source_24,9E125) =  1
77508  THEN 
77509 
77510    --
77511    XLA_AE_LINES_PKG.SetNewLine;
77512 
77513    p_balance_type_code          := l_balance_type_code;
77514    -- set the flag so later we will know whether the gain loss line needs to be created
77515    
77516    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
77517      p_actual_flag :='A';
77518    END IF;
77519 
77520    --
77521    -- bulk performance
77522    --
77523    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
77524                                       p_header_num   => 0); -- 4262811
77525    --
77526    -- set accounting line options
77527    --
77528    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
77529            p_natural_side_code          => 'D'
77530          , p_gain_or_loss_flag          => 'N'
77531          , p_gl_transfer_mode_code      => 'S'
77532          , p_acct_entry_type_code       => 'A'
77533          , p_switch_side_flag           => 'Y'
77534          , p_merge_duplicate_code       => 'N'
77535          );
77536    --
77537    l_acc_rev_natural_side_code := 'C';  -- 4262811
77538    -- 
77539    --
77540    -- set accounting line type info
77541    --
77542    xla_ae_lines_pkg.SetAcctLineType
77543       (p_component_type             => l_component_type
77544       ,p_event_type_code            => l_event_type_code
77545       ,p_line_definition_owner_code => l_line_definition_owner_code
77546       ,p_line_definition_code       => l_line_definition_code
77547       ,p_accounting_line_code       => l_component_code
77548       ,p_accounting_line_type_code  => l_component_type_code
77549       ,p_accounting_line_appl_id    => l_component_appl_id
77550       ,p_amb_context_code           => l_amb_context_code
77551       ,p_entity_code                => l_entity_code
77552       ,p_event_class_code           => l_event_class_code);
77553    --
77554    -- set accounting class
77555    --
77556    xla_ae_lines_pkg.SetAcctClass(
77557            p_accounting_class_code  => 'INVENTORY_VALUATION'
77558          , p_ae_header_id           => l_ae_header_id
77559          );
77560 
77561    --
77562    -- set rounding class
77563    --
77564    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
77565                       'INVENTORY_VALUATION';
77566 
77567    --
77568    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
77569    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
77570    --
77571    -- bulk performance
77572    --
77573    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
77574 
77575    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
77576       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
77577 
77578    -- 4955764
77579    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77580       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
77581 
77582    -- 4458381 Public Sector Enh
77583    
77584    --
77585    -- set accounting attributes for the line type
77586    --
77587    l_entered_amt_idx := 3;
77588    l_accted_amt_idx  := 8;
77589    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
77590    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
77591    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
77592    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
77593    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
77594    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
77595    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
77596    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
77597    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
77598    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
77599    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
77600    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
77601    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
77602    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
77603    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
77604    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
77605    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
77606 
77607    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
77608    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
77609 
77610    ---------------------------------------------------------------------------------------------------------------
77611    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
77612    ---------------------------------------------------------------------------------------------------------------
77613    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
77614 
77615    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77616    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77617 
77618    IF xla_accounting_cache_pkg.GetValueChar
77619          (p_source_code         => 'LEDGER_CATEGORY_CODE'
77620          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
77621    AND l_bflow_method_code = 'PRIOR_ENTRY'
77622 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
77623    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
77624          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
77625        )
77626    THEN
77627          xla_ae_lines_pkg.BflowUpgEntry
77628            (p_business_method_code    => l_bflow_method_code
77629            ,p_business_class_code     => l_bflow_class_code
77630            ,p_balance_type            => l_balance_type_code);
77631    ELSE
77632       NULL;
77633 -- No business flow processing for business flow method of NONE.
77634    END IF;
77635 
77636    --
77637    -- call analytical criteria
77638    --
77639    
77640    --
77641    -- call description
77642    --
77643    -- No description or it is inherited.
77644    --
77645    -- call ADRs
77646    -- Bug 4922099
77647    --
77648    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77649         (NVL(l_actual_upg_option, 'N') = 'O') OR
77650         (NVL(l_enc_upg_option, 'N') = 'O')
77651       )
77652    THEN
77653    NULL;
77654    --
77655    --
77656    
77657   l_ccid := AcctDerRule_4(
77658            p_application_id           => p_application_id
77659          , p_ae_header_id             => l_ae_header_id 
77660 , p_source_4 => p_source_4
77661          , x_transaction_coa_id       => l_adr_transaction_coa_id
77662          , x_accounting_coa_id        => l_adr_accounting_coa_id
77663          , x_value_type_code          => l_adr_value_type_code
77664          , p_side                     => 'NA'
77665    );
77666 
77667    xla_ae_lines_pkg.set_ccid(
77668     p_code_combination_id          => l_ccid
77669   , p_value_type_code              => l_adr_value_type_code
77670   , p_transaction_coa_id           => l_adr_transaction_coa_id
77671   , p_accounting_coa_id            => l_adr_accounting_coa_id
77672   , p_adr_code                     => 'CST_DEFAULT'
77673   , p_adr_type_code                => 'S'
77674   , p_component_type               => l_component_type
77675   , p_component_code               => l_component_code
77676   , p_component_type_code          => l_component_type_code
77677   , p_component_appl_id            => l_component_appl_id
77678   , p_amb_context_code             => l_amb_context_code
77679   , p_side                         => 'NA'
77680   );
77681 
77682 
77683    --
77684    --
77685    END IF;
77686    --
77687    -- Bug 4922099
77688    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
77689           (NVL(l_enc_upg_option, 'N') = 'O')
77690         ) AND
77691         (l_bflow_method_code = 'PRIOR_ENTRY')
77692       )
77693    THEN
77694       IF
77695       --
77696       1 = 2
77697       --
77698       THEN
77699       xla_accounting_err_pkg.build_message
77700                                     (p_appli_s_name            => 'XLA'
77701                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77702                                     ,p_token_1                 => 'LINE_NUMBER'
77703                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
77704                                     ,p_token_2                 => 'LINE_TYPE_NAME'
77705                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
77706                                                                              l_component_type
77707                                                                             ,l_component_code
77708                                                                             ,l_component_type_code
77709                                                                             ,l_component_appl_id
77710                                                                             ,l_amb_context_code
77711                                                                             ,l_entity_code
77712                                                                             ,l_event_class_code
77713                                                                            )
77714                                     ,p_token_3                 => 'OWNER'
77715                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
77716                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
77717                                                                           ,p_lookup_code    => l_component_type_code
77718                                                                          )
77719                                     ,p_token_4                 => 'PRODUCT_NAME'
77720                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
77721                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
77722                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
77723                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
77724                                     ,p_ae_header_id            =>  NULL
77725                                        );
77726 
77727         IF (C_LEVEL_ERROR>= g_log_level) THEN
77728                  trace
77729                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77730                       ,p_level    => C_LEVEL_ERROR
77731                       ,p_module   => l_log_module);
77732         END IF;
77733       END IF;
77734    END IF;
77735    --
77736    --
77737    ------------------------------------------------------------------------------------------------
77738    -- 4219869 Business Flow
77739    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
77740    -- Prior Entry.  Currently, the following code is always generated.
77741    ------------------------------------------------------------------------------------------------
77742    XLA_AE_LINES_PKG.ValidateCurrentLine;
77743 
77744    ------------------------------------------------------------------------------------
77745    -- 4219869 Business Flow
77746    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
77747    ------------------------------------------------------------------------------------
77748    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77749 
77750    ----------------------------------------------------------------------------------
77751    -- 4219869 Business Flow
77752    -- Update journal entry status -- Need to generate this within IF <condition>
77753    ----------------------------------------------------------------------------------
77754    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77755          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
77756          ,p_balance_type_code => l_balance_type_code
77757          );
77758 
77759    -------------------------------------------------------------------------------------------
77760    -- 4262811 - Generate the Accrual Reversal lines
77761    -------------------------------------------------------------------------------------------
77762    BEGIN
77763       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
77764                               (g_array_event(p_event_id).array_value_num('header_index'));
77765       IF l_acc_rev_flag IS NULL THEN
77766          l_acc_rev_flag := 'N';
77767       END IF;
77768    EXCEPTION
77769       WHEN OTHERS THEN
77770          l_acc_rev_flag := 'N';
77771    END;
77772    --
77773    IF (l_acc_rev_flag = 'Y') THEN
77774 
77775        -- 4645092  ------------------------------------------------------------------------------
77776        -- To allow MPA report to determine if it should generate report process
77777        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
77778        ------------------------------------------------------------------------------------------
77779 
77780        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
77781        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
77782    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
77783    -- call ADRs
77784    -- Bug 4922099
77785    --
77786    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77787         (NVL(l_actual_upg_option, 'N') = 'O') OR
77788         (NVL(l_enc_upg_option, 'N') = 'O')
77789       )
77790    THEN
77791    NULL;
77792    --
77793    --
77794    
77795   l_ccid := AcctDerRule_4(
77796            p_application_id           => p_application_id
77797          , p_ae_header_id             => l_ae_header_id 
77798 , p_source_4 => p_source_4
77799          , x_transaction_coa_id       => l_adr_transaction_coa_id
77800          , x_accounting_coa_id        => l_adr_accounting_coa_id
77801          , x_value_type_code          => l_adr_value_type_code
77802          , p_side                     => 'NA'
77803    );
77804 
77805    xla_ae_lines_pkg.set_ccid(
77806     p_code_combination_id          => l_ccid
77807   , p_value_type_code              => l_adr_value_type_code
77808   , p_transaction_coa_id           => l_adr_transaction_coa_id
77809   , p_accounting_coa_id            => l_adr_accounting_coa_id
77810   , p_adr_code                     => 'CST_DEFAULT'
77811   , p_adr_type_code                => 'S'
77812   , p_component_type               => l_component_type
77813   , p_component_code               => l_component_code
77814   , p_component_type_code          => l_component_type_code
77815   , p_component_appl_id            => l_component_appl_id
77816   , p_amb_context_code             => l_amb_context_code
77817   , p_side                         => 'NA'
77818   );
77819 
77820 
77821    --
77822    --
77823    END IF;
77824 
77825        --
77826        -- Update the line information that should be overwritten
77827        --
77828        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
77829                                          p_header_num   => 1);
77830        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
77831 
77832        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
77833 
77834        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
77835           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
77836        END IF;
77837 
77838       --
77839       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
77840       --
77841       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
77842           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
77843       ELSE
77844           ---------------------------------------------------------------------------------------------------
77845           -- 4262811a Switch Sign
77846           ---------------------------------------------------------------------------------------------------
77847           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
77848           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77849                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77850           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77851                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77852           -- 5132302
77853           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
77854                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77855 
77856       END IF;
77857 
77858       -- 4955764
77859       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77860       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
77861 
77862 
77863       XLA_AE_LINES_PKG.ValidateCurrentLine;
77864       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77865 
77866       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77867                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
77868                ,p_balance_type_code => l_balance_type_code);
77869 
77870    END IF;
77871 
77872    -----------------------------------------------------------------------------------------
77873    -- 4262811 Multiperiod Accounting
77874    -----------------------------------------------------------------------------------------
77875      -- No MPA option is assigned.
77876 
77877 
77878 END IF;
77879 END IF;
77880 --
77881 
77882 --
77883 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77884    trace
77885       (p_msg      => 'END of AcctLineType_142'
77886       ,p_level    => C_LEVEL_PROCEDURE
77887       ,p_module   => l_log_module);
77888 END IF;
77889 --
77890 EXCEPTION
77891   WHEN xla_exceptions_pkg.application_exception THEN
77892       RAISE;
77893   WHEN OTHERS THEN
77894        xla_exceptions_pkg.raise_message
77895            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_142');
77896 END AcctLineType_142;
77897 --
77898 
77899 ---------------------------------------
77900 --
77901 -- PRIVATE FUNCTION
77902 --         AcctLineType_143
77903 --
77904 ---------------------------------------
77905 PROCEDURE AcctLineType_143 (
77906   p_application_id        IN NUMBER
77907  ,p_event_id              IN NUMBER
77908  ,p_calculate_acctd_flag  IN VARCHAR2
77909  ,p_calculate_g_l_flag    IN VARCHAR2
77910  ,p_actual_flag           IN OUT VARCHAR2
77911  ,p_balance_type_code     OUT VARCHAR2
77912  ,p_gain_or_loss_ref      OUT VARCHAR2
77913  
77914 --Cost Management Default Account
77915  , p_source_4            IN NUMBER
77916 --DISTRIBUTION_IDENTIFIER
77917  , p_source_11            IN NUMBER
77918 --Distribution Type
77919  , p_source_12            IN VARCHAR2
77920  , p_source_12_meaning    IN VARCHAR2
77921 --Entered Currency Code
77922  , p_source_15            IN VARCHAR2
77923 --Entered Amount
77924  , p_source_18            IN NUMBER
77925 --Currency Conversion Date
77926  , p_source_19            IN DATE
77927 --Currency Conversion Rate
77928  , p_source_20            IN NUMBER
77929 --Currency Conversion Type
77930  , p_source_21            IN VARCHAR2
77931 --Accounted Amount
77932  , p_source_22            IN NUMBER
77933 --Accounting Line Type
77934  , p_source_24            IN NUMBER
77935 )
77936 IS
77937 
77938 l_component_type              VARCHAR2(80);
77939 l_component_code              VARCHAR2(30);
77940 l_component_type_code         VARCHAR2(1);
77941 l_component_appl_id           INTEGER;
77942 l_amb_context_code            VARCHAR2(30);
77943 l_entity_code                 VARCHAR2(30);
77944 l_event_class_code            VARCHAR2(30);
77945 l_ae_header_id                NUMBER;
77946 l_event_type_code             VARCHAR2(30);
77947 l_line_definition_code        VARCHAR2(30);
77948 l_line_definition_owner_code  VARCHAR2(1);
77949 --
77950 -- adr variables
77951 l_segment                     VARCHAR2(30);
77952 l_ccid                        NUMBER;
77953 l_adr_transaction_coa_id      NUMBER;
77954 l_adr_accounting_coa_id       NUMBER;
77955 l_adr_flexfield_segment_code  VARCHAR2(30);
77956 l_adr_flex_value_set_id       NUMBER;
77957 l_adr_value_type_code         VARCHAR2(30);
77958 l_adr_value_combination_id    NUMBER;
77959 l_adr_value_segment_code      VARCHAR2(30);
77960 
77961 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
77962 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
77963 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
77964 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
77965 
77966 -- 4262811 Variables ------------------------------------------------------------------------------------------
77967 l_entered_amt_idx             NUMBER;
77968 l_accted_amt_idx              NUMBER;
77969 l_acc_rev_flag                VARCHAR2(1);
77970 l_accrual_line_num            NUMBER;
77971 l_tmp_amt                     NUMBER;
77972 l_acc_rev_natural_side_code   VARCHAR2(1);
77973 
77974 l_num_entries                 NUMBER;
77975 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
77976 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
77977 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
77978 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
77979 l_recog_line_1                NUMBER;
77980 l_recog_line_2                NUMBER;
77981 
77982 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
77983 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
77984 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
77985 
77986 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
77987 
77988 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
77989 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
77990 
77991 ---------------------------------------------------------------------------------------------------------------
77992 
77993 
77994 --
77995 -- bulk performance
77996 --
77997 l_balance_type_code           VARCHAR2(1);
77998 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
77999 l_log_module                  VARCHAR2(240);
78000 
78001 --
78002 -- Upgrade strategy
78003 --
78004 l_actual_upg_option           VARCHAR2(1);
78005 l_enc_upg_option           VARCHAR2(1);
78006 
78007 --
78008 BEGIN
78009 --
78010 IF g_log_enabled THEN
78011       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_143';
78012 END IF;
78013 --
78014 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78015 
78016       trace
78017          (p_msg      => 'BEGIN of AcctLineType_143'
78018          ,p_level    => C_LEVEL_PROCEDURE
78019          ,p_module   => l_log_module);
78020 
78021 END IF;
78022 --
78023 l_component_type             := 'AMB_JLT';
78024 l_component_code             := 'INVENTORY_VALUATION';
78025 l_component_type_code        := 'S';
78026 l_component_appl_id          :=  707;
78027 l_amb_context_code           := 'DEFAULT';
78028 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
78029 l_event_class_code           := 'USER_DEFINE';
78030 l_event_type_code            := 'UIPV_TXFR';
78031 l_line_definition_owner_code := 'S';
78032 l_line_definition_code       := 'USER_IPV_TXFR';
78033 --
78034 l_balance_type_code          := 'A';
78035 l_segment                     := NULL;
78036 l_ccid                        := NULL;
78037 l_adr_transaction_coa_id      := NULL;
78038 l_adr_accounting_coa_id       := NULL;
78039 l_adr_flexfield_segment_code  := NULL;
78040 l_adr_flex_value_set_id       := NULL;
78041 l_adr_value_type_code         := NULL;
78042 l_adr_value_combination_id    := NULL;
78043 l_adr_value_segment_code      := NULL;
78044 
78045 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
78046 l_bflow_class_code           := '';    -- 4219869 Business Flow
78047 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
78048 l_budgetary_control_flag     := 'N';
78049 
78050 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
78051 l_bflow_applied_to_amt       := NULL; -- 5132302
78052 l_entered_amt_idx            := NULL;          -- 4262811
78053 l_accted_amt_idx             := NULL;          -- 4262811
78054 l_acc_rev_flag               := NULL;          -- 4262811
78055 l_accrual_line_num           := NULL;          -- 4262811
78056 l_tmp_amt                    := NULL;          -- 4262811
78057 --
78058  
78059 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
78060     l_balance_type_code <> 'B' THEN
78061 IF NVL(p_source_24,9E125) =  1
78062  THEN 
78063 
78064    --
78065    XLA_AE_LINES_PKG.SetNewLine;
78066 
78067    p_balance_type_code          := l_balance_type_code;
78068    -- set the flag so later we will know whether the gain loss line needs to be created
78069    
78070    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
78071      p_actual_flag :='A';
78072    END IF;
78073 
78074    --
78075    -- bulk performance
78076    --
78077    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
78078                                       p_header_num   => 0); -- 4262811
78079    --
78080    -- set accounting line options
78081    --
78082    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
78083            p_natural_side_code          => 'D'
78084          , p_gain_or_loss_flag          => 'N'
78085          , p_gl_transfer_mode_code      => 'S'
78086          , p_acct_entry_type_code       => 'A'
78087          , p_switch_side_flag           => 'Y'
78088          , p_merge_duplicate_code       => 'N'
78089          );
78090    --
78091    l_acc_rev_natural_side_code := 'C';  -- 4262811
78092    -- 
78093    --
78094    -- set accounting line type info
78095    --
78096    xla_ae_lines_pkg.SetAcctLineType
78097       (p_component_type             => l_component_type
78098       ,p_event_type_code            => l_event_type_code
78099       ,p_line_definition_owner_code => l_line_definition_owner_code
78100       ,p_line_definition_code       => l_line_definition_code
78101       ,p_accounting_line_code       => l_component_code
78102       ,p_accounting_line_type_code  => l_component_type_code
78103       ,p_accounting_line_appl_id    => l_component_appl_id
78104       ,p_amb_context_code           => l_amb_context_code
78105       ,p_entity_code                => l_entity_code
78106       ,p_event_class_code           => l_event_class_code);
78107    --
78108    -- set accounting class
78109    --
78110    xla_ae_lines_pkg.SetAcctClass(
78111            p_accounting_class_code  => 'INVENTORY_VALUATION'
78112          , p_ae_header_id           => l_ae_header_id
78113          );
78114 
78115    --
78116    -- set rounding class
78117    --
78118    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
78119                       'INVENTORY_VALUATION';
78120 
78121    --
78122    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
78123    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
78124    --
78125    -- bulk performance
78126    --
78127    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
78128 
78129    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
78130       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
78131 
78132    -- 4955764
78133    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78134       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
78135 
78136    -- 4458381 Public Sector Enh
78137    
78138    --
78139    -- set accounting attributes for the line type
78140    --
78141    l_entered_amt_idx := 3;
78142    l_accted_amt_idx  := 8;
78143    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
78144    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
78145    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
78146    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
78147    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
78148    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
78149    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
78150    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
78151    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
78152    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
78153    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
78154    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
78155    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
78156    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
78157    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
78158    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
78159    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
78160 
78161    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
78162    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
78163 
78164    ---------------------------------------------------------------------------------------------------------------
78165    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
78166    ---------------------------------------------------------------------------------------------------------------
78167    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
78168 
78169    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78170    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78171 
78172    IF xla_accounting_cache_pkg.GetValueChar
78173          (p_source_code         => 'LEDGER_CATEGORY_CODE'
78174          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
78175    AND l_bflow_method_code = 'PRIOR_ENTRY'
78176 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
78177    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
78178          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
78179        )
78180    THEN
78181          xla_ae_lines_pkg.BflowUpgEntry
78182            (p_business_method_code    => l_bflow_method_code
78183            ,p_business_class_code     => l_bflow_class_code
78184            ,p_balance_type            => l_balance_type_code);
78185    ELSE
78186       NULL;
78187 -- No business flow processing for business flow method of NONE.
78188    END IF;
78189 
78190    --
78191    -- call analytical criteria
78192    --
78193    
78194    --
78195    -- call description
78196    --
78197    -- No description or it is inherited.
78198    --
78199    -- call ADRs
78200    -- Bug 4922099
78201    --
78202    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78203         (NVL(l_actual_upg_option, 'N') = 'O') OR
78204         (NVL(l_enc_upg_option, 'N') = 'O')
78205       )
78206    THEN
78207    NULL;
78208    --
78209    --
78210    
78211   l_ccid := AcctDerRule_4(
78212            p_application_id           => p_application_id
78213          , p_ae_header_id             => l_ae_header_id 
78214 , p_source_4 => p_source_4
78215          , x_transaction_coa_id       => l_adr_transaction_coa_id
78216          , x_accounting_coa_id        => l_adr_accounting_coa_id
78217          , x_value_type_code          => l_adr_value_type_code
78218          , p_side                     => 'NA'
78219    );
78220 
78221    xla_ae_lines_pkg.set_ccid(
78222     p_code_combination_id          => l_ccid
78223   , p_value_type_code              => l_adr_value_type_code
78224   , p_transaction_coa_id           => l_adr_transaction_coa_id
78225   , p_accounting_coa_id            => l_adr_accounting_coa_id
78226   , p_adr_code                     => 'CST_DEFAULT'
78227   , p_adr_type_code                => 'S'
78228   , p_component_type               => l_component_type
78229   , p_component_code               => l_component_code
78230   , p_component_type_code          => l_component_type_code
78231   , p_component_appl_id            => l_component_appl_id
78232   , p_amb_context_code             => l_amb_context_code
78233   , p_side                         => 'NA'
78234   );
78235 
78236 
78237    --
78238    --
78239    END IF;
78240    --
78241    -- Bug 4922099
78242    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
78243           (NVL(l_enc_upg_option, 'N') = 'O')
78244         ) AND
78245         (l_bflow_method_code = 'PRIOR_ENTRY')
78246       )
78247    THEN
78248       IF
78249       --
78250       1 = 2
78251       --
78252       THEN
78253       xla_accounting_err_pkg.build_message
78254                                     (p_appli_s_name            => 'XLA'
78255                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78256                                     ,p_token_1                 => 'LINE_NUMBER'
78257                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
78258                                     ,p_token_2                 => 'LINE_TYPE_NAME'
78259                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
78260                                                                              l_component_type
78261                                                                             ,l_component_code
78262                                                                             ,l_component_type_code
78263                                                                             ,l_component_appl_id
78264                                                                             ,l_amb_context_code
78265                                                                             ,l_entity_code
78266                                                                             ,l_event_class_code
78267                                                                            )
78268                                     ,p_token_3                 => 'OWNER'
78269                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
78270                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
78271                                                                           ,p_lookup_code    => l_component_type_code
78272                                                                          )
78273                                     ,p_token_4                 => 'PRODUCT_NAME'
78274                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
78275                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
78276                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
78277                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
78278                                     ,p_ae_header_id            =>  NULL
78279                                        );
78280 
78281         IF (C_LEVEL_ERROR>= g_log_level) THEN
78282                  trace
78283                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78284                       ,p_level    => C_LEVEL_ERROR
78285                       ,p_module   => l_log_module);
78286         END IF;
78287       END IF;
78288    END IF;
78289    --
78290    --
78291    ------------------------------------------------------------------------------------------------
78292    -- 4219869 Business Flow
78293    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
78294    -- Prior Entry.  Currently, the following code is always generated.
78295    ------------------------------------------------------------------------------------------------
78296    XLA_AE_LINES_PKG.ValidateCurrentLine;
78297 
78298    ------------------------------------------------------------------------------------
78299    -- 4219869 Business Flow
78300    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
78301    ------------------------------------------------------------------------------------
78302    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78303 
78304    ----------------------------------------------------------------------------------
78305    -- 4219869 Business Flow
78306    -- Update journal entry status -- Need to generate this within IF <condition>
78307    ----------------------------------------------------------------------------------
78308    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78309          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
78310          ,p_balance_type_code => l_balance_type_code
78311          );
78312 
78313    -------------------------------------------------------------------------------------------
78314    -- 4262811 - Generate the Accrual Reversal lines
78315    -------------------------------------------------------------------------------------------
78316    BEGIN
78317       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
78318                               (g_array_event(p_event_id).array_value_num('header_index'));
78319       IF l_acc_rev_flag IS NULL THEN
78320          l_acc_rev_flag := 'N';
78321       END IF;
78322    EXCEPTION
78323       WHEN OTHERS THEN
78324          l_acc_rev_flag := 'N';
78325    END;
78326    --
78327    IF (l_acc_rev_flag = 'Y') THEN
78328 
78329        -- 4645092  ------------------------------------------------------------------------------
78330        -- To allow MPA report to determine if it should generate report process
78331        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
78332        ------------------------------------------------------------------------------------------
78333 
78334        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
78335        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
78336    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
78337    -- call ADRs
78338    -- Bug 4922099
78339    --
78340    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78341         (NVL(l_actual_upg_option, 'N') = 'O') OR
78342         (NVL(l_enc_upg_option, 'N') = 'O')
78343       )
78344    THEN
78345    NULL;
78346    --
78347    --
78348    
78349   l_ccid := AcctDerRule_4(
78350            p_application_id           => p_application_id
78351          , p_ae_header_id             => l_ae_header_id 
78352 , p_source_4 => p_source_4
78353          , x_transaction_coa_id       => l_adr_transaction_coa_id
78354          , x_accounting_coa_id        => l_adr_accounting_coa_id
78355          , x_value_type_code          => l_adr_value_type_code
78356          , p_side                     => 'NA'
78357    );
78358 
78359    xla_ae_lines_pkg.set_ccid(
78360     p_code_combination_id          => l_ccid
78361   , p_value_type_code              => l_adr_value_type_code
78362   , p_transaction_coa_id           => l_adr_transaction_coa_id
78363   , p_accounting_coa_id            => l_adr_accounting_coa_id
78364   , p_adr_code                     => 'CST_DEFAULT'
78365   , p_adr_type_code                => 'S'
78366   , p_component_type               => l_component_type
78367   , p_component_code               => l_component_code
78368   , p_component_type_code          => l_component_type_code
78369   , p_component_appl_id            => l_component_appl_id
78370   , p_amb_context_code             => l_amb_context_code
78371   , p_side                         => 'NA'
78372   );
78373 
78374 
78375    --
78376    --
78377    END IF;
78378 
78379        --
78380        -- Update the line information that should be overwritten
78381        --
78382        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
78383                                          p_header_num   => 1);
78384        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
78385 
78386        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
78387 
78388        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
78389           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
78390        END IF;
78391 
78392       --
78393       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
78394       --
78395       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
78396           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
78397       ELSE
78398           ---------------------------------------------------------------------------------------------------
78399           -- 4262811a Switch Sign
78400           ---------------------------------------------------------------------------------------------------
78401           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
78402           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78403                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78404           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78405                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78406           -- 5132302
78407           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
78408                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78409 
78410       END IF;
78411 
78412       -- 4955764
78413       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78414       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
78415 
78416 
78417       XLA_AE_LINES_PKG.ValidateCurrentLine;
78418       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78419 
78420       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78421                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
78422                ,p_balance_type_code => l_balance_type_code);
78423 
78424    END IF;
78425 
78426    -----------------------------------------------------------------------------------------
78427    -- 4262811 Multiperiod Accounting
78428    -----------------------------------------------------------------------------------------
78429      -- No MPA option is assigned.
78430 
78431 
78432 END IF;
78433 END IF;
78434 --
78435 
78436 --
78437 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78438    trace
78439       (p_msg      => 'END of AcctLineType_143'
78440       ,p_level    => C_LEVEL_PROCEDURE
78441       ,p_module   => l_log_module);
78442 END IF;
78443 --
78444 EXCEPTION
78445   WHEN xla_exceptions_pkg.application_exception THEN
78446       RAISE;
78447   WHEN OTHERS THEN
78448        xla_exceptions_pkg.raise_message
78449            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_143');
78450 END AcctLineType_143;
78451 --
78452 
78453 ---------------------------------------
78454 --
78455 -- PRIVATE FUNCTION
78456 --         AcctLineType_144
78457 --
78458 ---------------------------------------
78459 PROCEDURE AcctLineType_144 (
78460   p_application_id        IN NUMBER
78461  ,p_event_id              IN NUMBER
78462  ,p_calculate_acctd_flag  IN VARCHAR2
78463  ,p_calculate_g_l_flag    IN VARCHAR2
78464  ,p_actual_flag           IN OUT VARCHAR2
78465  ,p_balance_type_code     OUT VARCHAR2
78466  ,p_gain_or_loss_ref      OUT VARCHAR2
78467  
78468 --Cost Management Default Account
78469  , p_source_4            IN NUMBER
78470 --DISTRIBUTION_IDENTIFIER
78471  , p_source_11            IN NUMBER
78472 --Distribution Type
78473  , p_source_12            IN VARCHAR2
78474  , p_source_12_meaning    IN VARCHAR2
78475 --Entered Currency Code
78476  , p_source_15            IN VARCHAR2
78477 --Entered Amount
78478  , p_source_18            IN NUMBER
78479 --Currency Conversion Date
78480  , p_source_19            IN DATE
78481 --Currency Conversion Rate
78482  , p_source_20            IN NUMBER
78483 --Currency Conversion Type
78484  , p_source_21            IN VARCHAR2
78485 --Accounted Amount
78486  , p_source_22            IN NUMBER
78487 --Accounting Line Type
78488  , p_source_24            IN NUMBER
78489 )
78490 IS
78491 
78492 l_component_type              VARCHAR2(80);
78493 l_component_code              VARCHAR2(30);
78494 l_component_type_code         VARCHAR2(1);
78495 l_component_appl_id           INTEGER;
78496 l_amb_context_code            VARCHAR2(30);
78497 l_entity_code                 VARCHAR2(30);
78498 l_event_class_code            VARCHAR2(30);
78499 l_ae_header_id                NUMBER;
78500 l_event_type_code             VARCHAR2(30);
78501 l_line_definition_code        VARCHAR2(30);
78502 l_line_definition_owner_code  VARCHAR2(1);
78503 --
78504 -- adr variables
78505 l_segment                     VARCHAR2(30);
78506 l_ccid                        NUMBER;
78507 l_adr_transaction_coa_id      NUMBER;
78508 l_adr_accounting_coa_id       NUMBER;
78509 l_adr_flexfield_segment_code  VARCHAR2(30);
78510 l_adr_flex_value_set_id       NUMBER;
78511 l_adr_value_type_code         VARCHAR2(30);
78512 l_adr_value_combination_id    NUMBER;
78513 l_adr_value_segment_code      VARCHAR2(30);
78514 
78515 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
78516 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
78517 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
78518 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
78519 
78520 -- 4262811 Variables ------------------------------------------------------------------------------------------
78521 l_entered_amt_idx             NUMBER;
78522 l_accted_amt_idx              NUMBER;
78523 l_acc_rev_flag                VARCHAR2(1);
78524 l_accrual_line_num            NUMBER;
78525 l_tmp_amt                     NUMBER;
78526 l_acc_rev_natural_side_code   VARCHAR2(1);
78527 
78528 l_num_entries                 NUMBER;
78529 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
78530 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
78531 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
78532 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
78533 l_recog_line_1                NUMBER;
78534 l_recog_line_2                NUMBER;
78535 
78536 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
78537 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
78538 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
78539 
78540 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
78541 
78542 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
78543 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
78544 
78545 ---------------------------------------------------------------------------------------------------------------
78546 
78547 
78548 --
78549 -- bulk performance
78550 --
78551 l_balance_type_code           VARCHAR2(1);
78552 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
78553 l_log_module                  VARCHAR2(240);
78554 
78555 --
78556 -- Upgrade strategy
78557 --
78558 l_actual_upg_option           VARCHAR2(1);
78559 l_enc_upg_option           VARCHAR2(1);
78560 
78561 --
78562 BEGIN
78563 --
78564 IF g_log_enabled THEN
78565       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_144';
78566 END IF;
78567 --
78568 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78569 
78570       trace
78571          (p_msg      => 'BEGIN of AcctLineType_144'
78572          ,p_level    => C_LEVEL_PROCEDURE
78573          ,p_module   => l_log_module);
78574 
78575 END IF;
78576 --
78577 l_component_type             := 'AMB_JLT';
78578 l_component_code             := 'INVENTORY_VALUATION';
78579 l_component_type_code        := 'S';
78580 l_component_appl_id          :=  707;
78581 l_amb_context_code           := 'DEFAULT';
78582 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
78583 l_event_class_code           := 'USER_DEFINE';
78584 l_event_type_code            := 'USUB_TXFR';
78585 l_line_definition_owner_code := 'S';
78586 l_line_definition_code       := 'USER_SUB_TXFR';
78587 --
78588 l_balance_type_code          := 'A';
78589 l_segment                     := NULL;
78590 l_ccid                        := NULL;
78591 l_adr_transaction_coa_id      := NULL;
78592 l_adr_accounting_coa_id       := NULL;
78593 l_adr_flexfield_segment_code  := NULL;
78594 l_adr_flex_value_set_id       := NULL;
78595 l_adr_value_type_code         := NULL;
78596 l_adr_value_combination_id    := NULL;
78597 l_adr_value_segment_code      := NULL;
78598 
78599 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
78600 l_bflow_class_code           := '';    -- 4219869 Business Flow
78601 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
78602 l_budgetary_control_flag     := 'N';
78603 
78604 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
78605 l_bflow_applied_to_amt       := NULL; -- 5132302
78606 l_entered_amt_idx            := NULL;          -- 4262811
78607 l_accted_amt_idx             := NULL;          -- 4262811
78608 l_acc_rev_flag               := NULL;          -- 4262811
78609 l_accrual_line_num           := NULL;          -- 4262811
78610 l_tmp_amt                    := NULL;          -- 4262811
78611 --
78612  
78613 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
78614     l_balance_type_code <> 'B' THEN
78615 IF NVL(p_source_24,9E125) =  1
78616  THEN 
78617 
78618    --
78619    XLA_AE_LINES_PKG.SetNewLine;
78620 
78621    p_balance_type_code          := l_balance_type_code;
78622    -- set the flag so later we will know whether the gain loss line needs to be created
78623    
78624    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
78625      p_actual_flag :='A';
78626    END IF;
78627 
78628    --
78629    -- bulk performance
78630    --
78631    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
78632                                       p_header_num   => 0); -- 4262811
78633    --
78634    -- set accounting line options
78635    --
78636    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
78637            p_natural_side_code          => 'D'
78638          , p_gain_or_loss_flag          => 'N'
78639          , p_gl_transfer_mode_code      => 'S'
78640          , p_acct_entry_type_code       => 'A'
78641          , p_switch_side_flag           => 'Y'
78642          , p_merge_duplicate_code       => 'N'
78643          );
78644    --
78645    l_acc_rev_natural_side_code := 'C';  -- 4262811
78646    -- 
78647    --
78648    -- set accounting line type info
78649    --
78650    xla_ae_lines_pkg.SetAcctLineType
78651       (p_component_type             => l_component_type
78652       ,p_event_type_code            => l_event_type_code
78653       ,p_line_definition_owner_code => l_line_definition_owner_code
78654       ,p_line_definition_code       => l_line_definition_code
78655       ,p_accounting_line_code       => l_component_code
78656       ,p_accounting_line_type_code  => l_component_type_code
78657       ,p_accounting_line_appl_id    => l_component_appl_id
78658       ,p_amb_context_code           => l_amb_context_code
78659       ,p_entity_code                => l_entity_code
78660       ,p_event_class_code           => l_event_class_code);
78661    --
78662    -- set accounting class
78663    --
78664    xla_ae_lines_pkg.SetAcctClass(
78665            p_accounting_class_code  => 'INVENTORY_VALUATION'
78666          , p_ae_header_id           => l_ae_header_id
78667          );
78668 
78669    --
78670    -- set rounding class
78671    --
78672    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
78673                       'INVENTORY_VALUATION';
78674 
78675    --
78676    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
78677    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
78678    --
78679    -- bulk performance
78680    --
78681    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
78682 
78683    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
78684       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
78685 
78686    -- 4955764
78687    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78688       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
78689 
78690    -- 4458381 Public Sector Enh
78691    
78692    --
78693    -- set accounting attributes for the line type
78694    --
78695    l_entered_amt_idx := 3;
78696    l_accted_amt_idx  := 8;
78697    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
78698    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
78699    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
78700    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
78701    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
78702    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
78703    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
78704    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
78705    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
78706    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
78707    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
78708    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
78709    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
78710    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
78711    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
78712    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
78713    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
78714 
78715    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
78716    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
78717 
78718    ---------------------------------------------------------------------------------------------------------------
78719    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
78720    ---------------------------------------------------------------------------------------------------------------
78721    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
78722 
78723    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78724    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78725 
78726    IF xla_accounting_cache_pkg.GetValueChar
78727          (p_source_code         => 'LEDGER_CATEGORY_CODE'
78728          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
78729    AND l_bflow_method_code = 'PRIOR_ENTRY'
78730 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
78731    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
78732          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
78733        )
78734    THEN
78735          xla_ae_lines_pkg.BflowUpgEntry
78736            (p_business_method_code    => l_bflow_method_code
78737            ,p_business_class_code     => l_bflow_class_code
78738            ,p_balance_type            => l_balance_type_code);
78739    ELSE
78740       NULL;
78741 -- No business flow processing for business flow method of NONE.
78742    END IF;
78743 
78744    --
78745    -- call analytical criteria
78746    --
78747    
78748    --
78749    -- call description
78750    --
78751    -- No description or it is inherited.
78752    --
78753    -- call ADRs
78754    -- Bug 4922099
78755    --
78756    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78757         (NVL(l_actual_upg_option, 'N') = 'O') OR
78758         (NVL(l_enc_upg_option, 'N') = 'O')
78759       )
78760    THEN
78761    NULL;
78762    --
78763    --
78764    
78765   l_ccid := AcctDerRule_4(
78766            p_application_id           => p_application_id
78767          , p_ae_header_id             => l_ae_header_id 
78768 , p_source_4 => p_source_4
78769          , x_transaction_coa_id       => l_adr_transaction_coa_id
78770          , x_accounting_coa_id        => l_adr_accounting_coa_id
78771          , x_value_type_code          => l_adr_value_type_code
78772          , p_side                     => 'NA'
78773    );
78774 
78775    xla_ae_lines_pkg.set_ccid(
78776     p_code_combination_id          => l_ccid
78777   , p_value_type_code              => l_adr_value_type_code
78778   , p_transaction_coa_id           => l_adr_transaction_coa_id
78779   , p_accounting_coa_id            => l_adr_accounting_coa_id
78780   , p_adr_code                     => 'CST_DEFAULT'
78781   , p_adr_type_code                => 'S'
78782   , p_component_type               => l_component_type
78783   , p_component_code               => l_component_code
78784   , p_component_type_code          => l_component_type_code
78785   , p_component_appl_id            => l_component_appl_id
78786   , p_amb_context_code             => l_amb_context_code
78787   , p_side                         => 'NA'
78788   );
78789 
78790 
78791    --
78792    --
78793    END IF;
78794    --
78795    -- Bug 4922099
78796    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
78797           (NVL(l_enc_upg_option, 'N') = 'O')
78798         ) AND
78799         (l_bflow_method_code = 'PRIOR_ENTRY')
78800       )
78801    THEN
78802       IF
78803       --
78804       1 = 2
78805       --
78806       THEN
78807       xla_accounting_err_pkg.build_message
78808                                     (p_appli_s_name            => 'XLA'
78809                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78810                                     ,p_token_1                 => 'LINE_NUMBER'
78811                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
78812                                     ,p_token_2                 => 'LINE_TYPE_NAME'
78813                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
78814                                                                              l_component_type
78815                                                                             ,l_component_code
78816                                                                             ,l_component_type_code
78817                                                                             ,l_component_appl_id
78818                                                                             ,l_amb_context_code
78819                                                                             ,l_entity_code
78820                                                                             ,l_event_class_code
78821                                                                            )
78822                                     ,p_token_3                 => 'OWNER'
78823                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
78824                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
78825                                                                           ,p_lookup_code    => l_component_type_code
78826                                                                          )
78827                                     ,p_token_4                 => 'PRODUCT_NAME'
78828                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
78829                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
78830                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
78831                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
78832                                     ,p_ae_header_id            =>  NULL
78833                                        );
78834 
78835         IF (C_LEVEL_ERROR>= g_log_level) THEN
78836                  trace
78837                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78838                       ,p_level    => C_LEVEL_ERROR
78839                       ,p_module   => l_log_module);
78840         END IF;
78841       END IF;
78842    END IF;
78843    --
78844    --
78845    ------------------------------------------------------------------------------------------------
78846    -- 4219869 Business Flow
78847    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
78848    -- Prior Entry.  Currently, the following code is always generated.
78849    ------------------------------------------------------------------------------------------------
78850    XLA_AE_LINES_PKG.ValidateCurrentLine;
78851 
78852    ------------------------------------------------------------------------------------
78853    -- 4219869 Business Flow
78854    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
78855    ------------------------------------------------------------------------------------
78856    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78857 
78858    ----------------------------------------------------------------------------------
78859    -- 4219869 Business Flow
78860    -- Update journal entry status -- Need to generate this within IF <condition>
78861    ----------------------------------------------------------------------------------
78862    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78863          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
78864          ,p_balance_type_code => l_balance_type_code
78865          );
78866 
78867    -------------------------------------------------------------------------------------------
78868    -- 4262811 - Generate the Accrual Reversal lines
78869    -------------------------------------------------------------------------------------------
78870    BEGIN
78871       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
78872                               (g_array_event(p_event_id).array_value_num('header_index'));
78873       IF l_acc_rev_flag IS NULL THEN
78874          l_acc_rev_flag := 'N';
78875       END IF;
78876    EXCEPTION
78877       WHEN OTHERS THEN
78878          l_acc_rev_flag := 'N';
78879    END;
78880    --
78881    IF (l_acc_rev_flag = 'Y') THEN
78882 
78883        -- 4645092  ------------------------------------------------------------------------------
78884        -- To allow MPA report to determine if it should generate report process
78885        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
78886        ------------------------------------------------------------------------------------------
78887 
78888        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
78889        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
78890    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
78891    -- call ADRs
78892    -- Bug 4922099
78893    --
78894    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78895         (NVL(l_actual_upg_option, 'N') = 'O') OR
78896         (NVL(l_enc_upg_option, 'N') = 'O')
78897       )
78898    THEN
78899    NULL;
78900    --
78901    --
78902    
78903   l_ccid := AcctDerRule_4(
78904            p_application_id           => p_application_id
78905          , p_ae_header_id             => l_ae_header_id 
78906 , p_source_4 => p_source_4
78907          , x_transaction_coa_id       => l_adr_transaction_coa_id
78908          , x_accounting_coa_id        => l_adr_accounting_coa_id
78909          , x_value_type_code          => l_adr_value_type_code
78910          , p_side                     => 'NA'
78911    );
78912 
78913    xla_ae_lines_pkg.set_ccid(
78914     p_code_combination_id          => l_ccid
78915   , p_value_type_code              => l_adr_value_type_code
78916   , p_transaction_coa_id           => l_adr_transaction_coa_id
78917   , p_accounting_coa_id            => l_adr_accounting_coa_id
78918   , p_adr_code                     => 'CST_DEFAULT'
78919   , p_adr_type_code                => 'S'
78920   , p_component_type               => l_component_type
78921   , p_component_code               => l_component_code
78922   , p_component_type_code          => l_component_type_code
78923   , p_component_appl_id            => l_component_appl_id
78924   , p_amb_context_code             => l_amb_context_code
78925   , p_side                         => 'NA'
78926   );
78927 
78928 
78929    --
78930    --
78931    END IF;
78932 
78933        --
78934        -- Update the line information that should be overwritten
78935        --
78936        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
78937                                          p_header_num   => 1);
78938        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
78939 
78940        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
78941 
78942        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
78943           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
78944        END IF;
78945 
78946       --
78947       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
78948       --
78949       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
78950           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
78951       ELSE
78952           ---------------------------------------------------------------------------------------------------
78953           -- 4262811a Switch Sign
78954           ---------------------------------------------------------------------------------------------------
78955           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
78956           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78957                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78958           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78959                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78960           -- 5132302
78961           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
78962                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78963 
78964       END IF;
78965 
78966       -- 4955764
78967       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78968       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
78969 
78970 
78971       XLA_AE_LINES_PKG.ValidateCurrentLine;
78972       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78973 
78974       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78975                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
78976                ,p_balance_type_code => l_balance_type_code);
78977 
78978    END IF;
78979 
78980    -----------------------------------------------------------------------------------------
78981    -- 4262811 Multiperiod Accounting
78982    -----------------------------------------------------------------------------------------
78983      -- No MPA option is assigned.
78984 
78985 
78986 END IF;
78987 END IF;
78988 --
78989 
78990 --
78991 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78992    trace
78993       (p_msg      => 'END of AcctLineType_144'
78994       ,p_level    => C_LEVEL_PROCEDURE
78995       ,p_module   => l_log_module);
78996 END IF;
78997 --
78998 EXCEPTION
78999   WHEN xla_exceptions_pkg.application_exception THEN
79000       RAISE;
79001   WHEN OTHERS THEN
79002        xla_exceptions_pkg.raise_message
79003            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_144');
79004 END AcctLineType_144;
79005 --
79006 
79007 ---------------------------------------
79008 --
79009 -- PRIVATE FUNCTION
79010 --         AcctLineType_145
79011 --
79012 ---------------------------------------
79013 PROCEDURE AcctLineType_145 (
79014   p_application_id        IN NUMBER
79015  ,p_event_id              IN NUMBER
79016  ,p_calculate_acctd_flag  IN VARCHAR2
79017  ,p_calculate_g_l_flag    IN VARCHAR2
79018  ,p_actual_flag           IN OUT VARCHAR2
79019  ,p_balance_type_code     OUT VARCHAR2
79020  ,p_gain_or_loss_ref      OUT VARCHAR2
79021  
79022 --Cost Management Default Account
79023  , p_source_4            IN NUMBER
79024 --Applied to Application ID
79025  , p_source_6            IN NUMBER
79026 --Applied to Distribution Link Type
79027  , p_source_7            IN VARCHAR2
79028 --Applied to Entity Code
79029  , p_source_8            IN VARCHAR2
79030 --DISTRIBUTION_IDENTIFIER
79031  , p_source_11            IN NUMBER
79032 --Distribution Type
79033  , p_source_12            IN VARCHAR2
79034  , p_source_12_meaning    IN VARCHAR2
79035 --Encumbrance Reversal Amount Entered
79036  , p_source_14            IN NUMBER
79037 --Entered Currency Code
79038  , p_source_15            IN VARCHAR2
79039 --Transaction Encumbrance Reversal Amount
79040  , p_source_16            IN NUMBER
79041 --Entered Amount
79042  , p_source_18            IN NUMBER
79043 --Currency Conversion Date
79044  , p_source_19            IN DATE
79045 --Currency Conversion Rate
79046  , p_source_20            IN NUMBER
79047 --Currency Conversion Type
79048  , p_source_21            IN VARCHAR2
79049 --Accounted Amount
79050  , p_source_22            IN NUMBER
79051 --Accounting Line Type
79052  , p_source_24            IN NUMBER
79053 --Costing Encumbrance Upgrade Option
79054  , p_source_27            IN VARCHAR2
79055 --TXN_PO_DISTRIBUTION_ID
79056  , p_source_28            IN NUMBER
79057 --TXN_PO_HEADER_ID
79058  , p_source_29            IN NUMBER
79059 --Requisition Budget Account
79060  , p_source_30            IN NUMBER
79061 --Requisition Encumbrance Type Identifier
79062  , p_source_31            IN NUMBER
79063 )
79064 IS
79065 
79066 l_component_type              VARCHAR2(80);
79067 l_component_code              VARCHAR2(30);
79068 l_component_type_code         VARCHAR2(1);
79069 l_component_appl_id           INTEGER;
79070 l_amb_context_code            VARCHAR2(30);
79071 l_entity_code                 VARCHAR2(30);
79072 l_event_class_code            VARCHAR2(30);
79073 l_ae_header_id                NUMBER;
79074 l_event_type_code             VARCHAR2(30);
79075 l_line_definition_code        VARCHAR2(30);
79076 l_line_definition_owner_code  VARCHAR2(1);
79077 --
79078 -- adr variables
79079 l_segment                     VARCHAR2(30);
79080 l_ccid                        NUMBER;
79081 l_adr_transaction_coa_id      NUMBER;
79082 l_adr_accounting_coa_id       NUMBER;
79083 l_adr_flexfield_segment_code  VARCHAR2(30);
79084 l_adr_flex_value_set_id       NUMBER;
79085 l_adr_value_type_code         VARCHAR2(30);
79086 l_adr_value_combination_id    NUMBER;
79087 l_adr_value_segment_code      VARCHAR2(30);
79088 
79089 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
79090 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
79091 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
79092 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
79093 
79094 -- 4262811 Variables ------------------------------------------------------------------------------------------
79095 l_entered_amt_idx             NUMBER;
79096 l_accted_amt_idx              NUMBER;
79097 l_acc_rev_flag                VARCHAR2(1);
79098 l_accrual_line_num            NUMBER;
79099 l_tmp_amt                     NUMBER;
79100 l_acc_rev_natural_side_code   VARCHAR2(1);
79101 
79102 l_num_entries                 NUMBER;
79103 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
79104 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
79105 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
79106 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
79107 l_recog_line_1                NUMBER;
79108 l_recog_line_2                NUMBER;
79109 
79110 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
79111 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
79112 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
79113 
79114 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
79115 
79116 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
79117 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
79118 
79119 ---------------------------------------------------------------------------------------------------------------
79120 
79121 
79122 --
79123 -- bulk performance
79124 --
79125 l_balance_type_code           VARCHAR2(1);
79126 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
79127 l_log_module                  VARCHAR2(240);
79128 
79129 --
79130 -- Upgrade strategy
79131 --
79132 l_actual_upg_option           VARCHAR2(1);
79133 l_enc_upg_option           VARCHAR2(1);
79134 
79135 --
79136 BEGIN
79137 --
79138 IF g_log_enabled THEN
79139       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_145';
79140 END IF;
79141 --
79142 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79143 
79144       trace
79145          (p_msg      => 'BEGIN of AcctLineType_145'
79146          ,p_level    => C_LEVEL_PROCEDURE
79147          ,p_module   => l_log_module);
79148 
79149 END IF;
79150 --
79151 l_component_type             := 'AMB_JLT';
79152 l_component_code             := 'INVENTORY_VALUATION';
79153 l_component_type_code        := 'S';
79154 l_component_appl_id          :=  707;
79155 l_amb_context_code           := 'DEFAULT';
79156 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
79157 l_event_class_code           := 'FOB_SHIP_RECIPIENT_RCPT';
79158 l_event_type_code            := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
79159 l_line_definition_owner_code := 'S';
79160 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_RCPT';
79161 --
79162 l_balance_type_code          := 'A';
79163 l_segment                     := NULL;
79164 l_ccid                        := NULL;
79165 l_adr_transaction_coa_id      := NULL;
79166 l_adr_accounting_coa_id       := NULL;
79167 l_adr_flexfield_segment_code  := NULL;
79168 l_adr_flex_value_set_id       := NULL;
79169 l_adr_value_type_code         := NULL;
79170 l_adr_value_combination_id    := NULL;
79171 l_adr_value_segment_code      := NULL;
79172 
79173 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
79174 l_bflow_class_code           := '';    -- 4219869 Business Flow
79175 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
79176 l_budgetary_control_flag     := 'N';
79177 
79178 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
79179 l_bflow_applied_to_amt       := NULL; -- 5132302
79180 l_entered_amt_idx            := NULL;          -- 4262811
79181 l_accted_amt_idx             := NULL;          -- 4262811
79182 l_acc_rev_flag               := NULL;          -- 4262811
79183 l_accrual_line_num           := NULL;          -- 4262811
79184 l_tmp_amt                    := NULL;          -- 4262811
79185 --
79186  
79187 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
79188     l_balance_type_code <> 'B' THEN
79189 IF NVL(p_source_24,9E125) =  1
79190  THEN 
79191 
79192    --
79193    XLA_AE_LINES_PKG.SetNewLine;
79194 
79195    p_balance_type_code          := l_balance_type_code;
79196    -- set the flag so later we will know whether the gain loss line needs to be created
79197    
79198    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
79199      p_actual_flag :='A';
79200    END IF;
79201 
79202    --
79203    -- bulk performance
79204    --
79205    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
79206                                       p_header_num   => 0); -- 4262811
79207    --
79208    -- set accounting line options
79209    --
79210    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
79211            p_natural_side_code          => 'D'
79212          , p_gain_or_loss_flag          => 'N'
79213          , p_gl_transfer_mode_code      => 'S'
79214          , p_acct_entry_type_code       => 'A'
79215          , p_switch_side_flag           => 'Y'
79216          , p_merge_duplicate_code       => 'N'
79217          );
79218    --
79219    l_acc_rev_natural_side_code := 'C';  -- 4262811
79220    -- 
79221    --
79222    -- set accounting line type info
79223    --
79224    xla_ae_lines_pkg.SetAcctLineType
79225       (p_component_type             => l_component_type
79226       ,p_event_type_code            => l_event_type_code
79227       ,p_line_definition_owner_code => l_line_definition_owner_code
79228       ,p_line_definition_code       => l_line_definition_code
79229       ,p_accounting_line_code       => l_component_code
79230       ,p_accounting_line_type_code  => l_component_type_code
79231       ,p_accounting_line_appl_id    => l_component_appl_id
79232       ,p_amb_context_code           => l_amb_context_code
79233       ,p_entity_code                => l_entity_code
79234       ,p_event_class_code           => l_event_class_code);
79235    --
79236    -- set accounting class
79237    --
79238    xla_ae_lines_pkg.SetAcctClass(
79239            p_accounting_class_code  => 'INVENTORY_VALUATION'
79240          , p_ae_header_id           => l_ae_header_id
79241          );
79242 
79243    --
79244    -- set rounding class
79245    --
79246    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
79247                       'INVENTORY_VALUATION';
79248 
79249    --
79250    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
79251    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
79252    --
79253    -- bulk performance
79254    --
79255    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
79256 
79257    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
79258       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
79259 
79260    -- 4955764
79261    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79262       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
79263 
79264    -- 4458381 Public Sector Enh
79265    
79266    --
79267    -- set accounting attributes for the line type
79268    --
79269    l_entered_amt_idx := 17;
79270    l_accted_amt_idx  := 22;
79271    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
79272    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
79273    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
79274    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
79275    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
79276    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
79277    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
79278    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
79279    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
79280    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
79281    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
79282    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
79283    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
79284    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
79285    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
79286    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
79287    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
79288    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
79289    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
79290    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
79291    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
79292    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
79293    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
79294    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
79295    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
79296    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
79297    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
79298    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
79299    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
79300    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
79301    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
79302    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
79303    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
79304    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
79305    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
79306    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
79307    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
79308    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
79309    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
79310    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
79311    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
79312    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
79313    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
79314    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
79315    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
79316    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
79317    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
79318    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
79319    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
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_000007_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           := 'INTRAORG_TXFR';
79744 l_event_type_code            := 'INTRAORG_TXFR_ALL';
79745 l_line_definition_owner_code := 'S';
79746 l_line_definition_code       := 'INTRAORG_TXFR';
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_000007_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 --DISTRIBUTION_IDENTIFIER
80185  , p_source_11            IN NUMBER
80186 --Distribution Type
80187  , p_source_12            IN VARCHAR2
80188  , p_source_12_meaning    IN VARCHAR2
80189 --Entered Currency Code
80190  , p_source_15            IN VARCHAR2
80191 --Entered Amount
80192  , p_source_18            IN NUMBER
80193 --Currency Conversion Date
80194  , p_source_19            IN DATE
80195 --Currency Conversion Rate
80196  , p_source_20            IN NUMBER
80197 --Currency Conversion Type
80198  , p_source_21            IN VARCHAR2
80199 --Accounted Amount
80200  , p_source_22            IN NUMBER
80201 --Accounting Line Type
80202  , p_source_24            IN NUMBER
80203 )
80204 IS
80205 
80206 l_component_type              VARCHAR2(80);
80207 l_component_code              VARCHAR2(30);
80208 l_component_type_code         VARCHAR2(1);
80209 l_component_appl_id           INTEGER;
80210 l_amb_context_code            VARCHAR2(30);
80211 l_entity_code                 VARCHAR2(30);
80212 l_event_class_code            VARCHAR2(30);
80213 l_ae_header_id                NUMBER;
80214 l_event_type_code             VARCHAR2(30);
80215 l_line_definition_code        VARCHAR2(30);
80216 l_line_definition_owner_code  VARCHAR2(1);
80217 --
80218 -- adr variables
80219 l_segment                     VARCHAR2(30);
80220 l_ccid                        NUMBER;
80221 l_adr_transaction_coa_id      NUMBER;
80222 l_adr_accounting_coa_id       NUMBER;
80223 l_adr_flexfield_segment_code  VARCHAR2(30);
80224 l_adr_flex_value_set_id       NUMBER;
80225 l_adr_value_type_code         VARCHAR2(30);
80226 l_adr_value_combination_id    NUMBER;
80227 l_adr_value_segment_code      VARCHAR2(30);
80228 
80229 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
80230 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
80231 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
80232 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
80233 
80234 -- 4262811 Variables ------------------------------------------------------------------------------------------
80235 l_entered_amt_idx             NUMBER;
80236 l_accted_amt_idx              NUMBER;
80237 l_acc_rev_flag                VARCHAR2(1);
80238 l_accrual_line_num            NUMBER;
80239 l_tmp_amt                     NUMBER;
80240 l_acc_rev_natural_side_code   VARCHAR2(1);
80241 
80242 l_num_entries                 NUMBER;
80243 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
80244 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
80245 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
80246 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
80247 l_recog_line_1                NUMBER;
80248 l_recog_line_2                NUMBER;
80249 
80250 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
80251 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
80252 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
80253 
80254 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
80255 
80256 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
80257 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
80258 
80259 ---------------------------------------------------------------------------------------------------------------
80260 
80261 
80262 --
80263 -- bulk performance
80264 --
80265 l_balance_type_code           VARCHAR2(1);
80266 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
80267 l_log_module                  VARCHAR2(240);
80268 
80269 --
80270 -- Upgrade strategy
80271 --
80272 l_actual_upg_option           VARCHAR2(1);
80273 l_enc_upg_option           VARCHAR2(1);
80274 
80275 --
80276 BEGIN
80277 --
80278 IF g_log_enabled THEN
80279       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_147';
80280 END IF;
80281 --
80282 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80283 
80284       trace
80285          (p_msg      => 'BEGIN of AcctLineType_147'
80286          ,p_level    => C_LEVEL_PROCEDURE
80287          ,p_module   => l_log_module);
80288 
80289 END IF;
80290 --
80291 l_component_type             := 'AMB_JLT';
80292 l_component_code             := 'INVENTORY_VALUATION';
80293 l_component_type_code        := 'S';
80294 l_component_appl_id          :=  707;
80295 l_amb_context_code           := 'DEFAULT';
80296 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
80297 l_event_class_code           := 'MISC_ISSUE_RCPT';
80298 l_event_type_code            := 'MISC_ISSUE_RCPT_ALL';
80299 l_line_definition_owner_code := 'S';
80300 l_line_definition_code       := 'MISC_ISSUE_RCPT';
80301 --
80302 l_balance_type_code          := 'A';
80303 l_segment                     := NULL;
80304 l_ccid                        := NULL;
80305 l_adr_transaction_coa_id      := NULL;
80306 l_adr_accounting_coa_id       := NULL;
80307 l_adr_flexfield_segment_code  := NULL;
80308 l_adr_flex_value_set_id       := NULL;
80309 l_adr_value_type_code         := NULL;
80310 l_adr_value_combination_id    := NULL;
80311 l_adr_value_segment_code      := NULL;
80312 
80313 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
80314 l_bflow_class_code           := '';    -- 4219869 Business Flow
80315 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
80316 l_budgetary_control_flag     := 'N';
80317 
80318 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
80319 l_bflow_applied_to_amt       := NULL; -- 5132302
80320 l_entered_amt_idx            := NULL;          -- 4262811
80321 l_accted_amt_idx             := NULL;          -- 4262811
80322 l_acc_rev_flag               := NULL;          -- 4262811
80323 l_accrual_line_num           := NULL;          -- 4262811
80324 l_tmp_amt                    := NULL;          -- 4262811
80325 --
80326  
80327 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
80328     l_balance_type_code <> 'B' THEN
80329 IF NVL(p_source_24,9E125) =  1
80330  THEN 
80331 
80332    --
80333    XLA_AE_LINES_PKG.SetNewLine;
80334 
80335    p_balance_type_code          := l_balance_type_code;
80336    -- set the flag so later we will know whether the gain loss line needs to be created
80337    
80338    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
80339      p_actual_flag :='A';
80340    END IF;
80341 
80342    --
80343    -- bulk performance
80344    --
80345    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
80346                                       p_header_num   => 0); -- 4262811
80347    --
80348    -- set accounting line options
80349    --
80350    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
80351            p_natural_side_code          => 'D'
80352          , p_gain_or_loss_flag          => 'N'
80353          , p_gl_transfer_mode_code      => 'S'
80354          , p_acct_entry_type_code       => 'A'
80355          , p_switch_side_flag           => 'Y'
80356          , p_merge_duplicate_code       => 'N'
80357          );
80358    --
80359    l_acc_rev_natural_side_code := 'C';  -- 4262811
80360    -- 
80361    --
80362    -- set accounting line type info
80363    --
80364    xla_ae_lines_pkg.SetAcctLineType
80365       (p_component_type             => l_component_type
80366       ,p_event_type_code            => l_event_type_code
80367       ,p_line_definition_owner_code => l_line_definition_owner_code
80368       ,p_line_definition_code       => l_line_definition_code
80369       ,p_accounting_line_code       => l_component_code
80370       ,p_accounting_line_type_code  => l_component_type_code
80371       ,p_accounting_line_appl_id    => l_component_appl_id
80372       ,p_amb_context_code           => l_amb_context_code
80373       ,p_entity_code                => l_entity_code
80374       ,p_event_class_code           => l_event_class_code);
80375    --
80376    -- set accounting class
80377    --
80378    xla_ae_lines_pkg.SetAcctClass(
80379            p_accounting_class_code  => 'INVENTORY_VALUATION'
80380          , p_ae_header_id           => l_ae_header_id
80381          );
80382 
80383    --
80384    -- set rounding class
80385    --
80386    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
80387                       'INVENTORY_VALUATION';
80388 
80389    --
80390    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
80391    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
80392    --
80393    -- bulk performance
80394    --
80395    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
80396 
80397    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
80398       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
80399 
80400    -- 4955764
80401    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80402       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
80403 
80404    -- 4458381 Public Sector Enh
80405    
80406    --
80407    -- set accounting attributes for the line type
80408    --
80409    l_entered_amt_idx := 3;
80410    l_accted_amt_idx  := 8;
80411    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
80412    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
80413    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
80414    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
80415    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
80416    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
80417    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
80418    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
80419    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
80420    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
80421    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
80422    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
80423    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
80424    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
80425    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
80426    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
80427    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
80428 
80429    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
80430    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
80431 
80432    ---------------------------------------------------------------------------------------------------------------
80433    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
80434    ---------------------------------------------------------------------------------------------------------------
80435    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
80436 
80437    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80438    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80439 
80440    IF xla_accounting_cache_pkg.GetValueChar
80441          (p_source_code         => 'LEDGER_CATEGORY_CODE'
80442          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
80443    AND l_bflow_method_code = 'PRIOR_ENTRY'
80444 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
80445    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
80446          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
80447        )
80448    THEN
80449          xla_ae_lines_pkg.BflowUpgEntry
80450            (p_business_method_code    => l_bflow_method_code
80451            ,p_business_class_code     => l_bflow_class_code
80452            ,p_balance_type            => l_balance_type_code);
80453    ELSE
80454       NULL;
80455 -- No business flow processing for business flow method of NONE.
80456    END IF;
80457 
80458    --
80459    -- call analytical criteria
80460    --
80461    
80462    --
80463    -- call description
80464    --
80465    -- No description or it is inherited.
80466    --
80467    -- call ADRs
80468    -- Bug 4922099
80469    --
80470    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80471         (NVL(l_actual_upg_option, 'N') = 'O') OR
80472         (NVL(l_enc_upg_option, 'N') = 'O')
80473       )
80474    THEN
80475    NULL;
80476    --
80477    --
80478    
80479   l_ccid := AcctDerRule_4(
80480            p_application_id           => p_application_id
80481          , p_ae_header_id             => l_ae_header_id 
80482 , p_source_4 => p_source_4
80483          , x_transaction_coa_id       => l_adr_transaction_coa_id
80484          , x_accounting_coa_id        => l_adr_accounting_coa_id
80485          , x_value_type_code          => l_adr_value_type_code
80486          , p_side                     => 'NA'
80487    );
80488 
80489    xla_ae_lines_pkg.set_ccid(
80490     p_code_combination_id          => l_ccid
80491   , p_value_type_code              => l_adr_value_type_code
80492   , p_transaction_coa_id           => l_adr_transaction_coa_id
80493   , p_accounting_coa_id            => l_adr_accounting_coa_id
80494   , p_adr_code                     => 'CST_DEFAULT'
80495   , p_adr_type_code                => 'S'
80496   , p_component_type               => l_component_type
80497   , p_component_code               => l_component_code
80498   , p_component_type_code          => l_component_type_code
80499   , p_component_appl_id            => l_component_appl_id
80500   , p_amb_context_code             => l_amb_context_code
80501   , p_side                         => 'NA'
80502   );
80503 
80504 
80505    --
80506    --
80507    END IF;
80508    --
80509    -- Bug 4922099
80510    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
80511           (NVL(l_enc_upg_option, 'N') = 'O')
80512         ) AND
80513         (l_bflow_method_code = 'PRIOR_ENTRY')
80514       )
80515    THEN
80516       IF
80517       --
80518       1 = 2
80519       --
80520       THEN
80521       xla_accounting_err_pkg.build_message
80522                                     (p_appli_s_name            => 'XLA'
80523                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80524                                     ,p_token_1                 => 'LINE_NUMBER'
80525                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
80526                                     ,p_token_2                 => 'LINE_TYPE_NAME'
80527                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
80528                                                                              l_component_type
80529                                                                             ,l_component_code
80530                                                                             ,l_component_type_code
80531                                                                             ,l_component_appl_id
80532                                                                             ,l_amb_context_code
80533                                                                             ,l_entity_code
80534                                                                             ,l_event_class_code
80535                                                                            )
80536                                     ,p_token_3                 => 'OWNER'
80537                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
80538                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
80539                                                                           ,p_lookup_code    => l_component_type_code
80540                                                                          )
80541                                     ,p_token_4                 => 'PRODUCT_NAME'
80542                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
80543                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
80544                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
80545                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
80546                                     ,p_ae_header_id            =>  NULL
80547                                        );
80548 
80549         IF (C_LEVEL_ERROR>= g_log_level) THEN
80550                  trace
80551                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80552                       ,p_level    => C_LEVEL_ERROR
80553                       ,p_module   => l_log_module);
80554         END IF;
80555       END IF;
80556    END IF;
80557    --
80558    --
80559    ------------------------------------------------------------------------------------------------
80560    -- 4219869 Business Flow
80561    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
80562    -- Prior Entry.  Currently, the following code is always generated.
80563    ------------------------------------------------------------------------------------------------
80564    XLA_AE_LINES_PKG.ValidateCurrentLine;
80565 
80566    ------------------------------------------------------------------------------------
80567    -- 4219869 Business Flow
80568    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
80569    ------------------------------------------------------------------------------------
80570    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80571 
80572    ----------------------------------------------------------------------------------
80573    -- 4219869 Business Flow
80574    -- Update journal entry status -- Need to generate this within IF <condition>
80575    ----------------------------------------------------------------------------------
80576    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80577          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
80578          ,p_balance_type_code => l_balance_type_code
80579          );
80580 
80581    -------------------------------------------------------------------------------------------
80582    -- 4262811 - Generate the Accrual Reversal lines
80583    -------------------------------------------------------------------------------------------
80584    BEGIN
80585       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
80586                               (g_array_event(p_event_id).array_value_num('header_index'));
80587       IF l_acc_rev_flag IS NULL THEN
80588          l_acc_rev_flag := 'N';
80589       END IF;
80590    EXCEPTION
80591       WHEN OTHERS THEN
80592          l_acc_rev_flag := 'N';
80593    END;
80594    --
80595    IF (l_acc_rev_flag = 'Y') THEN
80596 
80597        -- 4645092  ------------------------------------------------------------------------------
80598        -- To allow MPA report to determine if it should generate report process
80599        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
80600        ------------------------------------------------------------------------------------------
80601 
80602        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
80603        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
80604    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
80605    -- call ADRs
80606    -- Bug 4922099
80607    --
80608    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80609         (NVL(l_actual_upg_option, 'N') = 'O') OR
80610         (NVL(l_enc_upg_option, 'N') = 'O')
80611       )
80612    THEN
80613    NULL;
80614    --
80615    --
80616    
80617   l_ccid := AcctDerRule_4(
80618            p_application_id           => p_application_id
80619          , p_ae_header_id             => l_ae_header_id 
80620 , p_source_4 => p_source_4
80621          , x_transaction_coa_id       => l_adr_transaction_coa_id
80622          , x_accounting_coa_id        => l_adr_accounting_coa_id
80623          , x_value_type_code          => l_adr_value_type_code
80624          , p_side                     => 'NA'
80625    );
80626 
80627    xla_ae_lines_pkg.set_ccid(
80628     p_code_combination_id          => l_ccid
80629   , p_value_type_code              => l_adr_value_type_code
80630   , p_transaction_coa_id           => l_adr_transaction_coa_id
80631   , p_accounting_coa_id            => l_adr_accounting_coa_id
80632   , p_adr_code                     => 'CST_DEFAULT'
80633   , p_adr_type_code                => 'S'
80634   , p_component_type               => l_component_type
80635   , p_component_code               => l_component_code
80636   , p_component_type_code          => l_component_type_code
80637   , p_component_appl_id            => l_component_appl_id
80638   , p_amb_context_code             => l_amb_context_code
80639   , p_side                         => 'NA'
80640   );
80641 
80642 
80643    --
80644    --
80645    END IF;
80646 
80647        --
80648        -- Update the line information that should be overwritten
80649        --
80650        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
80651                                          p_header_num   => 1);
80652        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
80653 
80654        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
80655 
80656        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
80657           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
80658        END IF;
80659 
80660       --
80661       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
80662       --
80663       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
80664           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
80665       ELSE
80666           ---------------------------------------------------------------------------------------------------
80667           -- 4262811a Switch Sign
80668           ---------------------------------------------------------------------------------------------------
80669           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
80670           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80671                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80672           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80673                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80674           -- 5132302
80675           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
80676                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80677 
80678       END IF;
80679 
80680       -- 4955764
80681       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80682       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
80683 
80684 
80685       XLA_AE_LINES_PKG.ValidateCurrentLine;
80686       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80687 
80688       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80689                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
80690                ,p_balance_type_code => l_balance_type_code);
80691 
80692    END IF;
80693 
80694    -----------------------------------------------------------------------------------------
80695    -- 4262811 Multiperiod Accounting
80696    -----------------------------------------------------------------------------------------
80697      -- No MPA option is assigned.
80698 
80699 
80700 END IF;
80701 END IF;
80702 --
80703 
80704 --
80705 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80706    trace
80707       (p_msg      => 'END of AcctLineType_147'
80708       ,p_level    => C_LEVEL_PROCEDURE
80709       ,p_module   => l_log_module);
80710 END IF;
80711 --
80712 EXCEPTION
80713   WHEN xla_exceptions_pkg.application_exception THEN
80714       RAISE;
80715   WHEN OTHERS THEN
80716        xla_exceptions_pkg.raise_message
80717            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_147');
80718 END AcctLineType_147;
80719 --
80720 
80721 ---------------------------------------
80722 --
80723 -- PRIVATE FUNCTION
80724 --         AcctLineType_148
80725 --
80726 ---------------------------------------
80727 PROCEDURE AcctLineType_148 (
80728   p_application_id        IN NUMBER
80729  ,p_event_id              IN NUMBER
80730  ,p_calculate_acctd_flag  IN VARCHAR2
80731  ,p_calculate_g_l_flag    IN VARCHAR2
80732  ,p_actual_flag           IN OUT VARCHAR2
80733  ,p_balance_type_code     OUT VARCHAR2
80734  ,p_gain_or_loss_ref      OUT VARCHAR2
80735  
80736 --Cost Management Default Account
80737  , p_source_4            IN NUMBER
80738 --DISTRIBUTION_IDENTIFIER
80739  , p_source_11            IN NUMBER
80740 --Distribution Type
80741  , p_source_12            IN VARCHAR2
80742  , p_source_12_meaning    IN VARCHAR2
80743 --Entered Currency Code
80744  , p_source_15            IN VARCHAR2
80745 --Entered Amount
80746  , p_source_18            IN NUMBER
80747 --Currency Conversion Date
80748  , p_source_19            IN DATE
80749 --Currency Conversion Rate
80750  , p_source_20            IN NUMBER
80751 --Currency Conversion Type
80752  , p_source_21            IN VARCHAR2
80753 --Accounted Amount
80754  , p_source_22            IN NUMBER
80755 --Accounting Line Type
80756  , p_source_24            IN NUMBER
80757 )
80758 IS
80759 
80760 l_component_type              VARCHAR2(80);
80761 l_component_code              VARCHAR2(30);
80762 l_component_type_code         VARCHAR2(1);
80763 l_component_appl_id           INTEGER;
80764 l_amb_context_code            VARCHAR2(30);
80765 l_entity_code                 VARCHAR2(30);
80766 l_event_class_code            VARCHAR2(30);
80767 l_ae_header_id                NUMBER;
80768 l_event_type_code             VARCHAR2(30);
80769 l_line_definition_code        VARCHAR2(30);
80770 l_line_definition_owner_code  VARCHAR2(1);
80771 --
80772 -- adr variables
80773 l_segment                     VARCHAR2(30);
80774 l_ccid                        NUMBER;
80775 l_adr_transaction_coa_id      NUMBER;
80776 l_adr_accounting_coa_id       NUMBER;
80777 l_adr_flexfield_segment_code  VARCHAR2(30);
80778 l_adr_flex_value_set_id       NUMBER;
80779 l_adr_value_type_code         VARCHAR2(30);
80780 l_adr_value_combination_id    NUMBER;
80781 l_adr_value_segment_code      VARCHAR2(30);
80782 
80783 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
80784 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
80785 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
80786 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
80787 
80788 -- 4262811 Variables ------------------------------------------------------------------------------------------
80789 l_entered_amt_idx             NUMBER;
80790 l_accted_amt_idx              NUMBER;
80791 l_acc_rev_flag                VARCHAR2(1);
80792 l_accrual_line_num            NUMBER;
80793 l_tmp_amt                     NUMBER;
80794 l_acc_rev_natural_side_code   VARCHAR2(1);
80795 
80796 l_num_entries                 NUMBER;
80797 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
80798 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
80799 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
80800 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
80801 l_recog_line_1                NUMBER;
80802 l_recog_line_2                NUMBER;
80803 
80804 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
80805 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
80806 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
80807 
80808 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
80809 
80810 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
80811 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
80812 
80813 ---------------------------------------------------------------------------------------------------------------
80814 
80815 
80816 --
80817 -- bulk performance
80818 --
80819 l_balance_type_code           VARCHAR2(1);
80820 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
80821 l_log_module                  VARCHAR2(240);
80822 
80823 --
80824 -- Upgrade strategy
80825 --
80826 l_actual_upg_option           VARCHAR2(1);
80827 l_enc_upg_option           VARCHAR2(1);
80828 
80829 --
80830 BEGIN
80831 --
80832 IF g_log_enabled THEN
80833       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_148';
80834 END IF;
80835 --
80836 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80837 
80838       trace
80839          (p_msg      => 'BEGIN of AcctLineType_148'
80840          ,p_level    => C_LEVEL_PROCEDURE
80841          ,p_module   => l_log_module);
80842 
80843 END IF;
80844 --
80845 l_component_type             := 'AMB_JLT';
80846 l_component_code             := 'INVENTORY_VALUATION';
80847 l_component_type_code        := 'S';
80848 l_component_appl_id          :=  707;
80849 l_amb_context_code           := 'DEFAULT';
80850 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
80851 l_event_class_code           := 'USER_DEFINE';
80852 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
80853 l_line_definition_owner_code := 'S';
80854 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_NO_TP';
80855 --
80856 l_balance_type_code          := 'A';
80857 l_segment                     := NULL;
80858 l_ccid                        := NULL;
80859 l_adr_transaction_coa_id      := NULL;
80860 l_adr_accounting_coa_id       := NULL;
80861 l_adr_flexfield_segment_code  := NULL;
80862 l_adr_flex_value_set_id       := NULL;
80863 l_adr_value_type_code         := NULL;
80864 l_adr_value_combination_id    := NULL;
80865 l_adr_value_segment_code      := NULL;
80866 
80867 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
80868 l_bflow_class_code           := '';    -- 4219869 Business Flow
80869 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
80870 l_budgetary_control_flag     := 'N';
80871 
80872 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
80873 l_bflow_applied_to_amt       := NULL; -- 5132302
80874 l_entered_amt_idx            := NULL;          -- 4262811
80875 l_accted_amt_idx             := NULL;          -- 4262811
80876 l_acc_rev_flag               := NULL;          -- 4262811
80877 l_accrual_line_num           := NULL;          -- 4262811
80878 l_tmp_amt                    := NULL;          -- 4262811
80879 --
80880  
80881 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
80882     l_balance_type_code <> 'B' THEN
80883 IF NVL(p_source_24,9E125) =  1
80884  THEN 
80885 
80886    --
80887    XLA_AE_LINES_PKG.SetNewLine;
80888 
80889    p_balance_type_code          := l_balance_type_code;
80890    -- set the flag so later we will know whether the gain loss line needs to be created
80891    
80892    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
80893      p_actual_flag :='A';
80894    END IF;
80895 
80896    --
80897    -- bulk performance
80898    --
80899    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
80900                                       p_header_num   => 0); -- 4262811
80901    --
80902    -- set accounting line options
80903    --
80904    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
80905            p_natural_side_code          => 'D'
80906          , p_gain_or_loss_flag          => 'N'
80907          , p_gl_transfer_mode_code      => 'S'
80908          , p_acct_entry_type_code       => 'A'
80909          , p_switch_side_flag           => 'Y'
80910          , p_merge_duplicate_code       => 'N'
80911          );
80912    --
80913    l_acc_rev_natural_side_code := 'C';  -- 4262811
80914    -- 
80915    --
80916    -- set accounting line type info
80917    --
80918    xla_ae_lines_pkg.SetAcctLineType
80919       (p_component_type             => l_component_type
80920       ,p_event_type_code            => l_event_type_code
80921       ,p_line_definition_owner_code => l_line_definition_owner_code
80922       ,p_line_definition_code       => l_line_definition_code
80923       ,p_accounting_line_code       => l_component_code
80924       ,p_accounting_line_type_code  => l_component_type_code
80925       ,p_accounting_line_appl_id    => l_component_appl_id
80926       ,p_amb_context_code           => l_amb_context_code
80927       ,p_entity_code                => l_entity_code
80928       ,p_event_class_code           => l_event_class_code);
80929    --
80930    -- set accounting class
80931    --
80932    xla_ae_lines_pkg.SetAcctClass(
80933            p_accounting_class_code  => 'INVENTORY_VALUATION'
80934          , p_ae_header_id           => l_ae_header_id
80935          );
80936 
80937    --
80938    -- set rounding class
80939    --
80940    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
80941                       'INVENTORY_VALUATION';
80942 
80943    --
80944    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
80945    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
80946    --
80947    -- bulk performance
80948    --
80949    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
80950 
80951    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
80952       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
80953 
80954    -- 4955764
80955    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80956       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
80957 
80958    -- 4458381 Public Sector Enh
80959    
80960    --
80961    -- set accounting attributes for the line type
80962    --
80963    l_entered_amt_idx := 3;
80964    l_accted_amt_idx  := 8;
80965    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
80966    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
80967    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
80968    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
80969    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
80970    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
80971    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
80972    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
80973    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
80974    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
80975    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
80976    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
80977    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
80978    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
80979    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
80980    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
80981    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
80982 
80983    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
80984    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
80985 
80986    ---------------------------------------------------------------------------------------------------------------
80987    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
80988    ---------------------------------------------------------------------------------------------------------------
80989    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
80990 
80991    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80992    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80993 
80994    IF xla_accounting_cache_pkg.GetValueChar
80995          (p_source_code         => 'LEDGER_CATEGORY_CODE'
80996          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
80997    AND l_bflow_method_code = 'PRIOR_ENTRY'
80998 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
80999    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
81000          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
81001        )
81002    THEN
81003          xla_ae_lines_pkg.BflowUpgEntry
81004            (p_business_method_code    => l_bflow_method_code
81005            ,p_business_class_code     => l_bflow_class_code
81006            ,p_balance_type            => l_balance_type_code);
81007    ELSE
81008       NULL;
81009 -- No business flow processing for business flow method of NONE.
81010    END IF;
81011 
81012    --
81013    -- call analytical criteria
81014    --
81015    
81016    --
81017    -- call description
81018    --
81019    -- No description or it is inherited.
81020    --
81021    -- call ADRs
81022    -- Bug 4922099
81023    --
81024    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81025         (NVL(l_actual_upg_option, 'N') = 'O') OR
81026         (NVL(l_enc_upg_option, 'N') = 'O')
81027       )
81028    THEN
81029    NULL;
81030    --
81031    --
81032    
81033   l_ccid := AcctDerRule_4(
81034            p_application_id           => p_application_id
81035          , p_ae_header_id             => l_ae_header_id 
81036 , p_source_4 => p_source_4
81037          , x_transaction_coa_id       => l_adr_transaction_coa_id
81038          , x_accounting_coa_id        => l_adr_accounting_coa_id
81039          , x_value_type_code          => l_adr_value_type_code
81040          , p_side                     => 'NA'
81041    );
81042 
81043    xla_ae_lines_pkg.set_ccid(
81044     p_code_combination_id          => l_ccid
81045   , p_value_type_code              => l_adr_value_type_code
81046   , p_transaction_coa_id           => l_adr_transaction_coa_id
81047   , p_accounting_coa_id            => l_adr_accounting_coa_id
81048   , p_adr_code                     => 'CST_DEFAULT'
81049   , p_adr_type_code                => 'S'
81050   , p_component_type               => l_component_type
81051   , p_component_code               => l_component_code
81052   , p_component_type_code          => l_component_type_code
81053   , p_component_appl_id            => l_component_appl_id
81054   , p_amb_context_code             => l_amb_context_code
81055   , p_side                         => 'NA'
81056   );
81057 
81058 
81059    --
81060    --
81061    END IF;
81062    --
81063    -- Bug 4922099
81064    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
81065           (NVL(l_enc_upg_option, 'N') = 'O')
81066         ) AND
81067         (l_bflow_method_code = 'PRIOR_ENTRY')
81068       )
81069    THEN
81070       IF
81071       --
81072       1 = 2
81073       --
81074       THEN
81075       xla_accounting_err_pkg.build_message
81076                                     (p_appli_s_name            => 'XLA'
81077                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81078                                     ,p_token_1                 => 'LINE_NUMBER'
81079                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
81080                                     ,p_token_2                 => 'LINE_TYPE_NAME'
81081                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
81082                                                                              l_component_type
81083                                                                             ,l_component_code
81084                                                                             ,l_component_type_code
81085                                                                             ,l_component_appl_id
81086                                                                             ,l_amb_context_code
81087                                                                             ,l_entity_code
81088                                                                             ,l_event_class_code
81089                                                                            )
81090                                     ,p_token_3                 => 'OWNER'
81091                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
81092                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
81093                                                                           ,p_lookup_code    => l_component_type_code
81094                                                                          )
81095                                     ,p_token_4                 => 'PRODUCT_NAME'
81096                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
81097                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
81098                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
81099                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
81100                                     ,p_ae_header_id            =>  NULL
81101                                        );
81102 
81103         IF (C_LEVEL_ERROR>= g_log_level) THEN
81104                  trace
81105                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81106                       ,p_level    => C_LEVEL_ERROR
81107                       ,p_module   => l_log_module);
81108         END IF;
81109       END IF;
81110    END IF;
81111    --
81112    --
81113    ------------------------------------------------------------------------------------------------
81114    -- 4219869 Business Flow
81115    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
81116    -- Prior Entry.  Currently, the following code is always generated.
81117    ------------------------------------------------------------------------------------------------
81118    XLA_AE_LINES_PKG.ValidateCurrentLine;
81119 
81120    ------------------------------------------------------------------------------------
81121    -- 4219869 Business Flow
81122    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
81123    ------------------------------------------------------------------------------------
81124    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81125 
81126    ----------------------------------------------------------------------------------
81127    -- 4219869 Business Flow
81128    -- Update journal entry status -- Need to generate this within IF <condition>
81129    ----------------------------------------------------------------------------------
81130    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81131          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
81132          ,p_balance_type_code => l_balance_type_code
81133          );
81134 
81135    -------------------------------------------------------------------------------------------
81136    -- 4262811 - Generate the Accrual Reversal lines
81137    -------------------------------------------------------------------------------------------
81138    BEGIN
81139       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
81140                               (g_array_event(p_event_id).array_value_num('header_index'));
81141       IF l_acc_rev_flag IS NULL THEN
81142          l_acc_rev_flag := 'N';
81143       END IF;
81144    EXCEPTION
81145       WHEN OTHERS THEN
81146          l_acc_rev_flag := 'N';
81147    END;
81148    --
81149    IF (l_acc_rev_flag = 'Y') THEN
81150 
81151        -- 4645092  ------------------------------------------------------------------------------
81152        -- To allow MPA report to determine if it should generate report process
81153        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
81154        ------------------------------------------------------------------------------------------
81155 
81156        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
81157        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
81158    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
81159    -- call ADRs
81160    -- Bug 4922099
81161    --
81162    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81163         (NVL(l_actual_upg_option, 'N') = 'O') OR
81164         (NVL(l_enc_upg_option, 'N') = 'O')
81165       )
81166    THEN
81167    NULL;
81168    --
81169    --
81170    
81171   l_ccid := AcctDerRule_4(
81172            p_application_id           => p_application_id
81173          , p_ae_header_id             => l_ae_header_id 
81174 , p_source_4 => p_source_4
81175          , x_transaction_coa_id       => l_adr_transaction_coa_id
81176          , x_accounting_coa_id        => l_adr_accounting_coa_id
81177          , x_value_type_code          => l_adr_value_type_code
81178          , p_side                     => 'NA'
81179    );
81180 
81181    xla_ae_lines_pkg.set_ccid(
81182     p_code_combination_id          => l_ccid
81183   , p_value_type_code              => l_adr_value_type_code
81184   , p_transaction_coa_id           => l_adr_transaction_coa_id
81185   , p_accounting_coa_id            => l_adr_accounting_coa_id
81186   , p_adr_code                     => 'CST_DEFAULT'
81187   , p_adr_type_code                => 'S'
81188   , p_component_type               => l_component_type
81189   , p_component_code               => l_component_code
81190   , p_component_type_code          => l_component_type_code
81191   , p_component_appl_id            => l_component_appl_id
81192   , p_amb_context_code             => l_amb_context_code
81193   , p_side                         => 'NA'
81194   );
81195 
81196 
81197    --
81198    --
81199    END IF;
81200 
81201        --
81202        -- Update the line information that should be overwritten
81203        --
81204        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
81205                                          p_header_num   => 1);
81206        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
81207 
81208        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
81209 
81210        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
81211           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
81212        END IF;
81213 
81214       --
81215       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
81216       --
81217       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
81218           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
81219       ELSE
81220           ---------------------------------------------------------------------------------------------------
81221           -- 4262811a Switch Sign
81222           ---------------------------------------------------------------------------------------------------
81223           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
81224           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81225                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81226           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81227                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81228           -- 5132302
81229           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
81230                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81231 
81232       END IF;
81233 
81234       -- 4955764
81235       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81236       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
81237 
81238 
81239       XLA_AE_LINES_PKG.ValidateCurrentLine;
81240       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81241 
81242       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81243                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
81244                ,p_balance_type_code => l_balance_type_code);
81245 
81246    END IF;
81247 
81248    -----------------------------------------------------------------------------------------
81249    -- 4262811 Multiperiod Accounting
81250    -----------------------------------------------------------------------------------------
81251      -- No MPA option is assigned.
81252 
81253 
81254 END IF;
81255 END IF;
81256 --
81257 
81258 --
81259 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81260    trace
81261       (p_msg      => 'END of AcctLineType_148'
81262       ,p_level    => C_LEVEL_PROCEDURE
81263       ,p_module   => l_log_module);
81264 END IF;
81265 --
81266 EXCEPTION
81267   WHEN xla_exceptions_pkg.application_exception THEN
81268       RAISE;
81269   WHEN OTHERS THEN
81270        xla_exceptions_pkg.raise_message
81271            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_148');
81272 END AcctLineType_148;
81273 --
81274 
81275 ---------------------------------------
81276 --
81277 -- PRIVATE FUNCTION
81278 --         AcctLineType_149
81279 --
81280 ---------------------------------------
81281 PROCEDURE AcctLineType_149 (
81282   p_application_id        IN NUMBER
81283  ,p_event_id              IN NUMBER
81284  ,p_calculate_acctd_flag  IN VARCHAR2
81285  ,p_calculate_g_l_flag    IN VARCHAR2
81286  ,p_actual_flag           IN OUT VARCHAR2
81287  ,p_balance_type_code     OUT VARCHAR2
81288  ,p_gain_or_loss_ref      OUT VARCHAR2
81289  
81290 --Cost Management Default Account
81291  , p_source_4            IN NUMBER
81292 --DISTRIBUTION_IDENTIFIER
81293  , p_source_11            IN NUMBER
81294 --Distribution Type
81295  , p_source_12            IN VARCHAR2
81296  , p_source_12_meaning    IN VARCHAR2
81297 --Entered Currency Code
81298  , p_source_15            IN VARCHAR2
81299 --Entered Amount
81300  , p_source_18            IN NUMBER
81301 --Currency Conversion Date
81302  , p_source_19            IN DATE
81303 --Currency Conversion Rate
81304  , p_source_20            IN NUMBER
81305 --Currency Conversion Type
81306  , p_source_21            IN VARCHAR2
81307 --Accounted Amount
81308  , p_source_22            IN NUMBER
81309 --Accounting Line Type
81310  , p_source_24            IN NUMBER
81311 )
81312 IS
81313 
81314 l_component_type              VARCHAR2(80);
81315 l_component_code              VARCHAR2(30);
81316 l_component_type_code         VARCHAR2(1);
81317 l_component_appl_id           INTEGER;
81318 l_amb_context_code            VARCHAR2(30);
81319 l_entity_code                 VARCHAR2(30);
81320 l_event_class_code            VARCHAR2(30);
81321 l_ae_header_id                NUMBER;
81322 l_event_type_code             VARCHAR2(30);
81323 l_line_definition_code        VARCHAR2(30);
81324 l_line_definition_owner_code  VARCHAR2(1);
81325 --
81326 -- adr variables
81327 l_segment                     VARCHAR2(30);
81328 l_ccid                        NUMBER;
81329 l_adr_transaction_coa_id      NUMBER;
81330 l_adr_accounting_coa_id       NUMBER;
81331 l_adr_flexfield_segment_code  VARCHAR2(30);
81332 l_adr_flex_value_set_id       NUMBER;
81333 l_adr_value_type_code         VARCHAR2(30);
81334 l_adr_value_combination_id    NUMBER;
81335 l_adr_value_segment_code      VARCHAR2(30);
81336 
81337 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
81338 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
81339 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
81340 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
81341 
81342 -- 4262811 Variables ------------------------------------------------------------------------------------------
81343 l_entered_amt_idx             NUMBER;
81344 l_accted_amt_idx              NUMBER;
81345 l_acc_rev_flag                VARCHAR2(1);
81346 l_accrual_line_num            NUMBER;
81347 l_tmp_amt                     NUMBER;
81348 l_acc_rev_natural_side_code   VARCHAR2(1);
81349 
81350 l_num_entries                 NUMBER;
81351 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
81352 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
81353 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
81354 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
81355 l_recog_line_1                NUMBER;
81356 l_recog_line_2                NUMBER;
81357 
81358 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
81359 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
81360 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
81361 
81362 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
81363 
81364 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
81365 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
81366 
81367 ---------------------------------------------------------------------------------------------------------------
81368 
81369 
81370 --
81371 -- bulk performance
81372 --
81373 l_balance_type_code           VARCHAR2(1);
81374 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
81375 l_log_module                  VARCHAR2(240);
81376 
81377 --
81378 -- Upgrade strategy
81379 --
81380 l_actual_upg_option           VARCHAR2(1);
81381 l_enc_upg_option           VARCHAR2(1);
81382 
81383 --
81384 BEGIN
81385 --
81386 IF g_log_enabled THEN
81387       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_149';
81388 END IF;
81389 --
81390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81391 
81392       trace
81393          (p_msg      => 'BEGIN of AcctLineType_149'
81394          ,p_level    => C_LEVEL_PROCEDURE
81395          ,p_module   => l_log_module);
81396 
81397 END IF;
81398 --
81399 l_component_type             := 'AMB_JLT';
81400 l_component_code             := 'INVENTORY_VALUATION';
81401 l_component_type_code        := 'S';
81402 l_component_appl_id          :=  707;
81403 l_amb_context_code           := 'DEFAULT';
81404 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
81405 l_event_class_code           := 'USER_DEFINE';
81406 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
81407 l_line_definition_owner_code := 'S';
81408 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
81409 --
81410 l_balance_type_code          := 'A';
81411 l_segment                     := NULL;
81412 l_ccid                        := NULL;
81413 l_adr_transaction_coa_id      := NULL;
81414 l_adr_accounting_coa_id       := NULL;
81415 l_adr_flexfield_segment_code  := NULL;
81416 l_adr_flex_value_set_id       := NULL;
81417 l_adr_value_type_code         := NULL;
81418 l_adr_value_combination_id    := NULL;
81419 l_adr_value_segment_code      := NULL;
81420 
81421 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
81422 l_bflow_class_code           := '';    -- 4219869 Business Flow
81423 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
81424 l_budgetary_control_flag     := 'N';
81425 
81426 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
81427 l_bflow_applied_to_amt       := NULL; -- 5132302
81428 l_entered_amt_idx            := NULL;          -- 4262811
81429 l_accted_amt_idx             := NULL;          -- 4262811
81430 l_acc_rev_flag               := NULL;          -- 4262811
81431 l_accrual_line_num           := NULL;          -- 4262811
81432 l_tmp_amt                    := NULL;          -- 4262811
81433 --
81434  
81435 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
81436     l_balance_type_code <> 'B' THEN
81437 IF NVL(p_source_24,9E125) =  1
81438  THEN 
81439 
81440    --
81441    XLA_AE_LINES_PKG.SetNewLine;
81442 
81443    p_balance_type_code          := l_balance_type_code;
81444    -- set the flag so later we will know whether the gain loss line needs to be created
81445    
81446    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
81447      p_actual_flag :='A';
81448    END IF;
81449 
81450    --
81451    -- bulk performance
81452    --
81453    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
81454                                       p_header_num   => 0); -- 4262811
81455    --
81456    -- set accounting line options
81457    --
81458    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
81459            p_natural_side_code          => 'D'
81460          , p_gain_or_loss_flag          => 'N'
81461          , p_gl_transfer_mode_code      => 'S'
81462          , p_acct_entry_type_code       => 'A'
81463          , p_switch_side_flag           => 'Y'
81464          , p_merge_duplicate_code       => 'N'
81465          );
81466    --
81467    l_acc_rev_natural_side_code := 'C';  -- 4262811
81468    -- 
81469    --
81470    -- set accounting line type info
81471    --
81472    xla_ae_lines_pkg.SetAcctLineType
81473       (p_component_type             => l_component_type
81474       ,p_event_type_code            => l_event_type_code
81475       ,p_line_definition_owner_code => l_line_definition_owner_code
81476       ,p_line_definition_code       => l_line_definition_code
81477       ,p_accounting_line_code       => l_component_code
81478       ,p_accounting_line_type_code  => l_component_type_code
81479       ,p_accounting_line_appl_id    => l_component_appl_id
81480       ,p_amb_context_code           => l_amb_context_code
81481       ,p_entity_code                => l_entity_code
81482       ,p_event_class_code           => l_event_class_code);
81483    --
81484    -- set accounting class
81485    --
81486    xla_ae_lines_pkg.SetAcctClass(
81487            p_accounting_class_code  => 'INVENTORY_VALUATION'
81488          , p_ae_header_id           => l_ae_header_id
81489          );
81490 
81491    --
81492    -- set rounding class
81493    --
81494    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
81495                       'INVENTORY_VALUATION';
81496 
81497    --
81498    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
81499    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
81500    --
81501    -- bulk performance
81502    --
81503    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
81504 
81505    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
81506       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
81507 
81508    -- 4955764
81509    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81510       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
81511 
81512    -- 4458381 Public Sector Enh
81513    
81514    --
81515    -- set accounting attributes for the line type
81516    --
81517    l_entered_amt_idx := 3;
81518    l_accted_amt_idx  := 8;
81519    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
81520    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
81521    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
81522    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
81523    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
81524    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
81525    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
81526    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
81527    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
81528    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
81529    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
81530    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
81531    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
81532    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
81533    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
81534    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
81535    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
81536 
81537    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
81538    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
81539 
81540    ---------------------------------------------------------------------------------------------------------------
81541    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
81542    ---------------------------------------------------------------------------------------------------------------
81543    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
81544 
81545    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81546    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81547 
81548    IF xla_accounting_cache_pkg.GetValueChar
81549          (p_source_code         => 'LEDGER_CATEGORY_CODE'
81550          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
81551    AND l_bflow_method_code = 'PRIOR_ENTRY'
81552 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
81553    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
81554          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
81555        )
81556    THEN
81557          xla_ae_lines_pkg.BflowUpgEntry
81558            (p_business_method_code    => l_bflow_method_code
81559            ,p_business_class_code     => l_bflow_class_code
81560            ,p_balance_type            => l_balance_type_code);
81561    ELSE
81562       NULL;
81563 -- No business flow processing for business flow method of NONE.
81564    END IF;
81565 
81566    --
81567    -- call analytical criteria
81568    --
81569    
81570    --
81571    -- call description
81572    --
81573    -- No description or it is inherited.
81574    --
81575    -- call ADRs
81576    -- Bug 4922099
81577    --
81578    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81579         (NVL(l_actual_upg_option, 'N') = 'O') OR
81580         (NVL(l_enc_upg_option, 'N') = 'O')
81581       )
81582    THEN
81583    NULL;
81584    --
81585    --
81586    
81587   l_ccid := AcctDerRule_4(
81588            p_application_id           => p_application_id
81589          , p_ae_header_id             => l_ae_header_id 
81590 , p_source_4 => p_source_4
81591          , x_transaction_coa_id       => l_adr_transaction_coa_id
81592          , x_accounting_coa_id        => l_adr_accounting_coa_id
81593          , x_value_type_code          => l_adr_value_type_code
81594          , p_side                     => 'NA'
81595    );
81596 
81597    xla_ae_lines_pkg.set_ccid(
81598     p_code_combination_id          => l_ccid
81599   , p_value_type_code              => l_adr_value_type_code
81600   , p_transaction_coa_id           => l_adr_transaction_coa_id
81601   , p_accounting_coa_id            => l_adr_accounting_coa_id
81602   , p_adr_code                     => 'CST_DEFAULT'
81603   , p_adr_type_code                => 'S'
81604   , p_component_type               => l_component_type
81605   , p_component_code               => l_component_code
81606   , p_component_type_code          => l_component_type_code
81607   , p_component_appl_id            => l_component_appl_id
81608   , p_amb_context_code             => l_amb_context_code
81609   , p_side                         => 'NA'
81610   );
81611 
81612 
81613    --
81614    --
81615    END IF;
81616    --
81617    -- Bug 4922099
81618    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
81619           (NVL(l_enc_upg_option, 'N') = 'O')
81620         ) AND
81621         (l_bflow_method_code = 'PRIOR_ENTRY')
81622       )
81623    THEN
81624       IF
81625       --
81626       1 = 2
81627       --
81628       THEN
81629       xla_accounting_err_pkg.build_message
81630                                     (p_appli_s_name            => 'XLA'
81631                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81632                                     ,p_token_1                 => 'LINE_NUMBER'
81633                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
81634                                     ,p_token_2                 => 'LINE_TYPE_NAME'
81635                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
81636                                                                              l_component_type
81637                                                                             ,l_component_code
81638                                                                             ,l_component_type_code
81639                                                                             ,l_component_appl_id
81640                                                                             ,l_amb_context_code
81641                                                                             ,l_entity_code
81642                                                                             ,l_event_class_code
81643                                                                            )
81644                                     ,p_token_3                 => 'OWNER'
81645                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
81646                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
81647                                                                           ,p_lookup_code    => l_component_type_code
81648                                                                          )
81649                                     ,p_token_4                 => 'PRODUCT_NAME'
81650                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
81651                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
81652                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
81653                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
81654                                     ,p_ae_header_id            =>  NULL
81655                                        );
81656 
81657         IF (C_LEVEL_ERROR>= g_log_level) THEN
81658                  trace
81659                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81660                       ,p_level    => C_LEVEL_ERROR
81661                       ,p_module   => l_log_module);
81662         END IF;
81663       END IF;
81664    END IF;
81665    --
81666    --
81667    ------------------------------------------------------------------------------------------------
81668    -- 4219869 Business Flow
81669    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
81670    -- Prior Entry.  Currently, the following code is always generated.
81671    ------------------------------------------------------------------------------------------------
81672    XLA_AE_LINES_PKG.ValidateCurrentLine;
81673 
81674    ------------------------------------------------------------------------------------
81675    -- 4219869 Business Flow
81676    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
81677    ------------------------------------------------------------------------------------
81678    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81679 
81680    ----------------------------------------------------------------------------------
81681    -- 4219869 Business Flow
81682    -- Update journal entry status -- Need to generate this within IF <condition>
81683    ----------------------------------------------------------------------------------
81684    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81685          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
81686          ,p_balance_type_code => l_balance_type_code
81687          );
81688 
81689    -------------------------------------------------------------------------------------------
81690    -- 4262811 - Generate the Accrual Reversal lines
81691    -------------------------------------------------------------------------------------------
81692    BEGIN
81693       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
81694                               (g_array_event(p_event_id).array_value_num('header_index'));
81695       IF l_acc_rev_flag IS NULL THEN
81696          l_acc_rev_flag := 'N';
81697       END IF;
81698    EXCEPTION
81699       WHEN OTHERS THEN
81700          l_acc_rev_flag := 'N';
81701    END;
81702    --
81703    IF (l_acc_rev_flag = 'Y') THEN
81704 
81705        -- 4645092  ------------------------------------------------------------------------------
81706        -- To allow MPA report to determine if it should generate report process
81707        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
81708        ------------------------------------------------------------------------------------------
81709 
81710        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
81711        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
81712    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
81713    -- call ADRs
81714    -- Bug 4922099
81715    --
81716    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81717         (NVL(l_actual_upg_option, 'N') = 'O') OR
81718         (NVL(l_enc_upg_option, 'N') = 'O')
81719       )
81720    THEN
81721    NULL;
81722    --
81723    --
81724    
81725   l_ccid := AcctDerRule_4(
81726            p_application_id           => p_application_id
81727          , p_ae_header_id             => l_ae_header_id 
81728 , p_source_4 => p_source_4
81729          , x_transaction_coa_id       => l_adr_transaction_coa_id
81730          , x_accounting_coa_id        => l_adr_accounting_coa_id
81731          , x_value_type_code          => l_adr_value_type_code
81732          , p_side                     => 'NA'
81733    );
81734 
81735    xla_ae_lines_pkg.set_ccid(
81736     p_code_combination_id          => l_ccid
81737   , p_value_type_code              => l_adr_value_type_code
81738   , p_transaction_coa_id           => l_adr_transaction_coa_id
81739   , p_accounting_coa_id            => l_adr_accounting_coa_id
81740   , p_adr_code                     => 'CST_DEFAULT'
81741   , p_adr_type_code                => 'S'
81742   , p_component_type               => l_component_type
81743   , p_component_code               => l_component_code
81744   , p_component_type_code          => l_component_type_code
81745   , p_component_appl_id            => l_component_appl_id
81746   , p_amb_context_code             => l_amb_context_code
81747   , p_side                         => 'NA'
81748   );
81749 
81750 
81751    --
81752    --
81753    END IF;
81754 
81755        --
81756        -- Update the line information that should be overwritten
81757        --
81758        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
81759                                          p_header_num   => 1);
81760        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
81761 
81762        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
81763 
81764        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
81765           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
81766        END IF;
81767 
81768       --
81769       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
81770       --
81771       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
81772           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
81773       ELSE
81774           ---------------------------------------------------------------------------------------------------
81775           -- 4262811a Switch Sign
81776           ---------------------------------------------------------------------------------------------------
81777           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
81778           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81779                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81780           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81781                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81782           -- 5132302
81783           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
81784                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81785 
81786       END IF;
81787 
81788       -- 4955764
81789       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81790       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
81791 
81792 
81793       XLA_AE_LINES_PKG.ValidateCurrentLine;
81794       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81795 
81796       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81797                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
81798                ,p_balance_type_code => l_balance_type_code);
81799 
81800    END IF;
81801 
81802    -----------------------------------------------------------------------------------------
81803    -- 4262811 Multiperiod Accounting
81804    -----------------------------------------------------------------------------------------
81805      -- No MPA option is assigned.
81806 
81807 
81808 END IF;
81809 END IF;
81810 --
81811 
81812 --
81813 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81814    trace
81815       (p_msg      => 'END of AcctLineType_149'
81816       ,p_level    => C_LEVEL_PROCEDURE
81817       ,p_module   => l_log_module);
81818 END IF;
81819 --
81820 EXCEPTION
81821   WHEN xla_exceptions_pkg.application_exception THEN
81822       RAISE;
81823   WHEN OTHERS THEN
81824        xla_exceptions_pkg.raise_message
81825            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_149');
81826 END AcctLineType_149;
81827 --
81828 
81829 ---------------------------------------
81830 --
81831 -- PRIVATE FUNCTION
81832 --         AcctLineType_150
81833 --
81834 ---------------------------------------
81835 PROCEDURE AcctLineType_150 (
81836   p_application_id        IN NUMBER
81837  ,p_event_id              IN NUMBER
81838  ,p_calculate_acctd_flag  IN VARCHAR2
81839  ,p_calculate_g_l_flag    IN VARCHAR2
81840  ,p_actual_flag           IN OUT VARCHAR2
81841  ,p_balance_type_code     OUT VARCHAR2
81842  ,p_gain_or_loss_ref      OUT VARCHAR2
81843  
81844 --Cost Management Default Account
81845  , p_source_4            IN NUMBER
81846 --DISTRIBUTION_IDENTIFIER
81847  , p_source_11            IN NUMBER
81848 --Distribution Type
81849  , p_source_12            IN VARCHAR2
81850  , p_source_12_meaning    IN VARCHAR2
81851 --Entered Currency Code
81852  , p_source_15            IN VARCHAR2
81853 --Entered Amount
81854  , p_source_18            IN NUMBER
81855 --Currency Conversion Date
81856  , p_source_19            IN DATE
81857 --Currency Conversion Rate
81858  , p_source_20            IN NUMBER
81859 --Currency Conversion Type
81860  , p_source_21            IN VARCHAR2
81861 --Accounted Amount
81862  , p_source_22            IN NUMBER
81863 --Accounting Line Type
81864  , p_source_24            IN NUMBER
81865 )
81866 IS
81867 
81868 l_component_type              VARCHAR2(80);
81869 l_component_code              VARCHAR2(30);
81870 l_component_type_code         VARCHAR2(1);
81871 l_component_appl_id           INTEGER;
81872 l_amb_context_code            VARCHAR2(30);
81873 l_entity_code                 VARCHAR2(30);
81874 l_event_class_code            VARCHAR2(30);
81875 l_ae_header_id                NUMBER;
81876 l_event_type_code             VARCHAR2(30);
81877 l_line_definition_code        VARCHAR2(30);
81878 l_line_definition_owner_code  VARCHAR2(1);
81879 --
81880 -- adr variables
81881 l_segment                     VARCHAR2(30);
81882 l_ccid                        NUMBER;
81883 l_adr_transaction_coa_id      NUMBER;
81884 l_adr_accounting_coa_id       NUMBER;
81885 l_adr_flexfield_segment_code  VARCHAR2(30);
81886 l_adr_flex_value_set_id       NUMBER;
81887 l_adr_value_type_code         VARCHAR2(30);
81888 l_adr_value_combination_id    NUMBER;
81889 l_adr_value_segment_code      VARCHAR2(30);
81890 
81891 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
81892 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
81893 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
81894 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
81895 
81896 -- 4262811 Variables ------------------------------------------------------------------------------------------
81897 l_entered_amt_idx             NUMBER;
81898 l_accted_amt_idx              NUMBER;
81899 l_acc_rev_flag                VARCHAR2(1);
81900 l_accrual_line_num            NUMBER;
81901 l_tmp_amt                     NUMBER;
81902 l_acc_rev_natural_side_code   VARCHAR2(1);
81903 
81904 l_num_entries                 NUMBER;
81905 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
81906 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
81907 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
81908 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
81909 l_recog_line_1                NUMBER;
81910 l_recog_line_2                NUMBER;
81911 
81912 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
81913 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
81914 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
81915 
81916 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
81917 
81918 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
81919 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
81920 
81921 ---------------------------------------------------------------------------------------------------------------
81922 
81923 
81924 --
81925 -- bulk performance
81926 --
81927 l_balance_type_code           VARCHAR2(1);
81928 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
81929 l_log_module                  VARCHAR2(240);
81930 
81931 --
81932 -- Upgrade strategy
81933 --
81934 l_actual_upg_option           VARCHAR2(1);
81935 l_enc_upg_option           VARCHAR2(1);
81936 
81937 --
81938 BEGIN
81939 --
81940 IF g_log_enabled THEN
81941       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_150';
81942 END IF;
81943 --
81944 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81945 
81946       trace
81947          (p_msg      => 'BEGIN of AcctLineType_150'
81948          ,p_level    => C_LEVEL_PROCEDURE
81949          ,p_module   => l_log_module);
81950 
81951 END IF;
81952 --
81953 l_component_type             := 'AMB_JLT';
81954 l_component_code             := 'INVENTORY_VALUATION';
81955 l_component_type_code        := 'S';
81956 l_component_appl_id          :=  707;
81957 l_amb_context_code           := 'DEFAULT';
81958 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
81959 l_event_class_code           := 'USER_DEFINE';
81960 l_event_type_code            := 'UMISC_ISSUE';
81961 l_line_definition_owner_code := 'S';
81962 l_line_definition_code       := 'USER_ISSUE';
81963 --
81964 l_balance_type_code          := 'A';
81965 l_segment                     := NULL;
81966 l_ccid                        := NULL;
81967 l_adr_transaction_coa_id      := NULL;
81968 l_adr_accounting_coa_id       := NULL;
81969 l_adr_flexfield_segment_code  := NULL;
81970 l_adr_flex_value_set_id       := NULL;
81971 l_adr_value_type_code         := NULL;
81972 l_adr_value_combination_id    := NULL;
81973 l_adr_value_segment_code      := NULL;
81974 
81975 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
81976 l_bflow_class_code           := '';    -- 4219869 Business Flow
81977 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
81978 l_budgetary_control_flag     := 'N';
81979 
81980 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
81981 l_bflow_applied_to_amt       := NULL; -- 5132302
81982 l_entered_amt_idx            := NULL;          -- 4262811
81983 l_accted_amt_idx             := NULL;          -- 4262811
81984 l_acc_rev_flag               := NULL;          -- 4262811
81985 l_accrual_line_num           := NULL;          -- 4262811
81986 l_tmp_amt                    := NULL;          -- 4262811
81987 --
81988  
81989 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
81990     l_balance_type_code <> 'B' THEN
81991 IF NVL(p_source_24,9E125) =  1
81992  THEN 
81993 
81994    --
81995    XLA_AE_LINES_PKG.SetNewLine;
81996 
81997    p_balance_type_code          := l_balance_type_code;
81998    -- set the flag so later we will know whether the gain loss line needs to be created
81999    
82000    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
82001      p_actual_flag :='A';
82002    END IF;
82003 
82004    --
82005    -- bulk performance
82006    --
82007    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
82008                                       p_header_num   => 0); -- 4262811
82009    --
82010    -- set accounting line options
82011    --
82012    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
82013            p_natural_side_code          => 'D'
82014          , p_gain_or_loss_flag          => 'N'
82015          , p_gl_transfer_mode_code      => 'S'
82016          , p_acct_entry_type_code       => 'A'
82017          , p_switch_side_flag           => 'Y'
82018          , p_merge_duplicate_code       => 'N'
82019          );
82020    --
82021    l_acc_rev_natural_side_code := 'C';  -- 4262811
82022    -- 
82023    --
82024    -- set accounting line type info
82025    --
82026    xla_ae_lines_pkg.SetAcctLineType
82027       (p_component_type             => l_component_type
82028       ,p_event_type_code            => l_event_type_code
82029       ,p_line_definition_owner_code => l_line_definition_owner_code
82030       ,p_line_definition_code       => l_line_definition_code
82031       ,p_accounting_line_code       => l_component_code
82032       ,p_accounting_line_type_code  => l_component_type_code
82033       ,p_accounting_line_appl_id    => l_component_appl_id
82034       ,p_amb_context_code           => l_amb_context_code
82035       ,p_entity_code                => l_entity_code
82036       ,p_event_class_code           => l_event_class_code);
82037    --
82038    -- set accounting class
82039    --
82040    xla_ae_lines_pkg.SetAcctClass(
82041            p_accounting_class_code  => 'INVENTORY_VALUATION'
82042          , p_ae_header_id           => l_ae_header_id
82043          );
82044 
82045    --
82046    -- set rounding class
82047    --
82048    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
82049                       'INVENTORY_VALUATION';
82050 
82051    --
82052    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
82053    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
82054    --
82055    -- bulk performance
82056    --
82057    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
82058 
82059    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
82060       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
82061 
82062    -- 4955764
82063    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82064       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
82065 
82066    -- 4458381 Public Sector Enh
82067    
82068    --
82069    -- set accounting attributes for the line type
82070    --
82071    l_entered_amt_idx := 3;
82072    l_accted_amt_idx  := 8;
82073    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
82074    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
82075    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
82076    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
82077    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
82078    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
82079    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
82080    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
82081    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
82082    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
82083    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
82084    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
82085    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
82086    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
82087    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
82088    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
82089    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
82090 
82091    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
82092    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
82093 
82094    ---------------------------------------------------------------------------------------------------------------
82095    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
82096    ---------------------------------------------------------------------------------------------------------------
82097    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
82098 
82099    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82100    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82101 
82102    IF xla_accounting_cache_pkg.GetValueChar
82103          (p_source_code         => 'LEDGER_CATEGORY_CODE'
82104          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
82105    AND l_bflow_method_code = 'PRIOR_ENTRY'
82106 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
82107    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
82108          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
82109        )
82110    THEN
82111          xla_ae_lines_pkg.BflowUpgEntry
82112            (p_business_method_code    => l_bflow_method_code
82113            ,p_business_class_code     => l_bflow_class_code
82114            ,p_balance_type            => l_balance_type_code);
82115    ELSE
82116       NULL;
82117 -- No business flow processing for business flow method of NONE.
82118    END IF;
82119 
82120    --
82121    -- call analytical criteria
82122    --
82123    
82124    --
82125    -- call description
82126    --
82127    -- No description or it is inherited.
82128    --
82129    -- call ADRs
82130    -- Bug 4922099
82131    --
82132    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82133         (NVL(l_actual_upg_option, 'N') = 'O') OR
82134         (NVL(l_enc_upg_option, 'N') = 'O')
82135       )
82136    THEN
82137    NULL;
82138    --
82139    --
82140    
82141   l_ccid := AcctDerRule_4(
82142            p_application_id           => p_application_id
82143          , p_ae_header_id             => l_ae_header_id 
82144 , p_source_4 => p_source_4
82145          , x_transaction_coa_id       => l_adr_transaction_coa_id
82146          , x_accounting_coa_id        => l_adr_accounting_coa_id
82147          , x_value_type_code          => l_adr_value_type_code
82148          , p_side                     => 'NA'
82149    );
82150 
82151    xla_ae_lines_pkg.set_ccid(
82152     p_code_combination_id          => l_ccid
82153   , p_value_type_code              => l_adr_value_type_code
82154   , p_transaction_coa_id           => l_adr_transaction_coa_id
82155   , p_accounting_coa_id            => l_adr_accounting_coa_id
82156   , p_adr_code                     => 'CST_DEFAULT'
82157   , p_adr_type_code                => 'S'
82158   , p_component_type               => l_component_type
82159   , p_component_code               => l_component_code
82160   , p_component_type_code          => l_component_type_code
82161   , p_component_appl_id            => l_component_appl_id
82162   , p_amb_context_code             => l_amb_context_code
82163   , p_side                         => 'NA'
82164   );
82165 
82166 
82167    --
82168    --
82169    END IF;
82170    --
82171    -- Bug 4922099
82172    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
82173           (NVL(l_enc_upg_option, 'N') = 'O')
82174         ) AND
82175         (l_bflow_method_code = 'PRIOR_ENTRY')
82176       )
82177    THEN
82178       IF
82179       --
82180       1 = 2
82181       --
82182       THEN
82183       xla_accounting_err_pkg.build_message
82184                                     (p_appli_s_name            => 'XLA'
82185                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82186                                     ,p_token_1                 => 'LINE_NUMBER'
82187                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
82188                                     ,p_token_2                 => 'LINE_TYPE_NAME'
82189                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
82190                                                                              l_component_type
82191                                                                             ,l_component_code
82192                                                                             ,l_component_type_code
82193                                                                             ,l_component_appl_id
82194                                                                             ,l_amb_context_code
82195                                                                             ,l_entity_code
82196                                                                             ,l_event_class_code
82197                                                                            )
82198                                     ,p_token_3                 => 'OWNER'
82199                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
82200                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
82201                                                                           ,p_lookup_code    => l_component_type_code
82202                                                                          )
82203                                     ,p_token_4                 => 'PRODUCT_NAME'
82204                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
82205                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
82206                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
82207                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
82208                                     ,p_ae_header_id            =>  NULL
82209                                        );
82210 
82211         IF (C_LEVEL_ERROR>= g_log_level) THEN
82212                  trace
82213                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82214                       ,p_level    => C_LEVEL_ERROR
82215                       ,p_module   => l_log_module);
82216         END IF;
82217       END IF;
82218    END IF;
82219    --
82220    --
82221    ------------------------------------------------------------------------------------------------
82222    -- 4219869 Business Flow
82223    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
82224    -- Prior Entry.  Currently, the following code is always generated.
82225    ------------------------------------------------------------------------------------------------
82226    XLA_AE_LINES_PKG.ValidateCurrentLine;
82227 
82228    ------------------------------------------------------------------------------------
82229    -- 4219869 Business Flow
82230    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
82231    ------------------------------------------------------------------------------------
82232    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82233 
82234    ----------------------------------------------------------------------------------
82235    -- 4219869 Business Flow
82236    -- Update journal entry status -- Need to generate this within IF <condition>
82237    ----------------------------------------------------------------------------------
82238    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82239          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
82240          ,p_balance_type_code => l_balance_type_code
82241          );
82242 
82243    -------------------------------------------------------------------------------------------
82244    -- 4262811 - Generate the Accrual Reversal lines
82245    -------------------------------------------------------------------------------------------
82246    BEGIN
82247       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
82248                               (g_array_event(p_event_id).array_value_num('header_index'));
82249       IF l_acc_rev_flag IS NULL THEN
82250          l_acc_rev_flag := 'N';
82251       END IF;
82252    EXCEPTION
82253       WHEN OTHERS THEN
82254          l_acc_rev_flag := 'N';
82255    END;
82256    --
82257    IF (l_acc_rev_flag = 'Y') THEN
82258 
82259        -- 4645092  ------------------------------------------------------------------------------
82260        -- To allow MPA report to determine if it should generate report process
82261        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
82262        ------------------------------------------------------------------------------------------
82263 
82264        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
82265        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
82266    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
82267    -- call ADRs
82268    -- Bug 4922099
82269    --
82270    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82271         (NVL(l_actual_upg_option, 'N') = 'O') OR
82272         (NVL(l_enc_upg_option, 'N') = 'O')
82273       )
82274    THEN
82275    NULL;
82276    --
82277    --
82278    
82279   l_ccid := AcctDerRule_4(
82280            p_application_id           => p_application_id
82281          , p_ae_header_id             => l_ae_header_id 
82282 , p_source_4 => p_source_4
82283          , x_transaction_coa_id       => l_adr_transaction_coa_id
82284          , x_accounting_coa_id        => l_adr_accounting_coa_id
82285          , x_value_type_code          => l_adr_value_type_code
82286          , p_side                     => 'NA'
82287    );
82288 
82289    xla_ae_lines_pkg.set_ccid(
82290     p_code_combination_id          => l_ccid
82291   , p_value_type_code              => l_adr_value_type_code
82292   , p_transaction_coa_id           => l_adr_transaction_coa_id
82293   , p_accounting_coa_id            => l_adr_accounting_coa_id
82294   , p_adr_code                     => 'CST_DEFAULT'
82295   , p_adr_type_code                => 'S'
82296   , p_component_type               => l_component_type
82297   , p_component_code               => l_component_code
82298   , p_component_type_code          => l_component_type_code
82299   , p_component_appl_id            => l_component_appl_id
82300   , p_amb_context_code             => l_amb_context_code
82301   , p_side                         => 'NA'
82302   );
82303 
82304 
82305    --
82306    --
82307    END IF;
82308 
82309        --
82310        -- Update the line information that should be overwritten
82311        --
82312        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
82313                                          p_header_num   => 1);
82314        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
82315 
82316        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
82317 
82318        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
82319           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
82320        END IF;
82321 
82322       --
82323       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
82324       --
82325       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
82326           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
82327       ELSE
82328           ---------------------------------------------------------------------------------------------------
82329           -- 4262811a Switch Sign
82330           ---------------------------------------------------------------------------------------------------
82331           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
82332           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82333                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82334           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82335                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82336           -- 5132302
82337           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
82338                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82339 
82340       END IF;
82341 
82342       -- 4955764
82343       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82344       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
82345 
82346 
82347       XLA_AE_LINES_PKG.ValidateCurrentLine;
82348       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82349 
82350       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82351                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
82352                ,p_balance_type_code => l_balance_type_code);
82353 
82354    END IF;
82355 
82356    -----------------------------------------------------------------------------------------
82357    -- 4262811 Multiperiod Accounting
82358    -----------------------------------------------------------------------------------------
82359      -- No MPA option is assigned.
82360 
82361 
82362 END IF;
82363 END IF;
82364 --
82365 
82366 --
82367 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82368    trace
82369       (p_msg      => 'END of AcctLineType_150'
82370       ,p_level    => C_LEVEL_PROCEDURE
82371       ,p_module   => l_log_module);
82372 END IF;
82373 --
82374 EXCEPTION
82375   WHEN xla_exceptions_pkg.application_exception THEN
82376       RAISE;
82377   WHEN OTHERS THEN
82378        xla_exceptions_pkg.raise_message
82379            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_150');
82380 END AcctLineType_150;
82381 --
82382 
82383 ---------------------------------------
82384 --
82385 -- PRIVATE FUNCTION
82386 --         AcctLineType_151
82387 --
82388 ---------------------------------------
82389 PROCEDURE AcctLineType_151 (
82390   p_application_id        IN NUMBER
82391  ,p_event_id              IN NUMBER
82392  ,p_calculate_acctd_flag  IN VARCHAR2
82393  ,p_calculate_g_l_flag    IN VARCHAR2
82394  ,p_actual_flag           IN OUT VARCHAR2
82395  ,p_balance_type_code     OUT VARCHAR2
82396  ,p_gain_or_loss_ref      OUT VARCHAR2
82397  
82398 --Cost Management Default Account
82399  , p_source_4            IN NUMBER
82400 --Applied to Application ID
82401  , p_source_6            IN NUMBER
82402 --Applied to Distribution Link Type
82403  , p_source_7            IN VARCHAR2
82404 --Applied to Entity Code
82405  , p_source_8            IN VARCHAR2
82406 --DISTRIBUTION_IDENTIFIER
82407  , p_source_11            IN NUMBER
82408 --Distribution Type
82409  , p_source_12            IN VARCHAR2
82410  , p_source_12_meaning    IN VARCHAR2
82411 --Encumbrance Reversal Amount Entered
82412  , p_source_14            IN NUMBER
82413 --Entered Currency Code
82414  , p_source_15            IN VARCHAR2
82415 --Transaction Encumbrance Reversal Amount
82416  , p_source_16            IN NUMBER
82417 --Entered Amount
82418  , p_source_18            IN NUMBER
82419 --Currency Conversion Date
82420  , p_source_19            IN DATE
82421 --Currency Conversion Rate
82422  , p_source_20            IN NUMBER
82423 --Currency Conversion Type
82424  , p_source_21            IN VARCHAR2
82425 --Accounted Amount
82426  , p_source_22            IN NUMBER
82427 --Accounting Line Type
82428  , p_source_24            IN NUMBER
82429 --Costing Encumbrance Upgrade Option
82430  , p_source_27            IN VARCHAR2
82431 --TXN_PO_DISTRIBUTION_ID
82432  , p_source_28            IN NUMBER
82433 --TXN_PO_HEADER_ID
82434  , p_source_29            IN NUMBER
82435 --Requisition Budget Account
82436  , p_source_30            IN NUMBER
82437 --Requisition Encumbrance Type Identifier
82438  , p_source_31            IN NUMBER
82439 )
82440 IS
82441 
82442 l_component_type              VARCHAR2(80);
82443 l_component_code              VARCHAR2(30);
82444 l_component_type_code         VARCHAR2(1);
82445 l_component_appl_id           INTEGER;
82446 l_amb_context_code            VARCHAR2(30);
82447 l_entity_code                 VARCHAR2(30);
82448 l_event_class_code            VARCHAR2(30);
82449 l_ae_header_id                NUMBER;
82450 l_event_type_code             VARCHAR2(30);
82451 l_line_definition_code        VARCHAR2(30);
82452 l_line_definition_owner_code  VARCHAR2(1);
82453 --
82454 -- adr variables
82455 l_segment                     VARCHAR2(30);
82456 l_ccid                        NUMBER;
82457 l_adr_transaction_coa_id      NUMBER;
82458 l_adr_accounting_coa_id       NUMBER;
82459 l_adr_flexfield_segment_code  VARCHAR2(30);
82460 l_adr_flex_value_set_id       NUMBER;
82461 l_adr_value_type_code         VARCHAR2(30);
82462 l_adr_value_combination_id    NUMBER;
82463 l_adr_value_segment_code      VARCHAR2(30);
82464 
82465 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
82466 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
82467 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
82468 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
82469 
82470 -- 4262811 Variables ------------------------------------------------------------------------------------------
82471 l_entered_amt_idx             NUMBER;
82472 l_accted_amt_idx              NUMBER;
82473 l_acc_rev_flag                VARCHAR2(1);
82474 l_accrual_line_num            NUMBER;
82475 l_tmp_amt                     NUMBER;
82476 l_acc_rev_natural_side_code   VARCHAR2(1);
82477 
82478 l_num_entries                 NUMBER;
82479 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
82480 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
82481 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
82482 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
82483 l_recog_line_1                NUMBER;
82484 l_recog_line_2                NUMBER;
82485 
82486 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
82487 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
82488 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
82489 
82490 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
82491 
82492 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
82493 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
82494 
82495 ---------------------------------------------------------------------------------------------------------------
82496 
82497 
82498 --
82499 -- bulk performance
82500 --
82501 l_balance_type_code           VARCHAR2(1);
82502 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
82503 l_log_module                  VARCHAR2(240);
82504 
82505 --
82506 -- Upgrade strategy
82507 --
82508 l_actual_upg_option           VARCHAR2(1);
82509 l_enc_upg_option           VARCHAR2(1);
82510 
82511 --
82512 BEGIN
82513 --
82514 IF g_log_enabled THEN
82515       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_151';
82516 END IF;
82517 --
82518 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82519 
82520       trace
82521          (p_msg      => 'BEGIN of AcctLineType_151'
82522          ,p_level    => C_LEVEL_PROCEDURE
82523          ,p_module   => l_log_module);
82524 
82525 END IF;
82526 --
82527 l_component_type             := 'AMB_JLT';
82528 l_component_code             := 'INVENTORY_VALUATION';
82529 l_component_type_code        := 'S';
82530 l_component_appl_id          :=  707;
82531 l_amb_context_code           := 'DEFAULT';
82532 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
82533 l_event_class_code           := 'DIR_INTERORG_RCPT';
82534 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
82535 l_line_definition_owner_code := 'S';
82536 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
82537 --
82538 l_balance_type_code          := 'A';
82539 l_segment                     := NULL;
82540 l_ccid                        := NULL;
82541 l_adr_transaction_coa_id      := NULL;
82542 l_adr_accounting_coa_id       := NULL;
82543 l_adr_flexfield_segment_code  := NULL;
82544 l_adr_flex_value_set_id       := NULL;
82545 l_adr_value_type_code         := NULL;
82546 l_adr_value_combination_id    := NULL;
82547 l_adr_value_segment_code      := NULL;
82548 
82549 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
82550 l_bflow_class_code           := '';    -- 4219869 Business Flow
82551 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
82552 l_budgetary_control_flag     := 'N';
82553 
82554 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
82555 l_bflow_applied_to_amt       := NULL; -- 5132302
82556 l_entered_amt_idx            := NULL;          -- 4262811
82557 l_accted_amt_idx             := NULL;          -- 4262811
82558 l_acc_rev_flag               := NULL;          -- 4262811
82559 l_accrual_line_num           := NULL;          -- 4262811
82560 l_tmp_amt                    := NULL;          -- 4262811
82561 --
82562  
82563 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
82564     l_balance_type_code <> 'B' THEN
82565 IF NVL(p_source_24,9E125) =  1
82566  THEN 
82567 
82568    --
82569    XLA_AE_LINES_PKG.SetNewLine;
82570 
82571    p_balance_type_code          := l_balance_type_code;
82572    -- set the flag so later we will know whether the gain loss line needs to be created
82573    
82574    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
82575      p_actual_flag :='A';
82576    END IF;
82577 
82578    --
82579    -- bulk performance
82580    --
82581    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
82582                                       p_header_num   => 0); -- 4262811
82583    --
82584    -- set accounting line options
82585    --
82586    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
82587            p_natural_side_code          => 'D'
82588          , p_gain_or_loss_flag          => 'N'
82589          , p_gl_transfer_mode_code      => 'S'
82590          , p_acct_entry_type_code       => 'A'
82591          , p_switch_side_flag           => 'Y'
82592          , p_merge_duplicate_code       => 'N'
82593          );
82594    --
82595    l_acc_rev_natural_side_code := 'C';  -- 4262811
82596    -- 
82597    --
82598    -- set accounting line type info
82599    --
82600    xla_ae_lines_pkg.SetAcctLineType
82601       (p_component_type             => l_component_type
82602       ,p_event_type_code            => l_event_type_code
82603       ,p_line_definition_owner_code => l_line_definition_owner_code
82604       ,p_line_definition_code       => l_line_definition_code
82605       ,p_accounting_line_code       => l_component_code
82606       ,p_accounting_line_type_code  => l_component_type_code
82607       ,p_accounting_line_appl_id    => l_component_appl_id
82608       ,p_amb_context_code           => l_amb_context_code
82609       ,p_entity_code                => l_entity_code
82610       ,p_event_class_code           => l_event_class_code);
82611    --
82612    -- set accounting class
82613    --
82614    xla_ae_lines_pkg.SetAcctClass(
82615            p_accounting_class_code  => 'INVENTORY_VALUATION'
82616          , p_ae_header_id           => l_ae_header_id
82617          );
82618 
82619    --
82620    -- set rounding class
82621    --
82622    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
82623                       'INVENTORY_VALUATION';
82624 
82625    --
82626    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
82627    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
82628    --
82629    -- bulk performance
82630    --
82631    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
82632 
82633    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
82634       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
82635 
82636    -- 4955764
82637    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82638       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
82639 
82640    -- 4458381 Public Sector Enh
82641    
82642    --
82643    -- set accounting attributes for the line type
82644    --
82645    l_entered_amt_idx := 17;
82646    l_accted_amt_idx  := 22;
82647    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
82648    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
82649    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
82650    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
82651    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
82652    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
82653    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
82654    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
82655    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
82656    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
82657    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
82658    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
82659    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
82660    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
82661    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
82662    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
82663    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
82664    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
82665    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
82666    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
82667    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
82668    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
82669    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
82670    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
82671    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
82672    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
82673    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
82674    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
82675    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
82676    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
82677    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
82678    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
82679    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
82680    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
82681    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
82682    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
82683    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
82684    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
82685    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
82686    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
82687    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
82688    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
82689    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
82690    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
82691    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
82692    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
82693    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
82694    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
82695    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
82696 
82697    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
82698    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
82699 
82700    ---------------------------------------------------------------------------------------------------------------
82701    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
82702    ---------------------------------------------------------------------------------------------------------------
82703    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
82704 
82705    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82706    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82707 
82708    IF xla_accounting_cache_pkg.GetValueChar
82709          (p_source_code         => 'LEDGER_CATEGORY_CODE'
82710          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
82711    AND l_bflow_method_code = 'PRIOR_ENTRY'
82712 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
82713    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
82714          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
82715        )
82716    THEN
82717          xla_ae_lines_pkg.BflowUpgEntry
82718            (p_business_method_code    => l_bflow_method_code
82719            ,p_business_class_code     => l_bflow_class_code
82720            ,p_balance_type            => l_balance_type_code);
82721    ELSE
82722       NULL;
82723 -- No business flow processing for business flow method of NONE.
82724    END IF;
82725 
82726    --
82727    -- call analytical criteria
82728    --
82729    
82730    --
82731    -- call description
82732    --
82733    -- No description or it is inherited.
82734    --
82735    -- call ADRs
82736    -- Bug 4922099
82737    --
82738    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82739         (NVL(l_actual_upg_option, 'N') = 'O') OR
82740         (NVL(l_enc_upg_option, 'N') = 'O')
82741       )
82742    THEN
82743    NULL;
82744    --
82745    --
82746    
82747   l_ccid := AcctDerRule_4(
82748            p_application_id           => p_application_id
82749          , p_ae_header_id             => l_ae_header_id 
82750 , p_source_4 => p_source_4
82751          , x_transaction_coa_id       => l_adr_transaction_coa_id
82752          , x_accounting_coa_id        => l_adr_accounting_coa_id
82753          , x_value_type_code          => l_adr_value_type_code
82754          , p_side                     => 'NA'
82755    );
82756 
82757    xla_ae_lines_pkg.set_ccid(
82758     p_code_combination_id          => l_ccid
82759   , p_value_type_code              => l_adr_value_type_code
82760   , p_transaction_coa_id           => l_adr_transaction_coa_id
82761   , p_accounting_coa_id            => l_adr_accounting_coa_id
82762   , p_adr_code                     => 'CST_DEFAULT'
82763   , p_adr_type_code                => 'S'
82764   , p_component_type               => l_component_type
82765   , p_component_code               => l_component_code
82766   , p_component_type_code          => l_component_type_code
82767   , p_component_appl_id            => l_component_appl_id
82768   , p_amb_context_code             => l_amb_context_code
82769   , p_side                         => 'NA'
82770   );
82771 
82772 
82773    --
82774    --
82775    END IF;
82776    --
82777    -- Bug 4922099
82778    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
82779           (NVL(l_enc_upg_option, 'N') = 'O')
82780         ) AND
82781         (l_bflow_method_code = 'PRIOR_ENTRY')
82782       )
82783    THEN
82784       IF
82785       --
82786       1 = 2
82787       --
82788       THEN
82789       xla_accounting_err_pkg.build_message
82790                                     (p_appli_s_name            => 'XLA'
82791                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82792                                     ,p_token_1                 => 'LINE_NUMBER'
82793                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
82794                                     ,p_token_2                 => 'LINE_TYPE_NAME'
82795                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
82796                                                                              l_component_type
82797                                                                             ,l_component_code
82798                                                                             ,l_component_type_code
82799                                                                             ,l_component_appl_id
82800                                                                             ,l_amb_context_code
82801                                                                             ,l_entity_code
82802                                                                             ,l_event_class_code
82803                                                                            )
82804                                     ,p_token_3                 => 'OWNER'
82805                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
82806                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
82807                                                                           ,p_lookup_code    => l_component_type_code
82808                                                                          )
82809                                     ,p_token_4                 => 'PRODUCT_NAME'
82810                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
82811                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
82812                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
82813                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
82814                                     ,p_ae_header_id            =>  NULL
82815                                        );
82816 
82817         IF (C_LEVEL_ERROR>= g_log_level) THEN
82818                  trace
82819                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82820                       ,p_level    => C_LEVEL_ERROR
82821                       ,p_module   => l_log_module);
82822         END IF;
82823       END IF;
82824    END IF;
82825    --
82826    --
82827    ------------------------------------------------------------------------------------------------
82828    -- 4219869 Business Flow
82829    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
82830    -- Prior Entry.  Currently, the following code is always generated.
82831    ------------------------------------------------------------------------------------------------
82832    XLA_AE_LINES_PKG.ValidateCurrentLine;
82833 
82834    ------------------------------------------------------------------------------------
82835    -- 4219869 Business Flow
82836    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
82837    ------------------------------------------------------------------------------------
82838    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82839 
82840    ----------------------------------------------------------------------------------
82841    -- 4219869 Business Flow
82842    -- Update journal entry status -- Need to generate this within IF <condition>
82843    ----------------------------------------------------------------------------------
82844    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82845          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
82846          ,p_balance_type_code => l_balance_type_code
82847          );
82848 
82849    -------------------------------------------------------------------------------------------
82850    -- 4262811 - Generate the Accrual Reversal lines
82851    -------------------------------------------------------------------------------------------
82852    BEGIN
82853       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
82854                               (g_array_event(p_event_id).array_value_num('header_index'));
82855       IF l_acc_rev_flag IS NULL THEN
82856          l_acc_rev_flag := 'N';
82857       END IF;
82858    EXCEPTION
82859       WHEN OTHERS THEN
82860          l_acc_rev_flag := 'N';
82861    END;
82862    --
82863    IF (l_acc_rev_flag = 'Y') THEN
82864 
82865        -- 4645092  ------------------------------------------------------------------------------
82866        -- To allow MPA report to determine if it should generate report process
82867        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
82868        ------------------------------------------------------------------------------------------
82869 
82870        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
82871        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
82872    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
82873    -- call ADRs
82874    -- Bug 4922099
82875    --
82876    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82877         (NVL(l_actual_upg_option, 'N') = 'O') OR
82878         (NVL(l_enc_upg_option, 'N') = 'O')
82879       )
82880    THEN
82881    NULL;
82882    --
82883    --
82884    
82885   l_ccid := AcctDerRule_4(
82886            p_application_id           => p_application_id
82887          , p_ae_header_id             => l_ae_header_id 
82888 , p_source_4 => p_source_4
82889          , x_transaction_coa_id       => l_adr_transaction_coa_id
82890          , x_accounting_coa_id        => l_adr_accounting_coa_id
82891          , x_value_type_code          => l_adr_value_type_code
82892          , p_side                     => 'NA'
82893    );
82894 
82895    xla_ae_lines_pkg.set_ccid(
82896     p_code_combination_id          => l_ccid
82897   , p_value_type_code              => l_adr_value_type_code
82898   , p_transaction_coa_id           => l_adr_transaction_coa_id
82899   , p_accounting_coa_id            => l_adr_accounting_coa_id
82900   , p_adr_code                     => 'CST_DEFAULT'
82901   , p_adr_type_code                => 'S'
82902   , p_component_type               => l_component_type
82903   , p_component_code               => l_component_code
82904   , p_component_type_code          => l_component_type_code
82905   , p_component_appl_id            => l_component_appl_id
82906   , p_amb_context_code             => l_amb_context_code
82907   , p_side                         => 'NA'
82908   );
82909 
82910 
82911    --
82912    --
82913    END IF;
82914 
82915        --
82916        -- Update the line information that should be overwritten
82917        --
82918        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
82919                                          p_header_num   => 1);
82920        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
82921 
82922        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
82923 
82924        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
82925           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
82926        END IF;
82927 
82928       --
82929       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
82930       --
82931       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
82932           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
82933       ELSE
82934           ---------------------------------------------------------------------------------------------------
82935           -- 4262811a Switch Sign
82936           ---------------------------------------------------------------------------------------------------
82937           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
82938           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82939                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82940           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82941                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82942           -- 5132302
82943           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
82944                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82945 
82946       END IF;
82947 
82948       -- 4955764
82949       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82950       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
82951 
82952 
82953       XLA_AE_LINES_PKG.ValidateCurrentLine;
82954       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82955 
82956       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82957                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
82958                ,p_balance_type_code => l_balance_type_code);
82959 
82960    END IF;
82961 
82962    -----------------------------------------------------------------------------------------
82963    -- 4262811 Multiperiod Accounting
82964    -----------------------------------------------------------------------------------------
82965      -- No MPA option is assigned.
82966 
82967 
82968 END IF;
82969 END IF;
82970 --
82971 
82972 --
82973 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82974    trace
82975       (p_msg      => 'END of AcctLineType_151'
82976       ,p_level    => C_LEVEL_PROCEDURE
82977       ,p_module   => l_log_module);
82978 END IF;
82979 --
82980 EXCEPTION
82981   WHEN xla_exceptions_pkg.application_exception THEN
82982       RAISE;
82983   WHEN OTHERS THEN
82984        xla_exceptions_pkg.raise_message
82985            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_151');
82986 END AcctLineType_151;
82987 --
82988 
82989 ---------------------------------------
82990 --
82991 -- PRIVATE FUNCTION
82992 --         AcctLineType_152
82993 --
82994 ---------------------------------------
82995 PROCEDURE AcctLineType_152 (
82996   p_application_id        IN NUMBER
82997  ,p_event_id              IN NUMBER
82998  ,p_calculate_acctd_flag  IN VARCHAR2
82999  ,p_calculate_g_l_flag    IN VARCHAR2
83000  ,p_actual_flag           IN OUT VARCHAR2
83001  ,p_balance_type_code     OUT VARCHAR2
83002  ,p_gain_or_loss_ref      OUT VARCHAR2
83003  
83004 --Cost Management Default Account
83005  , p_source_4            IN NUMBER
83006 --Applied to Application ID
83007  , p_source_6            IN NUMBER
83008 --Applied to Distribution Link Type
83009  , p_source_7            IN VARCHAR2
83010 --Applied to Entity Code
83011  , p_source_8            IN VARCHAR2
83012 --DISTRIBUTION_IDENTIFIER
83013  , p_source_11            IN NUMBER
83014 --Distribution Type
83015  , p_source_12            IN VARCHAR2
83016  , p_source_12_meaning    IN VARCHAR2
83017 --Encumbrance Reversal Amount Entered
83018  , p_source_14            IN NUMBER
83019 --Entered Currency Code
83020  , p_source_15            IN VARCHAR2
83021 --Transaction Encumbrance Reversal Amount
83022  , p_source_16            IN NUMBER
83023 --Entered Amount
83024  , p_source_18            IN NUMBER
83025 --Currency Conversion Date
83026  , p_source_19            IN DATE
83027 --Currency Conversion Rate
83028  , p_source_20            IN NUMBER
83029 --Currency Conversion Type
83030  , p_source_21            IN VARCHAR2
83031 --Accounted Amount
83032  , p_source_22            IN NUMBER
83033 --Accounting Line Type
83034  , p_source_24            IN NUMBER
83035 --Costing Encumbrance Upgrade Option
83036  , p_source_27            IN VARCHAR2
83037 --TXN_PO_DISTRIBUTION_ID
83038  , p_source_28            IN NUMBER
83039 --TXN_PO_HEADER_ID
83040  , p_source_29            IN NUMBER
83041 --Requisition Budget Account
83042  , p_source_30            IN NUMBER
83043 --Requisition Encumbrance Type Identifier
83044  , p_source_31            IN NUMBER
83045 )
83046 IS
83047 
83048 l_component_type              VARCHAR2(80);
83049 l_component_code              VARCHAR2(30);
83050 l_component_type_code         VARCHAR2(1);
83051 l_component_appl_id           INTEGER;
83052 l_amb_context_code            VARCHAR2(30);
83053 l_entity_code                 VARCHAR2(30);
83054 l_event_class_code            VARCHAR2(30);
83055 l_ae_header_id                NUMBER;
83056 l_event_type_code             VARCHAR2(30);
83057 l_line_definition_code        VARCHAR2(30);
83058 l_line_definition_owner_code  VARCHAR2(1);
83059 --
83060 -- adr variables
83061 l_segment                     VARCHAR2(30);
83062 l_ccid                        NUMBER;
83063 l_adr_transaction_coa_id      NUMBER;
83064 l_adr_accounting_coa_id       NUMBER;
83065 l_adr_flexfield_segment_code  VARCHAR2(30);
83066 l_adr_flex_value_set_id       NUMBER;
83067 l_adr_value_type_code         VARCHAR2(30);
83068 l_adr_value_combination_id    NUMBER;
83069 l_adr_value_segment_code      VARCHAR2(30);
83070 
83071 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
83072 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
83073 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
83074 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
83075 
83076 -- 4262811 Variables ------------------------------------------------------------------------------------------
83077 l_entered_amt_idx             NUMBER;
83078 l_accted_amt_idx              NUMBER;
83079 l_acc_rev_flag                VARCHAR2(1);
83080 l_accrual_line_num            NUMBER;
83081 l_tmp_amt                     NUMBER;
83082 l_acc_rev_natural_side_code   VARCHAR2(1);
83083 
83084 l_num_entries                 NUMBER;
83085 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
83086 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
83087 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
83088 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
83089 l_recog_line_1                NUMBER;
83090 l_recog_line_2                NUMBER;
83091 
83092 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
83093 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
83094 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
83095 
83096 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
83097 
83098 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
83099 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
83100 
83101 ---------------------------------------------------------------------------------------------------------------
83102 
83103 
83104 --
83105 -- bulk performance
83106 --
83107 l_balance_type_code           VARCHAR2(1);
83108 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
83109 l_log_module                  VARCHAR2(240);
83110 
83111 --
83112 -- Upgrade strategy
83113 --
83114 l_actual_upg_option           VARCHAR2(1);
83115 l_enc_upg_option           VARCHAR2(1);
83116 
83117 --
83118 BEGIN
83119 --
83120 IF g_log_enabled THEN
83121       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_152';
83122 END IF;
83123 --
83124 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83125 
83126       trace
83127          (p_msg      => 'BEGIN of AcctLineType_152'
83128          ,p_level    => C_LEVEL_PROCEDURE
83129          ,p_module   => l_log_module);
83130 
83131 END IF;
83132 --
83133 l_component_type             := 'AMB_JLT';
83134 l_component_code             := 'INVENTORY_VALUATION';
83135 l_component_type_code        := 'S';
83136 l_component_appl_id          :=  707;
83137 l_amb_context_code           := 'DEFAULT';
83138 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
83139 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
83140 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
83141 l_line_definition_owner_code := 'S';
83142 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT';
83143 --
83144 l_balance_type_code          := 'A';
83145 l_segment                     := NULL;
83146 l_ccid                        := NULL;
83147 l_adr_transaction_coa_id      := NULL;
83148 l_adr_accounting_coa_id       := NULL;
83149 l_adr_flexfield_segment_code  := NULL;
83150 l_adr_flex_value_set_id       := NULL;
83151 l_adr_value_type_code         := NULL;
83152 l_adr_value_combination_id    := NULL;
83153 l_adr_value_segment_code      := NULL;
83154 
83155 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
83156 l_bflow_class_code           := '';    -- 4219869 Business Flow
83157 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
83158 l_budgetary_control_flag     := 'N';
83159 
83160 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
83161 l_bflow_applied_to_amt       := NULL; -- 5132302
83162 l_entered_amt_idx            := NULL;          -- 4262811
83163 l_accted_amt_idx             := NULL;          -- 4262811
83164 l_acc_rev_flag               := NULL;          -- 4262811
83165 l_accrual_line_num           := NULL;          -- 4262811
83166 l_tmp_amt                    := NULL;          -- 4262811
83167 --
83168  
83169 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
83170     l_balance_type_code <> 'B' THEN
83171 IF NVL(p_source_24,9E125) =  1
83172  THEN 
83173 
83174    --
83175    XLA_AE_LINES_PKG.SetNewLine;
83176 
83177    p_balance_type_code          := l_balance_type_code;
83178    -- set the flag so later we will know whether the gain loss line needs to be created
83179    
83180    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
83181      p_actual_flag :='A';
83182    END IF;
83183 
83184    --
83185    -- bulk performance
83186    --
83187    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
83188                                       p_header_num   => 0); -- 4262811
83189    --
83190    -- set accounting line options
83191    --
83192    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
83193            p_natural_side_code          => 'D'
83194          , p_gain_or_loss_flag          => 'N'
83195          , p_gl_transfer_mode_code      => 'S'
83196          , p_acct_entry_type_code       => 'A'
83197          , p_switch_side_flag           => 'Y'
83198          , p_merge_duplicate_code       => 'N'
83199          );
83200    --
83201    l_acc_rev_natural_side_code := 'C';  -- 4262811
83202    -- 
83203    --
83204    -- set accounting line type info
83205    --
83206    xla_ae_lines_pkg.SetAcctLineType
83207       (p_component_type             => l_component_type
83208       ,p_event_type_code            => l_event_type_code
83209       ,p_line_definition_owner_code => l_line_definition_owner_code
83210       ,p_line_definition_code       => l_line_definition_code
83211       ,p_accounting_line_code       => l_component_code
83212       ,p_accounting_line_type_code  => l_component_type_code
83213       ,p_accounting_line_appl_id    => l_component_appl_id
83214       ,p_amb_context_code           => l_amb_context_code
83215       ,p_entity_code                => l_entity_code
83216       ,p_event_class_code           => l_event_class_code);
83217    --
83218    -- set accounting class
83219    --
83220    xla_ae_lines_pkg.SetAcctClass(
83221            p_accounting_class_code  => 'INVENTORY_VALUATION'
83222          , p_ae_header_id           => l_ae_header_id
83223          );
83224 
83225    --
83226    -- set rounding class
83227    --
83228    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
83229                       'INVENTORY_VALUATION';
83230 
83231    --
83232    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
83233    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
83234    --
83235    -- bulk performance
83236    --
83237    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
83238 
83239    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
83240       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
83241 
83242    -- 4955764
83243    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83244       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
83245 
83246    -- 4458381 Public Sector Enh
83247    
83248    --
83249    -- set accounting attributes for the line type
83250    --
83251    l_entered_amt_idx := 17;
83252    l_accted_amt_idx  := 22;
83253    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
83254    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
83255    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
83256    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
83257    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
83258    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
83259    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
83260    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
83261    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
83262    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
83263    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
83264    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
83265    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
83266    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
83267    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
83268    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
83269    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
83270    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
83271    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
83272    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
83273    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
83274    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
83275    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
83276    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
83277    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
83278    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
83279    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
83280    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
83281    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
83282    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
83283    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
83284    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
83285    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
83286    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
83287    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
83288    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
83289    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
83290    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
83291    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
83292    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
83293    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
83294    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
83295    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
83296    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
83297    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
83298    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
83299    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
83300    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
83301    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
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_000007_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           := 'FOB_RCPT_SENDER_SHIP';
83726 l_event_type_code            := 'FOB_RCPT_SENDER_SHIP_ALL';
83727 l_line_definition_owner_code := 'S';
83728 l_line_definition_code       := 'FOB_RCPT_SEND_SHIP';
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_000007_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           := 'FOB_SHIP_SENDER_SHIP';
84280 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_ALL';
84281 l_line_definition_owner_code := 'S';
84282 l_line_definition_code       := 'FOB_SHIP_SENDER_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_000007_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 --Receiving Accounting Line Type
84721  , p_source_5            IN VARCHAR2
84722 --DISTRIBUTION_IDENTIFIER
84723  , p_source_11            IN NUMBER
84724 --Distribution Type
84725  , p_source_12            IN VARCHAR2
84726  , p_source_12_meaning    IN VARCHAR2
84727 --Entered Amount
84728  , p_source_18            IN NUMBER
84729 --Accounted Amount
84730  , p_source_22            IN NUMBER
84731 --Entered Currency Code
84732  , p_source_32            IN VARCHAR2
84733 --Currency Conversion Date
84734  , p_source_33            IN DATE
84735 --Currency Conversion Rate
84736  , p_source_34            IN NUMBER
84737 --Currency Conversion Type
84738  , p_source_36            IN VARCHAR2
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             := 'LANDED_COST_ABSORPTION';
84829 l_component_type_code        := 'S';
84830 l_component_appl_id          :=  707;
84831 l_amb_context_code           := 'DEFAULT';
84832 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
84833 l_event_class_code           := 'LDD_COST_ADJ_RCV';
84834 l_event_type_code            := 'LDD_COST_ADJ_RCV_ALL';
84835 l_line_definition_owner_code := 'S';
84836 l_line_definition_code       := 'LDD_COST_ADJ_RCV';
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_5,'
84866 ') =  'Landed Cost Absorption'
84867  THEN 
84868 
84869    --
84870    XLA_AE_LINES_PKG.SetNewLine;
84871 
84872    p_balance_type_code          := l_balance_type_code;
84873    -- set the flag so later we will know whether the gain loss line needs to be created
84874    
84875    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
84876      p_actual_flag :='A';
84877    END IF;
84878 
84879    --
84880    -- bulk performance
84881    --
84882    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
84883                                       p_header_num   => 0); -- 4262811
84884    --
84885    -- set accounting line options
84886    --
84887    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
84888            p_natural_side_code          => 'D'
84889          , p_gain_or_loss_flag          => 'N'
84890          , p_gl_transfer_mode_code      => 'S'
84891          , p_acct_entry_type_code       => 'A'
84892          , p_switch_side_flag           => 'Y'
84893          , p_merge_duplicate_code       => 'N'
84894          );
84895    --
84896    l_acc_rev_natural_side_code := 'C';  -- 4262811
84897    -- 
84898    --
84899    -- set accounting line type info
84900    --
84901    xla_ae_lines_pkg.SetAcctLineType
84902       (p_component_type             => l_component_type
84903       ,p_event_type_code            => l_event_type_code
84904       ,p_line_definition_owner_code => l_line_definition_owner_code
84905       ,p_line_definition_code       => l_line_definition_code
84906       ,p_accounting_line_code       => l_component_code
84907       ,p_accounting_line_type_code  => l_component_type_code
84908       ,p_accounting_line_appl_id    => l_component_appl_id
84909       ,p_amb_context_code           => l_amb_context_code
84910       ,p_entity_code                => l_entity_code
84911       ,p_event_class_code           => l_event_class_code);
84912    --
84913    -- set accounting class
84914    --
84915    xla_ae_lines_pkg.SetAcctClass(
84916            p_accounting_class_code  => 'LANDED_COST_ABSORPTION'
84917          , p_ae_header_id           => l_ae_header_id
84918          );
84919 
84920    --
84921    -- set rounding class
84922    --
84923    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
84924                       'LANDED_COST_ABSORPTION';
84925 
84926    --
84927    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
84928    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
84929    --
84930    -- bulk performance
84931    --
84932    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
84933 
84934    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
84935       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
84936 
84937    -- 4955764
84938    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84939       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
84940 
84941    -- 4458381 Public Sector Enh
84942    
84943    --
84944    -- set accounting attributes for the line type
84945    --
84946    l_entered_amt_idx := 3;
84947    l_accted_amt_idx  := 8;
84948    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
84949    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
84950    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
84951    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
84952    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
84953    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
84954    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
84955    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
84956    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
84957    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
84958    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
84959    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
84960    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
84961    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
84962    l_rec_acct_attrs.array_char_value(7)  := p_source_36;
84963    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
84964    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
84965 
84966    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
84967    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
84968 
84969    ---------------------------------------------------------------------------------------------------------------
84970    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
84971    ---------------------------------------------------------------------------------------------------------------
84972    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
84973 
84974    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84975    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84976 
84977    IF xla_accounting_cache_pkg.GetValueChar
84978          (p_source_code         => 'LEDGER_CATEGORY_CODE'
84979          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
84980    AND l_bflow_method_code = 'PRIOR_ENTRY'
84981 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
84982    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
84983          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
84984        )
84985    THEN
84986          xla_ae_lines_pkg.BflowUpgEntry
84987            (p_business_method_code    => l_bflow_method_code
84988            ,p_business_class_code     => l_bflow_class_code
84989            ,p_balance_type            => l_balance_type_code);
84990    ELSE
84991       NULL;
84992 -- No business flow processing for business flow method of NONE.
84993    END IF;
84994 
84995    --
84996    -- call analytical criteria
84997    --
84998    
84999    --
85000    -- call description
85001    --
85002    -- No description or it is inherited.
85003    --
85004    -- call ADRs
85005    -- Bug 4922099
85006    --
85007    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85008         (NVL(l_actual_upg_option, 'N') = 'O') OR
85009         (NVL(l_enc_upg_option, 'N') = 'O')
85010       )
85011    THEN
85012    NULL;
85013    --
85014    --
85015    
85016   l_ccid := AcctDerRule_4(
85017            p_application_id           => p_application_id
85018          , p_ae_header_id             => l_ae_header_id 
85019 , p_source_4 => p_source_4
85020          , x_transaction_coa_id       => l_adr_transaction_coa_id
85021          , x_accounting_coa_id        => l_adr_accounting_coa_id
85022          , x_value_type_code          => l_adr_value_type_code
85023          , p_side                     => 'NA'
85024    );
85025 
85026    xla_ae_lines_pkg.set_ccid(
85027     p_code_combination_id          => l_ccid
85028   , p_value_type_code              => l_adr_value_type_code
85029   , p_transaction_coa_id           => l_adr_transaction_coa_id
85030   , p_accounting_coa_id            => l_adr_accounting_coa_id
85031   , p_adr_code                     => 'CST_DEFAULT'
85032   , p_adr_type_code                => 'S'
85033   , p_component_type               => l_component_type
85034   , p_component_code               => l_component_code
85035   , p_component_type_code          => l_component_type_code
85036   , p_component_appl_id            => l_component_appl_id
85037   , p_amb_context_code             => l_amb_context_code
85038   , p_side                         => 'NA'
85039   );
85040 
85041 
85042    --
85043    --
85044    END IF;
85045    --
85046    -- Bug 4922099
85047    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
85048           (NVL(l_enc_upg_option, 'N') = 'O')
85049         ) AND
85050         (l_bflow_method_code = 'PRIOR_ENTRY')
85051       )
85052    THEN
85053       IF
85054       --
85055       1 = 2
85056       --
85057       THEN
85058       xla_accounting_err_pkg.build_message
85059                                     (p_appli_s_name            => 'XLA'
85060                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85061                                     ,p_token_1                 => 'LINE_NUMBER'
85062                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
85063                                     ,p_token_2                 => 'LINE_TYPE_NAME'
85064                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
85065                                                                              l_component_type
85066                                                                             ,l_component_code
85067                                                                             ,l_component_type_code
85068                                                                             ,l_component_appl_id
85069                                                                             ,l_amb_context_code
85070                                                                             ,l_entity_code
85071                                                                             ,l_event_class_code
85072                                                                            )
85073                                     ,p_token_3                 => 'OWNER'
85074                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
85075                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
85076                                                                           ,p_lookup_code    => l_component_type_code
85077                                                                          )
85078                                     ,p_token_4                 => 'PRODUCT_NAME'
85079                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
85080                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
85081                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
85082                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
85083                                     ,p_ae_header_id            =>  NULL
85084                                        );
85085 
85086         IF (C_LEVEL_ERROR>= g_log_level) THEN
85087                  trace
85088                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85089                       ,p_level    => C_LEVEL_ERROR
85090                       ,p_module   => l_log_module);
85091         END IF;
85092       END IF;
85093    END IF;
85094    --
85095    --
85096    ------------------------------------------------------------------------------------------------
85097    -- 4219869 Business Flow
85098    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
85099    -- Prior Entry.  Currently, the following code is always generated.
85100    ------------------------------------------------------------------------------------------------
85101    XLA_AE_LINES_PKG.ValidateCurrentLine;
85102 
85103    ------------------------------------------------------------------------------------
85104    -- 4219869 Business Flow
85105    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
85106    ------------------------------------------------------------------------------------
85107    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85108 
85109    ----------------------------------------------------------------------------------
85110    -- 4219869 Business Flow
85111    -- Update journal entry status -- Need to generate this within IF <condition>
85112    ----------------------------------------------------------------------------------
85113    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85114          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
85115          ,p_balance_type_code => l_balance_type_code
85116          );
85117 
85118    -------------------------------------------------------------------------------------------
85119    -- 4262811 - Generate the Accrual Reversal lines
85120    -------------------------------------------------------------------------------------------
85121    BEGIN
85122       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
85123                               (g_array_event(p_event_id).array_value_num('header_index'));
85124       IF l_acc_rev_flag IS NULL THEN
85125          l_acc_rev_flag := 'N';
85126       END IF;
85127    EXCEPTION
85128       WHEN OTHERS THEN
85129          l_acc_rev_flag := 'N';
85130    END;
85131    --
85132    IF (l_acc_rev_flag = 'Y') THEN
85133 
85134        -- 4645092  ------------------------------------------------------------------------------
85135        -- To allow MPA report to determine if it should generate report process
85136        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
85137        ------------------------------------------------------------------------------------------
85138 
85139        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
85140        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
85141    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
85142    -- call ADRs
85143    -- Bug 4922099
85144    --
85145    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85146         (NVL(l_actual_upg_option, 'N') = 'O') OR
85147         (NVL(l_enc_upg_option, 'N') = 'O')
85148       )
85149    THEN
85150    NULL;
85151    --
85152    --
85153    
85154   l_ccid := AcctDerRule_4(
85155            p_application_id           => p_application_id
85156          , p_ae_header_id             => l_ae_header_id 
85157 , p_source_4 => p_source_4
85158          , x_transaction_coa_id       => l_adr_transaction_coa_id
85159          , x_accounting_coa_id        => l_adr_accounting_coa_id
85160          , x_value_type_code          => l_adr_value_type_code
85161          , p_side                     => 'NA'
85162    );
85163 
85164    xla_ae_lines_pkg.set_ccid(
85165     p_code_combination_id          => l_ccid
85166   , p_value_type_code              => l_adr_value_type_code
85167   , p_transaction_coa_id           => l_adr_transaction_coa_id
85168   , p_accounting_coa_id            => l_adr_accounting_coa_id
85169   , p_adr_code                     => 'CST_DEFAULT'
85170   , p_adr_type_code                => 'S'
85171   , p_component_type               => l_component_type
85172   , p_component_code               => l_component_code
85173   , p_component_type_code          => l_component_type_code
85174   , p_component_appl_id            => l_component_appl_id
85175   , p_amb_context_code             => l_amb_context_code
85176   , p_side                         => 'NA'
85177   );
85178 
85179 
85180    --
85181    --
85182    END IF;
85183 
85184        --
85185        -- Update the line information that should be overwritten
85186        --
85187        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
85188                                          p_header_num   => 1);
85189        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
85190 
85191        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
85192 
85193        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
85194           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
85195        END IF;
85196 
85197       --
85198       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
85199       --
85200       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
85201           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
85202       ELSE
85203           ---------------------------------------------------------------------------------------------------
85204           -- 4262811a Switch Sign
85205           ---------------------------------------------------------------------------------------------------
85206           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
85207           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85208                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85209           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85210                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85211           -- 5132302
85212           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
85213                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85214 
85215       END IF;
85216 
85217       -- 4955764
85218       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85219       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
85220 
85221 
85222       XLA_AE_LINES_PKG.ValidateCurrentLine;
85223       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85224 
85225       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85226                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
85227                ,p_balance_type_code => l_balance_type_code);
85228 
85229    END IF;
85230 
85231    -----------------------------------------------------------------------------------------
85232    -- 4262811 Multiperiod Accounting
85233    -----------------------------------------------------------------------------------------
85234      -- No MPA option is assigned.
85235 
85236 
85237 END IF;
85238 END IF;
85239 --
85240 
85241 --
85242 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85243    trace
85244       (p_msg      => 'END of AcctLineType_155'
85245       ,p_level    => C_LEVEL_PROCEDURE
85246       ,p_module   => l_log_module);
85247 END IF;
85248 --
85249 EXCEPTION
85250   WHEN xla_exceptions_pkg.application_exception THEN
85251       RAISE;
85252   WHEN OTHERS THEN
85253        xla_exceptions_pkg.raise_message
85254            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_155');
85255 END AcctLineType_155;
85256 --
85257 
85258 ---------------------------------------
85259 --
85260 -- PRIVATE FUNCTION
85261 --         AcctLineType_156
85262 --
85263 ---------------------------------------
85264 PROCEDURE AcctLineType_156 (
85265   p_application_id        IN NUMBER
85266  ,p_event_id              IN NUMBER
85267  ,p_calculate_acctd_flag  IN VARCHAR2
85268  ,p_calculate_g_l_flag    IN VARCHAR2
85269  ,p_actual_flag           IN OUT VARCHAR2
85270  ,p_balance_type_code     OUT VARCHAR2
85271  ,p_gain_or_loss_ref      OUT VARCHAR2
85272  
85273 --Cost Management Default Account
85274  , p_source_4            IN NUMBER
85275 --Receiving Accounting Line Type
85276  , p_source_5            IN VARCHAR2
85277 --DISTRIBUTION_IDENTIFIER
85278  , p_source_11            IN NUMBER
85279 --Distribution Type
85280  , p_source_12            IN VARCHAR2
85281  , p_source_12_meaning    IN VARCHAR2
85282 --Entered Currency Code
85283  , p_source_15            IN VARCHAR2
85284 --Entered Amount
85285  , p_source_18            IN NUMBER
85286 --Currency Conversion Date
85287  , p_source_19            IN DATE
85288 --Currency Conversion Rate
85289  , p_source_20            IN NUMBER
85290 --Currency Conversion Type
85291  , p_source_21            IN VARCHAR2
85292 --Accounted Amount
85293  , p_source_22            IN NUMBER
85294 )
85295 IS
85296 
85297 l_component_type              VARCHAR2(80);
85298 l_component_code              VARCHAR2(30);
85299 l_component_type_code         VARCHAR2(1);
85300 l_component_appl_id           INTEGER;
85301 l_amb_context_code            VARCHAR2(30);
85302 l_entity_code                 VARCHAR2(30);
85303 l_event_class_code            VARCHAR2(30);
85304 l_ae_header_id                NUMBER;
85305 l_event_type_code             VARCHAR2(30);
85306 l_line_definition_code        VARCHAR2(30);
85307 l_line_definition_owner_code  VARCHAR2(1);
85308 --
85309 -- adr variables
85310 l_segment                     VARCHAR2(30);
85311 l_ccid                        NUMBER;
85312 l_adr_transaction_coa_id      NUMBER;
85313 l_adr_accounting_coa_id       NUMBER;
85314 l_adr_flexfield_segment_code  VARCHAR2(30);
85315 l_adr_flex_value_set_id       NUMBER;
85316 l_adr_value_type_code         VARCHAR2(30);
85317 l_adr_value_combination_id    NUMBER;
85318 l_adr_value_segment_code      VARCHAR2(30);
85319 
85320 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
85321 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
85322 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
85323 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
85324 
85325 -- 4262811 Variables ------------------------------------------------------------------------------------------
85326 l_entered_amt_idx             NUMBER;
85327 l_accted_amt_idx              NUMBER;
85328 l_acc_rev_flag                VARCHAR2(1);
85329 l_accrual_line_num            NUMBER;
85330 l_tmp_amt                     NUMBER;
85331 l_acc_rev_natural_side_code   VARCHAR2(1);
85332 
85333 l_num_entries                 NUMBER;
85334 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
85335 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
85336 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
85337 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
85338 l_recog_line_1                NUMBER;
85339 l_recog_line_2                NUMBER;
85340 
85341 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
85342 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
85343 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
85344 
85345 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
85346 
85347 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
85348 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
85349 
85350 ---------------------------------------------------------------------------------------------------------------
85351 
85352 
85353 --
85354 -- bulk performance
85355 --
85356 l_balance_type_code           VARCHAR2(1);
85357 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
85358 l_log_module                  VARCHAR2(240);
85359 
85360 --
85361 -- Upgrade strategy
85362 --
85363 l_actual_upg_option           VARCHAR2(1);
85364 l_enc_upg_option           VARCHAR2(1);
85365 
85366 --
85367 BEGIN
85368 --
85369 IF g_log_enabled THEN
85370       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_156';
85371 END IF;
85372 --
85373 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85374 
85375       trace
85376          (p_msg      => 'BEGIN of AcctLineType_156'
85377          ,p_level    => C_LEVEL_PROCEDURE
85378          ,p_module   => l_log_module);
85379 
85380 END IF;
85381 --
85382 l_component_type             := 'AMB_JLT';
85383 l_component_code             := 'LANDED_COST_ABSORPTION';
85384 l_component_type_code        := 'S';
85385 l_component_appl_id          :=  707;
85386 l_amb_context_code           := 'DEFAULT';
85387 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
85388 l_event_class_code           := 'RCPT_REC_INSP';
85389 l_event_type_code            := 'RCPT_REC_INSP_ALL';
85390 l_line_definition_owner_code := 'S';
85391 l_line_definition_code       := 'RCPT_REC_INSP';
85392 --
85393 l_balance_type_code          := 'A';
85394 l_segment                     := NULL;
85395 l_ccid                        := NULL;
85396 l_adr_transaction_coa_id      := NULL;
85397 l_adr_accounting_coa_id       := NULL;
85398 l_adr_flexfield_segment_code  := NULL;
85399 l_adr_flex_value_set_id       := NULL;
85400 l_adr_value_type_code         := NULL;
85401 l_adr_value_combination_id    := NULL;
85402 l_adr_value_segment_code      := NULL;
85403 
85404 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
85405 l_bflow_class_code           := '';    -- 4219869 Business Flow
85406 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
85407 l_budgetary_control_flag     := 'N';
85408 
85409 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
85410 l_bflow_applied_to_amt       := NULL; -- 5132302
85411 l_entered_amt_idx            := NULL;          -- 4262811
85412 l_accted_amt_idx             := NULL;          -- 4262811
85413 l_acc_rev_flag               := NULL;          -- 4262811
85414 l_accrual_line_num           := NULL;          -- 4262811
85415 l_tmp_amt                    := NULL;          -- 4262811
85416 --
85417  
85418 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
85419     l_balance_type_code <> 'B' THEN
85420 IF NVL(p_source_5,'
85421 ') =  'Landed Cost Absorption'
85422  THEN 
85423 
85424    --
85425    XLA_AE_LINES_PKG.SetNewLine;
85426 
85427    p_balance_type_code          := l_balance_type_code;
85428    -- set the flag so later we will know whether the gain loss line needs to be created
85429    
85430    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
85431      p_actual_flag :='A';
85432    END IF;
85433 
85434    --
85435    -- bulk performance
85436    --
85437    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
85438                                       p_header_num   => 0); -- 4262811
85439    --
85440    -- set accounting line options
85441    --
85442    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
85443            p_natural_side_code          => 'D'
85444          , p_gain_or_loss_flag          => 'N'
85445          , p_gl_transfer_mode_code      => 'S'
85446          , p_acct_entry_type_code       => 'A'
85447          , p_switch_side_flag           => 'Y'
85448          , p_merge_duplicate_code       => 'N'
85449          );
85450    --
85451    l_acc_rev_natural_side_code := 'C';  -- 4262811
85452    -- 
85453    --
85454    -- set accounting line type info
85455    --
85456    xla_ae_lines_pkg.SetAcctLineType
85457       (p_component_type             => l_component_type
85458       ,p_event_type_code            => l_event_type_code
85459       ,p_line_definition_owner_code => l_line_definition_owner_code
85460       ,p_line_definition_code       => l_line_definition_code
85461       ,p_accounting_line_code       => l_component_code
85462       ,p_accounting_line_type_code  => l_component_type_code
85463       ,p_accounting_line_appl_id    => l_component_appl_id
85464       ,p_amb_context_code           => l_amb_context_code
85465       ,p_entity_code                => l_entity_code
85466       ,p_event_class_code           => l_event_class_code);
85467    --
85468    -- set accounting class
85469    --
85470    xla_ae_lines_pkg.SetAcctClass(
85471            p_accounting_class_code  => 'LANDED_COST_ABSORPTION'
85472          , p_ae_header_id           => l_ae_header_id
85473          );
85474 
85475    --
85476    -- set rounding class
85477    --
85478    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
85479                       'LANDED_COST_ABSORPTION';
85480 
85481    --
85482    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
85483    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
85484    --
85485    -- bulk performance
85486    --
85487    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
85488 
85489    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
85490       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
85491 
85492    -- 4955764
85493    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85494       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
85495 
85496    -- 4458381 Public Sector Enh
85497    
85498    --
85499    -- set accounting attributes for the line type
85500    --
85501    l_entered_amt_idx := 3;
85502    l_accted_amt_idx  := 8;
85503    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
85504    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
85505    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
85506    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
85507    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
85508    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
85509    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
85510    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
85511    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
85512    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
85513    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
85514    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
85515    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
85516    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
85517    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
85518    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
85519    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
85520 
85521    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
85522    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
85523 
85524    ---------------------------------------------------------------------------------------------------------------
85525    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
85526    ---------------------------------------------------------------------------------------------------------------
85527    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
85528 
85529    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85530    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85531 
85532    IF xla_accounting_cache_pkg.GetValueChar
85533          (p_source_code         => 'LEDGER_CATEGORY_CODE'
85534          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
85535    AND l_bflow_method_code = 'PRIOR_ENTRY'
85536 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
85537    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
85538          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
85539        )
85540    THEN
85541          xla_ae_lines_pkg.BflowUpgEntry
85542            (p_business_method_code    => l_bflow_method_code
85543            ,p_business_class_code     => l_bflow_class_code
85544            ,p_balance_type            => l_balance_type_code);
85545    ELSE
85546       NULL;
85547 -- No business flow processing for business flow method of NONE.
85548    END IF;
85549 
85550    --
85551    -- call analytical criteria
85552    --
85553    
85554    --
85555    -- call description
85556    --
85557    -- No description or it is inherited.
85558    --
85559    -- call ADRs
85560    -- Bug 4922099
85561    --
85562    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85563         (NVL(l_actual_upg_option, 'N') = 'O') OR
85564         (NVL(l_enc_upg_option, 'N') = 'O')
85565       )
85566    THEN
85567    NULL;
85568    --
85569    --
85570    
85571   l_ccid := AcctDerRule_4(
85572            p_application_id           => p_application_id
85573          , p_ae_header_id             => l_ae_header_id 
85574 , p_source_4 => p_source_4
85575          , x_transaction_coa_id       => l_adr_transaction_coa_id
85576          , x_accounting_coa_id        => l_adr_accounting_coa_id
85577          , x_value_type_code          => l_adr_value_type_code
85578          , p_side                     => 'NA'
85579    );
85580 
85581    xla_ae_lines_pkg.set_ccid(
85582     p_code_combination_id          => l_ccid
85583   , p_value_type_code              => l_adr_value_type_code
85584   , p_transaction_coa_id           => l_adr_transaction_coa_id
85585   , p_accounting_coa_id            => l_adr_accounting_coa_id
85586   , p_adr_code                     => 'CST_DEFAULT'
85587   , p_adr_type_code                => 'S'
85588   , p_component_type               => l_component_type
85589   , p_component_code               => l_component_code
85590   , p_component_type_code          => l_component_type_code
85591   , p_component_appl_id            => l_component_appl_id
85592   , p_amb_context_code             => l_amb_context_code
85593   , p_side                         => 'NA'
85594   );
85595 
85596 
85597    --
85598    --
85599    END IF;
85600    --
85601    -- Bug 4922099
85602    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
85603           (NVL(l_enc_upg_option, 'N') = 'O')
85604         ) AND
85605         (l_bflow_method_code = 'PRIOR_ENTRY')
85606       )
85607    THEN
85608       IF
85609       --
85610       1 = 2
85611       --
85612       THEN
85613       xla_accounting_err_pkg.build_message
85614                                     (p_appli_s_name            => 'XLA'
85615                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85616                                     ,p_token_1                 => 'LINE_NUMBER'
85617                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
85618                                     ,p_token_2                 => 'LINE_TYPE_NAME'
85619                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
85620                                                                              l_component_type
85621                                                                             ,l_component_code
85622                                                                             ,l_component_type_code
85623                                                                             ,l_component_appl_id
85624                                                                             ,l_amb_context_code
85625                                                                             ,l_entity_code
85626                                                                             ,l_event_class_code
85627                                                                            )
85628                                     ,p_token_3                 => 'OWNER'
85629                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
85630                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
85631                                                                           ,p_lookup_code    => l_component_type_code
85632                                                                          )
85633                                     ,p_token_4                 => 'PRODUCT_NAME'
85634                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
85635                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
85636                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
85637                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
85638                                     ,p_ae_header_id            =>  NULL
85639                                        );
85640 
85641         IF (C_LEVEL_ERROR>= g_log_level) THEN
85642                  trace
85643                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85644                       ,p_level    => C_LEVEL_ERROR
85645                       ,p_module   => l_log_module);
85646         END IF;
85647       END IF;
85648    END IF;
85649    --
85650    --
85651    ------------------------------------------------------------------------------------------------
85652    -- 4219869 Business Flow
85653    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
85654    -- Prior Entry.  Currently, the following code is always generated.
85655    ------------------------------------------------------------------------------------------------
85656    XLA_AE_LINES_PKG.ValidateCurrentLine;
85657 
85658    ------------------------------------------------------------------------------------
85659    -- 4219869 Business Flow
85660    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
85661    ------------------------------------------------------------------------------------
85662    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85663 
85664    ----------------------------------------------------------------------------------
85665    -- 4219869 Business Flow
85666    -- Update journal entry status -- Need to generate this within IF <condition>
85667    ----------------------------------------------------------------------------------
85668    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85669          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
85670          ,p_balance_type_code => l_balance_type_code
85671          );
85672 
85673    -------------------------------------------------------------------------------------------
85674    -- 4262811 - Generate the Accrual Reversal lines
85675    -------------------------------------------------------------------------------------------
85676    BEGIN
85677       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
85678                               (g_array_event(p_event_id).array_value_num('header_index'));
85679       IF l_acc_rev_flag IS NULL THEN
85680          l_acc_rev_flag := 'N';
85681       END IF;
85682    EXCEPTION
85683       WHEN OTHERS THEN
85684          l_acc_rev_flag := 'N';
85685    END;
85686    --
85687    IF (l_acc_rev_flag = 'Y') THEN
85688 
85689        -- 4645092  ------------------------------------------------------------------------------
85690        -- To allow MPA report to determine if it should generate report process
85691        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
85692        ------------------------------------------------------------------------------------------
85693 
85694        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
85695        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
85696    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
85697    -- call ADRs
85698    -- Bug 4922099
85699    --
85700    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85701         (NVL(l_actual_upg_option, 'N') = 'O') OR
85702         (NVL(l_enc_upg_option, 'N') = 'O')
85703       )
85704    THEN
85705    NULL;
85706    --
85707    --
85708    
85709   l_ccid := AcctDerRule_4(
85710            p_application_id           => p_application_id
85711          , p_ae_header_id             => l_ae_header_id 
85712 , p_source_4 => p_source_4
85713          , x_transaction_coa_id       => l_adr_transaction_coa_id
85714          , x_accounting_coa_id        => l_adr_accounting_coa_id
85715          , x_value_type_code          => l_adr_value_type_code
85716          , p_side                     => 'NA'
85717    );
85718 
85719    xla_ae_lines_pkg.set_ccid(
85720     p_code_combination_id          => l_ccid
85721   , p_value_type_code              => l_adr_value_type_code
85722   , p_transaction_coa_id           => l_adr_transaction_coa_id
85723   , p_accounting_coa_id            => l_adr_accounting_coa_id
85724   , p_adr_code                     => 'CST_DEFAULT'
85725   , p_adr_type_code                => 'S'
85726   , p_component_type               => l_component_type
85727   , p_component_code               => l_component_code
85728   , p_component_type_code          => l_component_type_code
85729   , p_component_appl_id            => l_component_appl_id
85730   , p_amb_context_code             => l_amb_context_code
85731   , p_side                         => 'NA'
85732   );
85733 
85734 
85735    --
85736    --
85737    END IF;
85738 
85739        --
85740        -- Update the line information that should be overwritten
85741        --
85742        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
85743                                          p_header_num   => 1);
85744        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
85745 
85746        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
85747 
85748        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
85749           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
85750        END IF;
85751 
85752       --
85753       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
85754       --
85755       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
85756           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
85757       ELSE
85758           ---------------------------------------------------------------------------------------------------
85759           -- 4262811a Switch Sign
85760           ---------------------------------------------------------------------------------------------------
85761           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
85762           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85763                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85764           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85765                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85766           -- 5132302
85767           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
85768                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85769 
85770       END IF;
85771 
85772       -- 4955764
85773       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85774       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
85775 
85776 
85777       XLA_AE_LINES_PKG.ValidateCurrentLine;
85778       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85779 
85780       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85781                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
85782                ,p_balance_type_code => l_balance_type_code);
85783 
85784    END IF;
85785 
85786    -----------------------------------------------------------------------------------------
85787    -- 4262811 Multiperiod Accounting
85788    -----------------------------------------------------------------------------------------
85789      -- No MPA option is assigned.
85790 
85791 
85792 END IF;
85793 END IF;
85794 --
85795 
85796 --
85797 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85798    trace
85799       (p_msg      => 'END of AcctLineType_156'
85800       ,p_level    => C_LEVEL_PROCEDURE
85801       ,p_module   => l_log_module);
85802 END IF;
85803 --
85804 EXCEPTION
85805   WHEN xla_exceptions_pkg.application_exception THEN
85806       RAISE;
85807   WHEN OTHERS THEN
85808        xla_exceptions_pkg.raise_message
85809            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_156');
85810 END AcctLineType_156;
85811 --
85812 
85813 ---------------------------------------
85814 --
85815 -- PRIVATE FUNCTION
85816 --         AcctLineType_157
85817 --
85818 ---------------------------------------
85819 PROCEDURE AcctLineType_157 (
85820   p_application_id        IN NUMBER
85821  ,p_event_id              IN NUMBER
85822  ,p_calculate_acctd_flag  IN VARCHAR2
85823  ,p_calculate_g_l_flag    IN VARCHAR2
85824  ,p_actual_flag           IN OUT VARCHAR2
85825  ,p_balance_type_code     OUT VARCHAR2
85826  ,p_gain_or_loss_ref      OUT VARCHAR2
85827  
85828 --Cost Management Default Account
85829  , p_source_4            IN NUMBER
85830 --Receiving Accounting Line Type
85831  , p_source_5            IN VARCHAR2
85832 --DISTRIBUTION_IDENTIFIER
85833  , p_source_11            IN NUMBER
85834 --Distribution Type
85835  , p_source_12            IN VARCHAR2
85836  , p_source_12_meaning    IN VARCHAR2
85837 --Entered Amount
85838  , p_source_18            IN NUMBER
85839 --Accounted Amount
85840  , p_source_22            IN NUMBER
85841 --Entered Currency Code
85842  , p_source_32            IN VARCHAR2
85843 --Currency Conversion Date
85844  , p_source_33            IN DATE
85845 --Currency Conversion Rate
85846  , p_source_34            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             := 'LANDED_COST_ABSORPTION';
85937 l_component_type_code        := 'S';
85938 l_component_appl_id          :=  707;
85939 l_amb_context_code           := 'DEFAULT';
85940 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
85941 l_event_class_code           := 'LDD_COST_ADJ_DEL';
85942 l_event_type_code            := 'LDD_COST_ADJ_DEL_ALL';
85943 l_line_definition_owner_code := 'S';
85944 l_line_definition_code       := 'LDD_COST_ADJ_DEL';
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_5,'
85974 ') =  'Landed Cost Absorption'
85975  THEN 
85976 
85977    --
85978    XLA_AE_LINES_PKG.SetNewLine;
85979 
85980    p_balance_type_code          := l_balance_type_code;
85981    -- set the flag so later we will know whether the gain loss line needs to be created
85982    
85983    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
85984      p_actual_flag :='A';
85985    END IF;
85986 
85987    --
85988    -- bulk performance
85989    --
85990    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
85991                                       p_header_num   => 0); -- 4262811
85992    --
85993    -- set accounting line options
85994    --
85995    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
85996            p_natural_side_code          => 'D'
85997          , p_gain_or_loss_flag          => 'N'
85998          , p_gl_transfer_mode_code      => 'S'
85999          , p_acct_entry_type_code       => 'A'
86000          , p_switch_side_flag           => 'Y'
86001          , p_merge_duplicate_code       => 'N'
86002          );
86003    --
86004    l_acc_rev_natural_side_code := 'C';  -- 4262811
86005    -- 
86006    --
86007    -- set accounting line type info
86008    --
86009    xla_ae_lines_pkg.SetAcctLineType
86010       (p_component_type             => l_component_type
86011       ,p_event_type_code            => l_event_type_code
86012       ,p_line_definition_owner_code => l_line_definition_owner_code
86013       ,p_line_definition_code       => l_line_definition_code
86014       ,p_accounting_line_code       => l_component_code
86015       ,p_accounting_line_type_code  => l_component_type_code
86016       ,p_accounting_line_appl_id    => l_component_appl_id
86017       ,p_amb_context_code           => l_amb_context_code
86018       ,p_entity_code                => l_entity_code
86019       ,p_event_class_code           => l_event_class_code);
86020    --
86021    -- set accounting class
86022    --
86023    xla_ae_lines_pkg.SetAcctClass(
86024            p_accounting_class_code  => 'LANDED_COST_ABSORPTION'
86025          , p_ae_header_id           => l_ae_header_id
86026          );
86027 
86028    --
86029    -- set rounding class
86030    --
86031    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
86032                       'LANDED_COST_ABSORPTION';
86033 
86034    --
86035    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
86036    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
86037    --
86038    -- bulk performance
86039    --
86040    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
86041 
86042    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
86043       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
86044 
86045    -- 4955764
86046    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86047       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
86048 
86049    -- 4458381 Public Sector Enh
86050    
86051    --
86052    -- set accounting attributes for the line type
86053    --
86054    l_entered_amt_idx := 3;
86055    l_accted_amt_idx  := 7;
86056    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
86057    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
86058    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
86059    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
86060    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
86061    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
86062    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
86063    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
86064    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
86065    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
86066    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
86067    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
86068    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
86069    l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
86070    l_rec_acct_attrs.array_num_value(7)  := p_source_22;
86071 
86072    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
86073    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
86074 
86075    ---------------------------------------------------------------------------------------------------------------
86076    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
86077    ---------------------------------------------------------------------------------------------------------------
86078    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
86079 
86080    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86081    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86082 
86083    IF xla_accounting_cache_pkg.GetValueChar
86084          (p_source_code         => 'LEDGER_CATEGORY_CODE'
86085          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
86086    AND l_bflow_method_code = 'PRIOR_ENTRY'
86087 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
86088    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
86089          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
86090        )
86091    THEN
86092          xla_ae_lines_pkg.BflowUpgEntry
86093            (p_business_method_code    => l_bflow_method_code
86094            ,p_business_class_code     => l_bflow_class_code
86095            ,p_balance_type            => l_balance_type_code);
86096    ELSE
86097       NULL;
86098 -- No business flow processing for business flow method of NONE.
86099    END IF;
86100 
86101    --
86102    -- call analytical criteria
86103    --
86104    
86105    --
86106    -- call description
86107    --
86108    -- No description or it is inherited.
86109    --
86110    -- call ADRs
86111    -- Bug 4922099
86112    --
86113    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86114         (NVL(l_actual_upg_option, 'N') = 'O') OR
86115         (NVL(l_enc_upg_option, 'N') = 'O')
86116       )
86117    THEN
86118    NULL;
86119    --
86120    --
86121    
86122   l_ccid := AcctDerRule_4(
86123            p_application_id           => p_application_id
86124          , p_ae_header_id             => l_ae_header_id 
86125 , p_source_4 => p_source_4
86126          , x_transaction_coa_id       => l_adr_transaction_coa_id
86127          , x_accounting_coa_id        => l_adr_accounting_coa_id
86128          , x_value_type_code          => l_adr_value_type_code
86129          , p_side                     => 'NA'
86130    );
86131 
86132    xla_ae_lines_pkg.set_ccid(
86133     p_code_combination_id          => l_ccid
86134   , p_value_type_code              => l_adr_value_type_code
86135   , p_transaction_coa_id           => l_adr_transaction_coa_id
86136   , p_accounting_coa_id            => l_adr_accounting_coa_id
86137   , p_adr_code                     => 'CST_DEFAULT'
86138   , p_adr_type_code                => 'S'
86139   , p_component_type               => l_component_type
86140   , p_component_code               => l_component_code
86141   , p_component_type_code          => l_component_type_code
86142   , p_component_appl_id            => l_component_appl_id
86143   , p_amb_context_code             => l_amb_context_code
86144   , p_side                         => 'NA'
86145   );
86146 
86147 
86148    --
86149    --
86150    END IF;
86151    --
86152    -- Bug 4922099
86153    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
86154           (NVL(l_enc_upg_option, 'N') = 'O')
86155         ) AND
86156         (l_bflow_method_code = 'PRIOR_ENTRY')
86157       )
86158    THEN
86159       IF
86160       --
86161       1 = 2
86162       --
86163       THEN
86164       xla_accounting_err_pkg.build_message
86165                                     (p_appli_s_name            => 'XLA'
86166                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86167                                     ,p_token_1                 => 'LINE_NUMBER'
86168                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
86169                                     ,p_token_2                 => 'LINE_TYPE_NAME'
86170                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
86171                                                                              l_component_type
86172                                                                             ,l_component_code
86173                                                                             ,l_component_type_code
86174                                                                             ,l_component_appl_id
86175                                                                             ,l_amb_context_code
86176                                                                             ,l_entity_code
86177                                                                             ,l_event_class_code
86178                                                                            )
86179                                     ,p_token_3                 => 'OWNER'
86180                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
86181                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
86182                                                                           ,p_lookup_code    => l_component_type_code
86183                                                                          )
86184                                     ,p_token_4                 => 'PRODUCT_NAME'
86185                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
86186                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
86187                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
86188                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
86189                                     ,p_ae_header_id            =>  NULL
86190                                        );
86191 
86192         IF (C_LEVEL_ERROR>= g_log_level) THEN
86193                  trace
86194                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86195                       ,p_level    => C_LEVEL_ERROR
86196                       ,p_module   => l_log_module);
86197         END IF;
86198       END IF;
86199    END IF;
86200    --
86201    --
86202    ------------------------------------------------------------------------------------------------
86203    -- 4219869 Business Flow
86204    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
86205    -- Prior Entry.  Currently, the following code is always generated.
86206    ------------------------------------------------------------------------------------------------
86207    XLA_AE_LINES_PKG.ValidateCurrentLine;
86208 
86209    ------------------------------------------------------------------------------------
86210    -- 4219869 Business Flow
86211    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
86212    ------------------------------------------------------------------------------------
86213    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86214 
86215    ----------------------------------------------------------------------------------
86216    -- 4219869 Business Flow
86217    -- Update journal entry status -- Need to generate this within IF <condition>
86218    ----------------------------------------------------------------------------------
86219    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86220          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
86221          ,p_balance_type_code => l_balance_type_code
86222          );
86223 
86224    -------------------------------------------------------------------------------------------
86225    -- 4262811 - Generate the Accrual Reversal lines
86226    -------------------------------------------------------------------------------------------
86227    BEGIN
86228       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
86229                               (g_array_event(p_event_id).array_value_num('header_index'));
86230       IF l_acc_rev_flag IS NULL THEN
86231          l_acc_rev_flag := 'N';
86232       END IF;
86233    EXCEPTION
86234       WHEN OTHERS THEN
86235          l_acc_rev_flag := 'N';
86236    END;
86237    --
86238    IF (l_acc_rev_flag = 'Y') THEN
86239 
86240        -- 4645092  ------------------------------------------------------------------------------
86241        -- To allow MPA report to determine if it should generate report process
86242        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
86243        ------------------------------------------------------------------------------------------
86244 
86245        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
86246        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
86247    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
86248    -- call ADRs
86249    -- Bug 4922099
86250    --
86251    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86252         (NVL(l_actual_upg_option, 'N') = 'O') OR
86253         (NVL(l_enc_upg_option, 'N') = 'O')
86254       )
86255    THEN
86256    NULL;
86257    --
86258    --
86259    
86260   l_ccid := AcctDerRule_4(
86261            p_application_id           => p_application_id
86262          , p_ae_header_id             => l_ae_header_id 
86263 , p_source_4 => p_source_4
86264          , x_transaction_coa_id       => l_adr_transaction_coa_id
86265          , x_accounting_coa_id        => l_adr_accounting_coa_id
86266          , x_value_type_code          => l_adr_value_type_code
86267          , p_side                     => 'NA'
86268    );
86269 
86270    xla_ae_lines_pkg.set_ccid(
86271     p_code_combination_id          => l_ccid
86272   , p_value_type_code              => l_adr_value_type_code
86273   , p_transaction_coa_id           => l_adr_transaction_coa_id
86274   , p_accounting_coa_id            => l_adr_accounting_coa_id
86275   , p_adr_code                     => 'CST_DEFAULT'
86276   , p_adr_type_code                => 'S'
86277   , p_component_type               => l_component_type
86278   , p_component_code               => l_component_code
86279   , p_component_type_code          => l_component_type_code
86280   , p_component_appl_id            => l_component_appl_id
86281   , p_amb_context_code             => l_amb_context_code
86282   , p_side                         => 'NA'
86283   );
86284 
86285 
86286    --
86287    --
86288    END IF;
86289 
86290        --
86291        -- Update the line information that should be overwritten
86292        --
86293        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
86294                                          p_header_num   => 1);
86295        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
86296 
86297        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
86298 
86299        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
86300           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
86301        END IF;
86302 
86303       --
86304       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
86305       --
86306       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
86307           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
86308       ELSE
86309           ---------------------------------------------------------------------------------------------------
86310           -- 4262811a Switch Sign
86311           ---------------------------------------------------------------------------------------------------
86312           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
86313           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86314                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86315           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86316                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86317           -- 5132302
86318           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
86319                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86320 
86321       END IF;
86322 
86323       -- 4955764
86324       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86325       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
86326 
86327 
86328       XLA_AE_LINES_PKG.ValidateCurrentLine;
86329       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86330 
86331       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86332                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
86333                ,p_balance_type_code => l_balance_type_code);
86334 
86335    END IF;
86336 
86337    -----------------------------------------------------------------------------------------
86338    -- 4262811 Multiperiod Accounting
86339    -----------------------------------------------------------------------------------------
86340      -- No MPA option is assigned.
86341 
86342 
86343 END IF;
86344 END IF;
86345 --
86346 
86347 --
86348 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86349    trace
86350       (p_msg      => 'END of AcctLineType_157'
86351       ,p_level    => C_LEVEL_PROCEDURE
86352       ,p_module   => l_log_module);
86353 END IF;
86354 --
86355 EXCEPTION
86356   WHEN xla_exceptions_pkg.application_exception THEN
86357       RAISE;
86358   WHEN OTHERS THEN
86359        xla_exceptions_pkg.raise_message
86360            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_157');
86361 END AcctLineType_157;
86362 --
86363 
86364 ---------------------------------------
86365 --
86366 -- PRIVATE FUNCTION
86367 --         AcctLineType_158
86368 --
86369 ---------------------------------------
86370 PROCEDURE AcctLineType_158 (
86371   p_application_id        IN NUMBER
86372  ,p_event_id              IN NUMBER
86373  ,p_calculate_acctd_flag  IN VARCHAR2
86374  ,p_calculate_g_l_flag    IN VARCHAR2
86375  ,p_actual_flag           IN OUT VARCHAR2
86376  ,p_balance_type_code     OUT VARCHAR2
86377  ,p_gain_or_loss_ref      OUT VARCHAR2
86378  
86379 --Cost Management Default Account
86380  , p_source_4            IN NUMBER
86381 --DISTRIBUTION_IDENTIFIER
86382  , p_source_11            IN NUMBER
86383 --Distribution Type
86384  , p_source_12            IN VARCHAR2
86385  , p_source_12_meaning    IN VARCHAR2
86386 --Entered Currency Code
86387  , p_source_15            IN VARCHAR2
86388 --Entered Amount
86389  , p_source_18            IN NUMBER
86390 --Currency Conversion Date
86391  , p_source_19            IN DATE
86392 --Currency Conversion Rate
86393  , p_source_20            IN NUMBER
86394 --Currency Conversion Type
86395  , p_source_21            IN VARCHAR2
86396 --Accounted Amount
86397  , p_source_22            IN NUMBER
86398 --Accounting Line Type
86399  , p_source_24            IN NUMBER
86400 )
86401 IS
86402 
86403 l_component_type              VARCHAR2(80);
86404 l_component_code              VARCHAR2(30);
86405 l_component_type_code         VARCHAR2(1);
86406 l_component_appl_id           INTEGER;
86407 l_amb_context_code            VARCHAR2(30);
86408 l_entity_code                 VARCHAR2(30);
86409 l_event_class_code            VARCHAR2(30);
86410 l_ae_header_id                NUMBER;
86411 l_event_type_code             VARCHAR2(30);
86412 l_line_definition_code        VARCHAR2(30);
86413 l_line_definition_owner_code  VARCHAR2(1);
86414 --
86415 -- adr variables
86416 l_segment                     VARCHAR2(30);
86417 l_ccid                        NUMBER;
86418 l_adr_transaction_coa_id      NUMBER;
86419 l_adr_accounting_coa_id       NUMBER;
86420 l_adr_flexfield_segment_code  VARCHAR2(30);
86421 l_adr_flex_value_set_id       NUMBER;
86422 l_adr_value_type_code         VARCHAR2(30);
86423 l_adr_value_combination_id    NUMBER;
86424 l_adr_value_segment_code      VARCHAR2(30);
86425 
86426 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
86427 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
86428 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
86429 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
86430 
86431 -- 4262811 Variables ------------------------------------------------------------------------------------------
86432 l_entered_amt_idx             NUMBER;
86433 l_accted_amt_idx              NUMBER;
86434 l_acc_rev_flag                VARCHAR2(1);
86435 l_accrual_line_num            NUMBER;
86436 l_tmp_amt                     NUMBER;
86437 l_acc_rev_natural_side_code   VARCHAR2(1);
86438 
86439 l_num_entries                 NUMBER;
86440 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
86441 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
86442 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
86443 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
86444 l_recog_line_1                NUMBER;
86445 l_recog_line_2                NUMBER;
86446 
86447 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
86448 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
86449 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
86450 
86451 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
86452 
86453 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
86454 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
86455 
86456 ---------------------------------------------------------------------------------------------------------------
86457 
86458 
86459 --
86460 -- bulk performance
86461 --
86462 l_balance_type_code           VARCHAR2(1);
86463 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
86464 l_log_module                  VARCHAR2(240);
86465 
86466 --
86467 -- Upgrade strategy
86468 --
86469 l_actual_upg_option           VARCHAR2(1);
86470 l_enc_upg_option           VARCHAR2(1);
86471 
86472 --
86473 BEGIN
86474 --
86475 IF g_log_enabled THEN
86476       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_158';
86477 END IF;
86478 --
86479 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86480 
86481       trace
86482          (p_msg      => 'BEGIN of AcctLineType_158'
86483          ,p_level    => C_LEVEL_PROCEDURE
86484          ,p_module   => l_log_module);
86485 
86486 END IF;
86487 --
86488 l_component_type             := 'AMB_JLT';
86489 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
86490 l_component_type_code        := 'S';
86491 l_component_appl_id          :=  707;
86492 l_amb_context_code           := 'DEFAULT';
86493 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
86494 l_event_class_code           := 'CON_INV_OWNR_TXFR';
86495 l_event_type_code            := 'CON_INV_OWNR_TXFR_ALL';
86496 l_line_definition_owner_code := 'S';
86497 l_line_definition_code       := 'CON_INV_OWNR_TXFR';
86498 --
86499 l_balance_type_code          := 'A';
86500 l_segment                     := NULL;
86501 l_ccid                        := NULL;
86502 l_adr_transaction_coa_id      := NULL;
86503 l_adr_accounting_coa_id       := NULL;
86504 l_adr_flexfield_segment_code  := NULL;
86505 l_adr_flex_value_set_id       := NULL;
86506 l_adr_value_type_code         := NULL;
86507 l_adr_value_combination_id    := NULL;
86508 l_adr_value_segment_code      := NULL;
86509 
86510 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
86511 l_bflow_class_code           := '';    -- 4219869 Business Flow
86512 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
86513 l_budgetary_control_flag     := 'N';
86514 
86515 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
86516 l_bflow_applied_to_amt       := NULL; -- 5132302
86517 l_entered_amt_idx            := NULL;          -- 4262811
86518 l_accted_amt_idx             := NULL;          -- 4262811
86519 l_acc_rev_flag               := NULL;          -- 4262811
86520 l_accrual_line_num           := NULL;          -- 4262811
86521 l_tmp_amt                    := NULL;          -- 4262811
86522 --
86523  
86524 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
86525     l_balance_type_code <> 'B' THEN
86526 IF NVL(p_source_24,9E125) =  3
86527  THEN 
86528 
86529    --
86530    XLA_AE_LINES_PKG.SetNewLine;
86531 
86532    p_balance_type_code          := l_balance_type_code;
86533    -- set the flag so later we will know whether the gain loss line needs to be created
86534    
86535    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
86536      p_actual_flag :='A';
86537    END IF;
86538 
86539    --
86540    -- bulk performance
86541    --
86542    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
86543                                       p_header_num   => 0); -- 4262811
86544    --
86545    -- set accounting line options
86546    --
86547    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
86548            p_natural_side_code          => 'D'
86549          , p_gain_or_loss_flag          => 'N'
86550          , p_gl_transfer_mode_code      => 'S'
86551          , p_acct_entry_type_code       => 'A'
86552          , p_switch_side_flag           => 'Y'
86553          , p_merge_duplicate_code       => 'N'
86554          );
86555    --
86556    l_acc_rev_natural_side_code := 'C';  -- 4262811
86557    -- 
86558    --
86559    -- set accounting line type info
86560    --
86561    xla_ae_lines_pkg.SetAcctLineType
86562       (p_component_type             => l_component_type
86563       ,p_event_type_code            => l_event_type_code
86564       ,p_line_definition_owner_code => l_line_definition_owner_code
86565       ,p_line_definition_code       => l_line_definition_code
86566       ,p_accounting_line_code       => l_component_code
86567       ,p_accounting_line_type_code  => l_component_type_code
86568       ,p_accounting_line_appl_id    => l_component_appl_id
86569       ,p_amb_context_code           => l_amb_context_code
86570       ,p_entity_code                => l_entity_code
86571       ,p_event_class_code           => l_event_class_code);
86572    --
86573    -- set accounting class
86574    --
86575    xla_ae_lines_pkg.SetAcctClass(
86576            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
86577          , p_ae_header_id           => l_ae_header_id
86578          );
86579 
86580    --
86581    -- set rounding class
86582    --
86583    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
86584                       'MATERIAL_OVERHEAD_ABSORPTION';
86585 
86586    --
86587    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
86588    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
86589    --
86590    -- bulk performance
86591    --
86592    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
86593 
86594    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
86595       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
86596 
86597    -- 4955764
86598    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86599       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
86600 
86601    -- 4458381 Public Sector Enh
86602    
86603    --
86604    -- set accounting attributes for the line type
86605    --
86606    l_entered_amt_idx := 3;
86607    l_accted_amt_idx  := 8;
86608    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
86609    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
86610    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
86611    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
86612    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
86613    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
86614    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
86615    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
86616    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
86617    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
86618    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
86619    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
86620    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
86621    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
86622    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
86623    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
86624    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
86625 
86626    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
86627    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
86628 
86629    ---------------------------------------------------------------------------------------------------------------
86630    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
86631    ---------------------------------------------------------------------------------------------------------------
86632    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
86633 
86634    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86635    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86636 
86637    IF xla_accounting_cache_pkg.GetValueChar
86638          (p_source_code         => 'LEDGER_CATEGORY_CODE'
86639          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
86640    AND l_bflow_method_code = 'PRIOR_ENTRY'
86641 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
86642    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
86643          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
86644        )
86645    THEN
86646          xla_ae_lines_pkg.BflowUpgEntry
86647            (p_business_method_code    => l_bflow_method_code
86648            ,p_business_class_code     => l_bflow_class_code
86649            ,p_balance_type            => l_balance_type_code);
86650    ELSE
86651       NULL;
86652 -- No business flow processing for business flow method of NONE.
86653    END IF;
86654 
86655    --
86656    -- call analytical criteria
86657    --
86658    
86659    --
86660    -- call description
86661    --
86662    -- No description or it is inherited.
86663    --
86664    -- call ADRs
86665    -- Bug 4922099
86666    --
86667    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86668         (NVL(l_actual_upg_option, 'N') = 'O') OR
86669         (NVL(l_enc_upg_option, 'N') = 'O')
86670       )
86671    THEN
86672    NULL;
86673    --
86674    --
86675    
86676   l_ccid := AcctDerRule_4(
86677            p_application_id           => p_application_id
86678          , p_ae_header_id             => l_ae_header_id 
86679 , p_source_4 => p_source_4
86680          , x_transaction_coa_id       => l_adr_transaction_coa_id
86681          , x_accounting_coa_id        => l_adr_accounting_coa_id
86682          , x_value_type_code          => l_adr_value_type_code
86683          , p_side                     => 'NA'
86684    );
86685 
86686    xla_ae_lines_pkg.set_ccid(
86687     p_code_combination_id          => l_ccid
86688   , p_value_type_code              => l_adr_value_type_code
86689   , p_transaction_coa_id           => l_adr_transaction_coa_id
86690   , p_accounting_coa_id            => l_adr_accounting_coa_id
86691   , p_adr_code                     => 'CST_DEFAULT'
86692   , p_adr_type_code                => 'S'
86693   , p_component_type               => l_component_type
86694   , p_component_code               => l_component_code
86695   , p_component_type_code          => l_component_type_code
86696   , p_component_appl_id            => l_component_appl_id
86697   , p_amb_context_code             => l_amb_context_code
86698   , p_side                         => 'NA'
86699   );
86700 
86701 
86702    --
86703    --
86704    END IF;
86705    --
86706    -- Bug 4922099
86707    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
86708           (NVL(l_enc_upg_option, 'N') = 'O')
86709         ) AND
86710         (l_bflow_method_code = 'PRIOR_ENTRY')
86711       )
86712    THEN
86713       IF
86714       --
86715       1 = 2
86716       --
86717       THEN
86718       xla_accounting_err_pkg.build_message
86719                                     (p_appli_s_name            => 'XLA'
86720                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86721                                     ,p_token_1                 => 'LINE_NUMBER'
86722                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
86723                                     ,p_token_2                 => 'LINE_TYPE_NAME'
86724                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
86725                                                                              l_component_type
86726                                                                             ,l_component_code
86727                                                                             ,l_component_type_code
86728                                                                             ,l_component_appl_id
86729                                                                             ,l_amb_context_code
86730                                                                             ,l_entity_code
86731                                                                             ,l_event_class_code
86732                                                                            )
86733                                     ,p_token_3                 => 'OWNER'
86734                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
86735                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
86736                                                                           ,p_lookup_code    => l_component_type_code
86737                                                                          )
86738                                     ,p_token_4                 => 'PRODUCT_NAME'
86739                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
86740                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
86741                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
86742                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
86743                                     ,p_ae_header_id            =>  NULL
86744                                        );
86745 
86746         IF (C_LEVEL_ERROR>= g_log_level) THEN
86747                  trace
86748                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86749                       ,p_level    => C_LEVEL_ERROR
86750                       ,p_module   => l_log_module);
86751         END IF;
86752       END IF;
86753    END IF;
86754    --
86755    --
86756    ------------------------------------------------------------------------------------------------
86757    -- 4219869 Business Flow
86758    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
86759    -- Prior Entry.  Currently, the following code is always generated.
86760    ------------------------------------------------------------------------------------------------
86761    XLA_AE_LINES_PKG.ValidateCurrentLine;
86762 
86763    ------------------------------------------------------------------------------------
86764    -- 4219869 Business Flow
86765    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
86766    ------------------------------------------------------------------------------------
86767    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86768 
86769    ----------------------------------------------------------------------------------
86770    -- 4219869 Business Flow
86771    -- Update journal entry status -- Need to generate this within IF <condition>
86772    ----------------------------------------------------------------------------------
86773    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86774          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
86775          ,p_balance_type_code => l_balance_type_code
86776          );
86777 
86778    -------------------------------------------------------------------------------------------
86779    -- 4262811 - Generate the Accrual Reversal lines
86780    -------------------------------------------------------------------------------------------
86781    BEGIN
86782       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
86783                               (g_array_event(p_event_id).array_value_num('header_index'));
86784       IF l_acc_rev_flag IS NULL THEN
86785          l_acc_rev_flag := 'N';
86786       END IF;
86787    EXCEPTION
86788       WHEN OTHERS THEN
86789          l_acc_rev_flag := 'N';
86790    END;
86791    --
86792    IF (l_acc_rev_flag = 'Y') THEN
86793 
86794        -- 4645092  ------------------------------------------------------------------------------
86795        -- To allow MPA report to determine if it should generate report process
86796        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
86797        ------------------------------------------------------------------------------------------
86798 
86799        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
86800        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
86801    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
86802    -- call ADRs
86803    -- Bug 4922099
86804    --
86805    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86806         (NVL(l_actual_upg_option, 'N') = 'O') OR
86807         (NVL(l_enc_upg_option, 'N') = 'O')
86808       )
86809    THEN
86810    NULL;
86811    --
86812    --
86813    
86814   l_ccid := AcctDerRule_4(
86815            p_application_id           => p_application_id
86816          , p_ae_header_id             => l_ae_header_id 
86817 , p_source_4 => p_source_4
86818          , x_transaction_coa_id       => l_adr_transaction_coa_id
86819          , x_accounting_coa_id        => l_adr_accounting_coa_id
86820          , x_value_type_code          => l_adr_value_type_code
86821          , p_side                     => 'NA'
86822    );
86823 
86824    xla_ae_lines_pkg.set_ccid(
86825     p_code_combination_id          => l_ccid
86826   , p_value_type_code              => l_adr_value_type_code
86827   , p_transaction_coa_id           => l_adr_transaction_coa_id
86828   , p_accounting_coa_id            => l_adr_accounting_coa_id
86829   , p_adr_code                     => 'CST_DEFAULT'
86830   , p_adr_type_code                => 'S'
86831   , p_component_type               => l_component_type
86832   , p_component_code               => l_component_code
86833   , p_component_type_code          => l_component_type_code
86834   , p_component_appl_id            => l_component_appl_id
86835   , p_amb_context_code             => l_amb_context_code
86836   , p_side                         => 'NA'
86837   );
86838 
86839 
86840    --
86841    --
86842    END IF;
86843 
86844        --
86845        -- Update the line information that should be overwritten
86846        --
86847        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
86848                                          p_header_num   => 1);
86849        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
86850 
86851        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
86852 
86853        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
86854           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
86855        END IF;
86856 
86857       --
86858       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
86859       --
86860       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
86861           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
86862       ELSE
86863           ---------------------------------------------------------------------------------------------------
86864           -- 4262811a Switch Sign
86865           ---------------------------------------------------------------------------------------------------
86866           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
86867           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86868                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86869           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86870                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86871           -- 5132302
86872           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
86873                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86874 
86875       END IF;
86876 
86877       -- 4955764
86878       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86879       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
86880 
86881 
86882       XLA_AE_LINES_PKG.ValidateCurrentLine;
86883       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86884 
86885       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86886                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
86887                ,p_balance_type_code => l_balance_type_code);
86888 
86889    END IF;
86890 
86891    -----------------------------------------------------------------------------------------
86892    -- 4262811 Multiperiod Accounting
86893    -----------------------------------------------------------------------------------------
86894      -- No MPA option is assigned.
86895 
86896 
86897 END IF;
86898 END IF;
86899 --
86900 
86901 --
86902 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86903    trace
86904       (p_msg      => 'END of AcctLineType_158'
86905       ,p_level    => C_LEVEL_PROCEDURE
86906       ,p_module   => l_log_module);
86907 END IF;
86908 --
86909 EXCEPTION
86910   WHEN xla_exceptions_pkg.application_exception THEN
86911       RAISE;
86912   WHEN OTHERS THEN
86913        xla_exceptions_pkg.raise_message
86914            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_158');
86915 END AcctLineType_158;
86916 --
86917 
86918 ---------------------------------------
86919 --
86920 -- PRIVATE FUNCTION
86921 --         AcctLineType_159
86922 --
86923 ---------------------------------------
86924 PROCEDURE AcctLineType_159 (
86925   p_application_id        IN NUMBER
86926  ,p_event_id              IN NUMBER
86927  ,p_calculate_acctd_flag  IN VARCHAR2
86928  ,p_calculate_g_l_flag    IN VARCHAR2
86929  ,p_actual_flag           IN OUT VARCHAR2
86930  ,p_balance_type_code     OUT VARCHAR2
86931  ,p_gain_or_loss_ref      OUT VARCHAR2
86932  
86933 --Cost Management Default Account
86934  , p_source_4            IN NUMBER
86935 --DISTRIBUTION_IDENTIFIER
86936  , p_source_11            IN NUMBER
86937 --Distribution Type
86938  , p_source_12            IN VARCHAR2
86939  , p_source_12_meaning    IN VARCHAR2
86940 --Entered Currency Code
86941  , p_source_15            IN VARCHAR2
86942 --Entered Amount
86943  , p_source_18            IN NUMBER
86944 --Currency Conversion Date
86945  , p_source_19            IN DATE
86946 --Currency Conversion Rate
86947  , p_source_20            IN NUMBER
86948 --Currency Conversion Type
86949  , p_source_21            IN VARCHAR2
86950 --Accounted Amount
86951  , p_source_22            IN NUMBER
86952 --Accounting Line Type
86953  , p_source_24            IN NUMBER
86954 )
86955 IS
86956 
86957 l_component_type              VARCHAR2(80);
86958 l_component_code              VARCHAR2(30);
86959 l_component_type_code         VARCHAR2(1);
86960 l_component_appl_id           INTEGER;
86961 l_amb_context_code            VARCHAR2(30);
86962 l_entity_code                 VARCHAR2(30);
86963 l_event_class_code            VARCHAR2(30);
86964 l_ae_header_id                NUMBER;
86965 l_event_type_code             VARCHAR2(30);
86966 l_line_definition_code        VARCHAR2(30);
86967 l_line_definition_owner_code  VARCHAR2(1);
86968 --
86969 -- adr variables
86970 l_segment                     VARCHAR2(30);
86971 l_ccid                        NUMBER;
86972 l_adr_transaction_coa_id      NUMBER;
86973 l_adr_accounting_coa_id       NUMBER;
86974 l_adr_flexfield_segment_code  VARCHAR2(30);
86975 l_adr_flex_value_set_id       NUMBER;
86976 l_adr_value_type_code         VARCHAR2(30);
86977 l_adr_value_combination_id    NUMBER;
86978 l_adr_value_segment_code      VARCHAR2(30);
86979 
86980 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
86981 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
86982 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
86983 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
86984 
86985 -- 4262811 Variables ------------------------------------------------------------------------------------------
86986 l_entered_amt_idx             NUMBER;
86987 l_accted_amt_idx              NUMBER;
86988 l_acc_rev_flag                VARCHAR2(1);
86989 l_accrual_line_num            NUMBER;
86990 l_tmp_amt                     NUMBER;
86991 l_acc_rev_natural_side_code   VARCHAR2(1);
86992 
86993 l_num_entries                 NUMBER;
86994 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
86995 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
86996 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
86997 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
86998 l_recog_line_1                NUMBER;
86999 l_recog_line_2                NUMBER;
87000 
87001 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
87002 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
87003 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
87004 
87005 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
87006 
87007 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
87008 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
87009 
87010 ---------------------------------------------------------------------------------------------------------------
87011 
87012 
87013 --
87014 -- bulk performance
87015 --
87016 l_balance_type_code           VARCHAR2(1);
87017 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
87018 l_log_module                  VARCHAR2(240);
87019 
87020 --
87021 -- Upgrade strategy
87022 --
87023 l_actual_upg_option           VARCHAR2(1);
87024 l_enc_upg_option           VARCHAR2(1);
87025 
87026 --
87027 BEGIN
87028 --
87029 IF g_log_enabled THEN
87030       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_159';
87031 END IF;
87032 --
87033 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87034 
87035       trace
87036          (p_msg      => 'BEGIN of AcctLineType_159'
87037          ,p_level    => C_LEVEL_PROCEDURE
87038          ,p_module   => l_log_module);
87039 
87040 END IF;
87041 --
87042 l_component_type             := 'AMB_JLT';
87043 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
87044 l_component_type_code        := 'S';
87045 l_component_appl_id          :=  707;
87046 l_amb_context_code           := 'DEFAULT';
87047 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
87048 l_event_class_code           := 'USER_DEFINE';
87049 l_event_type_code            := 'UDIR_INTERORG_SHIP';
87050 l_line_definition_owner_code := 'S';
87051 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
87052 --
87053 l_balance_type_code          := 'A';
87054 l_segment                     := NULL;
87055 l_ccid                        := NULL;
87056 l_adr_transaction_coa_id      := NULL;
87057 l_adr_accounting_coa_id       := NULL;
87058 l_adr_flexfield_segment_code  := NULL;
87059 l_adr_flex_value_set_id       := NULL;
87060 l_adr_value_type_code         := NULL;
87061 l_adr_value_combination_id    := NULL;
87062 l_adr_value_segment_code      := NULL;
87063 
87064 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
87065 l_bflow_class_code           := '';    -- 4219869 Business Flow
87066 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
87067 l_budgetary_control_flag     := 'N';
87068 
87069 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
87070 l_bflow_applied_to_amt       := NULL; -- 5132302
87071 l_entered_amt_idx            := NULL;          -- 4262811
87072 l_accted_amt_idx             := NULL;          -- 4262811
87073 l_acc_rev_flag               := NULL;          -- 4262811
87074 l_accrual_line_num           := NULL;          -- 4262811
87075 l_tmp_amt                    := NULL;          -- 4262811
87076 --
87077  
87078 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
87079     l_balance_type_code <> 'B' THEN
87080 IF NVL(p_source_24,9E125) =  3
87081  THEN 
87082 
87083    --
87084    XLA_AE_LINES_PKG.SetNewLine;
87085 
87086    p_balance_type_code          := l_balance_type_code;
87087    -- set the flag so later we will know whether the gain loss line needs to be created
87088    
87089    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
87090      p_actual_flag :='A';
87091    END IF;
87092 
87093    --
87094    -- bulk performance
87095    --
87096    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
87097                                       p_header_num   => 0); -- 4262811
87098    --
87099    -- set accounting line options
87100    --
87101    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
87102            p_natural_side_code          => 'D'
87103          , p_gain_or_loss_flag          => 'N'
87104          , p_gl_transfer_mode_code      => 'S'
87105          , p_acct_entry_type_code       => 'A'
87106          , p_switch_side_flag           => 'Y'
87107          , p_merge_duplicate_code       => 'N'
87108          );
87109    --
87110    l_acc_rev_natural_side_code := 'C';  -- 4262811
87111    -- 
87112    --
87113    -- set accounting line type info
87114    --
87115    xla_ae_lines_pkg.SetAcctLineType
87116       (p_component_type             => l_component_type
87117       ,p_event_type_code            => l_event_type_code
87118       ,p_line_definition_owner_code => l_line_definition_owner_code
87119       ,p_line_definition_code       => l_line_definition_code
87120       ,p_accounting_line_code       => l_component_code
87121       ,p_accounting_line_type_code  => l_component_type_code
87122       ,p_accounting_line_appl_id    => l_component_appl_id
87123       ,p_amb_context_code           => l_amb_context_code
87124       ,p_entity_code                => l_entity_code
87125       ,p_event_class_code           => l_event_class_code);
87126    --
87127    -- set accounting class
87128    --
87129    xla_ae_lines_pkg.SetAcctClass(
87130            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
87131          , p_ae_header_id           => l_ae_header_id
87132          );
87133 
87134    --
87135    -- set rounding class
87136    --
87137    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
87138                       'MATERIAL_OVERHEAD_ABSORPTION';
87139 
87140    --
87141    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
87142    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
87143    --
87144    -- bulk performance
87145    --
87146    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
87147 
87148    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
87149       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
87150 
87151    -- 4955764
87152    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87153       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
87154 
87155    -- 4458381 Public Sector Enh
87156    
87157    --
87158    -- set accounting attributes for the line type
87159    --
87160    l_entered_amt_idx := 3;
87161    l_accted_amt_idx  := 8;
87162    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
87163    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
87164    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
87165    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
87166    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
87167    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
87168    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
87169    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
87170    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
87171    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
87172    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
87173    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
87174    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
87175    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
87176    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
87177    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
87178    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
87179 
87180    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
87181    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
87182 
87183    ---------------------------------------------------------------------------------------------------------------
87184    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
87185    ---------------------------------------------------------------------------------------------------------------
87186    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
87187 
87188    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87189    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87190 
87191    IF xla_accounting_cache_pkg.GetValueChar
87192          (p_source_code         => 'LEDGER_CATEGORY_CODE'
87193          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
87194    AND l_bflow_method_code = 'PRIOR_ENTRY'
87195 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
87196    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
87197          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
87198        )
87199    THEN
87200          xla_ae_lines_pkg.BflowUpgEntry
87201            (p_business_method_code    => l_bflow_method_code
87202            ,p_business_class_code     => l_bflow_class_code
87203            ,p_balance_type            => l_balance_type_code);
87204    ELSE
87205       NULL;
87206 -- No business flow processing for business flow method of NONE.
87207    END IF;
87208 
87209    --
87210    -- call analytical criteria
87211    --
87212    
87213    --
87214    -- call description
87215    --
87216    -- No description or it is inherited.
87217    --
87218    -- call ADRs
87219    -- Bug 4922099
87220    --
87221    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87222         (NVL(l_actual_upg_option, 'N') = 'O') OR
87223         (NVL(l_enc_upg_option, 'N') = 'O')
87224       )
87225    THEN
87226    NULL;
87227    --
87228    --
87229    
87230   l_ccid := AcctDerRule_4(
87231            p_application_id           => p_application_id
87232          , p_ae_header_id             => l_ae_header_id 
87233 , p_source_4 => p_source_4
87234          , x_transaction_coa_id       => l_adr_transaction_coa_id
87235          , x_accounting_coa_id        => l_adr_accounting_coa_id
87236          , x_value_type_code          => l_adr_value_type_code
87237          , p_side                     => 'NA'
87238    );
87239 
87240    xla_ae_lines_pkg.set_ccid(
87241     p_code_combination_id          => l_ccid
87242   , p_value_type_code              => l_adr_value_type_code
87243   , p_transaction_coa_id           => l_adr_transaction_coa_id
87244   , p_accounting_coa_id            => l_adr_accounting_coa_id
87245   , p_adr_code                     => 'CST_DEFAULT'
87246   , p_adr_type_code                => 'S'
87247   , p_component_type               => l_component_type
87248   , p_component_code               => l_component_code
87249   , p_component_type_code          => l_component_type_code
87250   , p_component_appl_id            => l_component_appl_id
87251   , p_amb_context_code             => l_amb_context_code
87252   , p_side                         => 'NA'
87253   );
87254 
87255 
87256    --
87257    --
87258    END IF;
87259    --
87260    -- Bug 4922099
87261    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
87262           (NVL(l_enc_upg_option, 'N') = 'O')
87263         ) AND
87264         (l_bflow_method_code = 'PRIOR_ENTRY')
87265       )
87266    THEN
87267       IF
87268       --
87269       1 = 2
87270       --
87271       THEN
87272       xla_accounting_err_pkg.build_message
87273                                     (p_appli_s_name            => 'XLA'
87274                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87275                                     ,p_token_1                 => 'LINE_NUMBER'
87276                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
87277                                     ,p_token_2                 => 'LINE_TYPE_NAME'
87278                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
87279                                                                              l_component_type
87280                                                                             ,l_component_code
87281                                                                             ,l_component_type_code
87282                                                                             ,l_component_appl_id
87283                                                                             ,l_amb_context_code
87284                                                                             ,l_entity_code
87285                                                                             ,l_event_class_code
87286                                                                            )
87287                                     ,p_token_3                 => 'OWNER'
87288                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
87289                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
87290                                                                           ,p_lookup_code    => l_component_type_code
87291                                                                          )
87292                                     ,p_token_4                 => 'PRODUCT_NAME'
87293                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
87294                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
87295                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
87296                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
87297                                     ,p_ae_header_id            =>  NULL
87298                                        );
87299 
87300         IF (C_LEVEL_ERROR>= g_log_level) THEN
87301                  trace
87302                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87303                       ,p_level    => C_LEVEL_ERROR
87304                       ,p_module   => l_log_module);
87305         END IF;
87306       END IF;
87307    END IF;
87308    --
87309    --
87310    ------------------------------------------------------------------------------------------------
87311    -- 4219869 Business Flow
87312    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
87313    -- Prior Entry.  Currently, the following code is always generated.
87314    ------------------------------------------------------------------------------------------------
87315    XLA_AE_LINES_PKG.ValidateCurrentLine;
87316 
87317    ------------------------------------------------------------------------------------
87318    -- 4219869 Business Flow
87319    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
87320    ------------------------------------------------------------------------------------
87321    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87322 
87323    ----------------------------------------------------------------------------------
87324    -- 4219869 Business Flow
87325    -- Update journal entry status -- Need to generate this within IF <condition>
87326    ----------------------------------------------------------------------------------
87327    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87328          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
87329          ,p_balance_type_code => l_balance_type_code
87330          );
87331 
87332    -------------------------------------------------------------------------------------------
87333    -- 4262811 - Generate the Accrual Reversal lines
87334    -------------------------------------------------------------------------------------------
87335    BEGIN
87336       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
87337                               (g_array_event(p_event_id).array_value_num('header_index'));
87338       IF l_acc_rev_flag IS NULL THEN
87339          l_acc_rev_flag := 'N';
87340       END IF;
87341    EXCEPTION
87342       WHEN OTHERS THEN
87343          l_acc_rev_flag := 'N';
87344    END;
87345    --
87346    IF (l_acc_rev_flag = 'Y') THEN
87347 
87348        -- 4645092  ------------------------------------------------------------------------------
87349        -- To allow MPA report to determine if it should generate report process
87350        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
87351        ------------------------------------------------------------------------------------------
87352 
87353        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
87354        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
87355    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
87356    -- call ADRs
87357    -- Bug 4922099
87358    --
87359    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87360         (NVL(l_actual_upg_option, 'N') = 'O') OR
87361         (NVL(l_enc_upg_option, 'N') = 'O')
87362       )
87363    THEN
87364    NULL;
87365    --
87366    --
87367    
87368   l_ccid := AcctDerRule_4(
87369            p_application_id           => p_application_id
87370          , p_ae_header_id             => l_ae_header_id 
87371 , p_source_4 => p_source_4
87372          , x_transaction_coa_id       => l_adr_transaction_coa_id
87373          , x_accounting_coa_id        => l_adr_accounting_coa_id
87374          , x_value_type_code          => l_adr_value_type_code
87375          , p_side                     => 'NA'
87376    );
87377 
87378    xla_ae_lines_pkg.set_ccid(
87379     p_code_combination_id          => l_ccid
87380   , p_value_type_code              => l_adr_value_type_code
87381   , p_transaction_coa_id           => l_adr_transaction_coa_id
87382   , p_accounting_coa_id            => l_adr_accounting_coa_id
87383   , p_adr_code                     => 'CST_DEFAULT'
87384   , p_adr_type_code                => 'S'
87385   , p_component_type               => l_component_type
87386   , p_component_code               => l_component_code
87387   , p_component_type_code          => l_component_type_code
87388   , p_component_appl_id            => l_component_appl_id
87389   , p_amb_context_code             => l_amb_context_code
87390   , p_side                         => 'NA'
87391   );
87392 
87393 
87394    --
87395    --
87396    END IF;
87397 
87398        --
87399        -- Update the line information that should be overwritten
87400        --
87401        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
87402                                          p_header_num   => 1);
87403        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
87404 
87405        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
87406 
87407        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
87408           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
87409        END IF;
87410 
87411       --
87412       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
87413       --
87414       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
87415           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
87416       ELSE
87417           ---------------------------------------------------------------------------------------------------
87418           -- 4262811a Switch Sign
87419           ---------------------------------------------------------------------------------------------------
87420           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
87421           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87422                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87423           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87424                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87425           -- 5132302
87426           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
87427                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87428 
87429       END IF;
87430 
87431       -- 4955764
87432       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87433       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
87434 
87435 
87436       XLA_AE_LINES_PKG.ValidateCurrentLine;
87437       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87438 
87439       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87440                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
87441                ,p_balance_type_code => l_balance_type_code);
87442 
87443    END IF;
87444 
87445    -----------------------------------------------------------------------------------------
87446    -- 4262811 Multiperiod Accounting
87447    -----------------------------------------------------------------------------------------
87448      -- No MPA option is assigned.
87449 
87450 
87451 END IF;
87452 END IF;
87453 --
87454 
87455 --
87456 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87457    trace
87458       (p_msg      => 'END of AcctLineType_159'
87459       ,p_level    => C_LEVEL_PROCEDURE
87460       ,p_module   => l_log_module);
87461 END IF;
87462 --
87463 EXCEPTION
87464   WHEN xla_exceptions_pkg.application_exception THEN
87465       RAISE;
87466   WHEN OTHERS THEN
87467        xla_exceptions_pkg.raise_message
87468            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_159');
87469 END AcctLineType_159;
87470 --
87471 
87472 ---------------------------------------
87473 --
87474 -- PRIVATE FUNCTION
87475 --         AcctLineType_160
87476 --
87477 ---------------------------------------
87478 PROCEDURE AcctLineType_160 (
87479   p_application_id        IN NUMBER
87480  ,p_event_id              IN NUMBER
87481  ,p_calculate_acctd_flag  IN VARCHAR2
87482  ,p_calculate_g_l_flag    IN VARCHAR2
87483  ,p_actual_flag           IN OUT VARCHAR2
87484  ,p_balance_type_code     OUT VARCHAR2
87485  ,p_gain_or_loss_ref      OUT VARCHAR2
87486  
87487 --Cost Management Default Account
87488  , p_source_4            IN NUMBER
87489 --Applied to Application ID
87490  , p_source_6            IN NUMBER
87491 --Applied to Distribution Link Type
87492  , p_source_7            IN VARCHAR2
87493 --Applied to Entity Code
87494  , p_source_8            IN VARCHAR2
87495 --DISTRIBUTION_IDENTIFIER
87496  , p_source_11            IN NUMBER
87497 --Distribution Type
87498  , p_source_12            IN VARCHAR2
87499  , p_source_12_meaning    IN VARCHAR2
87500 --Encumbrance Reversal Amount Entered
87501  , p_source_14            IN NUMBER
87502 --Entered Currency Code
87503  , p_source_15            IN VARCHAR2
87504 --Transaction Encumbrance Reversal Amount
87505  , p_source_16            IN NUMBER
87506 --Entered Amount
87507  , p_source_18            IN NUMBER
87508 --Currency Conversion Date
87509  , p_source_19            IN DATE
87510 --Currency Conversion Rate
87511  , p_source_20            IN NUMBER
87512 --Currency Conversion Type
87513  , p_source_21            IN VARCHAR2
87514 --Accounted Amount
87515  , p_source_22            IN NUMBER
87516 --Accounting Line Type
87517  , p_source_24            IN NUMBER
87518 --Costing Encumbrance Upgrade Option
87519  , p_source_27            IN VARCHAR2
87520 --TXN_PO_DISTRIBUTION_ID
87521  , p_source_28            IN NUMBER
87522 --TXN_PO_HEADER_ID
87523  , p_source_29            IN NUMBER
87524 --Requisition Budget Account
87525  , p_source_30            IN NUMBER
87526 --Requisition Encumbrance Type Identifier
87527  , p_source_31            IN NUMBER
87528 )
87529 IS
87530 
87531 l_component_type              VARCHAR2(80);
87532 l_component_code              VARCHAR2(30);
87533 l_component_type_code         VARCHAR2(1);
87534 l_component_appl_id           INTEGER;
87535 l_amb_context_code            VARCHAR2(30);
87536 l_entity_code                 VARCHAR2(30);
87537 l_event_class_code            VARCHAR2(30);
87538 l_ae_header_id                NUMBER;
87539 l_event_type_code             VARCHAR2(30);
87540 l_line_definition_code        VARCHAR2(30);
87541 l_line_definition_owner_code  VARCHAR2(1);
87542 --
87543 -- adr variables
87544 l_segment                     VARCHAR2(30);
87545 l_ccid                        NUMBER;
87546 l_adr_transaction_coa_id      NUMBER;
87547 l_adr_accounting_coa_id       NUMBER;
87548 l_adr_flexfield_segment_code  VARCHAR2(30);
87549 l_adr_flex_value_set_id       NUMBER;
87550 l_adr_value_type_code         VARCHAR2(30);
87551 l_adr_value_combination_id    NUMBER;
87552 l_adr_value_segment_code      VARCHAR2(30);
87553 
87554 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
87555 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
87556 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
87557 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
87558 
87559 -- 4262811 Variables ------------------------------------------------------------------------------------------
87560 l_entered_amt_idx             NUMBER;
87561 l_accted_amt_idx              NUMBER;
87562 l_acc_rev_flag                VARCHAR2(1);
87563 l_accrual_line_num            NUMBER;
87564 l_tmp_amt                     NUMBER;
87565 l_acc_rev_natural_side_code   VARCHAR2(1);
87566 
87567 l_num_entries                 NUMBER;
87568 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
87569 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
87570 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
87571 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
87572 l_recog_line_1                NUMBER;
87573 l_recog_line_2                NUMBER;
87574 
87575 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
87576 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
87577 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
87578 
87579 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
87580 
87581 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
87582 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
87583 
87584 ---------------------------------------------------------------------------------------------------------------
87585 
87586 
87587 --
87588 -- bulk performance
87589 --
87590 l_balance_type_code           VARCHAR2(1);
87591 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
87592 l_log_module                  VARCHAR2(240);
87593 
87594 --
87595 -- Upgrade strategy
87596 --
87597 l_actual_upg_option           VARCHAR2(1);
87598 l_enc_upg_option           VARCHAR2(1);
87599 
87600 --
87601 BEGIN
87602 --
87603 IF g_log_enabled THEN
87604       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_160';
87605 END IF;
87606 --
87607 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87608 
87609       trace
87610          (p_msg      => 'BEGIN of AcctLineType_160'
87611          ,p_level    => C_LEVEL_PROCEDURE
87612          ,p_module   => l_log_module);
87613 
87614 END IF;
87615 --
87616 l_component_type             := 'AMB_JLT';
87617 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
87618 l_component_type_code        := 'S';
87619 l_component_appl_id          :=  707;
87620 l_amb_context_code           := 'DEFAULT';
87621 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
87622 l_event_class_code           := 'DIR_INTERORG_RCPT';
87623 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
87624 l_line_definition_owner_code := 'S';
87625 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
87626 --
87627 l_balance_type_code          := 'A';
87628 l_segment                     := NULL;
87629 l_ccid                        := NULL;
87630 l_adr_transaction_coa_id      := NULL;
87631 l_adr_accounting_coa_id       := NULL;
87632 l_adr_flexfield_segment_code  := NULL;
87633 l_adr_flex_value_set_id       := NULL;
87634 l_adr_value_type_code         := NULL;
87635 l_adr_value_combination_id    := NULL;
87636 l_adr_value_segment_code      := NULL;
87637 
87638 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
87639 l_bflow_class_code           := '';    -- 4219869 Business Flow
87640 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
87641 l_budgetary_control_flag     := 'N';
87642 
87643 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
87644 l_bflow_applied_to_amt       := NULL; -- 5132302
87645 l_entered_amt_idx            := NULL;          -- 4262811
87646 l_accted_amt_idx             := NULL;          -- 4262811
87647 l_acc_rev_flag               := NULL;          -- 4262811
87648 l_accrual_line_num           := NULL;          -- 4262811
87649 l_tmp_amt                    := NULL;          -- 4262811
87650 --
87651  
87652 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
87653     l_balance_type_code <> 'B' THEN
87654 IF NVL(p_source_24,9E125) =  3
87655  THEN 
87656 
87657    --
87658    XLA_AE_LINES_PKG.SetNewLine;
87659 
87660    p_balance_type_code          := l_balance_type_code;
87661    -- set the flag so later we will know whether the gain loss line needs to be created
87662    
87663    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
87664      p_actual_flag :='A';
87665    END IF;
87666 
87667    --
87668    -- bulk performance
87669    --
87670    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
87671                                       p_header_num   => 0); -- 4262811
87672    --
87673    -- set accounting line options
87674    --
87675    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
87676            p_natural_side_code          => 'D'
87677          , p_gain_or_loss_flag          => 'N'
87678          , p_gl_transfer_mode_code      => 'S'
87679          , p_acct_entry_type_code       => 'A'
87680          , p_switch_side_flag           => 'Y'
87681          , p_merge_duplicate_code       => 'N'
87682          );
87683    --
87684    l_acc_rev_natural_side_code := 'C';  -- 4262811
87685    -- 
87686    --
87687    -- set accounting line type info
87688    --
87689    xla_ae_lines_pkg.SetAcctLineType
87690       (p_component_type             => l_component_type
87691       ,p_event_type_code            => l_event_type_code
87692       ,p_line_definition_owner_code => l_line_definition_owner_code
87693       ,p_line_definition_code       => l_line_definition_code
87694       ,p_accounting_line_code       => l_component_code
87695       ,p_accounting_line_type_code  => l_component_type_code
87696       ,p_accounting_line_appl_id    => l_component_appl_id
87697       ,p_amb_context_code           => l_amb_context_code
87698       ,p_entity_code                => l_entity_code
87699       ,p_event_class_code           => l_event_class_code);
87700    --
87701    -- set accounting class
87702    --
87703    xla_ae_lines_pkg.SetAcctClass(
87704            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
87705          , p_ae_header_id           => l_ae_header_id
87706          );
87707 
87708    --
87709    -- set rounding class
87710    --
87711    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
87712                       'MATERIAL_OVERHEAD_ABSORPTION';
87713 
87714    --
87715    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
87716    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
87717    --
87718    -- bulk performance
87719    --
87720    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
87721 
87722    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
87723       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
87724 
87725    -- 4955764
87726    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87727       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
87728 
87729    -- 4458381 Public Sector Enh
87730    
87731    --
87732    -- set accounting attributes for the line type
87733    --
87734    l_entered_amt_idx := 17;
87735    l_accted_amt_idx  := 22;
87736    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
87737    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
87738    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
87739    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
87740    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
87741    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
87742    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
87743    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
87744    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
87745    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
87746    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
87747    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
87748    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
87749    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
87750    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
87751    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
87752    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
87753    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
87754    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
87755    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
87756    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
87757    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
87758    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
87759    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
87760    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
87761    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
87762    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
87763    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
87764    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
87765    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
87766    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
87767    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
87768    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
87769    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
87770    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
87771    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
87772    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
87773    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
87774    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
87775    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
87776    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
87777    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
87778    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
87779    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
87780    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
87781    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
87782    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
87783    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
87784    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
87785 
87786    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
87787    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
87788 
87789    ---------------------------------------------------------------------------------------------------------------
87790    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
87791    ---------------------------------------------------------------------------------------------------------------
87792    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
87793 
87794    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87795    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87796 
87797    IF xla_accounting_cache_pkg.GetValueChar
87798          (p_source_code         => 'LEDGER_CATEGORY_CODE'
87799          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
87800    AND l_bflow_method_code = 'PRIOR_ENTRY'
87801 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
87802    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
87803          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
87804        )
87805    THEN
87806          xla_ae_lines_pkg.BflowUpgEntry
87807            (p_business_method_code    => l_bflow_method_code
87808            ,p_business_class_code     => l_bflow_class_code
87809            ,p_balance_type            => l_balance_type_code);
87810    ELSE
87811       NULL;
87812 -- No business flow processing for business flow method of NONE.
87813    END IF;
87814 
87815    --
87816    -- call analytical criteria
87817    --
87818    
87819    --
87820    -- call description
87821    --
87822    -- No description or it is inherited.
87823    --
87824    -- call ADRs
87825    -- Bug 4922099
87826    --
87827    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87828         (NVL(l_actual_upg_option, 'N') = 'O') OR
87829         (NVL(l_enc_upg_option, 'N') = 'O')
87830       )
87831    THEN
87832    NULL;
87833    --
87834    --
87835    
87836   l_ccid := AcctDerRule_4(
87837            p_application_id           => p_application_id
87838          , p_ae_header_id             => l_ae_header_id 
87839 , p_source_4 => p_source_4
87840          , x_transaction_coa_id       => l_adr_transaction_coa_id
87841          , x_accounting_coa_id        => l_adr_accounting_coa_id
87842          , x_value_type_code          => l_adr_value_type_code
87843          , p_side                     => 'NA'
87844    );
87845 
87846    xla_ae_lines_pkg.set_ccid(
87847     p_code_combination_id          => l_ccid
87848   , p_value_type_code              => l_adr_value_type_code
87849   , p_transaction_coa_id           => l_adr_transaction_coa_id
87850   , p_accounting_coa_id            => l_adr_accounting_coa_id
87851   , p_adr_code                     => 'CST_DEFAULT'
87852   , p_adr_type_code                => 'S'
87853   , p_component_type               => l_component_type
87854   , p_component_code               => l_component_code
87855   , p_component_type_code          => l_component_type_code
87856   , p_component_appl_id            => l_component_appl_id
87857   , p_amb_context_code             => l_amb_context_code
87858   , p_side                         => 'NA'
87859   );
87860 
87861 
87862    --
87863    --
87864    END IF;
87865    --
87866    -- Bug 4922099
87867    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
87868           (NVL(l_enc_upg_option, 'N') = 'O')
87869         ) AND
87870         (l_bflow_method_code = 'PRIOR_ENTRY')
87871       )
87872    THEN
87873       IF
87874       --
87875       1 = 2
87876       --
87877       THEN
87878       xla_accounting_err_pkg.build_message
87879                                     (p_appli_s_name            => 'XLA'
87880                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87881                                     ,p_token_1                 => 'LINE_NUMBER'
87882                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
87883                                     ,p_token_2                 => 'LINE_TYPE_NAME'
87884                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
87885                                                                              l_component_type
87886                                                                             ,l_component_code
87887                                                                             ,l_component_type_code
87888                                                                             ,l_component_appl_id
87889                                                                             ,l_amb_context_code
87890                                                                             ,l_entity_code
87891                                                                             ,l_event_class_code
87892                                                                            )
87893                                     ,p_token_3                 => 'OWNER'
87894                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
87895                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
87896                                                                           ,p_lookup_code    => l_component_type_code
87897                                                                          )
87898                                     ,p_token_4                 => 'PRODUCT_NAME'
87899                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
87900                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
87901                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
87902                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
87903                                     ,p_ae_header_id            =>  NULL
87904                                        );
87905 
87906         IF (C_LEVEL_ERROR>= g_log_level) THEN
87907                  trace
87908                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87909                       ,p_level    => C_LEVEL_ERROR
87910                       ,p_module   => l_log_module);
87911         END IF;
87912       END IF;
87913    END IF;
87914    --
87915    --
87916    ------------------------------------------------------------------------------------------------
87917    -- 4219869 Business Flow
87918    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
87919    -- Prior Entry.  Currently, the following code is always generated.
87920    ------------------------------------------------------------------------------------------------
87921    XLA_AE_LINES_PKG.ValidateCurrentLine;
87922 
87923    ------------------------------------------------------------------------------------
87924    -- 4219869 Business Flow
87925    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
87926    ------------------------------------------------------------------------------------
87927    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87928 
87929    ----------------------------------------------------------------------------------
87930    -- 4219869 Business Flow
87931    -- Update journal entry status -- Need to generate this within IF <condition>
87932    ----------------------------------------------------------------------------------
87933    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87934          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
87935          ,p_balance_type_code => l_balance_type_code
87936          );
87937 
87938    -------------------------------------------------------------------------------------------
87939    -- 4262811 - Generate the Accrual Reversal lines
87940    -------------------------------------------------------------------------------------------
87941    BEGIN
87942       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
87943                               (g_array_event(p_event_id).array_value_num('header_index'));
87944       IF l_acc_rev_flag IS NULL THEN
87945          l_acc_rev_flag := 'N';
87946       END IF;
87947    EXCEPTION
87948       WHEN OTHERS THEN
87949          l_acc_rev_flag := 'N';
87950    END;
87951    --
87952    IF (l_acc_rev_flag = 'Y') THEN
87953 
87954        -- 4645092  ------------------------------------------------------------------------------
87955        -- To allow MPA report to determine if it should generate report process
87956        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
87957        ------------------------------------------------------------------------------------------
87958 
87959        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
87960        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
87961    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
87962    -- call ADRs
87963    -- Bug 4922099
87964    --
87965    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87966         (NVL(l_actual_upg_option, 'N') = 'O') OR
87967         (NVL(l_enc_upg_option, 'N') = 'O')
87968       )
87969    THEN
87970    NULL;
87971    --
87972    --
87973    
87974   l_ccid := AcctDerRule_4(
87975            p_application_id           => p_application_id
87976          , p_ae_header_id             => l_ae_header_id 
87977 , p_source_4 => p_source_4
87978          , x_transaction_coa_id       => l_adr_transaction_coa_id
87979          , x_accounting_coa_id        => l_adr_accounting_coa_id
87980          , x_value_type_code          => l_adr_value_type_code
87981          , p_side                     => 'NA'
87982    );
87983 
87984    xla_ae_lines_pkg.set_ccid(
87985     p_code_combination_id          => l_ccid
87986   , p_value_type_code              => l_adr_value_type_code
87987   , p_transaction_coa_id           => l_adr_transaction_coa_id
87988   , p_accounting_coa_id            => l_adr_accounting_coa_id
87989   , p_adr_code                     => 'CST_DEFAULT'
87990   , p_adr_type_code                => 'S'
87991   , p_component_type               => l_component_type
87992   , p_component_code               => l_component_code
87993   , p_component_type_code          => l_component_type_code
87994   , p_component_appl_id            => l_component_appl_id
87995   , p_amb_context_code             => l_amb_context_code
87996   , p_side                         => 'NA'
87997   );
87998 
87999 
88000    --
88001    --
88002    END IF;
88003 
88004        --
88005        -- Update the line information that should be overwritten
88006        --
88007        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
88008                                          p_header_num   => 1);
88009        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
88010 
88011        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
88012 
88013        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
88014           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
88015        END IF;
88016 
88017       --
88018       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
88019       --
88020       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
88021           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
88022       ELSE
88023           ---------------------------------------------------------------------------------------------------
88024           -- 4262811a Switch Sign
88025           ---------------------------------------------------------------------------------------------------
88026           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
88027           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88028                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88029           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88030                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88031           -- 5132302
88032           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
88033                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88034 
88035       END IF;
88036 
88037       -- 4955764
88038       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88039       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
88040 
88041 
88042       XLA_AE_LINES_PKG.ValidateCurrentLine;
88043       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88044 
88045       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88046                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
88047                ,p_balance_type_code => l_balance_type_code);
88048 
88049    END IF;
88050 
88051    -----------------------------------------------------------------------------------------
88052    -- 4262811 Multiperiod Accounting
88053    -----------------------------------------------------------------------------------------
88054      -- No MPA option is assigned.
88055 
88056 
88057 END IF;
88058 END IF;
88059 --
88060 
88061 --
88062 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88063    trace
88064       (p_msg      => 'END of AcctLineType_160'
88065       ,p_level    => C_LEVEL_PROCEDURE
88066       ,p_module   => l_log_module);
88067 END IF;
88068 --
88069 EXCEPTION
88070   WHEN xla_exceptions_pkg.application_exception THEN
88071       RAISE;
88072   WHEN OTHERS THEN
88073        xla_exceptions_pkg.raise_message
88074            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_160');
88075 END AcctLineType_160;
88076 --
88077 
88078 ---------------------------------------
88079 --
88080 -- PRIVATE FUNCTION
88081 --         AcctLineType_161
88082 --
88083 ---------------------------------------
88084 PROCEDURE AcctLineType_161 (
88085   p_application_id        IN NUMBER
88086  ,p_event_id              IN NUMBER
88087  ,p_calculate_acctd_flag  IN VARCHAR2
88088  ,p_calculate_g_l_flag    IN VARCHAR2
88089  ,p_actual_flag           IN OUT VARCHAR2
88090  ,p_balance_type_code     OUT VARCHAR2
88091  ,p_gain_or_loss_ref      OUT VARCHAR2
88092  
88093 --Cost Management Default Account
88094  , p_source_4            IN NUMBER
88095 --DISTRIBUTION_IDENTIFIER
88096  , p_source_11            IN NUMBER
88097 --Distribution Type
88098  , p_source_12            IN VARCHAR2
88099  , p_source_12_meaning    IN VARCHAR2
88100 --Entered Currency Code
88101  , p_source_15            IN VARCHAR2
88102 --Entered Amount
88103  , p_source_18            IN NUMBER
88104 --Currency Conversion Date
88105  , p_source_19            IN DATE
88106 --Currency Conversion Rate
88107  , p_source_20            IN NUMBER
88108 --Currency Conversion Type
88109  , p_source_21            IN VARCHAR2
88110 --Accounted Amount
88111  , p_source_22            IN NUMBER
88112 --Accounting Line Type
88113  , p_source_24            IN NUMBER
88114 )
88115 IS
88116 
88117 l_component_type              VARCHAR2(80);
88118 l_component_code              VARCHAR2(30);
88119 l_component_type_code         VARCHAR2(1);
88120 l_component_appl_id           INTEGER;
88121 l_amb_context_code            VARCHAR2(30);
88122 l_entity_code                 VARCHAR2(30);
88123 l_event_class_code            VARCHAR2(30);
88124 l_ae_header_id                NUMBER;
88125 l_event_type_code             VARCHAR2(30);
88126 l_line_definition_code        VARCHAR2(30);
88127 l_line_definition_owner_code  VARCHAR2(1);
88128 --
88129 -- adr variables
88130 l_segment                     VARCHAR2(30);
88131 l_ccid                        NUMBER;
88132 l_adr_transaction_coa_id      NUMBER;
88133 l_adr_accounting_coa_id       NUMBER;
88134 l_adr_flexfield_segment_code  VARCHAR2(30);
88135 l_adr_flex_value_set_id       NUMBER;
88136 l_adr_value_type_code         VARCHAR2(30);
88137 l_adr_value_combination_id    NUMBER;
88138 l_adr_value_segment_code      VARCHAR2(30);
88139 
88140 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
88141 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
88142 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
88143 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
88144 
88145 -- 4262811 Variables ------------------------------------------------------------------------------------------
88146 l_entered_amt_idx             NUMBER;
88147 l_accted_amt_idx              NUMBER;
88148 l_acc_rev_flag                VARCHAR2(1);
88149 l_accrual_line_num            NUMBER;
88150 l_tmp_amt                     NUMBER;
88151 l_acc_rev_natural_side_code   VARCHAR2(1);
88152 
88153 l_num_entries                 NUMBER;
88154 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
88155 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
88156 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
88157 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
88158 l_recog_line_1                NUMBER;
88159 l_recog_line_2                NUMBER;
88160 
88161 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
88162 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
88163 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
88164 
88165 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
88166 
88167 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
88168 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
88169 
88170 ---------------------------------------------------------------------------------------------------------------
88171 
88172 
88173 --
88174 -- bulk performance
88175 --
88176 l_balance_type_code           VARCHAR2(1);
88177 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
88178 l_log_module                  VARCHAR2(240);
88179 
88180 --
88181 -- Upgrade strategy
88182 --
88183 l_actual_upg_option           VARCHAR2(1);
88184 l_enc_upg_option           VARCHAR2(1);
88185 
88186 --
88187 BEGIN
88188 --
88189 IF g_log_enabled THEN
88190       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_161';
88191 END IF;
88192 --
88193 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88194 
88195       trace
88196          (p_msg      => 'BEGIN of AcctLineType_161'
88197          ,p_level    => C_LEVEL_PROCEDURE
88198          ,p_module   => l_log_module);
88199 
88200 END IF;
88201 --
88202 l_component_type             := 'AMB_JLT';
88203 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
88204 l_component_type_code        := 'S';
88205 l_component_appl_id          :=  707;
88206 l_amb_context_code           := 'DEFAULT';
88207 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
88208 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
88209 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
88210 l_line_definition_owner_code := 'S';
88211 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
88212 --
88213 l_balance_type_code          := 'A';
88214 l_segment                     := NULL;
88215 l_ccid                        := NULL;
88216 l_adr_transaction_coa_id      := NULL;
88217 l_adr_accounting_coa_id       := NULL;
88218 l_adr_flexfield_segment_code  := NULL;
88219 l_adr_flex_value_set_id       := NULL;
88220 l_adr_value_type_code         := NULL;
88221 l_adr_value_combination_id    := NULL;
88222 l_adr_value_segment_code      := NULL;
88223 
88224 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
88225 l_bflow_class_code           := '';    -- 4219869 Business Flow
88226 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
88227 l_budgetary_control_flag     := 'N';
88228 
88229 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
88230 l_bflow_applied_to_amt       := NULL; -- 5132302
88231 l_entered_amt_idx            := NULL;          -- 4262811
88232 l_accted_amt_idx             := NULL;          -- 4262811
88233 l_acc_rev_flag               := NULL;          -- 4262811
88234 l_accrual_line_num           := NULL;          -- 4262811
88235 l_tmp_amt                    := NULL;          -- 4262811
88236 --
88237  
88238 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
88239     l_balance_type_code <> 'B' THEN
88240 IF NVL(p_source_24,9E125) =  3
88241  THEN 
88242 
88243    --
88244    XLA_AE_LINES_PKG.SetNewLine;
88245 
88246    p_balance_type_code          := l_balance_type_code;
88247    -- set the flag so later we will know whether the gain loss line needs to be created
88248    
88249    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
88250      p_actual_flag :='A';
88251    END IF;
88252 
88253    --
88254    -- bulk performance
88255    --
88256    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
88257                                       p_header_num   => 0); -- 4262811
88258    --
88259    -- set accounting line options
88260    --
88261    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
88262            p_natural_side_code          => 'D'
88263          , p_gain_or_loss_flag          => 'N'
88264          , p_gl_transfer_mode_code      => 'S'
88265          , p_acct_entry_type_code       => 'A'
88266          , p_switch_side_flag           => 'Y'
88267          , p_merge_duplicate_code       => 'N'
88268          );
88269    --
88270    l_acc_rev_natural_side_code := 'C';  -- 4262811
88271    -- 
88272    --
88273    -- set accounting line type info
88274    --
88275    xla_ae_lines_pkg.SetAcctLineType
88276       (p_component_type             => l_component_type
88277       ,p_event_type_code            => l_event_type_code
88278       ,p_line_definition_owner_code => l_line_definition_owner_code
88279       ,p_line_definition_code       => l_line_definition_code
88280       ,p_accounting_line_code       => l_component_code
88281       ,p_accounting_line_type_code  => l_component_type_code
88282       ,p_accounting_line_appl_id    => l_component_appl_id
88283       ,p_amb_context_code           => l_amb_context_code
88284       ,p_entity_code                => l_entity_code
88285       ,p_event_class_code           => l_event_class_code);
88286    --
88287    -- set accounting class
88288    --
88289    xla_ae_lines_pkg.SetAcctClass(
88290            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
88291          , p_ae_header_id           => l_ae_header_id
88292          );
88293 
88294    --
88295    -- set rounding class
88296    --
88297    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
88298                       'MATERIAL_OVERHEAD_ABSORPTION';
88299 
88300    --
88301    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
88302    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
88303    --
88304    -- bulk performance
88305    --
88306    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
88307 
88308    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
88309       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
88310 
88311    -- 4955764
88312    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88313       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
88314 
88315    -- 4458381 Public Sector Enh
88316    
88317    --
88318    -- set accounting attributes for the line type
88319    --
88320    l_entered_amt_idx := 3;
88321    l_accted_amt_idx  := 8;
88322    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
88323    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
88324    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
88325    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
88326    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
88327    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
88328    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
88329    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
88330    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
88331    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
88332    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
88333    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
88334    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
88335    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
88336    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
88337    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
88338    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
88339 
88340    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
88341    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
88342 
88343    ---------------------------------------------------------------------------------------------------------------
88344    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
88345    ---------------------------------------------------------------------------------------------------------------
88346    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
88347 
88348    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88349    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88350 
88351    IF xla_accounting_cache_pkg.GetValueChar
88352          (p_source_code         => 'LEDGER_CATEGORY_CODE'
88353          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
88354    AND l_bflow_method_code = 'PRIOR_ENTRY'
88355 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
88356    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
88357          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
88358        )
88359    THEN
88360          xla_ae_lines_pkg.BflowUpgEntry
88361            (p_business_method_code    => l_bflow_method_code
88362            ,p_business_class_code     => l_bflow_class_code
88363            ,p_balance_type            => l_balance_type_code);
88364    ELSE
88365       NULL;
88366 -- No business flow processing for business flow method of NONE.
88367    END IF;
88368 
88369    --
88370    -- call analytical criteria
88371    --
88372    
88373    --
88374    -- call description
88375    --
88376    -- No description or it is inherited.
88377    --
88378    -- call ADRs
88379    -- Bug 4922099
88380    --
88381    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88382         (NVL(l_actual_upg_option, 'N') = 'O') OR
88383         (NVL(l_enc_upg_option, 'N') = 'O')
88384       )
88385    THEN
88386    NULL;
88387    --
88388    --
88389    
88390   l_ccid := AcctDerRule_4(
88391            p_application_id           => p_application_id
88392          , p_ae_header_id             => l_ae_header_id 
88393 , p_source_4 => p_source_4
88394          , x_transaction_coa_id       => l_adr_transaction_coa_id
88395          , x_accounting_coa_id        => l_adr_accounting_coa_id
88396          , x_value_type_code          => l_adr_value_type_code
88397          , p_side                     => 'NA'
88398    );
88399 
88400    xla_ae_lines_pkg.set_ccid(
88401     p_code_combination_id          => l_ccid
88402   , p_value_type_code              => l_adr_value_type_code
88403   , p_transaction_coa_id           => l_adr_transaction_coa_id
88404   , p_accounting_coa_id            => l_adr_accounting_coa_id
88405   , p_adr_code                     => 'CST_DEFAULT'
88406   , p_adr_type_code                => 'S'
88407   , p_component_type               => l_component_type
88408   , p_component_code               => l_component_code
88409   , p_component_type_code          => l_component_type_code
88410   , p_component_appl_id            => l_component_appl_id
88411   , p_amb_context_code             => l_amb_context_code
88412   , p_side                         => 'NA'
88413   );
88414 
88415 
88416    --
88417    --
88418    END IF;
88419    --
88420    -- Bug 4922099
88421    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
88422           (NVL(l_enc_upg_option, 'N') = 'O')
88423         ) AND
88424         (l_bflow_method_code = 'PRIOR_ENTRY')
88425       )
88426    THEN
88427       IF
88428       --
88429       1 = 2
88430       --
88431       THEN
88432       xla_accounting_err_pkg.build_message
88433                                     (p_appli_s_name            => 'XLA'
88434                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88435                                     ,p_token_1                 => 'LINE_NUMBER'
88436                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
88437                                     ,p_token_2                 => 'LINE_TYPE_NAME'
88438                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
88439                                                                              l_component_type
88440                                                                             ,l_component_code
88441                                                                             ,l_component_type_code
88442                                                                             ,l_component_appl_id
88443                                                                             ,l_amb_context_code
88444                                                                             ,l_entity_code
88445                                                                             ,l_event_class_code
88446                                                                            )
88447                                     ,p_token_3                 => 'OWNER'
88448                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
88449                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
88450                                                                           ,p_lookup_code    => l_component_type_code
88451                                                                          )
88452                                     ,p_token_4                 => 'PRODUCT_NAME'
88453                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
88454                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
88455                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
88456                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
88457                                     ,p_ae_header_id            =>  NULL
88458                                        );
88459 
88460         IF (C_LEVEL_ERROR>= g_log_level) THEN
88461                  trace
88462                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88463                       ,p_level    => C_LEVEL_ERROR
88464                       ,p_module   => l_log_module);
88465         END IF;
88466       END IF;
88467    END IF;
88468    --
88469    --
88470    ------------------------------------------------------------------------------------------------
88471    -- 4219869 Business Flow
88472    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
88473    -- Prior Entry.  Currently, the following code is always generated.
88474    ------------------------------------------------------------------------------------------------
88475    XLA_AE_LINES_PKG.ValidateCurrentLine;
88476 
88477    ------------------------------------------------------------------------------------
88478    -- 4219869 Business Flow
88479    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
88480    ------------------------------------------------------------------------------------
88481    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88482 
88483    ----------------------------------------------------------------------------------
88484    -- 4219869 Business Flow
88485    -- Update journal entry status -- Need to generate this within IF <condition>
88486    ----------------------------------------------------------------------------------
88487    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88488          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
88489          ,p_balance_type_code => l_balance_type_code
88490          );
88491 
88492    -------------------------------------------------------------------------------------------
88493    -- 4262811 - Generate the Accrual Reversal lines
88494    -------------------------------------------------------------------------------------------
88495    BEGIN
88496       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
88497                               (g_array_event(p_event_id).array_value_num('header_index'));
88498       IF l_acc_rev_flag IS NULL THEN
88499          l_acc_rev_flag := 'N';
88500       END IF;
88501    EXCEPTION
88502       WHEN OTHERS THEN
88503          l_acc_rev_flag := 'N';
88504    END;
88505    --
88506    IF (l_acc_rev_flag = 'Y') THEN
88507 
88508        -- 4645092  ------------------------------------------------------------------------------
88509        -- To allow MPA report to determine if it should generate report process
88510        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
88511        ------------------------------------------------------------------------------------------
88512 
88513        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
88514        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
88515    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
88516    -- call ADRs
88517    -- Bug 4922099
88518    --
88519    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88520         (NVL(l_actual_upg_option, 'N') = 'O') OR
88521         (NVL(l_enc_upg_option, 'N') = 'O')
88522       )
88523    THEN
88524    NULL;
88525    --
88526    --
88527    
88528   l_ccid := AcctDerRule_4(
88529            p_application_id           => p_application_id
88530          , p_ae_header_id             => l_ae_header_id 
88531 , p_source_4 => p_source_4
88532          , x_transaction_coa_id       => l_adr_transaction_coa_id
88533          , x_accounting_coa_id        => l_adr_accounting_coa_id
88534          , x_value_type_code          => l_adr_value_type_code
88535          , p_side                     => 'NA'
88536    );
88537 
88538    xla_ae_lines_pkg.set_ccid(
88539     p_code_combination_id          => l_ccid
88540   , p_value_type_code              => l_adr_value_type_code
88541   , p_transaction_coa_id           => l_adr_transaction_coa_id
88542   , p_accounting_coa_id            => l_adr_accounting_coa_id
88543   , p_adr_code                     => 'CST_DEFAULT'
88544   , p_adr_type_code                => 'S'
88545   , p_component_type               => l_component_type
88546   , p_component_code               => l_component_code
88547   , p_component_type_code          => l_component_type_code
88548   , p_component_appl_id            => l_component_appl_id
88549   , p_amb_context_code             => l_amb_context_code
88550   , p_side                         => 'NA'
88551   );
88552 
88553 
88554    --
88555    --
88556    END IF;
88557 
88558        --
88559        -- Update the line information that should be overwritten
88560        --
88561        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
88562                                          p_header_num   => 1);
88563        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
88564 
88565        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
88566 
88567        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
88568           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
88569        END IF;
88570 
88571       --
88572       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
88573       --
88574       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
88575           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
88576       ELSE
88577           ---------------------------------------------------------------------------------------------------
88578           -- 4262811a Switch Sign
88579           ---------------------------------------------------------------------------------------------------
88580           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
88581           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88582                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88583           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88584                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88585           -- 5132302
88586           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
88587                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88588 
88589       END IF;
88590 
88591       -- 4955764
88592       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88593       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
88594 
88595 
88596       XLA_AE_LINES_PKG.ValidateCurrentLine;
88597       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88598 
88599       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88600                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
88601                ,p_balance_type_code => l_balance_type_code);
88602 
88603    END IF;
88604 
88605    -----------------------------------------------------------------------------------------
88606    -- 4262811 Multiperiod Accounting
88607    -----------------------------------------------------------------------------------------
88608      -- No MPA option is assigned.
88609 
88610 
88611 END IF;
88612 END IF;
88613 --
88614 
88615 --
88616 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88617    trace
88618       (p_msg      => 'END of AcctLineType_161'
88619       ,p_level    => C_LEVEL_PROCEDURE
88620       ,p_module   => l_log_module);
88621 END IF;
88622 --
88623 EXCEPTION
88624   WHEN xla_exceptions_pkg.application_exception THEN
88625       RAISE;
88626   WHEN OTHERS THEN
88627        xla_exceptions_pkg.raise_message
88628            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_161');
88629 END AcctLineType_161;
88630 --
88631 
88632 ---------------------------------------
88633 --
88634 -- PRIVATE FUNCTION
88635 --         AcctLineType_162
88636 --
88637 ---------------------------------------
88638 PROCEDURE AcctLineType_162 (
88639   p_application_id        IN NUMBER
88640  ,p_event_id              IN NUMBER
88641  ,p_calculate_acctd_flag  IN VARCHAR2
88642  ,p_calculate_g_l_flag    IN VARCHAR2
88643  ,p_actual_flag           IN OUT VARCHAR2
88644  ,p_balance_type_code     OUT VARCHAR2
88645  ,p_gain_or_loss_ref      OUT VARCHAR2
88646  
88647 --Cost Management Default Account
88648  , p_source_4            IN NUMBER
88649 --DISTRIBUTION_IDENTIFIER
88650  , p_source_11            IN NUMBER
88651 --Distribution Type
88652  , p_source_12            IN VARCHAR2
88653  , p_source_12_meaning    IN VARCHAR2
88654 --Entered Currency Code
88655  , p_source_15            IN VARCHAR2
88656 --Entered Amount
88657  , p_source_18            IN NUMBER
88658 --Currency Conversion Date
88659  , p_source_19            IN DATE
88660 --Currency Conversion Rate
88661  , p_source_20            IN NUMBER
88662 --Currency Conversion Type
88663  , p_source_21            IN VARCHAR2
88664 --Accounted Amount
88665  , p_source_22            IN NUMBER
88666 --Accounting Line Type
88667  , p_source_24            IN NUMBER
88668 )
88669 IS
88670 
88671 l_component_type              VARCHAR2(80);
88672 l_component_code              VARCHAR2(30);
88673 l_component_type_code         VARCHAR2(1);
88674 l_component_appl_id           INTEGER;
88675 l_amb_context_code            VARCHAR2(30);
88676 l_entity_code                 VARCHAR2(30);
88677 l_event_class_code            VARCHAR2(30);
88678 l_ae_header_id                NUMBER;
88679 l_event_type_code             VARCHAR2(30);
88680 l_line_definition_code        VARCHAR2(30);
88681 l_line_definition_owner_code  VARCHAR2(1);
88682 --
88683 -- adr variables
88684 l_segment                     VARCHAR2(30);
88685 l_ccid                        NUMBER;
88686 l_adr_transaction_coa_id      NUMBER;
88687 l_adr_accounting_coa_id       NUMBER;
88688 l_adr_flexfield_segment_code  VARCHAR2(30);
88689 l_adr_flex_value_set_id       NUMBER;
88690 l_adr_value_type_code         VARCHAR2(30);
88691 l_adr_value_combination_id    NUMBER;
88692 l_adr_value_segment_code      VARCHAR2(30);
88693 
88694 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
88695 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
88696 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
88697 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
88698 
88699 -- 4262811 Variables ------------------------------------------------------------------------------------------
88700 l_entered_amt_idx             NUMBER;
88701 l_accted_amt_idx              NUMBER;
88702 l_acc_rev_flag                VARCHAR2(1);
88703 l_accrual_line_num            NUMBER;
88704 l_tmp_amt                     NUMBER;
88705 l_acc_rev_natural_side_code   VARCHAR2(1);
88706 
88707 l_num_entries                 NUMBER;
88708 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
88709 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
88710 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
88711 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
88712 l_recog_line_1                NUMBER;
88713 l_recog_line_2                NUMBER;
88714 
88715 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
88716 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
88717 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
88718 
88719 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
88720 
88721 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
88722 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
88723 
88724 ---------------------------------------------------------------------------------------------------------------
88725 
88726 
88727 --
88728 -- bulk performance
88729 --
88730 l_balance_type_code           VARCHAR2(1);
88731 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
88732 l_log_module                  VARCHAR2(240);
88733 
88734 --
88735 -- Upgrade strategy
88736 --
88737 l_actual_upg_option           VARCHAR2(1);
88738 l_enc_upg_option           VARCHAR2(1);
88739 
88740 --
88741 BEGIN
88742 --
88743 IF g_log_enabled THEN
88744       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_162';
88745 END IF;
88746 --
88747 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88748 
88749       trace
88750          (p_msg      => 'BEGIN of AcctLineType_162'
88751          ,p_level    => C_LEVEL_PROCEDURE
88752          ,p_module   => l_log_module);
88753 
88754 END IF;
88755 --
88756 l_component_type             := 'AMB_JLT';
88757 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
88758 l_component_type_code        := 'S';
88759 l_component_appl_id          :=  707;
88760 l_amb_context_code           := 'DEFAULT';
88761 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
88762 l_event_class_code           := 'USER_DEFINE';
88763 l_event_type_code            := 'UDIR_INTERORG_RCPT';
88764 l_line_definition_owner_code := 'S';
88765 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
88766 --
88767 l_balance_type_code          := 'A';
88768 l_segment                     := NULL;
88769 l_ccid                        := NULL;
88770 l_adr_transaction_coa_id      := NULL;
88771 l_adr_accounting_coa_id       := NULL;
88772 l_adr_flexfield_segment_code  := NULL;
88773 l_adr_flex_value_set_id       := NULL;
88774 l_adr_value_type_code         := NULL;
88775 l_adr_value_combination_id    := NULL;
88776 l_adr_value_segment_code      := NULL;
88777 
88778 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
88779 l_bflow_class_code           := '';    -- 4219869 Business Flow
88780 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
88781 l_budgetary_control_flag     := 'N';
88782 
88783 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
88784 l_bflow_applied_to_amt       := NULL; -- 5132302
88785 l_entered_amt_idx            := NULL;          -- 4262811
88786 l_accted_amt_idx             := NULL;          -- 4262811
88787 l_acc_rev_flag               := NULL;          -- 4262811
88788 l_accrual_line_num           := NULL;          -- 4262811
88789 l_tmp_amt                    := NULL;          -- 4262811
88790 --
88791  
88792 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
88793     l_balance_type_code <> 'B' THEN
88794 IF NVL(p_source_24,9E125) =  3
88795  THEN 
88796 
88797    --
88798    XLA_AE_LINES_PKG.SetNewLine;
88799 
88800    p_balance_type_code          := l_balance_type_code;
88801    -- set the flag so later we will know whether the gain loss line needs to be created
88802    
88803    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
88804      p_actual_flag :='A';
88805    END IF;
88806 
88807    --
88808    -- bulk performance
88809    --
88810    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
88811                                       p_header_num   => 0); -- 4262811
88812    --
88813    -- set accounting line options
88814    --
88815    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
88816            p_natural_side_code          => 'D'
88817          , p_gain_or_loss_flag          => 'N'
88818          , p_gl_transfer_mode_code      => 'S'
88819          , p_acct_entry_type_code       => 'A'
88820          , p_switch_side_flag           => 'Y'
88821          , p_merge_duplicate_code       => 'N'
88822          );
88823    --
88824    l_acc_rev_natural_side_code := 'C';  -- 4262811
88825    -- 
88826    --
88827    -- set accounting line type info
88828    --
88829    xla_ae_lines_pkg.SetAcctLineType
88830       (p_component_type             => l_component_type
88831       ,p_event_type_code            => l_event_type_code
88832       ,p_line_definition_owner_code => l_line_definition_owner_code
88833       ,p_line_definition_code       => l_line_definition_code
88834       ,p_accounting_line_code       => l_component_code
88835       ,p_accounting_line_type_code  => l_component_type_code
88836       ,p_accounting_line_appl_id    => l_component_appl_id
88837       ,p_amb_context_code           => l_amb_context_code
88838       ,p_entity_code                => l_entity_code
88839       ,p_event_class_code           => l_event_class_code);
88840    --
88841    -- set accounting class
88842    --
88843    xla_ae_lines_pkg.SetAcctClass(
88844            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
88845          , p_ae_header_id           => l_ae_header_id
88846          );
88847 
88848    --
88849    -- set rounding class
88850    --
88851    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
88852                       'MATERIAL_OVERHEAD_ABSORPTION';
88853 
88854    --
88855    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
88856    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
88857    --
88858    -- bulk performance
88859    --
88860    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
88861 
88862    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
88863       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
88864 
88865    -- 4955764
88866    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88867       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
88868 
88869    -- 4458381 Public Sector Enh
88870    
88871    --
88872    -- set accounting attributes for the line type
88873    --
88874    l_entered_amt_idx := 3;
88875    l_accted_amt_idx  := 8;
88876    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
88877    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
88878    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
88879    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
88880    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
88881    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
88882    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
88883    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
88884    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
88885    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
88886    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
88887    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
88888    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
88889    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
88890    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
88891    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
88892    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
88893 
88894    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
88895    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
88896 
88897    ---------------------------------------------------------------------------------------------------------------
88898    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
88899    ---------------------------------------------------------------------------------------------------------------
88900    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
88901 
88902    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88903    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88904 
88905    IF xla_accounting_cache_pkg.GetValueChar
88906          (p_source_code         => 'LEDGER_CATEGORY_CODE'
88907          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
88908    AND l_bflow_method_code = 'PRIOR_ENTRY'
88909 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
88910    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
88911          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
88912        )
88913    THEN
88914          xla_ae_lines_pkg.BflowUpgEntry
88915            (p_business_method_code    => l_bflow_method_code
88916            ,p_business_class_code     => l_bflow_class_code
88917            ,p_balance_type            => l_balance_type_code);
88918    ELSE
88919       NULL;
88920 -- No business flow processing for business flow method of NONE.
88921    END IF;
88922 
88923    --
88924    -- call analytical criteria
88925    --
88926    
88927    --
88928    -- call description
88929    --
88930    -- No description or it is inherited.
88931    --
88932    -- call ADRs
88933    -- Bug 4922099
88934    --
88935    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88936         (NVL(l_actual_upg_option, 'N') = 'O') OR
88937         (NVL(l_enc_upg_option, 'N') = 'O')
88938       )
88939    THEN
88940    NULL;
88941    --
88942    --
88943    
88944   l_ccid := AcctDerRule_4(
88945            p_application_id           => p_application_id
88946          , p_ae_header_id             => l_ae_header_id 
88947 , p_source_4 => p_source_4
88948          , x_transaction_coa_id       => l_adr_transaction_coa_id
88949          , x_accounting_coa_id        => l_adr_accounting_coa_id
88950          , x_value_type_code          => l_adr_value_type_code
88951          , p_side                     => 'NA'
88952    );
88953 
88954    xla_ae_lines_pkg.set_ccid(
88955     p_code_combination_id          => l_ccid
88956   , p_value_type_code              => l_adr_value_type_code
88957   , p_transaction_coa_id           => l_adr_transaction_coa_id
88958   , p_accounting_coa_id            => l_adr_accounting_coa_id
88959   , p_adr_code                     => 'CST_DEFAULT'
88960   , p_adr_type_code                => 'S'
88961   , p_component_type               => l_component_type
88962   , p_component_code               => l_component_code
88963   , p_component_type_code          => l_component_type_code
88964   , p_component_appl_id            => l_component_appl_id
88965   , p_amb_context_code             => l_amb_context_code
88966   , p_side                         => 'NA'
88967   );
88968 
88969 
88970    --
88971    --
88972    END IF;
88973    --
88974    -- Bug 4922099
88975    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
88976           (NVL(l_enc_upg_option, 'N') = 'O')
88977         ) AND
88978         (l_bflow_method_code = 'PRIOR_ENTRY')
88979       )
88980    THEN
88981       IF
88982       --
88983       1 = 2
88984       --
88985       THEN
88986       xla_accounting_err_pkg.build_message
88987                                     (p_appli_s_name            => 'XLA'
88988                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88989                                     ,p_token_1                 => 'LINE_NUMBER'
88990                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
88991                                     ,p_token_2                 => 'LINE_TYPE_NAME'
88992                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
88993                                                                              l_component_type
88994                                                                             ,l_component_code
88995                                                                             ,l_component_type_code
88996                                                                             ,l_component_appl_id
88997                                                                             ,l_amb_context_code
88998                                                                             ,l_entity_code
88999                                                                             ,l_event_class_code
89000                                                                            )
89001                                     ,p_token_3                 => 'OWNER'
89002                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
89003                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
89004                                                                           ,p_lookup_code    => l_component_type_code
89005                                                                          )
89006                                     ,p_token_4                 => 'PRODUCT_NAME'
89007                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
89008                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
89009                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
89010                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
89011                                     ,p_ae_header_id            =>  NULL
89012                                        );
89013 
89014         IF (C_LEVEL_ERROR>= g_log_level) THEN
89015                  trace
89016                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89017                       ,p_level    => C_LEVEL_ERROR
89018                       ,p_module   => l_log_module);
89019         END IF;
89020       END IF;
89021    END IF;
89022    --
89023    --
89024    ------------------------------------------------------------------------------------------------
89025    -- 4219869 Business Flow
89026    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
89027    -- Prior Entry.  Currently, the following code is always generated.
89028    ------------------------------------------------------------------------------------------------
89029    XLA_AE_LINES_PKG.ValidateCurrentLine;
89030 
89031    ------------------------------------------------------------------------------------
89032    -- 4219869 Business Flow
89033    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
89034    ------------------------------------------------------------------------------------
89035    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89036 
89037    ----------------------------------------------------------------------------------
89038    -- 4219869 Business Flow
89039    -- Update journal entry status -- Need to generate this within IF <condition>
89040    ----------------------------------------------------------------------------------
89041    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89042          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
89043          ,p_balance_type_code => l_balance_type_code
89044          );
89045 
89046    -------------------------------------------------------------------------------------------
89047    -- 4262811 - Generate the Accrual Reversal lines
89048    -------------------------------------------------------------------------------------------
89049    BEGIN
89050       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
89051                               (g_array_event(p_event_id).array_value_num('header_index'));
89052       IF l_acc_rev_flag IS NULL THEN
89053          l_acc_rev_flag := 'N';
89054       END IF;
89055    EXCEPTION
89056       WHEN OTHERS THEN
89057          l_acc_rev_flag := 'N';
89058    END;
89059    --
89060    IF (l_acc_rev_flag = 'Y') THEN
89061 
89062        -- 4645092  ------------------------------------------------------------------------------
89063        -- To allow MPA report to determine if it should generate report process
89064        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
89065        ------------------------------------------------------------------------------------------
89066 
89067        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
89068        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
89069    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
89070    -- call ADRs
89071    -- Bug 4922099
89072    --
89073    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89074         (NVL(l_actual_upg_option, 'N') = 'O') OR
89075         (NVL(l_enc_upg_option, 'N') = 'O')
89076       )
89077    THEN
89078    NULL;
89079    --
89080    --
89081    
89082   l_ccid := AcctDerRule_4(
89083            p_application_id           => p_application_id
89084          , p_ae_header_id             => l_ae_header_id 
89085 , p_source_4 => p_source_4
89086          , x_transaction_coa_id       => l_adr_transaction_coa_id
89087          , x_accounting_coa_id        => l_adr_accounting_coa_id
89088          , x_value_type_code          => l_adr_value_type_code
89089          , p_side                     => 'NA'
89090    );
89091 
89092    xla_ae_lines_pkg.set_ccid(
89093     p_code_combination_id          => l_ccid
89094   , p_value_type_code              => l_adr_value_type_code
89095   , p_transaction_coa_id           => l_adr_transaction_coa_id
89096   , p_accounting_coa_id            => l_adr_accounting_coa_id
89097   , p_adr_code                     => 'CST_DEFAULT'
89098   , p_adr_type_code                => 'S'
89099   , p_component_type               => l_component_type
89100   , p_component_code               => l_component_code
89101   , p_component_type_code          => l_component_type_code
89102   , p_component_appl_id            => l_component_appl_id
89103   , p_amb_context_code             => l_amb_context_code
89104   , p_side                         => 'NA'
89105   );
89106 
89107 
89108    --
89109    --
89110    END IF;
89111 
89112        --
89113        -- Update the line information that should be overwritten
89114        --
89115        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
89116                                          p_header_num   => 1);
89117        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
89118 
89119        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
89120 
89121        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
89122           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
89123        END IF;
89124 
89125       --
89126       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
89127       --
89128       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
89129           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
89130       ELSE
89131           ---------------------------------------------------------------------------------------------------
89132           -- 4262811a Switch Sign
89133           ---------------------------------------------------------------------------------------------------
89134           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
89135           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89136                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89137           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89138                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89139           -- 5132302
89140           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
89141                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89142 
89143       END IF;
89144 
89145       -- 4955764
89146       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89147       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
89148 
89149 
89150       XLA_AE_LINES_PKG.ValidateCurrentLine;
89151       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89152 
89153       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89154                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
89155                ,p_balance_type_code => l_balance_type_code);
89156 
89157    END IF;
89158 
89159    -----------------------------------------------------------------------------------------
89160    -- 4262811 Multiperiod Accounting
89161    -----------------------------------------------------------------------------------------
89162      -- No MPA option is assigned.
89163 
89164 
89165 END IF;
89166 END IF;
89167 --
89168 
89169 --
89170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89171    trace
89172       (p_msg      => 'END of AcctLineType_162'
89173       ,p_level    => C_LEVEL_PROCEDURE
89174       ,p_module   => l_log_module);
89175 END IF;
89176 --
89177 EXCEPTION
89178   WHEN xla_exceptions_pkg.application_exception THEN
89179       RAISE;
89180   WHEN OTHERS THEN
89181        xla_exceptions_pkg.raise_message
89182            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_162');
89183 END AcctLineType_162;
89184 --
89185 
89186 ---------------------------------------
89187 --
89188 -- PRIVATE FUNCTION
89189 --         AcctLineType_163
89190 --
89191 ---------------------------------------
89192 PROCEDURE AcctLineType_163 (
89193   p_application_id        IN NUMBER
89194  ,p_event_id              IN NUMBER
89195  ,p_calculate_acctd_flag  IN VARCHAR2
89196  ,p_calculate_g_l_flag    IN VARCHAR2
89197  ,p_actual_flag           IN OUT VARCHAR2
89198  ,p_balance_type_code     OUT VARCHAR2
89199  ,p_gain_or_loss_ref      OUT VARCHAR2
89200  
89201 --Cost Management Default Account
89202  , p_source_4            IN NUMBER
89203 --DISTRIBUTION_IDENTIFIER
89204  , p_source_11            IN NUMBER
89205 --Distribution Type
89206  , p_source_12            IN VARCHAR2
89207  , p_source_12_meaning    IN VARCHAR2
89208 --Entered Currency Code
89209  , p_source_15            IN VARCHAR2
89210 --Entered Amount
89211  , p_source_18            IN NUMBER
89212 --Currency Conversion Date
89213  , p_source_19            IN DATE
89214 --Currency Conversion Rate
89215  , p_source_20            IN NUMBER
89216 --Currency Conversion Type
89217  , p_source_21            IN VARCHAR2
89218 --Accounted Amount
89219  , p_source_22            IN NUMBER
89220 --Accounting Line Type
89221  , p_source_24            IN NUMBER
89222 )
89223 IS
89224 
89225 l_component_type              VARCHAR2(80);
89226 l_component_code              VARCHAR2(30);
89227 l_component_type_code         VARCHAR2(1);
89228 l_component_appl_id           INTEGER;
89229 l_amb_context_code            VARCHAR2(30);
89230 l_entity_code                 VARCHAR2(30);
89231 l_event_class_code            VARCHAR2(30);
89232 l_ae_header_id                NUMBER;
89233 l_event_type_code             VARCHAR2(30);
89234 l_line_definition_code        VARCHAR2(30);
89235 l_line_definition_owner_code  VARCHAR2(1);
89236 --
89237 -- adr variables
89238 l_segment                     VARCHAR2(30);
89239 l_ccid                        NUMBER;
89240 l_adr_transaction_coa_id      NUMBER;
89241 l_adr_accounting_coa_id       NUMBER;
89242 l_adr_flexfield_segment_code  VARCHAR2(30);
89243 l_adr_flex_value_set_id       NUMBER;
89244 l_adr_value_type_code         VARCHAR2(30);
89245 l_adr_value_combination_id    NUMBER;
89246 l_adr_value_segment_code      VARCHAR2(30);
89247 
89248 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
89249 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
89250 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
89251 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
89252 
89253 -- 4262811 Variables ------------------------------------------------------------------------------------------
89254 l_entered_amt_idx             NUMBER;
89255 l_accted_amt_idx              NUMBER;
89256 l_acc_rev_flag                VARCHAR2(1);
89257 l_accrual_line_num            NUMBER;
89258 l_tmp_amt                     NUMBER;
89259 l_acc_rev_natural_side_code   VARCHAR2(1);
89260 
89261 l_num_entries                 NUMBER;
89262 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
89263 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
89264 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
89265 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
89266 l_recog_line_1                NUMBER;
89267 l_recog_line_2                NUMBER;
89268 
89269 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
89270 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
89271 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
89272 
89273 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
89274 
89275 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
89276 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
89277 
89278 ---------------------------------------------------------------------------------------------------------------
89279 
89280 
89281 --
89282 -- bulk performance
89283 --
89284 l_balance_type_code           VARCHAR2(1);
89285 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
89286 l_log_module                  VARCHAR2(240);
89287 
89288 --
89289 -- Upgrade strategy
89290 --
89291 l_actual_upg_option           VARCHAR2(1);
89292 l_enc_upg_option           VARCHAR2(1);
89293 
89294 --
89295 BEGIN
89296 --
89297 IF g_log_enabled THEN
89298       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_163';
89299 END IF;
89300 --
89301 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89302 
89303       trace
89304          (p_msg      => 'BEGIN of AcctLineType_163'
89305          ,p_level    => C_LEVEL_PROCEDURE
89306          ,p_module   => l_log_module);
89307 
89308 END IF;
89309 --
89310 l_component_type             := 'AMB_JLT';
89311 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
89312 l_component_type_code        := 'S';
89313 l_component_appl_id          :=  707;
89314 l_amb_context_code           := 'DEFAULT';
89315 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
89316 l_event_class_code           := 'WIP_MTL';
89317 l_event_type_code            := 'WIP_MTL_ALL';
89318 l_line_definition_owner_code := 'S';
89319 l_line_definition_code       := 'WIP_MTL';
89320 --
89321 l_balance_type_code          := 'A';
89322 l_segment                     := NULL;
89323 l_ccid                        := NULL;
89324 l_adr_transaction_coa_id      := NULL;
89325 l_adr_accounting_coa_id       := NULL;
89326 l_adr_flexfield_segment_code  := NULL;
89327 l_adr_flex_value_set_id       := NULL;
89328 l_adr_value_type_code         := NULL;
89329 l_adr_value_combination_id    := NULL;
89330 l_adr_value_segment_code      := NULL;
89331 
89332 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
89333 l_bflow_class_code           := '';    -- 4219869 Business Flow
89334 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
89335 l_budgetary_control_flag     := 'N';
89336 
89337 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
89338 l_bflow_applied_to_amt       := NULL; -- 5132302
89339 l_entered_amt_idx            := NULL;          -- 4262811
89340 l_accted_amt_idx             := NULL;          -- 4262811
89341 l_acc_rev_flag               := NULL;          -- 4262811
89342 l_accrual_line_num           := NULL;          -- 4262811
89343 l_tmp_amt                    := NULL;          -- 4262811
89344 --
89345  
89346 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
89347     l_balance_type_code <> 'B' THEN
89348 IF NVL(p_source_24,9E125) =  3
89349  THEN 
89350 
89351    --
89352    XLA_AE_LINES_PKG.SetNewLine;
89353 
89354    p_balance_type_code          := l_balance_type_code;
89355    -- set the flag so later we will know whether the gain loss line needs to be created
89356    
89357    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
89358      p_actual_flag :='A';
89359    END IF;
89360 
89361    --
89362    -- bulk performance
89363    --
89364    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
89365                                       p_header_num   => 0); -- 4262811
89366    --
89367    -- set accounting line options
89368    --
89369    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
89370            p_natural_side_code          => 'D'
89371          , p_gain_or_loss_flag          => 'N'
89372          , p_gl_transfer_mode_code      => 'S'
89373          , p_acct_entry_type_code       => 'A'
89374          , p_switch_side_flag           => 'Y'
89375          , p_merge_duplicate_code       => 'N'
89376          );
89377    --
89378    l_acc_rev_natural_side_code := 'C';  -- 4262811
89379    -- 
89380    --
89381    -- set accounting line type info
89382    --
89383    xla_ae_lines_pkg.SetAcctLineType
89384       (p_component_type             => l_component_type
89385       ,p_event_type_code            => l_event_type_code
89386       ,p_line_definition_owner_code => l_line_definition_owner_code
89387       ,p_line_definition_code       => l_line_definition_code
89388       ,p_accounting_line_code       => l_component_code
89389       ,p_accounting_line_type_code  => l_component_type_code
89390       ,p_accounting_line_appl_id    => l_component_appl_id
89391       ,p_amb_context_code           => l_amb_context_code
89392       ,p_entity_code                => l_entity_code
89393       ,p_event_class_code           => l_event_class_code);
89394    --
89395    -- set accounting class
89396    --
89397    xla_ae_lines_pkg.SetAcctClass(
89398            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
89399          , p_ae_header_id           => l_ae_header_id
89400          );
89401 
89402    --
89403    -- set rounding class
89404    --
89405    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
89406                       'MATERIAL_OVERHEAD_ABSORPTION';
89407 
89408    --
89409    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
89410    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
89411    --
89412    -- bulk performance
89413    --
89414    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
89415 
89416    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
89417       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
89418 
89419    -- 4955764
89420    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89421       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
89422 
89423    -- 4458381 Public Sector Enh
89424    
89425    --
89426    -- set accounting attributes for the line type
89427    --
89428    l_entered_amt_idx := 3;
89429    l_accted_amt_idx  := 8;
89430    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
89431    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
89432    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
89433    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
89434    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
89435    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
89436    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
89437    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
89438    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
89439    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
89440    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
89441    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
89442    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
89443    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
89444    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
89445    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
89446    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
89447 
89448    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
89449    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
89450 
89451    ---------------------------------------------------------------------------------------------------------------
89452    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
89453    ---------------------------------------------------------------------------------------------------------------
89454    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
89455 
89456    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89457    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89458 
89459    IF xla_accounting_cache_pkg.GetValueChar
89460          (p_source_code         => 'LEDGER_CATEGORY_CODE'
89461          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
89462    AND l_bflow_method_code = 'PRIOR_ENTRY'
89463 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
89464    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
89465          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
89466        )
89467    THEN
89468          xla_ae_lines_pkg.BflowUpgEntry
89469            (p_business_method_code    => l_bflow_method_code
89470            ,p_business_class_code     => l_bflow_class_code
89471            ,p_balance_type            => l_balance_type_code);
89472    ELSE
89473       NULL;
89474 -- No business flow processing for business flow method of NONE.
89475    END IF;
89476 
89477    --
89478    -- call analytical criteria
89479    --
89480    
89481    --
89482    -- call description
89483    --
89484    -- No description or it is inherited.
89485    --
89486    -- call ADRs
89487    -- Bug 4922099
89488    --
89489    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89490         (NVL(l_actual_upg_option, 'N') = 'O') OR
89491         (NVL(l_enc_upg_option, 'N') = 'O')
89492       )
89493    THEN
89494    NULL;
89495    --
89496    --
89497    
89498   l_ccid := AcctDerRule_4(
89499            p_application_id           => p_application_id
89500          , p_ae_header_id             => l_ae_header_id 
89501 , p_source_4 => p_source_4
89502          , x_transaction_coa_id       => l_adr_transaction_coa_id
89503          , x_accounting_coa_id        => l_adr_accounting_coa_id
89504          , x_value_type_code          => l_adr_value_type_code
89505          , p_side                     => 'NA'
89506    );
89507 
89508    xla_ae_lines_pkg.set_ccid(
89509     p_code_combination_id          => l_ccid
89510   , p_value_type_code              => l_adr_value_type_code
89511   , p_transaction_coa_id           => l_adr_transaction_coa_id
89512   , p_accounting_coa_id            => l_adr_accounting_coa_id
89513   , p_adr_code                     => 'CST_DEFAULT'
89514   , p_adr_type_code                => 'S'
89515   , p_component_type               => l_component_type
89516   , p_component_code               => l_component_code
89517   , p_component_type_code          => l_component_type_code
89518   , p_component_appl_id            => l_component_appl_id
89519   , p_amb_context_code             => l_amb_context_code
89520   , p_side                         => 'NA'
89521   );
89522 
89523 
89524    --
89525    --
89526    END IF;
89527    --
89528    -- Bug 4922099
89529    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
89530           (NVL(l_enc_upg_option, 'N') = 'O')
89531         ) AND
89532         (l_bflow_method_code = 'PRIOR_ENTRY')
89533       )
89534    THEN
89535       IF
89536       --
89537       1 = 2
89538       --
89539       THEN
89540       xla_accounting_err_pkg.build_message
89541                                     (p_appli_s_name            => 'XLA'
89542                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89543                                     ,p_token_1                 => 'LINE_NUMBER'
89544                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
89545                                     ,p_token_2                 => 'LINE_TYPE_NAME'
89546                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
89547                                                                              l_component_type
89548                                                                             ,l_component_code
89549                                                                             ,l_component_type_code
89550                                                                             ,l_component_appl_id
89551                                                                             ,l_amb_context_code
89552                                                                             ,l_entity_code
89553                                                                             ,l_event_class_code
89554                                                                            )
89555                                     ,p_token_3                 => 'OWNER'
89556                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
89557                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
89558                                                                           ,p_lookup_code    => l_component_type_code
89559                                                                          )
89560                                     ,p_token_4                 => 'PRODUCT_NAME'
89561                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
89562                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
89563                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
89564                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
89565                                     ,p_ae_header_id            =>  NULL
89566                                        );
89567 
89568         IF (C_LEVEL_ERROR>= g_log_level) THEN
89569                  trace
89570                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89571                       ,p_level    => C_LEVEL_ERROR
89572                       ,p_module   => l_log_module);
89573         END IF;
89574       END IF;
89575    END IF;
89576    --
89577    --
89578    ------------------------------------------------------------------------------------------------
89579    -- 4219869 Business Flow
89580    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
89581    -- Prior Entry.  Currently, the following code is always generated.
89582    ------------------------------------------------------------------------------------------------
89583    XLA_AE_LINES_PKG.ValidateCurrentLine;
89584 
89585    ------------------------------------------------------------------------------------
89586    -- 4219869 Business Flow
89587    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
89588    ------------------------------------------------------------------------------------
89589    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89590 
89591    ----------------------------------------------------------------------------------
89592    -- 4219869 Business Flow
89593    -- Update journal entry status -- Need to generate this within IF <condition>
89594    ----------------------------------------------------------------------------------
89595    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89596          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
89597          ,p_balance_type_code => l_balance_type_code
89598          );
89599 
89600    -------------------------------------------------------------------------------------------
89601    -- 4262811 - Generate the Accrual Reversal lines
89602    -------------------------------------------------------------------------------------------
89603    BEGIN
89604       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
89605                               (g_array_event(p_event_id).array_value_num('header_index'));
89606       IF l_acc_rev_flag IS NULL THEN
89607          l_acc_rev_flag := 'N';
89608       END IF;
89609    EXCEPTION
89610       WHEN OTHERS THEN
89611          l_acc_rev_flag := 'N';
89612    END;
89613    --
89614    IF (l_acc_rev_flag = 'Y') THEN
89615 
89616        -- 4645092  ------------------------------------------------------------------------------
89617        -- To allow MPA report to determine if it should generate report process
89618        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
89619        ------------------------------------------------------------------------------------------
89620 
89621        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
89622        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
89623    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
89624    -- call ADRs
89625    -- Bug 4922099
89626    --
89627    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89628         (NVL(l_actual_upg_option, 'N') = 'O') OR
89629         (NVL(l_enc_upg_option, 'N') = 'O')
89630       )
89631    THEN
89632    NULL;
89633    --
89634    --
89635    
89636   l_ccid := AcctDerRule_4(
89637            p_application_id           => p_application_id
89638          , p_ae_header_id             => l_ae_header_id 
89639 , p_source_4 => p_source_4
89640          , x_transaction_coa_id       => l_adr_transaction_coa_id
89641          , x_accounting_coa_id        => l_adr_accounting_coa_id
89642          , x_value_type_code          => l_adr_value_type_code
89643          , p_side                     => 'NA'
89644    );
89645 
89646    xla_ae_lines_pkg.set_ccid(
89647     p_code_combination_id          => l_ccid
89648   , p_value_type_code              => l_adr_value_type_code
89649   , p_transaction_coa_id           => l_adr_transaction_coa_id
89650   , p_accounting_coa_id            => l_adr_accounting_coa_id
89651   , p_adr_code                     => 'CST_DEFAULT'
89652   , p_adr_type_code                => 'S'
89653   , p_component_type               => l_component_type
89654   , p_component_code               => l_component_code
89655   , p_component_type_code          => l_component_type_code
89656   , p_component_appl_id            => l_component_appl_id
89657   , p_amb_context_code             => l_amb_context_code
89658   , p_side                         => 'NA'
89659   );
89660 
89661 
89662    --
89663    --
89664    END IF;
89665 
89666        --
89667        -- Update the line information that should be overwritten
89668        --
89669        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
89670                                          p_header_num   => 1);
89671        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
89672 
89673        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
89674 
89675        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
89676           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
89677        END IF;
89678 
89679       --
89680       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
89681       --
89682       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
89683           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
89684       ELSE
89685           ---------------------------------------------------------------------------------------------------
89686           -- 4262811a Switch Sign
89687           ---------------------------------------------------------------------------------------------------
89688           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
89689           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89690                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89691           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89692                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89693           -- 5132302
89694           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
89695                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89696 
89697       END IF;
89698 
89699       -- 4955764
89700       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89701       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
89702 
89703 
89704       XLA_AE_LINES_PKG.ValidateCurrentLine;
89705       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89706 
89707       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89708                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
89709                ,p_balance_type_code => l_balance_type_code);
89710 
89711    END IF;
89712 
89713    -----------------------------------------------------------------------------------------
89714    -- 4262811 Multiperiod Accounting
89715    -----------------------------------------------------------------------------------------
89716      -- No MPA option is assigned.
89717 
89718 
89719 END IF;
89720 END IF;
89721 --
89722 
89723 --
89724 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89725    trace
89726       (p_msg      => 'END of AcctLineType_163'
89727       ,p_level    => C_LEVEL_PROCEDURE
89728       ,p_module   => l_log_module);
89729 END IF;
89730 --
89731 EXCEPTION
89732   WHEN xla_exceptions_pkg.application_exception THEN
89733       RAISE;
89734   WHEN OTHERS THEN
89735        xla_exceptions_pkg.raise_message
89736            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_163');
89737 END AcctLineType_163;
89738 --
89739 
89740 ---------------------------------------
89741 --
89742 -- PRIVATE FUNCTION
89743 --         AcctLineType_164
89744 --
89745 ---------------------------------------
89746 PROCEDURE AcctLineType_164 (
89747   p_application_id        IN NUMBER
89748  ,p_event_id              IN NUMBER
89749  ,p_calculate_acctd_flag  IN VARCHAR2
89750  ,p_calculate_g_l_flag    IN VARCHAR2
89751  ,p_actual_flag           IN OUT VARCHAR2
89752  ,p_balance_type_code     OUT VARCHAR2
89753  ,p_gain_or_loss_ref      OUT VARCHAR2
89754  
89755 --Cost Management Default Account
89756  , p_source_4            IN NUMBER
89757 --DISTRIBUTION_IDENTIFIER
89758  , p_source_11            IN NUMBER
89759 --Distribution Type
89760  , p_source_12            IN VARCHAR2
89761  , p_source_12_meaning    IN VARCHAR2
89762 --Entered Currency Code
89763  , p_source_15            IN VARCHAR2
89764 --Entered Amount
89765  , p_source_18            IN NUMBER
89766 --Currency Conversion Date
89767  , p_source_19            IN DATE
89768 --Currency Conversion Rate
89769  , p_source_20            IN NUMBER
89770 --Currency Conversion Type
89771  , p_source_21            IN VARCHAR2
89772 --Accounted Amount
89773  , p_source_22            IN NUMBER
89774 --Accounting Line Type
89775  , p_source_24            IN NUMBER
89776 )
89777 IS
89778 
89779 l_component_type              VARCHAR2(80);
89780 l_component_code              VARCHAR2(30);
89781 l_component_type_code         VARCHAR2(1);
89782 l_component_appl_id           INTEGER;
89783 l_amb_context_code            VARCHAR2(30);
89784 l_entity_code                 VARCHAR2(30);
89785 l_event_class_code            VARCHAR2(30);
89786 l_ae_header_id                NUMBER;
89787 l_event_type_code             VARCHAR2(30);
89788 l_line_definition_code        VARCHAR2(30);
89789 l_line_definition_owner_code  VARCHAR2(1);
89790 --
89791 -- adr variables
89792 l_segment                     VARCHAR2(30);
89793 l_ccid                        NUMBER;
89794 l_adr_transaction_coa_id      NUMBER;
89795 l_adr_accounting_coa_id       NUMBER;
89796 l_adr_flexfield_segment_code  VARCHAR2(30);
89797 l_adr_flex_value_set_id       NUMBER;
89798 l_adr_value_type_code         VARCHAR2(30);
89799 l_adr_value_combination_id    NUMBER;
89800 l_adr_value_segment_code      VARCHAR2(30);
89801 
89802 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
89803 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
89804 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
89805 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
89806 
89807 -- 4262811 Variables ------------------------------------------------------------------------------------------
89808 l_entered_amt_idx             NUMBER;
89809 l_accted_amt_idx              NUMBER;
89810 l_acc_rev_flag                VARCHAR2(1);
89811 l_accrual_line_num            NUMBER;
89812 l_tmp_amt                     NUMBER;
89813 l_acc_rev_natural_side_code   VARCHAR2(1);
89814 
89815 l_num_entries                 NUMBER;
89816 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
89817 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
89818 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
89819 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
89820 l_recog_line_1                NUMBER;
89821 l_recog_line_2                NUMBER;
89822 
89823 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
89824 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
89825 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
89826 
89827 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
89828 
89829 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
89830 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
89831 
89832 ---------------------------------------------------------------------------------------------------------------
89833 
89834 
89835 --
89836 -- bulk performance
89837 --
89838 l_balance_type_code           VARCHAR2(1);
89839 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
89840 l_log_module                  VARCHAR2(240);
89841 
89842 --
89843 -- Upgrade strategy
89844 --
89845 l_actual_upg_option           VARCHAR2(1);
89846 l_enc_upg_option           VARCHAR2(1);
89847 
89848 --
89849 BEGIN
89850 --
89851 IF g_log_enabled THEN
89852       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_164';
89853 END IF;
89854 --
89855 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89856 
89857       trace
89858          (p_msg      => 'BEGIN of AcctLineType_164'
89859          ,p_level    => C_LEVEL_PROCEDURE
89860          ,p_module   => l_log_module);
89861 
89862 END IF;
89863 --
89864 l_component_type             := 'AMB_JLT';
89865 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
89866 l_component_type_code        := 'S';
89867 l_component_appl_id          :=  707;
89868 l_amb_context_code           := 'DEFAULT';
89869 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
89870 l_event_class_code           := 'DIR_INTERORG_SHIP';
89871 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
89872 l_line_definition_owner_code := 'S';
89873 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
89874 --
89875 l_balance_type_code          := 'A';
89876 l_segment                     := NULL;
89877 l_ccid                        := NULL;
89878 l_adr_transaction_coa_id      := NULL;
89879 l_adr_accounting_coa_id       := NULL;
89880 l_adr_flexfield_segment_code  := NULL;
89881 l_adr_flex_value_set_id       := NULL;
89882 l_adr_value_type_code         := NULL;
89883 l_adr_value_combination_id    := NULL;
89884 l_adr_value_segment_code      := NULL;
89885 
89886 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
89887 l_bflow_class_code           := '';    -- 4219869 Business Flow
89888 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
89889 l_budgetary_control_flag     := 'N';
89890 
89891 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
89892 l_bflow_applied_to_amt       := NULL; -- 5132302
89893 l_entered_amt_idx            := NULL;          -- 4262811
89894 l_accted_amt_idx             := NULL;          -- 4262811
89895 l_acc_rev_flag               := NULL;          -- 4262811
89896 l_accrual_line_num           := NULL;          -- 4262811
89897 l_tmp_amt                    := NULL;          -- 4262811
89898 --
89899  
89900 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
89901     l_balance_type_code <> 'B' THEN
89902 IF NVL(p_source_24,9E125) =  3
89903  THEN 
89904 
89905    --
89906    XLA_AE_LINES_PKG.SetNewLine;
89907 
89908    p_balance_type_code          := l_balance_type_code;
89909    -- set the flag so later we will know whether the gain loss line needs to be created
89910    
89911    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
89912      p_actual_flag :='A';
89913    END IF;
89914 
89915    --
89916    -- bulk performance
89917    --
89918    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
89919                                       p_header_num   => 0); -- 4262811
89920    --
89921    -- set accounting line options
89922    --
89923    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
89924            p_natural_side_code          => 'D'
89925          , p_gain_or_loss_flag          => 'N'
89926          , p_gl_transfer_mode_code      => 'S'
89927          , p_acct_entry_type_code       => 'A'
89928          , p_switch_side_flag           => 'Y'
89929          , p_merge_duplicate_code       => 'N'
89930          );
89931    --
89932    l_acc_rev_natural_side_code := 'C';  -- 4262811
89933    -- 
89934    --
89935    -- set accounting line type info
89936    --
89937    xla_ae_lines_pkg.SetAcctLineType
89938       (p_component_type             => l_component_type
89939       ,p_event_type_code            => l_event_type_code
89940       ,p_line_definition_owner_code => l_line_definition_owner_code
89941       ,p_line_definition_code       => l_line_definition_code
89942       ,p_accounting_line_code       => l_component_code
89943       ,p_accounting_line_type_code  => l_component_type_code
89944       ,p_accounting_line_appl_id    => l_component_appl_id
89945       ,p_amb_context_code           => l_amb_context_code
89946       ,p_entity_code                => l_entity_code
89947       ,p_event_class_code           => l_event_class_code);
89948    --
89949    -- set accounting class
89950    --
89951    xla_ae_lines_pkg.SetAcctClass(
89952            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
89953          , p_ae_header_id           => l_ae_header_id
89954          );
89955 
89956    --
89957    -- set rounding class
89958    --
89959    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
89960                       'MATERIAL_OVERHEAD_ABSORPTION';
89961 
89962    --
89963    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
89964    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
89965    --
89966    -- bulk performance
89967    --
89968    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
89969 
89970    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
89971       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
89972 
89973    -- 4955764
89974    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89975       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
89976 
89977    -- 4458381 Public Sector Enh
89978    
89979    --
89980    -- set accounting attributes for the line type
89981    --
89982    l_entered_amt_idx := 3;
89983    l_accted_amt_idx  := 8;
89984    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
89985    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
89986    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
89987    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
89988    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
89989    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
89990    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
89991    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
89992    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
89993    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
89994    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
89995    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
89996    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
89997    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
89998    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
89999    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
90000    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
90001 
90002    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
90003    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
90004 
90005    ---------------------------------------------------------------------------------------------------------------
90006    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
90007    ---------------------------------------------------------------------------------------------------------------
90008    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
90009 
90010    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90011    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90012 
90013    IF xla_accounting_cache_pkg.GetValueChar
90014          (p_source_code         => 'LEDGER_CATEGORY_CODE'
90015          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
90016    AND l_bflow_method_code = 'PRIOR_ENTRY'
90017 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
90018    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
90019          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
90020        )
90021    THEN
90022          xla_ae_lines_pkg.BflowUpgEntry
90023            (p_business_method_code    => l_bflow_method_code
90024            ,p_business_class_code     => l_bflow_class_code
90025            ,p_balance_type            => l_balance_type_code);
90026    ELSE
90027       NULL;
90028 -- No business flow processing for business flow method of NONE.
90029    END IF;
90030 
90031    --
90032    -- call analytical criteria
90033    --
90034    
90035    --
90036    -- call description
90037    --
90038    -- No description or it is inherited.
90039    --
90040    -- call ADRs
90041    -- Bug 4922099
90042    --
90043    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90044         (NVL(l_actual_upg_option, 'N') = 'O') OR
90045         (NVL(l_enc_upg_option, 'N') = 'O')
90046       )
90047    THEN
90048    NULL;
90049    --
90050    --
90051    
90052   l_ccid := AcctDerRule_4(
90053            p_application_id           => p_application_id
90054          , p_ae_header_id             => l_ae_header_id 
90055 , p_source_4 => p_source_4
90056          , x_transaction_coa_id       => l_adr_transaction_coa_id
90057          , x_accounting_coa_id        => l_adr_accounting_coa_id
90058          , x_value_type_code          => l_adr_value_type_code
90059          , p_side                     => 'NA'
90060    );
90061 
90062    xla_ae_lines_pkg.set_ccid(
90063     p_code_combination_id          => l_ccid
90064   , p_value_type_code              => l_adr_value_type_code
90065   , p_transaction_coa_id           => l_adr_transaction_coa_id
90066   , p_accounting_coa_id            => l_adr_accounting_coa_id
90067   , p_adr_code                     => 'CST_DEFAULT'
90068   , p_adr_type_code                => 'S'
90069   , p_component_type               => l_component_type
90070   , p_component_code               => l_component_code
90071   , p_component_type_code          => l_component_type_code
90072   , p_component_appl_id            => l_component_appl_id
90073   , p_amb_context_code             => l_amb_context_code
90074   , p_side                         => 'NA'
90075   );
90076 
90077 
90078    --
90079    --
90080    END IF;
90081    --
90082    -- Bug 4922099
90083    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
90084           (NVL(l_enc_upg_option, 'N') = 'O')
90085         ) AND
90086         (l_bflow_method_code = 'PRIOR_ENTRY')
90087       )
90088    THEN
90089       IF
90090       --
90091       1 = 2
90092       --
90093       THEN
90094       xla_accounting_err_pkg.build_message
90095                                     (p_appli_s_name            => 'XLA'
90096                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90097                                     ,p_token_1                 => 'LINE_NUMBER'
90098                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
90099                                     ,p_token_2                 => 'LINE_TYPE_NAME'
90100                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
90101                                                                              l_component_type
90102                                                                             ,l_component_code
90103                                                                             ,l_component_type_code
90104                                                                             ,l_component_appl_id
90105                                                                             ,l_amb_context_code
90106                                                                             ,l_entity_code
90107                                                                             ,l_event_class_code
90108                                                                            )
90109                                     ,p_token_3                 => 'OWNER'
90110                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
90111                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
90112                                                                           ,p_lookup_code    => l_component_type_code
90113                                                                          )
90114                                     ,p_token_4                 => 'PRODUCT_NAME'
90115                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
90116                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
90117                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
90118                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
90119                                     ,p_ae_header_id            =>  NULL
90120                                        );
90121 
90122         IF (C_LEVEL_ERROR>= g_log_level) THEN
90123                  trace
90124                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90125                       ,p_level    => C_LEVEL_ERROR
90126                       ,p_module   => l_log_module);
90127         END IF;
90128       END IF;
90129    END IF;
90130    --
90131    --
90132    ------------------------------------------------------------------------------------------------
90133    -- 4219869 Business Flow
90134    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
90135    -- Prior Entry.  Currently, the following code is always generated.
90136    ------------------------------------------------------------------------------------------------
90137    XLA_AE_LINES_PKG.ValidateCurrentLine;
90138 
90139    ------------------------------------------------------------------------------------
90140    -- 4219869 Business Flow
90141    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
90142    ------------------------------------------------------------------------------------
90143    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90144 
90145    ----------------------------------------------------------------------------------
90146    -- 4219869 Business Flow
90147    -- Update journal entry status -- Need to generate this within IF <condition>
90148    ----------------------------------------------------------------------------------
90149    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90150          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
90151          ,p_balance_type_code => l_balance_type_code
90152          );
90153 
90154    -------------------------------------------------------------------------------------------
90155    -- 4262811 - Generate the Accrual Reversal lines
90156    -------------------------------------------------------------------------------------------
90157    BEGIN
90158       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
90159                               (g_array_event(p_event_id).array_value_num('header_index'));
90160       IF l_acc_rev_flag IS NULL THEN
90161          l_acc_rev_flag := 'N';
90162       END IF;
90163    EXCEPTION
90164       WHEN OTHERS THEN
90165          l_acc_rev_flag := 'N';
90166    END;
90167    --
90168    IF (l_acc_rev_flag = 'Y') THEN
90169 
90170        -- 4645092  ------------------------------------------------------------------------------
90171        -- To allow MPA report to determine if it should generate report process
90172        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
90173        ------------------------------------------------------------------------------------------
90174 
90175        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
90176        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
90177    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
90178    -- call ADRs
90179    -- Bug 4922099
90180    --
90181    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90182         (NVL(l_actual_upg_option, 'N') = 'O') OR
90183         (NVL(l_enc_upg_option, 'N') = 'O')
90184       )
90185    THEN
90186    NULL;
90187    --
90188    --
90189    
90190   l_ccid := AcctDerRule_4(
90191            p_application_id           => p_application_id
90192          , p_ae_header_id             => l_ae_header_id 
90193 , p_source_4 => p_source_4
90194          , x_transaction_coa_id       => l_adr_transaction_coa_id
90195          , x_accounting_coa_id        => l_adr_accounting_coa_id
90196          , x_value_type_code          => l_adr_value_type_code
90197          , p_side                     => 'NA'
90198    );
90199 
90200    xla_ae_lines_pkg.set_ccid(
90201     p_code_combination_id          => l_ccid
90202   , p_value_type_code              => l_adr_value_type_code
90203   , p_transaction_coa_id           => l_adr_transaction_coa_id
90204   , p_accounting_coa_id            => l_adr_accounting_coa_id
90205   , p_adr_code                     => 'CST_DEFAULT'
90206   , p_adr_type_code                => 'S'
90207   , p_component_type               => l_component_type
90208   , p_component_code               => l_component_code
90209   , p_component_type_code          => l_component_type_code
90210   , p_component_appl_id            => l_component_appl_id
90211   , p_amb_context_code             => l_amb_context_code
90212   , p_side                         => 'NA'
90213   );
90214 
90215 
90216    --
90217    --
90218    END IF;
90219 
90220        --
90221        -- Update the line information that should be overwritten
90222        --
90223        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
90224                                          p_header_num   => 1);
90225        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
90226 
90227        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
90228 
90229        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
90230           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
90231        END IF;
90232 
90233       --
90234       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
90235       --
90236       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
90237           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
90238       ELSE
90239           ---------------------------------------------------------------------------------------------------
90240           -- 4262811a Switch Sign
90241           ---------------------------------------------------------------------------------------------------
90242           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
90243           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90244                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90245           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90246                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90247           -- 5132302
90248           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
90249                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90250 
90251       END IF;
90252 
90253       -- 4955764
90254       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90255       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
90256 
90257 
90258       XLA_AE_LINES_PKG.ValidateCurrentLine;
90259       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90260 
90261       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90262                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
90263                ,p_balance_type_code => l_balance_type_code);
90264 
90265    END IF;
90266 
90267    -----------------------------------------------------------------------------------------
90268    -- 4262811 Multiperiod Accounting
90269    -----------------------------------------------------------------------------------------
90270      -- No MPA option is assigned.
90271 
90272 
90273 END IF;
90274 END IF;
90275 --
90276 
90277 --
90278 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90279    trace
90280       (p_msg      => 'END of AcctLineType_164'
90281       ,p_level    => C_LEVEL_PROCEDURE
90282       ,p_module   => l_log_module);
90283 END IF;
90284 --
90285 EXCEPTION
90286   WHEN xla_exceptions_pkg.application_exception THEN
90287       RAISE;
90288   WHEN OTHERS THEN
90289        xla_exceptions_pkg.raise_message
90290            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_164');
90291 END AcctLineType_164;
90292 --
90293 
90294 ---------------------------------------
90295 --
90296 -- PRIVATE FUNCTION
90297 --         AcctLineType_165
90298 --
90299 ---------------------------------------
90300 PROCEDURE AcctLineType_165 (
90301   p_application_id        IN NUMBER
90302  ,p_event_id              IN NUMBER
90303  ,p_calculate_acctd_flag  IN VARCHAR2
90304  ,p_calculate_g_l_flag    IN VARCHAR2
90305  ,p_actual_flag           IN OUT VARCHAR2
90306  ,p_balance_type_code     OUT VARCHAR2
90307  ,p_gain_or_loss_ref      OUT VARCHAR2
90308  
90309 --Cost Management Default Account
90310  , p_source_4            IN NUMBER
90311 --DISTRIBUTION_IDENTIFIER
90312  , p_source_11            IN NUMBER
90313 --Distribution Type
90314  , p_source_12            IN VARCHAR2
90315  , p_source_12_meaning    IN VARCHAR2
90316 --Entered Currency Code
90317  , p_source_15            IN VARCHAR2
90318 --Entered Amount
90319  , p_source_18            IN NUMBER
90320 --Currency Conversion Date
90321  , p_source_19            IN DATE
90322 --Currency Conversion Rate
90323  , p_source_20            IN NUMBER
90324 --Currency Conversion Type
90325  , p_source_21            IN VARCHAR2
90326 --Accounted Amount
90327  , p_source_22            IN NUMBER
90328 --Accounting Line Type
90329  , p_source_24            IN NUMBER
90330 )
90331 IS
90332 
90333 l_component_type              VARCHAR2(80);
90334 l_component_code              VARCHAR2(30);
90335 l_component_type_code         VARCHAR2(1);
90336 l_component_appl_id           INTEGER;
90337 l_amb_context_code            VARCHAR2(30);
90338 l_entity_code                 VARCHAR2(30);
90339 l_event_class_code            VARCHAR2(30);
90340 l_ae_header_id                NUMBER;
90341 l_event_type_code             VARCHAR2(30);
90342 l_line_definition_code        VARCHAR2(30);
90343 l_line_definition_owner_code  VARCHAR2(1);
90344 --
90345 -- adr variables
90346 l_segment                     VARCHAR2(30);
90347 l_ccid                        NUMBER;
90348 l_adr_transaction_coa_id      NUMBER;
90349 l_adr_accounting_coa_id       NUMBER;
90350 l_adr_flexfield_segment_code  VARCHAR2(30);
90351 l_adr_flex_value_set_id       NUMBER;
90352 l_adr_value_type_code         VARCHAR2(30);
90353 l_adr_value_combination_id    NUMBER;
90354 l_adr_value_segment_code      VARCHAR2(30);
90355 
90356 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
90357 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
90358 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
90359 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
90360 
90361 -- 4262811 Variables ------------------------------------------------------------------------------------------
90362 l_entered_amt_idx             NUMBER;
90363 l_accted_amt_idx              NUMBER;
90364 l_acc_rev_flag                VARCHAR2(1);
90365 l_accrual_line_num            NUMBER;
90366 l_tmp_amt                     NUMBER;
90367 l_acc_rev_natural_side_code   VARCHAR2(1);
90368 
90369 l_num_entries                 NUMBER;
90370 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
90371 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
90372 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
90373 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
90374 l_recog_line_1                NUMBER;
90375 l_recog_line_2                NUMBER;
90376 
90377 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
90378 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
90379 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
90380 
90381 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
90382 
90383 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
90384 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
90385 
90386 ---------------------------------------------------------------------------------------------------------------
90387 
90388 
90389 --
90390 -- bulk performance
90391 --
90392 l_balance_type_code           VARCHAR2(1);
90393 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
90394 l_log_module                  VARCHAR2(240);
90395 
90396 --
90397 -- Upgrade strategy
90398 --
90399 l_actual_upg_option           VARCHAR2(1);
90400 l_enc_upg_option           VARCHAR2(1);
90401 
90402 --
90403 BEGIN
90404 --
90405 IF g_log_enabled THEN
90406       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_165';
90407 END IF;
90408 --
90409 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90410 
90411       trace
90412          (p_msg      => 'BEGIN of AcctLineType_165'
90413          ,p_level    => C_LEVEL_PROCEDURE
90414          ,p_module   => l_log_module);
90415 
90416 END IF;
90417 --
90418 l_component_type             := 'AMB_JLT';
90419 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
90420 l_component_type_code        := 'S';
90421 l_component_appl_id          :=  707;
90422 l_amb_context_code           := 'DEFAULT';
90423 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
90424 l_event_class_code           := 'USER_DEFINE';
90425 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
90426 l_line_definition_owner_code := 'S';
90427 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_NO_TP';
90428 --
90429 l_balance_type_code          := 'A';
90430 l_segment                     := NULL;
90431 l_ccid                        := NULL;
90432 l_adr_transaction_coa_id      := NULL;
90433 l_adr_accounting_coa_id       := NULL;
90434 l_adr_flexfield_segment_code  := NULL;
90435 l_adr_flex_value_set_id       := NULL;
90436 l_adr_value_type_code         := NULL;
90437 l_adr_value_combination_id    := NULL;
90438 l_adr_value_segment_code      := NULL;
90439 
90440 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
90441 l_bflow_class_code           := '';    -- 4219869 Business Flow
90442 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
90443 l_budgetary_control_flag     := 'N';
90444 
90445 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
90446 l_bflow_applied_to_amt       := NULL; -- 5132302
90447 l_entered_amt_idx            := NULL;          -- 4262811
90448 l_accted_amt_idx             := NULL;          -- 4262811
90449 l_acc_rev_flag               := NULL;          -- 4262811
90450 l_accrual_line_num           := NULL;          -- 4262811
90451 l_tmp_amt                    := NULL;          -- 4262811
90452 --
90453  
90454 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
90455     l_balance_type_code <> 'B' THEN
90456 IF NVL(p_source_24,9E125) =  3
90457  THEN 
90458 
90459    --
90460    XLA_AE_LINES_PKG.SetNewLine;
90461 
90462    p_balance_type_code          := l_balance_type_code;
90463    -- set the flag so later we will know whether the gain loss line needs to be created
90464    
90465    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
90466      p_actual_flag :='A';
90467    END IF;
90468 
90469    --
90470    -- bulk performance
90471    --
90472    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
90473                                       p_header_num   => 0); -- 4262811
90474    --
90475    -- set accounting line options
90476    --
90477    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
90478            p_natural_side_code          => 'D'
90479          , p_gain_or_loss_flag          => 'N'
90480          , p_gl_transfer_mode_code      => 'S'
90481          , p_acct_entry_type_code       => 'A'
90482          , p_switch_side_flag           => 'Y'
90483          , p_merge_duplicate_code       => 'N'
90484          );
90485    --
90486    l_acc_rev_natural_side_code := 'C';  -- 4262811
90487    -- 
90488    --
90489    -- set accounting line type info
90490    --
90491    xla_ae_lines_pkg.SetAcctLineType
90492       (p_component_type             => l_component_type
90493       ,p_event_type_code            => l_event_type_code
90494       ,p_line_definition_owner_code => l_line_definition_owner_code
90495       ,p_line_definition_code       => l_line_definition_code
90496       ,p_accounting_line_code       => l_component_code
90497       ,p_accounting_line_type_code  => l_component_type_code
90498       ,p_accounting_line_appl_id    => l_component_appl_id
90499       ,p_amb_context_code           => l_amb_context_code
90500       ,p_entity_code                => l_entity_code
90501       ,p_event_class_code           => l_event_class_code);
90502    --
90503    -- set accounting class
90504    --
90505    xla_ae_lines_pkg.SetAcctClass(
90506            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
90507          , p_ae_header_id           => l_ae_header_id
90508          );
90509 
90510    --
90511    -- set rounding class
90512    --
90513    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
90514                       'MATERIAL_OVERHEAD_ABSORPTION';
90515 
90516    --
90517    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
90518    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
90519    --
90520    -- bulk performance
90521    --
90522    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
90523 
90524    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
90525       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
90526 
90527    -- 4955764
90528    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90529       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
90530 
90531    -- 4458381 Public Sector Enh
90532    
90533    --
90534    -- set accounting attributes for the line type
90535    --
90536    l_entered_amt_idx := 3;
90537    l_accted_amt_idx  := 8;
90538    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
90539    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
90540    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
90541    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
90542    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
90543    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
90544    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
90545    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
90546    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
90547    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
90548    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
90549    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
90550    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
90551    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
90552    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
90553    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
90554    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
90555 
90556    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
90557    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
90558 
90559    ---------------------------------------------------------------------------------------------------------------
90560    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
90561    ---------------------------------------------------------------------------------------------------------------
90562    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
90563 
90564    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90565    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90566 
90567    IF xla_accounting_cache_pkg.GetValueChar
90568          (p_source_code         => 'LEDGER_CATEGORY_CODE'
90569          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
90570    AND l_bflow_method_code = 'PRIOR_ENTRY'
90571 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
90572    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
90573          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
90574        )
90575    THEN
90576          xla_ae_lines_pkg.BflowUpgEntry
90577            (p_business_method_code    => l_bflow_method_code
90578            ,p_business_class_code     => l_bflow_class_code
90579            ,p_balance_type            => l_balance_type_code);
90580    ELSE
90581       NULL;
90582 -- No business flow processing for business flow method of NONE.
90583    END IF;
90584 
90585    --
90586    -- call analytical criteria
90587    --
90588    
90589    --
90590    -- call description
90591    --
90592    -- No description or it is inherited.
90593    --
90594    -- call ADRs
90595    -- Bug 4922099
90596    --
90597    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90598         (NVL(l_actual_upg_option, 'N') = 'O') OR
90599         (NVL(l_enc_upg_option, 'N') = 'O')
90600       )
90601    THEN
90602    NULL;
90603    --
90604    --
90605    
90606   l_ccid := AcctDerRule_4(
90607            p_application_id           => p_application_id
90608          , p_ae_header_id             => l_ae_header_id 
90609 , p_source_4 => p_source_4
90610          , x_transaction_coa_id       => l_adr_transaction_coa_id
90611          , x_accounting_coa_id        => l_adr_accounting_coa_id
90612          , x_value_type_code          => l_adr_value_type_code
90613          , p_side                     => 'NA'
90614    );
90615 
90616    xla_ae_lines_pkg.set_ccid(
90617     p_code_combination_id          => l_ccid
90618   , p_value_type_code              => l_adr_value_type_code
90619   , p_transaction_coa_id           => l_adr_transaction_coa_id
90620   , p_accounting_coa_id            => l_adr_accounting_coa_id
90621   , p_adr_code                     => 'CST_DEFAULT'
90622   , p_adr_type_code                => 'S'
90623   , p_component_type               => l_component_type
90624   , p_component_code               => l_component_code
90625   , p_component_type_code          => l_component_type_code
90626   , p_component_appl_id            => l_component_appl_id
90627   , p_amb_context_code             => l_amb_context_code
90628   , p_side                         => 'NA'
90629   );
90630 
90631 
90632    --
90633    --
90634    END IF;
90635    --
90636    -- Bug 4922099
90637    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
90638           (NVL(l_enc_upg_option, 'N') = 'O')
90639         ) AND
90640         (l_bflow_method_code = 'PRIOR_ENTRY')
90641       )
90642    THEN
90643       IF
90644       --
90645       1 = 2
90646       --
90647       THEN
90648       xla_accounting_err_pkg.build_message
90649                                     (p_appli_s_name            => 'XLA'
90650                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90651                                     ,p_token_1                 => 'LINE_NUMBER'
90652                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
90653                                     ,p_token_2                 => 'LINE_TYPE_NAME'
90654                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
90655                                                                              l_component_type
90656                                                                             ,l_component_code
90657                                                                             ,l_component_type_code
90658                                                                             ,l_component_appl_id
90659                                                                             ,l_amb_context_code
90660                                                                             ,l_entity_code
90661                                                                             ,l_event_class_code
90662                                                                            )
90663                                     ,p_token_3                 => 'OWNER'
90664                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
90665                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
90666                                                                           ,p_lookup_code    => l_component_type_code
90667                                                                          )
90668                                     ,p_token_4                 => 'PRODUCT_NAME'
90669                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
90670                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
90671                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
90672                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
90673                                     ,p_ae_header_id            =>  NULL
90674                                        );
90675 
90676         IF (C_LEVEL_ERROR>= g_log_level) THEN
90677                  trace
90678                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90679                       ,p_level    => C_LEVEL_ERROR
90680                       ,p_module   => l_log_module);
90681         END IF;
90682       END IF;
90683    END IF;
90684    --
90685    --
90686    ------------------------------------------------------------------------------------------------
90687    -- 4219869 Business Flow
90688    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
90689    -- Prior Entry.  Currently, the following code is always generated.
90690    ------------------------------------------------------------------------------------------------
90691    XLA_AE_LINES_PKG.ValidateCurrentLine;
90692 
90693    ------------------------------------------------------------------------------------
90694    -- 4219869 Business Flow
90695    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
90696    ------------------------------------------------------------------------------------
90697    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90698 
90699    ----------------------------------------------------------------------------------
90700    -- 4219869 Business Flow
90701    -- Update journal entry status -- Need to generate this within IF <condition>
90702    ----------------------------------------------------------------------------------
90703    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90704          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
90705          ,p_balance_type_code => l_balance_type_code
90706          );
90707 
90708    -------------------------------------------------------------------------------------------
90709    -- 4262811 - Generate the Accrual Reversal lines
90710    -------------------------------------------------------------------------------------------
90711    BEGIN
90712       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
90713                               (g_array_event(p_event_id).array_value_num('header_index'));
90714       IF l_acc_rev_flag IS NULL THEN
90715          l_acc_rev_flag := 'N';
90716       END IF;
90717    EXCEPTION
90718       WHEN OTHERS THEN
90719          l_acc_rev_flag := 'N';
90720    END;
90721    --
90722    IF (l_acc_rev_flag = 'Y') THEN
90723 
90724        -- 4645092  ------------------------------------------------------------------------------
90725        -- To allow MPA report to determine if it should generate report process
90726        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
90727        ------------------------------------------------------------------------------------------
90728 
90729        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
90730        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
90731    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
90732    -- call ADRs
90733    -- Bug 4922099
90734    --
90735    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90736         (NVL(l_actual_upg_option, 'N') = 'O') OR
90737         (NVL(l_enc_upg_option, 'N') = 'O')
90738       )
90739    THEN
90740    NULL;
90741    --
90742    --
90743    
90744   l_ccid := AcctDerRule_4(
90745            p_application_id           => p_application_id
90746          , p_ae_header_id             => l_ae_header_id 
90747 , p_source_4 => p_source_4
90748          , x_transaction_coa_id       => l_adr_transaction_coa_id
90749          , x_accounting_coa_id        => l_adr_accounting_coa_id
90750          , x_value_type_code          => l_adr_value_type_code
90751          , p_side                     => 'NA'
90752    );
90753 
90754    xla_ae_lines_pkg.set_ccid(
90755     p_code_combination_id          => l_ccid
90756   , p_value_type_code              => l_adr_value_type_code
90757   , p_transaction_coa_id           => l_adr_transaction_coa_id
90758   , p_accounting_coa_id            => l_adr_accounting_coa_id
90759   , p_adr_code                     => 'CST_DEFAULT'
90760   , p_adr_type_code                => 'S'
90761   , p_component_type               => l_component_type
90762   , p_component_code               => l_component_code
90763   , p_component_type_code          => l_component_type_code
90764   , p_component_appl_id            => l_component_appl_id
90765   , p_amb_context_code             => l_amb_context_code
90766   , p_side                         => 'NA'
90767   );
90768 
90769 
90770    --
90771    --
90772    END IF;
90773 
90774        --
90775        -- Update the line information that should be overwritten
90776        --
90777        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
90778                                          p_header_num   => 1);
90779        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
90780 
90781        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
90782 
90783        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
90784           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
90785        END IF;
90786 
90787       --
90788       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
90789       --
90790       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
90791           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
90792       ELSE
90793           ---------------------------------------------------------------------------------------------------
90794           -- 4262811a Switch Sign
90795           ---------------------------------------------------------------------------------------------------
90796           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
90797           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90798                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90799           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90800                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90801           -- 5132302
90802           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
90803                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90804 
90805       END IF;
90806 
90807       -- 4955764
90808       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90809       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
90810 
90811 
90812       XLA_AE_LINES_PKG.ValidateCurrentLine;
90813       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90814 
90815       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90816                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
90817                ,p_balance_type_code => l_balance_type_code);
90818 
90819    END IF;
90820 
90821    -----------------------------------------------------------------------------------------
90822    -- 4262811 Multiperiod Accounting
90823    -----------------------------------------------------------------------------------------
90824      -- No MPA option is assigned.
90825 
90826 
90827 END IF;
90828 END IF;
90829 --
90830 
90831 --
90832 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90833    trace
90834       (p_msg      => 'END of AcctLineType_165'
90835       ,p_level    => C_LEVEL_PROCEDURE
90836       ,p_module   => l_log_module);
90837 END IF;
90838 --
90839 EXCEPTION
90840   WHEN xla_exceptions_pkg.application_exception THEN
90841       RAISE;
90842   WHEN OTHERS THEN
90843        xla_exceptions_pkg.raise_message
90844            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_165');
90845 END AcctLineType_165;
90846 --
90847 
90848 ---------------------------------------
90849 --
90850 -- PRIVATE FUNCTION
90851 --         AcctLineType_166
90852 --
90853 ---------------------------------------
90854 PROCEDURE AcctLineType_166 (
90855   p_application_id        IN NUMBER
90856  ,p_event_id              IN NUMBER
90857  ,p_calculate_acctd_flag  IN VARCHAR2
90858  ,p_calculate_g_l_flag    IN VARCHAR2
90859  ,p_actual_flag           IN OUT VARCHAR2
90860  ,p_balance_type_code     OUT VARCHAR2
90861  ,p_gain_or_loss_ref      OUT VARCHAR2
90862  
90863 --Cost Management Default Account
90864  , p_source_4            IN NUMBER
90865 --Applied to Application ID
90866  , p_source_6            IN NUMBER
90867 --Applied to Distribution Link Type
90868  , p_source_7            IN VARCHAR2
90869 --Applied to Entity Code
90870  , p_source_8            IN VARCHAR2
90871 --Applied To Purchase Document Identifier
90872  , p_source_10            IN NUMBER
90873 --DISTRIBUTION_IDENTIFIER
90874  , p_source_11            IN NUMBER
90875 --Distribution Type
90876  , p_source_12            IN VARCHAR2
90877  , p_source_12_meaning    IN VARCHAR2
90878 --PO Budget Account
90879  , p_source_13            IN NUMBER
90880 --Encumbrance Reversal Amount Entered
90881  , p_source_14            IN NUMBER
90882 --Entered Currency Code
90883  , p_source_15            IN VARCHAR2
90884 --Transaction Encumbrance Reversal Amount
90885  , p_source_16            IN NUMBER
90886 --Entered Amount
90887  , p_source_18            IN NUMBER
90888 --Currency Conversion Date
90889  , p_source_19            IN DATE
90890 --Currency Conversion Rate
90891  , p_source_20            IN NUMBER
90892 --Currency Conversion Type
90893  , p_source_21            IN VARCHAR2
90894 --Accounted Amount
90895  , p_source_22            IN NUMBER
90896 --Purchasing Encumbrance Type Identifier
90897  , p_source_23            IN NUMBER
90898 --Accounting Line Type
90899  , p_source_24            IN NUMBER
90900 --Costing Encumbrance Upgrade Option
90901  , p_source_27            IN VARCHAR2
90902 --TXN_PO_DISTRIBUTION_ID
90903  , p_source_28            IN NUMBER
90904 )
90905 IS
90906 
90907 l_component_type              VARCHAR2(80);
90908 l_component_code              VARCHAR2(30);
90909 l_component_type_code         VARCHAR2(1);
90910 l_component_appl_id           INTEGER;
90911 l_amb_context_code            VARCHAR2(30);
90912 l_entity_code                 VARCHAR2(30);
90913 l_event_class_code            VARCHAR2(30);
90914 l_ae_header_id                NUMBER;
90915 l_event_type_code             VARCHAR2(30);
90916 l_line_definition_code        VARCHAR2(30);
90917 l_line_definition_owner_code  VARCHAR2(1);
90918 --
90919 -- adr variables
90920 l_segment                     VARCHAR2(30);
90921 l_ccid                        NUMBER;
90922 l_adr_transaction_coa_id      NUMBER;
90923 l_adr_accounting_coa_id       NUMBER;
90924 l_adr_flexfield_segment_code  VARCHAR2(30);
90925 l_adr_flex_value_set_id       NUMBER;
90926 l_adr_value_type_code         VARCHAR2(30);
90927 l_adr_value_combination_id    NUMBER;
90928 l_adr_value_segment_code      VARCHAR2(30);
90929 
90930 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
90931 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
90932 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
90933 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
90934 
90935 -- 4262811 Variables ------------------------------------------------------------------------------------------
90936 l_entered_amt_idx             NUMBER;
90937 l_accted_amt_idx              NUMBER;
90938 l_acc_rev_flag                VARCHAR2(1);
90939 l_accrual_line_num            NUMBER;
90940 l_tmp_amt                     NUMBER;
90941 l_acc_rev_natural_side_code   VARCHAR2(1);
90942 
90943 l_num_entries                 NUMBER;
90944 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
90945 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
90946 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
90947 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
90948 l_recog_line_1                NUMBER;
90949 l_recog_line_2                NUMBER;
90950 
90951 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
90952 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
90953 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
90954 
90955 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
90956 
90957 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
90958 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
90959 
90960 ---------------------------------------------------------------------------------------------------------------
90961 
90962 
90963 --
90964 -- bulk performance
90965 --
90966 l_balance_type_code           VARCHAR2(1);
90967 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
90968 l_log_module                  VARCHAR2(240);
90969 
90970 --
90971 -- Upgrade strategy
90972 --
90973 l_actual_upg_option           VARCHAR2(1);
90974 l_enc_upg_option           VARCHAR2(1);
90975 
90976 --
90977 BEGIN
90978 --
90979 IF g_log_enabled THEN
90980       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_166';
90981 END IF;
90982 --
90983 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90984 
90985       trace
90986          (p_msg      => 'BEGIN of AcctLineType_166'
90987          ,p_level    => C_LEVEL_PROCEDURE
90988          ,p_module   => l_log_module);
90989 
90990 END IF;
90991 --
90992 l_component_type             := 'AMB_JLT';
90993 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
90994 l_component_type_code        := 'S';
90995 l_component_appl_id          :=  707;
90996 l_amb_context_code           := 'DEFAULT';
90997 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
90998 l_event_class_code           := 'PURCHASE_ORDER';
90999 l_event_type_code            := 'PURCHASE_ORDER_ALL';
91000 l_line_definition_owner_code := 'S';
91001 l_line_definition_code       := 'PURCHASE_ORDER';
91002 --
91003 l_balance_type_code          := 'A';
91004 l_segment                     := NULL;
91005 l_ccid                        := NULL;
91006 l_adr_transaction_coa_id      := NULL;
91007 l_adr_accounting_coa_id       := NULL;
91008 l_adr_flexfield_segment_code  := NULL;
91009 l_adr_flex_value_set_id       := NULL;
91010 l_adr_value_type_code         := NULL;
91011 l_adr_value_combination_id    := NULL;
91012 l_adr_value_segment_code      := NULL;
91013 
91014 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
91015 l_bflow_class_code           := '';    -- 4219869 Business Flow
91016 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
91017 l_budgetary_control_flag     := 'N';
91018 
91019 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
91020 l_bflow_applied_to_amt       := NULL; -- 5132302
91021 l_entered_amt_idx            := NULL;          -- 4262811
91022 l_accted_amt_idx             := NULL;          -- 4262811
91023 l_acc_rev_flag               := NULL;          -- 4262811
91024 l_accrual_line_num           := NULL;          -- 4262811
91025 l_tmp_amt                    := NULL;          -- 4262811
91026 --
91027  
91028 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
91029     l_balance_type_code <> 'B' THEN
91030 IF NVL(p_source_24,9E125) =  3
91031  THEN 
91032 
91033    --
91034    XLA_AE_LINES_PKG.SetNewLine;
91035 
91036    p_balance_type_code          := l_balance_type_code;
91037    -- set the flag so later we will know whether the gain loss line needs to be created
91038    
91039    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
91040      p_actual_flag :='A';
91041    END IF;
91042 
91043    --
91044    -- bulk performance
91045    --
91046    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
91047                                       p_header_num   => 0); -- 4262811
91048    --
91049    -- set accounting line options
91050    --
91051    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
91052            p_natural_side_code          => 'D'
91053          , p_gain_or_loss_flag          => 'N'
91054          , p_gl_transfer_mode_code      => 'S'
91055          , p_acct_entry_type_code       => 'A'
91056          , p_switch_side_flag           => 'Y'
91057          , p_merge_duplicate_code       => 'N'
91058          );
91059    --
91060    l_acc_rev_natural_side_code := 'C';  -- 4262811
91061    -- 
91062    --
91063    -- set accounting line type info
91064    --
91065    xla_ae_lines_pkg.SetAcctLineType
91066       (p_component_type             => l_component_type
91067       ,p_event_type_code            => l_event_type_code
91068       ,p_line_definition_owner_code => l_line_definition_owner_code
91069       ,p_line_definition_code       => l_line_definition_code
91070       ,p_accounting_line_code       => l_component_code
91071       ,p_accounting_line_type_code  => l_component_type_code
91072       ,p_accounting_line_appl_id    => l_component_appl_id
91073       ,p_amb_context_code           => l_amb_context_code
91074       ,p_entity_code                => l_entity_code
91075       ,p_event_class_code           => l_event_class_code);
91076    --
91077    -- set accounting class
91078    --
91079    xla_ae_lines_pkg.SetAcctClass(
91080            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
91081          , p_ae_header_id           => l_ae_header_id
91082          );
91083 
91084    --
91085    -- set rounding class
91086    --
91087    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
91088                       'MATERIAL_OVERHEAD_ABSORPTION';
91089 
91090    --
91091    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
91092    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
91093    --
91094    -- bulk performance
91095    --
91096    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
91097 
91098    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
91099       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
91100 
91101    -- 4955764
91102    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91103       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
91104 
91105    -- 4458381 Public Sector Enh
91106    
91107    --
91108    -- set accounting attributes for the line type
91109    --
91110    l_entered_amt_idx := 17;
91111    l_accted_amt_idx  := 22;
91112    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
91113    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
91114    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
91115    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
91116    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
91117    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
91118    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
91119    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
91120    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
91121    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
91122    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
91123    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
91124    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
91125    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
91126    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
91127    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
91128    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
91129    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
91130    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
91131    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
91132    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
91133    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
91134    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
91135    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
91136    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
91137    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
91138    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
91139    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
91140    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
91141    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
91142    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
91143    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
91144    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
91145    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
91146    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
91147    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
91148    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
91149    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
91150    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
91151    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
91152    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
91153    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
91154    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
91155    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
91156    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
91157    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
91158    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
91159    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
91160    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
91161 
91162    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
91163    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
91164 
91165    ---------------------------------------------------------------------------------------------------------------
91166    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
91167    ---------------------------------------------------------------------------------------------------------------
91168    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
91169 
91170    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91171    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91172 
91173    IF xla_accounting_cache_pkg.GetValueChar
91174          (p_source_code         => 'LEDGER_CATEGORY_CODE'
91175          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
91176    AND l_bflow_method_code = 'PRIOR_ENTRY'
91177 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
91178    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
91179          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
91180        )
91181    THEN
91182          xla_ae_lines_pkg.BflowUpgEntry
91183            (p_business_method_code    => l_bflow_method_code
91184            ,p_business_class_code     => l_bflow_class_code
91185            ,p_balance_type            => l_balance_type_code);
91186    ELSE
91187       NULL;
91188 -- No business flow processing for business flow method of NONE.
91189    END IF;
91190 
91191    --
91192    -- call analytical criteria
91193    --
91194    
91195    --
91196    -- call description
91197    --
91198    -- No description or it is inherited.
91199    --
91200    -- call ADRs
91201    -- Bug 4922099
91202    --
91203    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91204         (NVL(l_actual_upg_option, 'N') = 'O') OR
91205         (NVL(l_enc_upg_option, 'N') = 'O')
91206       )
91207    THEN
91208    NULL;
91209    --
91210    --
91211    
91212   l_ccid := AcctDerRule_4(
91213            p_application_id           => p_application_id
91214          , p_ae_header_id             => l_ae_header_id 
91215 , p_source_4 => p_source_4
91216          , x_transaction_coa_id       => l_adr_transaction_coa_id
91217          , x_accounting_coa_id        => l_adr_accounting_coa_id
91218          , x_value_type_code          => l_adr_value_type_code
91219          , p_side                     => 'NA'
91220    );
91221 
91222    xla_ae_lines_pkg.set_ccid(
91223     p_code_combination_id          => l_ccid
91224   , p_value_type_code              => l_adr_value_type_code
91225   , p_transaction_coa_id           => l_adr_transaction_coa_id
91226   , p_accounting_coa_id            => l_adr_accounting_coa_id
91227   , p_adr_code                     => 'CST_DEFAULT'
91228   , p_adr_type_code                => 'S'
91229   , p_component_type               => l_component_type
91230   , p_component_code               => l_component_code
91231   , p_component_type_code          => l_component_type_code
91232   , p_component_appl_id            => l_component_appl_id
91233   , p_amb_context_code             => l_amb_context_code
91234   , p_side                         => 'NA'
91235   );
91236 
91237 
91238    --
91239    --
91240    END IF;
91241    --
91242    -- Bug 4922099
91243    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
91244           (NVL(l_enc_upg_option, 'N') = 'O')
91245         ) AND
91246         (l_bflow_method_code = 'PRIOR_ENTRY')
91247       )
91248    THEN
91249       IF
91250       --
91251       1 = 2
91252       --
91253       THEN
91254       xla_accounting_err_pkg.build_message
91255                                     (p_appli_s_name            => 'XLA'
91256                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91257                                     ,p_token_1                 => 'LINE_NUMBER'
91258                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
91259                                     ,p_token_2                 => 'LINE_TYPE_NAME'
91260                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
91261                                                                              l_component_type
91262                                                                             ,l_component_code
91263                                                                             ,l_component_type_code
91264                                                                             ,l_component_appl_id
91265                                                                             ,l_amb_context_code
91266                                                                             ,l_entity_code
91267                                                                             ,l_event_class_code
91268                                                                            )
91269                                     ,p_token_3                 => 'OWNER'
91270                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
91271                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
91272                                                                           ,p_lookup_code    => l_component_type_code
91273                                                                          )
91274                                     ,p_token_4                 => 'PRODUCT_NAME'
91275                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
91276                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
91277                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
91278                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
91279                                     ,p_ae_header_id            =>  NULL
91280                                        );
91281 
91282         IF (C_LEVEL_ERROR>= g_log_level) THEN
91283                  trace
91284                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91285                       ,p_level    => C_LEVEL_ERROR
91286                       ,p_module   => l_log_module);
91287         END IF;
91288       END IF;
91289    END IF;
91290    --
91291    --
91292    ------------------------------------------------------------------------------------------------
91293    -- 4219869 Business Flow
91294    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
91295    -- Prior Entry.  Currently, the following code is always generated.
91296    ------------------------------------------------------------------------------------------------
91297    XLA_AE_LINES_PKG.ValidateCurrentLine;
91298 
91299    ------------------------------------------------------------------------------------
91300    -- 4219869 Business Flow
91301    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
91302    ------------------------------------------------------------------------------------
91303    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91304 
91305    ----------------------------------------------------------------------------------
91306    -- 4219869 Business Flow
91307    -- Update journal entry status -- Need to generate this within IF <condition>
91308    ----------------------------------------------------------------------------------
91309    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91310          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
91311          ,p_balance_type_code => l_balance_type_code
91312          );
91313 
91314    -------------------------------------------------------------------------------------------
91315    -- 4262811 - Generate the Accrual Reversal lines
91316    -------------------------------------------------------------------------------------------
91317    BEGIN
91318       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
91319                               (g_array_event(p_event_id).array_value_num('header_index'));
91320       IF l_acc_rev_flag IS NULL THEN
91321          l_acc_rev_flag := 'N';
91322       END IF;
91323    EXCEPTION
91324       WHEN OTHERS THEN
91325          l_acc_rev_flag := 'N';
91326    END;
91327    --
91328    IF (l_acc_rev_flag = 'Y') THEN
91329 
91330        -- 4645092  ------------------------------------------------------------------------------
91331        -- To allow MPA report to determine if it should generate report process
91332        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
91333        ------------------------------------------------------------------------------------------
91334 
91335        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
91336        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
91337    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
91338    -- call ADRs
91339    -- Bug 4922099
91340    --
91341    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91342         (NVL(l_actual_upg_option, 'N') = 'O') OR
91343         (NVL(l_enc_upg_option, 'N') = 'O')
91344       )
91345    THEN
91346    NULL;
91347    --
91348    --
91349    
91350   l_ccid := AcctDerRule_4(
91351            p_application_id           => p_application_id
91352          , p_ae_header_id             => l_ae_header_id 
91353 , p_source_4 => p_source_4
91354          , x_transaction_coa_id       => l_adr_transaction_coa_id
91355          , x_accounting_coa_id        => l_adr_accounting_coa_id
91356          , x_value_type_code          => l_adr_value_type_code
91357          , p_side                     => 'NA'
91358    );
91359 
91360    xla_ae_lines_pkg.set_ccid(
91361     p_code_combination_id          => l_ccid
91362   , p_value_type_code              => l_adr_value_type_code
91363   , p_transaction_coa_id           => l_adr_transaction_coa_id
91364   , p_accounting_coa_id            => l_adr_accounting_coa_id
91365   , p_adr_code                     => 'CST_DEFAULT'
91366   , p_adr_type_code                => 'S'
91367   , p_component_type               => l_component_type
91368   , p_component_code               => l_component_code
91369   , p_component_type_code          => l_component_type_code
91370   , p_component_appl_id            => l_component_appl_id
91371   , p_amb_context_code             => l_amb_context_code
91372   , p_side                         => 'NA'
91373   );
91374 
91375 
91376    --
91377    --
91378    END IF;
91379 
91380        --
91381        -- Update the line information that should be overwritten
91382        --
91383        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
91384                                          p_header_num   => 1);
91385        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
91386 
91387        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
91388 
91389        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
91390           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
91391        END IF;
91392 
91393       --
91394       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
91395       --
91396       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
91397           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
91398       ELSE
91399           ---------------------------------------------------------------------------------------------------
91400           -- 4262811a Switch Sign
91401           ---------------------------------------------------------------------------------------------------
91402           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
91403           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91404                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91405           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91406                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91407           -- 5132302
91408           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
91409                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91410 
91411       END IF;
91412 
91413       -- 4955764
91414       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91415       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
91416 
91417 
91418       XLA_AE_LINES_PKG.ValidateCurrentLine;
91419       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91420 
91421       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91422                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
91423                ,p_balance_type_code => l_balance_type_code);
91424 
91425    END IF;
91426 
91427    -----------------------------------------------------------------------------------------
91428    -- 4262811 Multiperiod Accounting
91429    -----------------------------------------------------------------------------------------
91430      -- No MPA option is assigned.
91431 
91432 
91433 END IF;
91434 END IF;
91435 --
91436 
91437 --
91438 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91439    trace
91440       (p_msg      => 'END of AcctLineType_166'
91441       ,p_level    => C_LEVEL_PROCEDURE
91442       ,p_module   => l_log_module);
91443 END IF;
91444 --
91445 EXCEPTION
91446   WHEN xla_exceptions_pkg.application_exception THEN
91447       RAISE;
91448   WHEN OTHERS THEN
91449        xla_exceptions_pkg.raise_message
91450            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_166');
91451 END AcctLineType_166;
91452 --
91453 
91454 ---------------------------------------
91455 --
91456 -- PRIVATE FUNCTION
91457 --         AcctLineType_167
91458 --
91459 ---------------------------------------
91460 PROCEDURE AcctLineType_167 (
91461   p_application_id        IN NUMBER
91462  ,p_event_id              IN NUMBER
91463  ,p_calculate_acctd_flag  IN VARCHAR2
91464  ,p_calculate_g_l_flag    IN VARCHAR2
91465  ,p_actual_flag           IN OUT VARCHAR2
91466  ,p_balance_type_code     OUT VARCHAR2
91467  ,p_gain_or_loss_ref      OUT VARCHAR2
91468  
91469 --Cost Management Default Account
91470  , p_source_4            IN NUMBER
91471 --DISTRIBUTION_IDENTIFIER
91472  , p_source_11            IN NUMBER
91473 --Distribution Type
91474  , p_source_12            IN VARCHAR2
91475  , p_source_12_meaning    IN VARCHAR2
91476 --Entered Currency Code
91477  , p_source_15            IN VARCHAR2
91478 --Entered Amount
91479  , p_source_18            IN NUMBER
91480 --Currency Conversion Date
91481  , p_source_19            IN DATE
91482 --Currency Conversion Rate
91483  , p_source_20            IN NUMBER
91484 --Currency Conversion Type
91485  , p_source_21            IN VARCHAR2
91486 --Accounted Amount
91487  , p_source_22            IN NUMBER
91488 --Accounting Line Type
91489  , p_source_24            IN NUMBER
91490 )
91491 IS
91492 
91493 l_component_type              VARCHAR2(80);
91494 l_component_code              VARCHAR2(30);
91495 l_component_type_code         VARCHAR2(1);
91496 l_component_appl_id           INTEGER;
91497 l_amb_context_code            VARCHAR2(30);
91498 l_entity_code                 VARCHAR2(30);
91499 l_event_class_code            VARCHAR2(30);
91500 l_ae_header_id                NUMBER;
91501 l_event_type_code             VARCHAR2(30);
91502 l_line_definition_code        VARCHAR2(30);
91503 l_line_definition_owner_code  VARCHAR2(1);
91504 --
91505 -- adr variables
91506 l_segment                     VARCHAR2(30);
91507 l_ccid                        NUMBER;
91508 l_adr_transaction_coa_id      NUMBER;
91509 l_adr_accounting_coa_id       NUMBER;
91510 l_adr_flexfield_segment_code  VARCHAR2(30);
91511 l_adr_flex_value_set_id       NUMBER;
91512 l_adr_value_type_code         VARCHAR2(30);
91513 l_adr_value_combination_id    NUMBER;
91514 l_adr_value_segment_code      VARCHAR2(30);
91515 
91516 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
91517 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
91518 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
91519 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
91520 
91521 -- 4262811 Variables ------------------------------------------------------------------------------------------
91522 l_entered_amt_idx             NUMBER;
91523 l_accted_amt_idx              NUMBER;
91524 l_acc_rev_flag                VARCHAR2(1);
91525 l_accrual_line_num            NUMBER;
91526 l_tmp_amt                     NUMBER;
91527 l_acc_rev_natural_side_code   VARCHAR2(1);
91528 
91529 l_num_entries                 NUMBER;
91530 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
91531 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
91532 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
91533 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
91534 l_recog_line_1                NUMBER;
91535 l_recog_line_2                NUMBER;
91536 
91537 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
91538 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
91539 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
91540 
91541 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
91542 
91543 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
91544 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
91545 
91546 ---------------------------------------------------------------------------------------------------------------
91547 
91548 
91549 --
91550 -- bulk performance
91551 --
91552 l_balance_type_code           VARCHAR2(1);
91553 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
91554 l_log_module                  VARCHAR2(240);
91555 
91556 --
91557 -- Upgrade strategy
91558 --
91559 l_actual_upg_option           VARCHAR2(1);
91560 l_enc_upg_option           VARCHAR2(1);
91561 
91562 --
91563 BEGIN
91564 --
91565 IF g_log_enabled THEN
91566       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_167';
91567 END IF;
91568 --
91569 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91570 
91571       trace
91572          (p_msg      => 'BEGIN of AcctLineType_167'
91573          ,p_level    => C_LEVEL_PROCEDURE
91574          ,p_module   => l_log_module);
91575 
91576 END IF;
91577 --
91578 l_component_type             := 'AMB_JLT';
91579 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
91580 l_component_type_code        := 'S';
91581 l_component_appl_id          :=  707;
91582 l_amb_context_code           := 'DEFAULT';
91583 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
91584 l_event_class_code           := 'USER_DEFINE';
91585 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
91586 l_line_definition_owner_code := 'S';
91587 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
91588 --
91589 l_balance_type_code          := 'A';
91590 l_segment                     := NULL;
91591 l_ccid                        := NULL;
91592 l_adr_transaction_coa_id      := NULL;
91593 l_adr_accounting_coa_id       := NULL;
91594 l_adr_flexfield_segment_code  := NULL;
91595 l_adr_flex_value_set_id       := NULL;
91596 l_adr_value_type_code         := NULL;
91597 l_adr_value_combination_id    := NULL;
91598 l_adr_value_segment_code      := NULL;
91599 
91600 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
91601 l_bflow_class_code           := '';    -- 4219869 Business Flow
91602 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
91603 l_budgetary_control_flag     := 'N';
91604 
91605 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
91606 l_bflow_applied_to_amt       := NULL; -- 5132302
91607 l_entered_amt_idx            := NULL;          -- 4262811
91608 l_accted_amt_idx             := NULL;          -- 4262811
91609 l_acc_rev_flag               := NULL;          -- 4262811
91610 l_accrual_line_num           := NULL;          -- 4262811
91611 l_tmp_amt                    := NULL;          -- 4262811
91612 --
91613  
91614 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
91615     l_balance_type_code <> 'B' THEN
91616 IF NVL(p_source_24,9E125) =  3
91617  THEN 
91618 
91619    --
91620    XLA_AE_LINES_PKG.SetNewLine;
91621 
91622    p_balance_type_code          := l_balance_type_code;
91623    -- set the flag so later we will know whether the gain loss line needs to be created
91624    
91625    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
91626      p_actual_flag :='A';
91627    END IF;
91628 
91629    --
91630    -- bulk performance
91631    --
91632    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
91633                                       p_header_num   => 0); -- 4262811
91634    --
91635    -- set accounting line options
91636    --
91637    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
91638            p_natural_side_code          => 'D'
91639          , p_gain_or_loss_flag          => 'N'
91640          , p_gl_transfer_mode_code      => 'S'
91641          , p_acct_entry_type_code       => 'A'
91642          , p_switch_side_flag           => 'Y'
91643          , p_merge_duplicate_code       => 'N'
91644          );
91645    --
91646    l_acc_rev_natural_side_code := 'C';  -- 4262811
91647    -- 
91648    --
91649    -- set accounting line type info
91650    --
91651    xla_ae_lines_pkg.SetAcctLineType
91652       (p_component_type             => l_component_type
91653       ,p_event_type_code            => l_event_type_code
91654       ,p_line_definition_owner_code => l_line_definition_owner_code
91655       ,p_line_definition_code       => l_line_definition_code
91656       ,p_accounting_line_code       => l_component_code
91657       ,p_accounting_line_type_code  => l_component_type_code
91658       ,p_accounting_line_appl_id    => l_component_appl_id
91659       ,p_amb_context_code           => l_amb_context_code
91660       ,p_entity_code                => l_entity_code
91661       ,p_event_class_code           => l_event_class_code);
91662    --
91663    -- set accounting class
91664    --
91665    xla_ae_lines_pkg.SetAcctClass(
91666            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
91667          , p_ae_header_id           => l_ae_header_id
91668          );
91669 
91670    --
91671    -- set rounding class
91672    --
91673    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
91674                       'MATERIAL_OVERHEAD_ABSORPTION';
91675 
91676    --
91677    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
91678    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
91679    --
91680    -- bulk performance
91681    --
91682    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
91683 
91684    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
91685       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
91686 
91687    -- 4955764
91688    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91689       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
91690 
91691    -- 4458381 Public Sector Enh
91692    
91693    --
91694    -- set accounting attributes for the line type
91695    --
91696    l_entered_amt_idx := 3;
91697    l_accted_amt_idx  := 8;
91698    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
91699    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
91700    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
91701    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
91702    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
91703    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
91704    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
91705    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
91706    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
91707    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
91708    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
91709    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
91710    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
91711    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
91712    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
91713    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
91714    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
91715 
91716    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
91717    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
91718 
91719    ---------------------------------------------------------------------------------------------------------------
91720    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
91721    ---------------------------------------------------------------------------------------------------------------
91722    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
91723 
91724    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91725    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91726 
91727    IF xla_accounting_cache_pkg.GetValueChar
91728          (p_source_code         => 'LEDGER_CATEGORY_CODE'
91729          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
91730    AND l_bflow_method_code = 'PRIOR_ENTRY'
91731 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
91732    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
91733          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
91734        )
91735    THEN
91736          xla_ae_lines_pkg.BflowUpgEntry
91737            (p_business_method_code    => l_bflow_method_code
91738            ,p_business_class_code     => l_bflow_class_code
91739            ,p_balance_type            => l_balance_type_code);
91740    ELSE
91741       NULL;
91742 -- No business flow processing for business flow method of NONE.
91743    END IF;
91744 
91745    --
91746    -- call analytical criteria
91747    --
91748    
91749    --
91750    -- call description
91751    --
91752    -- No description or it is inherited.
91753    --
91754    -- call ADRs
91755    -- Bug 4922099
91756    --
91757    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91758         (NVL(l_actual_upg_option, 'N') = 'O') OR
91759         (NVL(l_enc_upg_option, 'N') = 'O')
91760       )
91761    THEN
91762    NULL;
91763    --
91764    --
91765    
91766   l_ccid := AcctDerRule_4(
91767            p_application_id           => p_application_id
91768          , p_ae_header_id             => l_ae_header_id 
91769 , p_source_4 => p_source_4
91770          , x_transaction_coa_id       => l_adr_transaction_coa_id
91771          , x_accounting_coa_id        => l_adr_accounting_coa_id
91772          , x_value_type_code          => l_adr_value_type_code
91773          , p_side                     => 'NA'
91774    );
91775 
91776    xla_ae_lines_pkg.set_ccid(
91777     p_code_combination_id          => l_ccid
91778   , p_value_type_code              => l_adr_value_type_code
91779   , p_transaction_coa_id           => l_adr_transaction_coa_id
91780   , p_accounting_coa_id            => l_adr_accounting_coa_id
91781   , p_adr_code                     => 'CST_DEFAULT'
91782   , p_adr_type_code                => 'S'
91783   , p_component_type               => l_component_type
91784   , p_component_code               => l_component_code
91785   , p_component_type_code          => l_component_type_code
91786   , p_component_appl_id            => l_component_appl_id
91787   , p_amb_context_code             => l_amb_context_code
91788   , p_side                         => 'NA'
91789   );
91790 
91791 
91792    --
91793    --
91794    END IF;
91795    --
91796    -- Bug 4922099
91797    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
91798           (NVL(l_enc_upg_option, 'N') = 'O')
91799         ) AND
91800         (l_bflow_method_code = 'PRIOR_ENTRY')
91801       )
91802    THEN
91803       IF
91804       --
91805       1 = 2
91806       --
91807       THEN
91808       xla_accounting_err_pkg.build_message
91809                                     (p_appli_s_name            => 'XLA'
91810                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91811                                     ,p_token_1                 => 'LINE_NUMBER'
91812                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
91813                                     ,p_token_2                 => 'LINE_TYPE_NAME'
91814                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
91815                                                                              l_component_type
91816                                                                             ,l_component_code
91817                                                                             ,l_component_type_code
91818                                                                             ,l_component_appl_id
91819                                                                             ,l_amb_context_code
91820                                                                             ,l_entity_code
91821                                                                             ,l_event_class_code
91822                                                                            )
91823                                     ,p_token_3                 => 'OWNER'
91824                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
91825                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
91826                                                                           ,p_lookup_code    => l_component_type_code
91827                                                                          )
91828                                     ,p_token_4                 => 'PRODUCT_NAME'
91829                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
91830                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
91831                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
91832                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
91833                                     ,p_ae_header_id            =>  NULL
91834                                        );
91835 
91836         IF (C_LEVEL_ERROR>= g_log_level) THEN
91837                  trace
91838                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91839                       ,p_level    => C_LEVEL_ERROR
91840                       ,p_module   => l_log_module);
91841         END IF;
91842       END IF;
91843    END IF;
91844    --
91845    --
91846    ------------------------------------------------------------------------------------------------
91847    -- 4219869 Business Flow
91848    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
91849    -- Prior Entry.  Currently, the following code is always generated.
91850    ------------------------------------------------------------------------------------------------
91851    XLA_AE_LINES_PKG.ValidateCurrentLine;
91852 
91853    ------------------------------------------------------------------------------------
91854    -- 4219869 Business Flow
91855    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
91856    ------------------------------------------------------------------------------------
91857    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91858 
91859    ----------------------------------------------------------------------------------
91860    -- 4219869 Business Flow
91861    -- Update journal entry status -- Need to generate this within IF <condition>
91862    ----------------------------------------------------------------------------------
91863    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91864          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
91865          ,p_balance_type_code => l_balance_type_code
91866          );
91867 
91868    -------------------------------------------------------------------------------------------
91869    -- 4262811 - Generate the Accrual Reversal lines
91870    -------------------------------------------------------------------------------------------
91871    BEGIN
91872       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
91873                               (g_array_event(p_event_id).array_value_num('header_index'));
91874       IF l_acc_rev_flag IS NULL THEN
91875          l_acc_rev_flag := 'N';
91876       END IF;
91877    EXCEPTION
91878       WHEN OTHERS THEN
91879          l_acc_rev_flag := 'N';
91880    END;
91881    --
91882    IF (l_acc_rev_flag = 'Y') THEN
91883 
91884        -- 4645092  ------------------------------------------------------------------------------
91885        -- To allow MPA report to determine if it should generate report process
91886        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
91887        ------------------------------------------------------------------------------------------
91888 
91889        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
91890        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
91891    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
91892    -- call ADRs
91893    -- Bug 4922099
91894    --
91895    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91896         (NVL(l_actual_upg_option, 'N') = 'O') OR
91897         (NVL(l_enc_upg_option, 'N') = 'O')
91898       )
91899    THEN
91900    NULL;
91901    --
91902    --
91903    
91904   l_ccid := AcctDerRule_4(
91905            p_application_id           => p_application_id
91906          , p_ae_header_id             => l_ae_header_id 
91907 , p_source_4 => p_source_4
91908          , x_transaction_coa_id       => l_adr_transaction_coa_id
91909          , x_accounting_coa_id        => l_adr_accounting_coa_id
91910          , x_value_type_code          => l_adr_value_type_code
91911          , p_side                     => 'NA'
91912    );
91913 
91914    xla_ae_lines_pkg.set_ccid(
91915     p_code_combination_id          => l_ccid
91916   , p_value_type_code              => l_adr_value_type_code
91917   , p_transaction_coa_id           => l_adr_transaction_coa_id
91918   , p_accounting_coa_id            => l_adr_accounting_coa_id
91919   , p_adr_code                     => 'CST_DEFAULT'
91920   , p_adr_type_code                => 'S'
91921   , p_component_type               => l_component_type
91922   , p_component_code               => l_component_code
91923   , p_component_type_code          => l_component_type_code
91924   , p_component_appl_id            => l_component_appl_id
91925   , p_amb_context_code             => l_amb_context_code
91926   , p_side                         => 'NA'
91927   );
91928 
91929 
91930    --
91931    --
91932    END IF;
91933 
91934        --
91935        -- Update the line information that should be overwritten
91936        --
91937        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
91938                                          p_header_num   => 1);
91939        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
91940 
91941        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
91942 
91943        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
91944           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
91945        END IF;
91946 
91947       --
91948       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
91949       --
91950       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
91951           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
91952       ELSE
91953           ---------------------------------------------------------------------------------------------------
91954           -- 4262811a Switch Sign
91955           ---------------------------------------------------------------------------------------------------
91956           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
91957           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91958                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91959           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91960                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91961           -- 5132302
91962           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
91963                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91964 
91965       END IF;
91966 
91967       -- 4955764
91968       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91969       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
91970 
91971 
91972       XLA_AE_LINES_PKG.ValidateCurrentLine;
91973       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91974 
91975       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91976                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
91977                ,p_balance_type_code => l_balance_type_code);
91978 
91979    END IF;
91980 
91981    -----------------------------------------------------------------------------------------
91982    -- 4262811 Multiperiod Accounting
91983    -----------------------------------------------------------------------------------------
91984      -- No MPA option is assigned.
91985 
91986 
91987 END IF;
91988 END IF;
91989 --
91990 
91991 --
91992 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91993    trace
91994       (p_msg      => 'END of AcctLineType_167'
91995       ,p_level    => C_LEVEL_PROCEDURE
91996       ,p_module   => l_log_module);
91997 END IF;
91998 --
91999 EXCEPTION
92000   WHEN xla_exceptions_pkg.application_exception THEN
92001       RAISE;
92002   WHEN OTHERS THEN
92003        xla_exceptions_pkg.raise_message
92004            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_167');
92005 END AcctLineType_167;
92006 --
92007 
92008 ---------------------------------------
92009 --
92010 -- PRIVATE FUNCTION
92011 --         AcctLineType_168
92012 --
92013 ---------------------------------------
92014 PROCEDURE AcctLineType_168 (
92015   p_application_id        IN NUMBER
92016  ,p_event_id              IN NUMBER
92017  ,p_calculate_acctd_flag  IN VARCHAR2
92018  ,p_calculate_g_l_flag    IN VARCHAR2
92019  ,p_actual_flag           IN OUT VARCHAR2
92020  ,p_balance_type_code     OUT VARCHAR2
92021  ,p_gain_or_loss_ref      OUT VARCHAR2
92022  
92023 --Cost Management Default Account
92024  , p_source_4            IN NUMBER
92025 --DISTRIBUTION_IDENTIFIER
92026  , p_source_11            IN NUMBER
92027 --Distribution Type
92028  , p_source_12            IN VARCHAR2
92029  , p_source_12_meaning    IN VARCHAR2
92030 --Entered Currency Code
92031  , p_source_15            IN VARCHAR2
92032 --Entered Amount
92033  , p_source_18            IN NUMBER
92034 --Currency Conversion Date
92035  , p_source_19            IN DATE
92036 --Currency Conversion Rate
92037  , p_source_20            IN NUMBER
92038 --Currency Conversion Type
92039  , p_source_21            IN VARCHAR2
92040 --Accounted Amount
92041  , p_source_22            IN NUMBER
92042 --Accounting Line Type
92043  , p_source_24            IN NUMBER
92044 )
92045 IS
92046 
92047 l_component_type              VARCHAR2(80);
92048 l_component_code              VARCHAR2(30);
92049 l_component_type_code         VARCHAR2(1);
92050 l_component_appl_id           INTEGER;
92051 l_amb_context_code            VARCHAR2(30);
92052 l_entity_code                 VARCHAR2(30);
92053 l_event_class_code            VARCHAR2(30);
92054 l_ae_header_id                NUMBER;
92055 l_event_type_code             VARCHAR2(30);
92056 l_line_definition_code        VARCHAR2(30);
92057 l_line_definition_owner_code  VARCHAR2(1);
92058 --
92059 -- adr variables
92060 l_segment                     VARCHAR2(30);
92061 l_ccid                        NUMBER;
92062 l_adr_transaction_coa_id      NUMBER;
92063 l_adr_accounting_coa_id       NUMBER;
92064 l_adr_flexfield_segment_code  VARCHAR2(30);
92065 l_adr_flex_value_set_id       NUMBER;
92066 l_adr_value_type_code         VARCHAR2(30);
92067 l_adr_value_combination_id    NUMBER;
92068 l_adr_value_segment_code      VARCHAR2(30);
92069 
92070 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
92071 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
92072 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
92073 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
92074 
92075 -- 4262811 Variables ------------------------------------------------------------------------------------------
92076 l_entered_amt_idx             NUMBER;
92077 l_accted_amt_idx              NUMBER;
92078 l_acc_rev_flag                VARCHAR2(1);
92079 l_accrual_line_num            NUMBER;
92080 l_tmp_amt                     NUMBER;
92081 l_acc_rev_natural_side_code   VARCHAR2(1);
92082 
92083 l_num_entries                 NUMBER;
92084 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
92085 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
92086 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
92087 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
92088 l_recog_line_1                NUMBER;
92089 l_recog_line_2                NUMBER;
92090 
92091 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
92092 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
92093 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
92094 
92095 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
92096 
92097 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
92098 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
92099 
92100 ---------------------------------------------------------------------------------------------------------------
92101 
92102 
92103 --
92104 -- bulk performance
92105 --
92106 l_balance_type_code           VARCHAR2(1);
92107 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
92108 l_log_module                  VARCHAR2(240);
92109 
92110 --
92111 -- Upgrade strategy
92112 --
92113 l_actual_upg_option           VARCHAR2(1);
92114 l_enc_upg_option           VARCHAR2(1);
92115 
92116 --
92117 BEGIN
92118 --
92119 IF g_log_enabled THEN
92120       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_168';
92121 END IF;
92122 --
92123 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92124 
92125       trace
92126          (p_msg      => 'BEGIN of AcctLineType_168'
92127          ,p_level    => C_LEVEL_PROCEDURE
92128          ,p_module   => l_log_module);
92129 
92130 END IF;
92131 --
92132 l_component_type             := 'AMB_JLT';
92133 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
92134 l_component_type_code        := 'S';
92135 l_component_appl_id          :=  707;
92136 l_amb_context_code           := 'DEFAULT';
92137 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
92138 l_event_class_code           := 'USER_DEFINE';
92139 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
92140 l_line_definition_owner_code := 'S';
92141 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
92142 --
92143 l_balance_type_code          := 'A';
92144 l_segment                     := NULL;
92145 l_ccid                        := NULL;
92146 l_adr_transaction_coa_id      := NULL;
92147 l_adr_accounting_coa_id       := NULL;
92148 l_adr_flexfield_segment_code  := NULL;
92149 l_adr_flex_value_set_id       := NULL;
92150 l_adr_value_type_code         := NULL;
92151 l_adr_value_combination_id    := NULL;
92152 l_adr_value_segment_code      := NULL;
92153 
92154 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
92155 l_bflow_class_code           := '';    -- 4219869 Business Flow
92156 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
92157 l_budgetary_control_flag     := 'N';
92158 
92159 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
92160 l_bflow_applied_to_amt       := NULL; -- 5132302
92161 l_entered_amt_idx            := NULL;          -- 4262811
92162 l_accted_amt_idx             := NULL;          -- 4262811
92163 l_acc_rev_flag               := NULL;          -- 4262811
92164 l_accrual_line_num           := NULL;          -- 4262811
92165 l_tmp_amt                    := NULL;          -- 4262811
92166 --
92167  
92168 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
92169     l_balance_type_code <> 'B' THEN
92170 IF NVL(p_source_24,9E125) =  3
92171  THEN 
92172 
92173    --
92174    XLA_AE_LINES_PKG.SetNewLine;
92175 
92176    p_balance_type_code          := l_balance_type_code;
92177    -- set the flag so later we will know whether the gain loss line needs to be created
92178    
92179    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
92180      p_actual_flag :='A';
92181    END IF;
92182 
92183    --
92184    -- bulk performance
92185    --
92186    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
92187                                       p_header_num   => 0); -- 4262811
92188    --
92189    -- set accounting line options
92190    --
92191    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
92192            p_natural_side_code          => 'D'
92193          , p_gain_or_loss_flag          => 'N'
92194          , p_gl_transfer_mode_code      => 'S'
92195          , p_acct_entry_type_code       => 'A'
92196          , p_switch_side_flag           => 'Y'
92197          , p_merge_duplicate_code       => 'N'
92198          );
92199    --
92200    l_acc_rev_natural_side_code := 'C';  -- 4262811
92201    -- 
92202    --
92203    -- set accounting line type info
92204    --
92205    xla_ae_lines_pkg.SetAcctLineType
92206       (p_component_type             => l_component_type
92207       ,p_event_type_code            => l_event_type_code
92208       ,p_line_definition_owner_code => l_line_definition_owner_code
92209       ,p_line_definition_code       => l_line_definition_code
92210       ,p_accounting_line_code       => l_component_code
92211       ,p_accounting_line_type_code  => l_component_type_code
92212       ,p_accounting_line_appl_id    => l_component_appl_id
92213       ,p_amb_context_code           => l_amb_context_code
92214       ,p_entity_code                => l_entity_code
92215       ,p_event_class_code           => l_event_class_code);
92216    --
92217    -- set accounting class
92218    --
92219    xla_ae_lines_pkg.SetAcctClass(
92220            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
92221          , p_ae_header_id           => l_ae_header_id
92222          );
92223 
92224    --
92225    -- set rounding class
92226    --
92227    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
92228                       'MATERIAL_OVERHEAD_ABSORPTION';
92229 
92230    --
92231    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
92232    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
92233    --
92234    -- bulk performance
92235    --
92236    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
92237 
92238    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
92239       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
92240 
92241    -- 4955764
92242    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92243       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
92244 
92245    -- 4458381 Public Sector Enh
92246    
92247    --
92248    -- set accounting attributes for the line type
92249    --
92250    l_entered_amt_idx := 3;
92251    l_accted_amt_idx  := 8;
92252    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
92253    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
92254    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
92255    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
92256    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
92257    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
92258    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
92259    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
92260    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
92261    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
92262    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
92263    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
92264    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
92265    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
92266    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
92267    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
92268    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
92269 
92270    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
92271    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
92272 
92273    ---------------------------------------------------------------------------------------------------------------
92274    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
92275    ---------------------------------------------------------------------------------------------------------------
92276    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
92277 
92278    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92279    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92280 
92281    IF xla_accounting_cache_pkg.GetValueChar
92282          (p_source_code         => 'LEDGER_CATEGORY_CODE'
92283          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
92284    AND l_bflow_method_code = 'PRIOR_ENTRY'
92285 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
92286    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
92287          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
92288        )
92289    THEN
92290          xla_ae_lines_pkg.BflowUpgEntry
92291            (p_business_method_code    => l_bflow_method_code
92292            ,p_business_class_code     => l_bflow_class_code
92293            ,p_balance_type            => l_balance_type_code);
92294    ELSE
92295       NULL;
92296 -- No business flow processing for business flow method of NONE.
92297    END IF;
92298 
92299    --
92300    -- call analytical criteria
92301    --
92302    
92303    --
92304    -- call description
92305    --
92306    -- No description or it is inherited.
92307    --
92308    -- call ADRs
92309    -- Bug 4922099
92310    --
92311    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92312         (NVL(l_actual_upg_option, 'N') = 'O') OR
92313         (NVL(l_enc_upg_option, 'N') = 'O')
92314       )
92315    THEN
92316    NULL;
92317    --
92318    --
92319    
92320   l_ccid := AcctDerRule_4(
92321            p_application_id           => p_application_id
92322          , p_ae_header_id             => l_ae_header_id 
92323 , p_source_4 => p_source_4
92324          , x_transaction_coa_id       => l_adr_transaction_coa_id
92325          , x_accounting_coa_id        => l_adr_accounting_coa_id
92326          , x_value_type_code          => l_adr_value_type_code
92327          , p_side                     => 'NA'
92328    );
92329 
92330    xla_ae_lines_pkg.set_ccid(
92331     p_code_combination_id          => l_ccid
92332   , p_value_type_code              => l_adr_value_type_code
92333   , p_transaction_coa_id           => l_adr_transaction_coa_id
92334   , p_accounting_coa_id            => l_adr_accounting_coa_id
92335   , p_adr_code                     => 'CST_DEFAULT'
92336   , p_adr_type_code                => 'S'
92337   , p_component_type               => l_component_type
92338   , p_component_code               => l_component_code
92339   , p_component_type_code          => l_component_type_code
92340   , p_component_appl_id            => l_component_appl_id
92341   , p_amb_context_code             => l_amb_context_code
92342   , p_side                         => 'NA'
92343   );
92344 
92345 
92346    --
92347    --
92348    END IF;
92349    --
92350    -- Bug 4922099
92351    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
92352           (NVL(l_enc_upg_option, 'N') = 'O')
92353         ) AND
92354         (l_bflow_method_code = 'PRIOR_ENTRY')
92355       )
92356    THEN
92357       IF
92358       --
92359       1 = 2
92360       --
92361       THEN
92362       xla_accounting_err_pkg.build_message
92363                                     (p_appli_s_name            => 'XLA'
92364                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92365                                     ,p_token_1                 => 'LINE_NUMBER'
92366                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
92367                                     ,p_token_2                 => 'LINE_TYPE_NAME'
92368                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
92369                                                                              l_component_type
92370                                                                             ,l_component_code
92371                                                                             ,l_component_type_code
92372                                                                             ,l_component_appl_id
92373                                                                             ,l_amb_context_code
92374                                                                             ,l_entity_code
92375                                                                             ,l_event_class_code
92376                                                                            )
92377                                     ,p_token_3                 => 'OWNER'
92378                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
92379                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
92380                                                                           ,p_lookup_code    => l_component_type_code
92381                                                                          )
92382                                     ,p_token_4                 => 'PRODUCT_NAME'
92383                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
92384                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
92385                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
92386                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
92387                                     ,p_ae_header_id            =>  NULL
92388                                        );
92389 
92390         IF (C_LEVEL_ERROR>= g_log_level) THEN
92391                  trace
92392                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92393                       ,p_level    => C_LEVEL_ERROR
92394                       ,p_module   => l_log_module);
92395         END IF;
92396       END IF;
92397    END IF;
92398    --
92399    --
92400    ------------------------------------------------------------------------------------------------
92401    -- 4219869 Business Flow
92402    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
92403    -- Prior Entry.  Currently, the following code is always generated.
92404    ------------------------------------------------------------------------------------------------
92405    XLA_AE_LINES_PKG.ValidateCurrentLine;
92406 
92407    ------------------------------------------------------------------------------------
92408    -- 4219869 Business Flow
92409    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
92410    ------------------------------------------------------------------------------------
92411    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92412 
92413    ----------------------------------------------------------------------------------
92414    -- 4219869 Business Flow
92415    -- Update journal entry status -- Need to generate this within IF <condition>
92416    ----------------------------------------------------------------------------------
92417    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92418          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
92419          ,p_balance_type_code => l_balance_type_code
92420          );
92421 
92422    -------------------------------------------------------------------------------------------
92423    -- 4262811 - Generate the Accrual Reversal lines
92424    -------------------------------------------------------------------------------------------
92425    BEGIN
92426       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
92427                               (g_array_event(p_event_id).array_value_num('header_index'));
92428       IF l_acc_rev_flag IS NULL THEN
92429          l_acc_rev_flag := 'N';
92430       END IF;
92431    EXCEPTION
92432       WHEN OTHERS THEN
92433          l_acc_rev_flag := 'N';
92434    END;
92435    --
92436    IF (l_acc_rev_flag = 'Y') THEN
92437 
92438        -- 4645092  ------------------------------------------------------------------------------
92439        -- To allow MPA report to determine if it should generate report process
92440        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
92441        ------------------------------------------------------------------------------------------
92442 
92443        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
92444        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
92445    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
92446    -- call ADRs
92447    -- Bug 4922099
92448    --
92449    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92450         (NVL(l_actual_upg_option, 'N') = 'O') OR
92451         (NVL(l_enc_upg_option, 'N') = 'O')
92452       )
92453    THEN
92454    NULL;
92455    --
92456    --
92457    
92458   l_ccid := AcctDerRule_4(
92459            p_application_id           => p_application_id
92460          , p_ae_header_id             => l_ae_header_id 
92461 , p_source_4 => p_source_4
92462          , x_transaction_coa_id       => l_adr_transaction_coa_id
92463          , x_accounting_coa_id        => l_adr_accounting_coa_id
92464          , x_value_type_code          => l_adr_value_type_code
92465          , p_side                     => 'NA'
92466    );
92467 
92468    xla_ae_lines_pkg.set_ccid(
92469     p_code_combination_id          => l_ccid
92470   , p_value_type_code              => l_adr_value_type_code
92471   , p_transaction_coa_id           => l_adr_transaction_coa_id
92472   , p_accounting_coa_id            => l_adr_accounting_coa_id
92473   , p_adr_code                     => 'CST_DEFAULT'
92474   , p_adr_type_code                => 'S'
92475   , p_component_type               => l_component_type
92476   , p_component_code               => l_component_code
92477   , p_component_type_code          => l_component_type_code
92478   , p_component_appl_id            => l_component_appl_id
92479   , p_amb_context_code             => l_amb_context_code
92480   , p_side                         => 'NA'
92481   );
92482 
92483 
92484    --
92485    --
92486    END IF;
92487 
92488        --
92489        -- Update the line information that should be overwritten
92490        --
92491        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
92492                                          p_header_num   => 1);
92493        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
92494 
92495        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
92496 
92497        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
92498           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
92499        END IF;
92500 
92501       --
92502       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
92503       --
92504       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
92505           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
92506       ELSE
92507           ---------------------------------------------------------------------------------------------------
92508           -- 4262811a Switch Sign
92509           ---------------------------------------------------------------------------------------------------
92510           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
92511           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92512                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92513           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92514                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92515           -- 5132302
92516           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
92517                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92518 
92519       END IF;
92520 
92521       -- 4955764
92522       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92523       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
92524 
92525 
92526       XLA_AE_LINES_PKG.ValidateCurrentLine;
92527       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92528 
92529       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92530                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
92531                ,p_balance_type_code => l_balance_type_code);
92532 
92533    END IF;
92534 
92535    -----------------------------------------------------------------------------------------
92536    -- 4262811 Multiperiod Accounting
92537    -----------------------------------------------------------------------------------------
92538      -- No MPA option is assigned.
92539 
92540 
92541 END IF;
92542 END IF;
92543 --
92544 
92545 --
92546 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92547    trace
92548       (p_msg      => 'END of AcctLineType_168'
92549       ,p_level    => C_LEVEL_PROCEDURE
92550       ,p_module   => l_log_module);
92551 END IF;
92552 --
92553 EXCEPTION
92554   WHEN xla_exceptions_pkg.application_exception THEN
92555       RAISE;
92556   WHEN OTHERS THEN
92557        xla_exceptions_pkg.raise_message
92558            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_168');
92559 END AcctLineType_168;
92560 --
92561 
92562 ---------------------------------------
92563 --
92564 -- PRIVATE FUNCTION
92565 --         AcctLineType_169
92566 --
92567 ---------------------------------------
92568 PROCEDURE AcctLineType_169 (
92569   p_application_id        IN NUMBER
92570  ,p_event_id              IN NUMBER
92571  ,p_calculate_acctd_flag  IN VARCHAR2
92572  ,p_calculate_g_l_flag    IN VARCHAR2
92573  ,p_actual_flag           IN OUT VARCHAR2
92574  ,p_balance_type_code     OUT VARCHAR2
92575  ,p_gain_or_loss_ref      OUT VARCHAR2
92576  
92577 --Cost Management Default Account
92578  , p_source_4            IN NUMBER
92579 --DISTRIBUTION_IDENTIFIER
92580  , p_source_11            IN NUMBER
92581 --Distribution Type
92582  , p_source_12            IN VARCHAR2
92583  , p_source_12_meaning    IN VARCHAR2
92584 --Entered Currency Code
92585  , p_source_15            IN VARCHAR2
92586 --Entered Amount
92587  , p_source_18            IN NUMBER
92588 --Currency Conversion Date
92589  , p_source_19            IN DATE
92590 --Currency Conversion Rate
92591  , p_source_20            IN NUMBER
92592 --Currency Conversion Type
92593  , p_source_21            IN VARCHAR2
92594 --Accounted Amount
92595  , p_source_22            IN NUMBER
92596 --Accounting Line Type
92597  , p_source_24            IN NUMBER
92598 )
92599 IS
92600 
92601 l_component_type              VARCHAR2(80);
92602 l_component_code              VARCHAR2(30);
92603 l_component_type_code         VARCHAR2(1);
92604 l_component_appl_id           INTEGER;
92605 l_amb_context_code            VARCHAR2(30);
92606 l_entity_code                 VARCHAR2(30);
92607 l_event_class_code            VARCHAR2(30);
92608 l_ae_header_id                NUMBER;
92609 l_event_type_code             VARCHAR2(30);
92610 l_line_definition_code        VARCHAR2(30);
92611 l_line_definition_owner_code  VARCHAR2(1);
92612 --
92613 -- adr variables
92614 l_segment                     VARCHAR2(30);
92615 l_ccid                        NUMBER;
92616 l_adr_transaction_coa_id      NUMBER;
92617 l_adr_accounting_coa_id       NUMBER;
92618 l_adr_flexfield_segment_code  VARCHAR2(30);
92619 l_adr_flex_value_set_id       NUMBER;
92620 l_adr_value_type_code         VARCHAR2(30);
92621 l_adr_value_combination_id    NUMBER;
92622 l_adr_value_segment_code      VARCHAR2(30);
92623 
92624 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
92625 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
92626 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
92627 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
92628 
92629 -- 4262811 Variables ------------------------------------------------------------------------------------------
92630 l_entered_amt_idx             NUMBER;
92631 l_accted_amt_idx              NUMBER;
92632 l_acc_rev_flag                VARCHAR2(1);
92633 l_accrual_line_num            NUMBER;
92634 l_tmp_amt                     NUMBER;
92635 l_acc_rev_natural_side_code   VARCHAR2(1);
92636 
92637 l_num_entries                 NUMBER;
92638 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
92639 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
92640 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
92641 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
92642 l_recog_line_1                NUMBER;
92643 l_recog_line_2                NUMBER;
92644 
92645 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
92646 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
92647 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
92648 
92649 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
92650 
92651 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
92652 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
92653 
92654 ---------------------------------------------------------------------------------------------------------------
92655 
92656 
92657 --
92658 -- bulk performance
92659 --
92660 l_balance_type_code           VARCHAR2(1);
92661 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
92662 l_log_module                  VARCHAR2(240);
92663 
92664 --
92665 -- Upgrade strategy
92666 --
92667 l_actual_upg_option           VARCHAR2(1);
92668 l_enc_upg_option           VARCHAR2(1);
92669 
92670 --
92671 BEGIN
92672 --
92673 IF g_log_enabled THEN
92674       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_169';
92675 END IF;
92676 --
92677 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92678 
92679       trace
92680          (p_msg      => 'BEGIN of AcctLineType_169'
92681          ,p_level    => C_LEVEL_PROCEDURE
92682          ,p_module   => l_log_module);
92683 
92684 END IF;
92685 --
92686 l_component_type             := 'AMB_JLT';
92687 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
92688 l_component_type_code        := 'S';
92689 l_component_appl_id          :=  707;
92690 l_amb_context_code           := 'DEFAULT';
92691 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
92692 l_event_class_code           := 'USER_DEFINE';
92693 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
92694 l_line_definition_owner_code := 'S';
92695 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
92696 --
92697 l_balance_type_code          := 'A';
92698 l_segment                     := NULL;
92699 l_ccid                        := NULL;
92700 l_adr_transaction_coa_id      := NULL;
92701 l_adr_accounting_coa_id       := NULL;
92702 l_adr_flexfield_segment_code  := NULL;
92703 l_adr_flex_value_set_id       := NULL;
92704 l_adr_value_type_code         := NULL;
92705 l_adr_value_combination_id    := NULL;
92706 l_adr_value_segment_code      := NULL;
92707 
92708 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
92709 l_bflow_class_code           := '';    -- 4219869 Business Flow
92710 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
92711 l_budgetary_control_flag     := 'N';
92712 
92713 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
92714 l_bflow_applied_to_amt       := NULL; -- 5132302
92715 l_entered_amt_idx            := NULL;          -- 4262811
92716 l_accted_amt_idx             := NULL;          -- 4262811
92717 l_acc_rev_flag               := NULL;          -- 4262811
92718 l_accrual_line_num           := NULL;          -- 4262811
92719 l_tmp_amt                    := NULL;          -- 4262811
92720 --
92721  
92722 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
92723     l_balance_type_code <> 'B' THEN
92724 IF NVL(p_source_24,9E125) =  3
92725  THEN 
92726 
92727    --
92728    XLA_AE_LINES_PKG.SetNewLine;
92729 
92730    p_balance_type_code          := l_balance_type_code;
92731    -- set the flag so later we will know whether the gain loss line needs to be created
92732    
92733    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
92734      p_actual_flag :='A';
92735    END IF;
92736 
92737    --
92738    -- bulk performance
92739    --
92740    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
92741                                       p_header_num   => 0); -- 4262811
92742    --
92743    -- set accounting line options
92744    --
92745    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
92746            p_natural_side_code          => 'D'
92747          , p_gain_or_loss_flag          => 'N'
92748          , p_gl_transfer_mode_code      => 'S'
92749          , p_acct_entry_type_code       => 'A'
92750          , p_switch_side_flag           => 'Y'
92751          , p_merge_duplicate_code       => 'N'
92752          );
92753    --
92754    l_acc_rev_natural_side_code := 'C';  -- 4262811
92755    -- 
92756    --
92757    -- set accounting line type info
92758    --
92759    xla_ae_lines_pkg.SetAcctLineType
92760       (p_component_type             => l_component_type
92761       ,p_event_type_code            => l_event_type_code
92762       ,p_line_definition_owner_code => l_line_definition_owner_code
92763       ,p_line_definition_code       => l_line_definition_code
92764       ,p_accounting_line_code       => l_component_code
92765       ,p_accounting_line_type_code  => l_component_type_code
92766       ,p_accounting_line_appl_id    => l_component_appl_id
92767       ,p_amb_context_code           => l_amb_context_code
92768       ,p_entity_code                => l_entity_code
92769       ,p_event_class_code           => l_event_class_code);
92770    --
92771    -- set accounting class
92772    --
92773    xla_ae_lines_pkg.SetAcctClass(
92774            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
92775          , p_ae_header_id           => l_ae_header_id
92776          );
92777 
92778    --
92779    -- set rounding class
92780    --
92781    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
92782                       'MATERIAL_OVERHEAD_ABSORPTION';
92783 
92784    --
92785    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
92786    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
92787    --
92788    -- bulk performance
92789    --
92790    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
92791 
92792    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
92793       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
92794 
92795    -- 4955764
92796    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92797       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
92798 
92799    -- 4458381 Public Sector Enh
92800    
92801    --
92802    -- set accounting attributes for the line type
92803    --
92804    l_entered_amt_idx := 3;
92805    l_accted_amt_idx  := 8;
92806    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
92807    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
92808    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
92809    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
92810    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
92811    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
92812    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
92813    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
92814    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
92815    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
92816    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
92817    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
92818    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
92819    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
92820    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
92821    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
92822    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
92823 
92824    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
92825    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
92826 
92827    ---------------------------------------------------------------------------------------------------------------
92828    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
92829    ---------------------------------------------------------------------------------------------------------------
92830    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
92831 
92832    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92833    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92834 
92835    IF xla_accounting_cache_pkg.GetValueChar
92836          (p_source_code         => 'LEDGER_CATEGORY_CODE'
92837          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
92838    AND l_bflow_method_code = 'PRIOR_ENTRY'
92839 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
92840    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
92841          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
92842        )
92843    THEN
92844          xla_ae_lines_pkg.BflowUpgEntry
92845            (p_business_method_code    => l_bflow_method_code
92846            ,p_business_class_code     => l_bflow_class_code
92847            ,p_balance_type            => l_balance_type_code);
92848    ELSE
92849       NULL;
92850 -- No business flow processing for business flow method of NONE.
92851    END IF;
92852 
92853    --
92854    -- call analytical criteria
92855    --
92856    
92857    --
92858    -- call description
92859    --
92860    -- No description or it is inherited.
92861    --
92862    -- call ADRs
92863    -- Bug 4922099
92864    --
92865    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92866         (NVL(l_actual_upg_option, 'N') = 'O') OR
92867         (NVL(l_enc_upg_option, 'N') = 'O')
92868       )
92869    THEN
92870    NULL;
92871    --
92872    --
92873    
92874   l_ccid := AcctDerRule_4(
92875            p_application_id           => p_application_id
92876          , p_ae_header_id             => l_ae_header_id 
92877 , p_source_4 => p_source_4
92878          , x_transaction_coa_id       => l_adr_transaction_coa_id
92879          , x_accounting_coa_id        => l_adr_accounting_coa_id
92880          , x_value_type_code          => l_adr_value_type_code
92881          , p_side                     => 'NA'
92882    );
92883 
92884    xla_ae_lines_pkg.set_ccid(
92885     p_code_combination_id          => l_ccid
92886   , p_value_type_code              => l_adr_value_type_code
92887   , p_transaction_coa_id           => l_adr_transaction_coa_id
92888   , p_accounting_coa_id            => l_adr_accounting_coa_id
92889   , p_adr_code                     => 'CST_DEFAULT'
92890   , p_adr_type_code                => 'S'
92891   , p_component_type               => l_component_type
92892   , p_component_code               => l_component_code
92893   , p_component_type_code          => l_component_type_code
92894   , p_component_appl_id            => l_component_appl_id
92895   , p_amb_context_code             => l_amb_context_code
92896   , p_side                         => 'NA'
92897   );
92898 
92899 
92900    --
92901    --
92902    END IF;
92903    --
92904    -- Bug 4922099
92905    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
92906           (NVL(l_enc_upg_option, 'N') = 'O')
92907         ) AND
92908         (l_bflow_method_code = 'PRIOR_ENTRY')
92909       )
92910    THEN
92911       IF
92912       --
92913       1 = 2
92914       --
92915       THEN
92916       xla_accounting_err_pkg.build_message
92917                                     (p_appli_s_name            => 'XLA'
92918                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92919                                     ,p_token_1                 => 'LINE_NUMBER'
92920                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
92921                                     ,p_token_2                 => 'LINE_TYPE_NAME'
92922                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
92923                                                                              l_component_type
92924                                                                             ,l_component_code
92925                                                                             ,l_component_type_code
92926                                                                             ,l_component_appl_id
92927                                                                             ,l_amb_context_code
92928                                                                             ,l_entity_code
92929                                                                             ,l_event_class_code
92930                                                                            )
92931                                     ,p_token_3                 => 'OWNER'
92932                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
92933                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
92934                                                                           ,p_lookup_code    => l_component_type_code
92935                                                                          )
92936                                     ,p_token_4                 => 'PRODUCT_NAME'
92937                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
92938                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
92939                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
92940                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
92941                                     ,p_ae_header_id            =>  NULL
92942                                        );
92943 
92944         IF (C_LEVEL_ERROR>= g_log_level) THEN
92945                  trace
92946                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92947                       ,p_level    => C_LEVEL_ERROR
92948                       ,p_module   => l_log_module);
92949         END IF;
92950       END IF;
92951    END IF;
92952    --
92953    --
92954    ------------------------------------------------------------------------------------------------
92955    -- 4219869 Business Flow
92956    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
92957    -- Prior Entry.  Currently, the following code is always generated.
92958    ------------------------------------------------------------------------------------------------
92959    XLA_AE_LINES_PKG.ValidateCurrentLine;
92960 
92961    ------------------------------------------------------------------------------------
92962    -- 4219869 Business Flow
92963    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
92964    ------------------------------------------------------------------------------------
92965    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92966 
92967    ----------------------------------------------------------------------------------
92968    -- 4219869 Business Flow
92969    -- Update journal entry status -- Need to generate this within IF <condition>
92970    ----------------------------------------------------------------------------------
92971    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92972          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
92973          ,p_balance_type_code => l_balance_type_code
92974          );
92975 
92976    -------------------------------------------------------------------------------------------
92977    -- 4262811 - Generate the Accrual Reversal lines
92978    -------------------------------------------------------------------------------------------
92979    BEGIN
92980       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
92981                               (g_array_event(p_event_id).array_value_num('header_index'));
92982       IF l_acc_rev_flag IS NULL THEN
92983          l_acc_rev_flag := 'N';
92984       END IF;
92985    EXCEPTION
92986       WHEN OTHERS THEN
92987          l_acc_rev_flag := 'N';
92988    END;
92989    --
92990    IF (l_acc_rev_flag = 'Y') THEN
92991 
92992        -- 4645092  ------------------------------------------------------------------------------
92993        -- To allow MPA report to determine if it should generate report process
92994        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
92995        ------------------------------------------------------------------------------------------
92996 
92997        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
92998        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
92999    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
93000    -- call ADRs
93001    -- Bug 4922099
93002    --
93003    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93004         (NVL(l_actual_upg_option, 'N') = 'O') OR
93005         (NVL(l_enc_upg_option, 'N') = 'O')
93006       )
93007    THEN
93008    NULL;
93009    --
93010    --
93011    
93012   l_ccid := AcctDerRule_4(
93013            p_application_id           => p_application_id
93014          , p_ae_header_id             => l_ae_header_id 
93015 , p_source_4 => p_source_4
93016          , x_transaction_coa_id       => l_adr_transaction_coa_id
93017          , x_accounting_coa_id        => l_adr_accounting_coa_id
93018          , x_value_type_code          => l_adr_value_type_code
93019          , p_side                     => 'NA'
93020    );
93021 
93022    xla_ae_lines_pkg.set_ccid(
93023     p_code_combination_id          => l_ccid
93024   , p_value_type_code              => l_adr_value_type_code
93025   , p_transaction_coa_id           => l_adr_transaction_coa_id
93026   , p_accounting_coa_id            => l_adr_accounting_coa_id
93027   , p_adr_code                     => 'CST_DEFAULT'
93028   , p_adr_type_code                => 'S'
93029   , p_component_type               => l_component_type
93030   , p_component_code               => l_component_code
93031   , p_component_type_code          => l_component_type_code
93032   , p_component_appl_id            => l_component_appl_id
93033   , p_amb_context_code             => l_amb_context_code
93034   , p_side                         => 'NA'
93035   );
93036 
93037 
93038    --
93039    --
93040    END IF;
93041 
93042        --
93043        -- Update the line information that should be overwritten
93044        --
93045        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
93046                                          p_header_num   => 1);
93047        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
93048 
93049        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
93050 
93051        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
93052           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
93053        END IF;
93054 
93055       --
93056       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
93057       --
93058       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
93059           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
93060       ELSE
93061           ---------------------------------------------------------------------------------------------------
93062           -- 4262811a Switch Sign
93063           ---------------------------------------------------------------------------------------------------
93064           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
93065           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93066                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93067           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93068                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93069           -- 5132302
93070           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
93071                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93072 
93073       END IF;
93074 
93075       -- 4955764
93076       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93077       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
93078 
93079 
93080       XLA_AE_LINES_PKG.ValidateCurrentLine;
93081       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93082 
93083       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93084                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
93085                ,p_balance_type_code => l_balance_type_code);
93086 
93087    END IF;
93088 
93089    -----------------------------------------------------------------------------------------
93090    -- 4262811 Multiperiod Accounting
93091    -----------------------------------------------------------------------------------------
93092      -- No MPA option is assigned.
93093 
93094 
93095 END IF;
93096 END IF;
93097 --
93098 
93099 --
93100 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93101    trace
93102       (p_msg      => 'END of AcctLineType_169'
93103       ,p_level    => C_LEVEL_PROCEDURE
93104       ,p_module   => l_log_module);
93105 END IF;
93106 --
93107 EXCEPTION
93108   WHEN xla_exceptions_pkg.application_exception THEN
93109       RAISE;
93110   WHEN OTHERS THEN
93111        xla_exceptions_pkg.raise_message
93112            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_169');
93113 END AcctLineType_169;
93114 --
93115 
93116 ---------------------------------------
93117 --
93118 -- PRIVATE FUNCTION
93119 --         AcctLineType_170
93120 --
93121 ---------------------------------------
93122 PROCEDURE AcctLineType_170 (
93123   p_application_id        IN NUMBER
93124  ,p_event_id              IN NUMBER
93125  ,p_calculate_acctd_flag  IN VARCHAR2
93126  ,p_calculate_g_l_flag    IN VARCHAR2
93127  ,p_actual_flag           IN OUT VARCHAR2
93128  ,p_balance_type_code     OUT VARCHAR2
93129  ,p_gain_or_loss_ref      OUT VARCHAR2
93130  
93131 --Cost Management Default Account
93132  , p_source_4            IN NUMBER
93133 --DISTRIBUTION_IDENTIFIER
93134  , p_source_11            IN NUMBER
93135 --Distribution Type
93136  , p_source_12            IN VARCHAR2
93137  , p_source_12_meaning    IN VARCHAR2
93138 --Entered Currency Code
93139  , p_source_15            IN VARCHAR2
93140 --Entered Amount
93141  , p_source_18            IN NUMBER
93142 --Currency Conversion Date
93143  , p_source_19            IN DATE
93144 --Currency Conversion Rate
93145  , p_source_20            IN NUMBER
93146 --Currency Conversion Type
93147  , p_source_21            IN VARCHAR2
93148 --Accounted Amount
93149  , p_source_22            IN NUMBER
93150 --Accounting Line Type
93151  , p_source_24            IN NUMBER
93152 )
93153 IS
93154 
93155 l_component_type              VARCHAR2(80);
93156 l_component_code              VARCHAR2(30);
93157 l_component_type_code         VARCHAR2(1);
93158 l_component_appl_id           INTEGER;
93159 l_amb_context_code            VARCHAR2(30);
93160 l_entity_code                 VARCHAR2(30);
93161 l_event_class_code            VARCHAR2(30);
93162 l_ae_header_id                NUMBER;
93163 l_event_type_code             VARCHAR2(30);
93164 l_line_definition_code        VARCHAR2(30);
93165 l_line_definition_owner_code  VARCHAR2(1);
93166 --
93167 -- adr variables
93168 l_segment                     VARCHAR2(30);
93169 l_ccid                        NUMBER;
93170 l_adr_transaction_coa_id      NUMBER;
93171 l_adr_accounting_coa_id       NUMBER;
93172 l_adr_flexfield_segment_code  VARCHAR2(30);
93173 l_adr_flex_value_set_id       NUMBER;
93174 l_adr_value_type_code         VARCHAR2(30);
93175 l_adr_value_combination_id    NUMBER;
93176 l_adr_value_segment_code      VARCHAR2(30);
93177 
93178 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
93179 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
93180 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
93181 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
93182 
93183 -- 4262811 Variables ------------------------------------------------------------------------------------------
93184 l_entered_amt_idx             NUMBER;
93185 l_accted_amt_idx              NUMBER;
93186 l_acc_rev_flag                VARCHAR2(1);
93187 l_accrual_line_num            NUMBER;
93188 l_tmp_amt                     NUMBER;
93189 l_acc_rev_natural_side_code   VARCHAR2(1);
93190 
93191 l_num_entries                 NUMBER;
93192 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
93193 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
93194 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
93195 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
93196 l_recog_line_1                NUMBER;
93197 l_recog_line_2                NUMBER;
93198 
93199 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
93200 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
93201 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
93202 
93203 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
93204 
93205 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
93206 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
93207 
93208 ---------------------------------------------------------------------------------------------------------------
93209 
93210 
93211 --
93212 -- bulk performance
93213 --
93214 l_balance_type_code           VARCHAR2(1);
93215 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
93216 l_log_module                  VARCHAR2(240);
93217 
93218 --
93219 -- Upgrade strategy
93220 --
93221 l_actual_upg_option           VARCHAR2(1);
93222 l_enc_upg_option           VARCHAR2(1);
93223 
93224 --
93225 BEGIN
93226 --
93227 IF g_log_enabled THEN
93228       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_170';
93229 END IF;
93230 --
93231 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93232 
93233       trace
93234          (p_msg      => 'BEGIN of AcctLineType_170'
93235          ,p_level    => C_LEVEL_PROCEDURE
93236          ,p_module   => l_log_module);
93237 
93238 END IF;
93239 --
93240 l_component_type             := 'AMB_JLT';
93241 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
93242 l_component_type_code        := 'S';
93243 l_component_appl_id          :=  707;
93244 l_amb_context_code           := 'DEFAULT';
93245 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
93246 l_event_class_code           := 'USER_DEFINE';
93247 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
93248 l_line_definition_owner_code := 'S';
93249 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
93250 --
93251 l_balance_type_code          := 'A';
93252 l_segment                     := NULL;
93253 l_ccid                        := NULL;
93254 l_adr_transaction_coa_id      := NULL;
93255 l_adr_accounting_coa_id       := NULL;
93256 l_adr_flexfield_segment_code  := NULL;
93257 l_adr_flex_value_set_id       := NULL;
93258 l_adr_value_type_code         := NULL;
93259 l_adr_value_combination_id    := NULL;
93260 l_adr_value_segment_code      := NULL;
93261 
93262 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
93263 l_bflow_class_code           := '';    -- 4219869 Business Flow
93264 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
93265 l_budgetary_control_flag     := 'N';
93266 
93267 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
93268 l_bflow_applied_to_amt       := NULL; -- 5132302
93269 l_entered_amt_idx            := NULL;          -- 4262811
93270 l_accted_amt_idx             := NULL;          -- 4262811
93271 l_acc_rev_flag               := NULL;          -- 4262811
93272 l_accrual_line_num           := NULL;          -- 4262811
93273 l_tmp_amt                    := NULL;          -- 4262811
93274 --
93275  
93276 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
93277     l_balance_type_code <> 'B' THEN
93278 IF NVL(p_source_24,9E125) =  3
93279  THEN 
93280 
93281    --
93282    XLA_AE_LINES_PKG.SetNewLine;
93283 
93284    p_balance_type_code          := l_balance_type_code;
93285    -- set the flag so later we will know whether the gain loss line needs to be created
93286    
93287    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
93288      p_actual_flag :='A';
93289    END IF;
93290 
93291    --
93292    -- bulk performance
93293    --
93294    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
93295                                       p_header_num   => 0); -- 4262811
93296    --
93297    -- set accounting line options
93298    --
93299    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
93300            p_natural_side_code          => 'D'
93301          , p_gain_or_loss_flag          => 'N'
93302          , p_gl_transfer_mode_code      => 'S'
93303          , p_acct_entry_type_code       => 'A'
93304          , p_switch_side_flag           => 'Y'
93305          , p_merge_duplicate_code       => 'N'
93306          );
93307    --
93308    l_acc_rev_natural_side_code := 'C';  -- 4262811
93309    -- 
93310    --
93311    -- set accounting line type info
93312    --
93313    xla_ae_lines_pkg.SetAcctLineType
93314       (p_component_type             => l_component_type
93315       ,p_event_type_code            => l_event_type_code
93316       ,p_line_definition_owner_code => l_line_definition_owner_code
93317       ,p_line_definition_code       => l_line_definition_code
93318       ,p_accounting_line_code       => l_component_code
93319       ,p_accounting_line_type_code  => l_component_type_code
93320       ,p_accounting_line_appl_id    => l_component_appl_id
93321       ,p_amb_context_code           => l_amb_context_code
93322       ,p_entity_code                => l_entity_code
93323       ,p_event_class_code           => l_event_class_code);
93324    --
93325    -- set accounting class
93326    --
93327    xla_ae_lines_pkg.SetAcctClass(
93328            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
93329          , p_ae_header_id           => l_ae_header_id
93330          );
93331 
93332    --
93333    -- set rounding class
93334    --
93335    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
93336                       'MATERIAL_OVERHEAD_ABSORPTION';
93337 
93338    --
93339    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
93340    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
93341    --
93342    -- bulk performance
93343    --
93344    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
93345 
93346    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
93347       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
93348 
93349    -- 4955764
93350    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93351       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
93352 
93353    -- 4458381 Public Sector Enh
93354    
93355    --
93356    -- set accounting attributes for the line type
93357    --
93358    l_entered_amt_idx := 3;
93359    l_accted_amt_idx  := 8;
93360    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
93361    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
93362    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
93363    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
93364    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
93365    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
93366    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
93367    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
93368    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
93369    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
93370    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
93371    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
93372    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
93373    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
93374    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
93375    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
93376    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
93377 
93378    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
93379    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
93380 
93381    ---------------------------------------------------------------------------------------------------------------
93382    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
93383    ---------------------------------------------------------------------------------------------------------------
93384    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
93385 
93386    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93387    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93388 
93389    IF xla_accounting_cache_pkg.GetValueChar
93390          (p_source_code         => 'LEDGER_CATEGORY_CODE'
93391          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
93392    AND l_bflow_method_code = 'PRIOR_ENTRY'
93393 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
93394    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
93395          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
93396        )
93397    THEN
93398          xla_ae_lines_pkg.BflowUpgEntry
93399            (p_business_method_code    => l_bflow_method_code
93400            ,p_business_class_code     => l_bflow_class_code
93401            ,p_balance_type            => l_balance_type_code);
93402    ELSE
93403       NULL;
93404 -- No business flow processing for business flow method of NONE.
93405    END IF;
93406 
93407    --
93408    -- call analytical criteria
93409    --
93410    
93411    --
93412    -- call description
93413    --
93414    -- No description or it is inherited.
93415    --
93416    -- call ADRs
93417    -- Bug 4922099
93418    --
93419    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93420         (NVL(l_actual_upg_option, 'N') = 'O') OR
93421         (NVL(l_enc_upg_option, 'N') = 'O')
93422       )
93423    THEN
93424    NULL;
93425    --
93426    --
93427    
93428   l_ccid := AcctDerRule_4(
93429            p_application_id           => p_application_id
93430          , p_ae_header_id             => l_ae_header_id 
93431 , p_source_4 => p_source_4
93432          , x_transaction_coa_id       => l_adr_transaction_coa_id
93433          , x_accounting_coa_id        => l_adr_accounting_coa_id
93434          , x_value_type_code          => l_adr_value_type_code
93435          , p_side                     => 'NA'
93436    );
93437 
93438    xla_ae_lines_pkg.set_ccid(
93439     p_code_combination_id          => l_ccid
93440   , p_value_type_code              => l_adr_value_type_code
93441   , p_transaction_coa_id           => l_adr_transaction_coa_id
93442   , p_accounting_coa_id            => l_adr_accounting_coa_id
93443   , p_adr_code                     => 'CST_DEFAULT'
93444   , p_adr_type_code                => 'S'
93445   , p_component_type               => l_component_type
93446   , p_component_code               => l_component_code
93447   , p_component_type_code          => l_component_type_code
93448   , p_component_appl_id            => l_component_appl_id
93449   , p_amb_context_code             => l_amb_context_code
93450   , p_side                         => 'NA'
93451   );
93452 
93453 
93454    --
93455    --
93456    END IF;
93457    --
93458    -- Bug 4922099
93459    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
93460           (NVL(l_enc_upg_option, 'N') = 'O')
93461         ) AND
93462         (l_bflow_method_code = 'PRIOR_ENTRY')
93463       )
93464    THEN
93465       IF
93466       --
93467       1 = 2
93468       --
93469       THEN
93470       xla_accounting_err_pkg.build_message
93471                                     (p_appli_s_name            => 'XLA'
93472                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93473                                     ,p_token_1                 => 'LINE_NUMBER'
93474                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
93475                                     ,p_token_2                 => 'LINE_TYPE_NAME'
93476                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
93477                                                                              l_component_type
93478                                                                             ,l_component_code
93479                                                                             ,l_component_type_code
93480                                                                             ,l_component_appl_id
93481                                                                             ,l_amb_context_code
93482                                                                             ,l_entity_code
93483                                                                             ,l_event_class_code
93484                                                                            )
93485                                     ,p_token_3                 => 'OWNER'
93486                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
93487                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
93488                                                                           ,p_lookup_code    => l_component_type_code
93489                                                                          )
93490                                     ,p_token_4                 => 'PRODUCT_NAME'
93491                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
93492                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
93493                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
93494                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
93495                                     ,p_ae_header_id            =>  NULL
93496                                        );
93497 
93498         IF (C_LEVEL_ERROR>= g_log_level) THEN
93499                  trace
93500                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93501                       ,p_level    => C_LEVEL_ERROR
93502                       ,p_module   => l_log_module);
93503         END IF;
93504       END IF;
93505    END IF;
93506    --
93507    --
93508    ------------------------------------------------------------------------------------------------
93509    -- 4219869 Business Flow
93510    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
93511    -- Prior Entry.  Currently, the following code is always generated.
93512    ------------------------------------------------------------------------------------------------
93513    XLA_AE_LINES_PKG.ValidateCurrentLine;
93514 
93515    ------------------------------------------------------------------------------------
93516    -- 4219869 Business Flow
93517    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
93518    ------------------------------------------------------------------------------------
93519    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93520 
93521    ----------------------------------------------------------------------------------
93522    -- 4219869 Business Flow
93523    -- Update journal entry status -- Need to generate this within IF <condition>
93524    ----------------------------------------------------------------------------------
93525    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93526          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
93527          ,p_balance_type_code => l_balance_type_code
93528          );
93529 
93530    -------------------------------------------------------------------------------------------
93531    -- 4262811 - Generate the Accrual Reversal lines
93532    -------------------------------------------------------------------------------------------
93533    BEGIN
93534       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
93535                               (g_array_event(p_event_id).array_value_num('header_index'));
93536       IF l_acc_rev_flag IS NULL THEN
93537          l_acc_rev_flag := 'N';
93538       END IF;
93539    EXCEPTION
93540       WHEN OTHERS THEN
93541          l_acc_rev_flag := 'N';
93542    END;
93543    --
93544    IF (l_acc_rev_flag = 'Y') THEN
93545 
93546        -- 4645092  ------------------------------------------------------------------------------
93547        -- To allow MPA report to determine if it should generate report process
93548        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
93549        ------------------------------------------------------------------------------------------
93550 
93551        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
93552        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
93553    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
93554    -- call ADRs
93555    -- Bug 4922099
93556    --
93557    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93558         (NVL(l_actual_upg_option, 'N') = 'O') OR
93559         (NVL(l_enc_upg_option, 'N') = 'O')
93560       )
93561    THEN
93562    NULL;
93563    --
93564    --
93565    
93566   l_ccid := AcctDerRule_4(
93567            p_application_id           => p_application_id
93568          , p_ae_header_id             => l_ae_header_id 
93569 , p_source_4 => p_source_4
93570          , x_transaction_coa_id       => l_adr_transaction_coa_id
93571          , x_accounting_coa_id        => l_adr_accounting_coa_id
93572          , x_value_type_code          => l_adr_value_type_code
93573          , p_side                     => 'NA'
93574    );
93575 
93576    xla_ae_lines_pkg.set_ccid(
93577     p_code_combination_id          => l_ccid
93578   , p_value_type_code              => l_adr_value_type_code
93579   , p_transaction_coa_id           => l_adr_transaction_coa_id
93580   , p_accounting_coa_id            => l_adr_accounting_coa_id
93581   , p_adr_code                     => 'CST_DEFAULT'
93582   , p_adr_type_code                => 'S'
93583   , p_component_type               => l_component_type
93584   , p_component_code               => l_component_code
93585   , p_component_type_code          => l_component_type_code
93586   , p_component_appl_id            => l_component_appl_id
93587   , p_amb_context_code             => l_amb_context_code
93588   , p_side                         => 'NA'
93589   );
93590 
93591 
93592    --
93593    --
93594    END IF;
93595 
93596        --
93597        -- Update the line information that should be overwritten
93598        --
93599        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
93600                                          p_header_num   => 1);
93601        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
93602 
93603        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
93604 
93605        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
93606           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
93607        END IF;
93608 
93609       --
93610       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
93611       --
93612       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
93613           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
93614       ELSE
93615           ---------------------------------------------------------------------------------------------------
93616           -- 4262811a Switch Sign
93617           ---------------------------------------------------------------------------------------------------
93618           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
93619           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93620                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93621           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93622                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93623           -- 5132302
93624           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
93625                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93626 
93627       END IF;
93628 
93629       -- 4955764
93630       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93631       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
93632 
93633 
93634       XLA_AE_LINES_PKG.ValidateCurrentLine;
93635       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93636 
93637       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93638                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
93639                ,p_balance_type_code => l_balance_type_code);
93640 
93641    END IF;
93642 
93643    -----------------------------------------------------------------------------------------
93644    -- 4262811 Multiperiod Accounting
93645    -----------------------------------------------------------------------------------------
93646      -- No MPA option is assigned.
93647 
93648 
93649 END IF;
93650 END IF;
93651 --
93652 
93653 --
93654 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93655    trace
93656       (p_msg      => 'END of AcctLineType_170'
93657       ,p_level    => C_LEVEL_PROCEDURE
93658       ,p_module   => l_log_module);
93659 END IF;
93660 --
93661 EXCEPTION
93662   WHEN xla_exceptions_pkg.application_exception THEN
93663       RAISE;
93664   WHEN OTHERS THEN
93665        xla_exceptions_pkg.raise_message
93666            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_170');
93667 END AcctLineType_170;
93668 --
93669 
93670 ---------------------------------------
93671 --
93672 -- PRIVATE FUNCTION
93673 --         AcctLineType_171
93674 --
93675 ---------------------------------------
93676 PROCEDURE AcctLineType_171 (
93677   p_application_id        IN NUMBER
93678  ,p_event_id              IN NUMBER
93679  ,p_calculate_acctd_flag  IN VARCHAR2
93680  ,p_calculate_g_l_flag    IN VARCHAR2
93681  ,p_actual_flag           IN OUT VARCHAR2
93682  ,p_balance_type_code     OUT VARCHAR2
93683  ,p_gain_or_loss_ref      OUT VARCHAR2
93684  
93685 --Cost Management Default Account
93686  , p_source_4            IN NUMBER
93687 --Applied to Application ID
93688  , p_source_6            IN NUMBER
93689 --Applied to Distribution Link Type
93690  , p_source_7            IN VARCHAR2
93691 --Applied to Entity Code
93692  , p_source_8            IN VARCHAR2
93693 --DISTRIBUTION_IDENTIFIER
93694  , p_source_11            IN NUMBER
93695 --Distribution Type
93696  , p_source_12            IN VARCHAR2
93697  , p_source_12_meaning    IN VARCHAR2
93698 --Encumbrance Reversal Amount Entered
93699  , p_source_14            IN NUMBER
93700 --Entered Currency Code
93701  , p_source_15            IN VARCHAR2
93702 --Transaction Encumbrance Reversal Amount
93703  , p_source_16            IN NUMBER
93704 --Entered Amount
93705  , p_source_18            IN NUMBER
93706 --Currency Conversion Date
93707  , p_source_19            IN DATE
93708 --Currency Conversion Rate
93709  , p_source_20            IN NUMBER
93710 --Currency Conversion Type
93711  , p_source_21            IN VARCHAR2
93712 --Accounted Amount
93713  , p_source_22            IN NUMBER
93714 --Accounting Line Type
93715  , p_source_24            IN NUMBER
93716 --Costing Encumbrance Upgrade Option
93717  , p_source_27            IN VARCHAR2
93718 --TXN_PO_DISTRIBUTION_ID
93719  , p_source_28            IN NUMBER
93720 --TXN_PO_HEADER_ID
93721  , p_source_29            IN NUMBER
93722 --Requisition Budget Account
93723  , p_source_30            IN NUMBER
93724 --Requisition Encumbrance Type Identifier
93725  , p_source_31            IN NUMBER
93726 )
93727 IS
93728 
93729 l_component_type              VARCHAR2(80);
93730 l_component_code              VARCHAR2(30);
93731 l_component_type_code         VARCHAR2(1);
93732 l_component_appl_id           INTEGER;
93733 l_amb_context_code            VARCHAR2(30);
93734 l_entity_code                 VARCHAR2(30);
93735 l_event_class_code            VARCHAR2(30);
93736 l_ae_header_id                NUMBER;
93737 l_event_type_code             VARCHAR2(30);
93738 l_line_definition_code        VARCHAR2(30);
93739 l_line_definition_owner_code  VARCHAR2(1);
93740 --
93741 -- adr variables
93742 l_segment                     VARCHAR2(30);
93743 l_ccid                        NUMBER;
93744 l_adr_transaction_coa_id      NUMBER;
93745 l_adr_accounting_coa_id       NUMBER;
93746 l_adr_flexfield_segment_code  VARCHAR2(30);
93747 l_adr_flex_value_set_id       NUMBER;
93748 l_adr_value_type_code         VARCHAR2(30);
93749 l_adr_value_combination_id    NUMBER;
93750 l_adr_value_segment_code      VARCHAR2(30);
93751 
93752 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
93753 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
93754 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
93755 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
93756 
93757 -- 4262811 Variables ------------------------------------------------------------------------------------------
93758 l_entered_amt_idx             NUMBER;
93759 l_accted_amt_idx              NUMBER;
93760 l_acc_rev_flag                VARCHAR2(1);
93761 l_accrual_line_num            NUMBER;
93762 l_tmp_amt                     NUMBER;
93763 l_acc_rev_natural_side_code   VARCHAR2(1);
93764 
93765 l_num_entries                 NUMBER;
93766 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
93767 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
93768 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
93769 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
93770 l_recog_line_1                NUMBER;
93771 l_recog_line_2                NUMBER;
93772 
93773 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
93774 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
93775 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
93776 
93777 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
93778 
93779 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
93780 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
93781 
93782 ---------------------------------------------------------------------------------------------------------------
93783 
93784 
93785 --
93786 -- bulk performance
93787 --
93788 l_balance_type_code           VARCHAR2(1);
93789 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
93790 l_log_module                  VARCHAR2(240);
93791 
93792 --
93793 -- Upgrade strategy
93794 --
93795 l_actual_upg_option           VARCHAR2(1);
93796 l_enc_upg_option           VARCHAR2(1);
93797 
93798 --
93799 BEGIN
93800 --
93801 IF g_log_enabled THEN
93802       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_171';
93803 END IF;
93804 --
93805 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93806 
93807       trace
93808          (p_msg      => 'BEGIN of AcctLineType_171'
93809          ,p_level    => C_LEVEL_PROCEDURE
93810          ,p_module   => l_log_module);
93811 
93812 END IF;
93813 --
93814 l_component_type             := 'AMB_JLT';
93815 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
93816 l_component_type_code        := 'S';
93817 l_component_appl_id          :=  707;
93818 l_amb_context_code           := 'DEFAULT';
93819 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
93820 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
93821 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
93822 l_line_definition_owner_code := 'S';
93823 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT';
93824 --
93825 l_balance_type_code          := 'A';
93826 l_segment                     := NULL;
93827 l_ccid                        := NULL;
93828 l_adr_transaction_coa_id      := NULL;
93829 l_adr_accounting_coa_id       := NULL;
93830 l_adr_flexfield_segment_code  := NULL;
93831 l_adr_flex_value_set_id       := NULL;
93832 l_adr_value_type_code         := NULL;
93833 l_adr_value_combination_id    := NULL;
93834 l_adr_value_segment_code      := NULL;
93835 
93836 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
93837 l_bflow_class_code           := '';    -- 4219869 Business Flow
93838 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
93839 l_budgetary_control_flag     := 'N';
93840 
93841 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
93842 l_bflow_applied_to_amt       := NULL; -- 5132302
93843 l_entered_amt_idx            := NULL;          -- 4262811
93844 l_accted_amt_idx             := NULL;          -- 4262811
93845 l_acc_rev_flag               := NULL;          -- 4262811
93846 l_accrual_line_num           := NULL;          -- 4262811
93847 l_tmp_amt                    := NULL;          -- 4262811
93848 --
93849  
93850 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
93851     l_balance_type_code <> 'B' THEN
93852 IF NVL(p_source_24,9E125) =  3
93853  THEN 
93854 
93855    --
93856    XLA_AE_LINES_PKG.SetNewLine;
93857 
93858    p_balance_type_code          := l_balance_type_code;
93859    -- set the flag so later we will know whether the gain loss line needs to be created
93860    
93861    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
93862      p_actual_flag :='A';
93863    END IF;
93864 
93865    --
93866    -- bulk performance
93867    --
93868    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
93869                                       p_header_num   => 0); -- 4262811
93870    --
93871    -- set accounting line options
93872    --
93873    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
93874            p_natural_side_code          => 'D'
93875          , p_gain_or_loss_flag          => 'N'
93876          , p_gl_transfer_mode_code      => 'S'
93877          , p_acct_entry_type_code       => 'A'
93878          , p_switch_side_flag           => 'Y'
93879          , p_merge_duplicate_code       => 'N'
93880          );
93881    --
93882    l_acc_rev_natural_side_code := 'C';  -- 4262811
93883    -- 
93884    --
93885    -- set accounting line type info
93886    --
93887    xla_ae_lines_pkg.SetAcctLineType
93888       (p_component_type             => l_component_type
93889       ,p_event_type_code            => l_event_type_code
93890       ,p_line_definition_owner_code => l_line_definition_owner_code
93891       ,p_line_definition_code       => l_line_definition_code
93892       ,p_accounting_line_code       => l_component_code
93893       ,p_accounting_line_type_code  => l_component_type_code
93894       ,p_accounting_line_appl_id    => l_component_appl_id
93895       ,p_amb_context_code           => l_amb_context_code
93896       ,p_entity_code                => l_entity_code
93897       ,p_event_class_code           => l_event_class_code);
93898    --
93899    -- set accounting class
93900    --
93901    xla_ae_lines_pkg.SetAcctClass(
93902            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
93903          , p_ae_header_id           => l_ae_header_id
93904          );
93905 
93906    --
93907    -- set rounding class
93908    --
93909    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
93910                       'MATERIAL_OVERHEAD_ABSORPTION';
93911 
93912    --
93913    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
93914    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
93915    --
93916    -- bulk performance
93917    --
93918    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
93919 
93920    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
93921       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
93922 
93923    -- 4955764
93924    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93925       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
93926 
93927    -- 4458381 Public Sector Enh
93928    
93929    --
93930    -- set accounting attributes for the line type
93931    --
93932    l_entered_amt_idx := 17;
93933    l_accted_amt_idx  := 22;
93934    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
93935    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
93936    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
93937    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
93938    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
93939    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
93940    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
93941    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
93942    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
93943    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
93944    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
93945    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
93946    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
93947    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
93948    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
93949    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
93950    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
93951    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
93952    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
93953    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
93954    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
93955    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
93956    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
93957    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
93958    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
93959    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
93960    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
93961    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
93962    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
93963    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
93964    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
93965    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
93966    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
93967    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
93968    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
93969    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
93970    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
93971    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
93972    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
93973    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
93974    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
93975    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
93976    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
93977    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
93978    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
93979    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
93980    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
93981    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
93982    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
93983 
93984    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
93985    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
93986 
93987    ---------------------------------------------------------------------------------------------------------------
93988    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
93989    ---------------------------------------------------------------------------------------------------------------
93990    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
93991 
93992    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93993    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93994 
93995    IF xla_accounting_cache_pkg.GetValueChar
93996          (p_source_code         => 'LEDGER_CATEGORY_CODE'
93997          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
93998    AND l_bflow_method_code = 'PRIOR_ENTRY'
93999 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
94000    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
94001          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
94002        )
94003    THEN
94004          xla_ae_lines_pkg.BflowUpgEntry
94005            (p_business_method_code    => l_bflow_method_code
94006            ,p_business_class_code     => l_bflow_class_code
94007            ,p_balance_type            => l_balance_type_code);
94008    ELSE
94009       NULL;
94010 -- No business flow processing for business flow method of NONE.
94011    END IF;
94012 
94013    --
94014    -- call analytical criteria
94015    --
94016    
94017    --
94018    -- call description
94019    --
94020    -- No description or it is inherited.
94021    --
94022    -- call ADRs
94023    -- Bug 4922099
94024    --
94025    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94026         (NVL(l_actual_upg_option, 'N') = 'O') OR
94027         (NVL(l_enc_upg_option, 'N') = 'O')
94028       )
94029    THEN
94030    NULL;
94031    --
94032    --
94033    
94034   l_ccid := AcctDerRule_4(
94035            p_application_id           => p_application_id
94036          , p_ae_header_id             => l_ae_header_id 
94037 , p_source_4 => p_source_4
94038          , x_transaction_coa_id       => l_adr_transaction_coa_id
94039          , x_accounting_coa_id        => l_adr_accounting_coa_id
94040          , x_value_type_code          => l_adr_value_type_code
94041          , p_side                     => 'NA'
94042    );
94043 
94044    xla_ae_lines_pkg.set_ccid(
94045     p_code_combination_id          => l_ccid
94046   , p_value_type_code              => l_adr_value_type_code
94047   , p_transaction_coa_id           => l_adr_transaction_coa_id
94048   , p_accounting_coa_id            => l_adr_accounting_coa_id
94049   , p_adr_code                     => 'CST_DEFAULT'
94050   , p_adr_type_code                => 'S'
94051   , p_component_type               => l_component_type
94052   , p_component_code               => l_component_code
94053   , p_component_type_code          => l_component_type_code
94054   , p_component_appl_id            => l_component_appl_id
94055   , p_amb_context_code             => l_amb_context_code
94056   , p_side                         => 'NA'
94057   );
94058 
94059 
94060    --
94061    --
94062    END IF;
94063    --
94064    -- Bug 4922099
94065    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
94066           (NVL(l_enc_upg_option, 'N') = 'O')
94067         ) AND
94068         (l_bflow_method_code = 'PRIOR_ENTRY')
94069       )
94070    THEN
94071       IF
94072       --
94073       1 = 2
94074       --
94075       THEN
94076       xla_accounting_err_pkg.build_message
94077                                     (p_appli_s_name            => 'XLA'
94078                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94079                                     ,p_token_1                 => 'LINE_NUMBER'
94080                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
94081                                     ,p_token_2                 => 'LINE_TYPE_NAME'
94082                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
94083                                                                              l_component_type
94084                                                                             ,l_component_code
94085                                                                             ,l_component_type_code
94086                                                                             ,l_component_appl_id
94087                                                                             ,l_amb_context_code
94088                                                                             ,l_entity_code
94089                                                                             ,l_event_class_code
94090                                                                            )
94091                                     ,p_token_3                 => 'OWNER'
94092                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
94093                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
94094                                                                           ,p_lookup_code    => l_component_type_code
94095                                                                          )
94096                                     ,p_token_4                 => 'PRODUCT_NAME'
94097                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
94098                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
94099                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
94100                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
94101                                     ,p_ae_header_id            =>  NULL
94102                                        );
94103 
94104         IF (C_LEVEL_ERROR>= g_log_level) THEN
94105                  trace
94106                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94107                       ,p_level    => C_LEVEL_ERROR
94108                       ,p_module   => l_log_module);
94109         END IF;
94110       END IF;
94111    END IF;
94112    --
94113    --
94114    ------------------------------------------------------------------------------------------------
94115    -- 4219869 Business Flow
94116    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
94117    -- Prior Entry.  Currently, the following code is always generated.
94118    ------------------------------------------------------------------------------------------------
94119    XLA_AE_LINES_PKG.ValidateCurrentLine;
94120 
94121    ------------------------------------------------------------------------------------
94122    -- 4219869 Business Flow
94123    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
94124    ------------------------------------------------------------------------------------
94125    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94126 
94127    ----------------------------------------------------------------------------------
94128    -- 4219869 Business Flow
94129    -- Update journal entry status -- Need to generate this within IF <condition>
94130    ----------------------------------------------------------------------------------
94131    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94132          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
94133          ,p_balance_type_code => l_balance_type_code
94134          );
94135 
94136    -------------------------------------------------------------------------------------------
94137    -- 4262811 - Generate the Accrual Reversal lines
94138    -------------------------------------------------------------------------------------------
94139    BEGIN
94140       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
94141                               (g_array_event(p_event_id).array_value_num('header_index'));
94142       IF l_acc_rev_flag IS NULL THEN
94143          l_acc_rev_flag := 'N';
94144       END IF;
94145    EXCEPTION
94146       WHEN OTHERS THEN
94147          l_acc_rev_flag := 'N';
94148    END;
94149    --
94150    IF (l_acc_rev_flag = 'Y') THEN
94151 
94152        -- 4645092  ------------------------------------------------------------------------------
94153        -- To allow MPA report to determine if it should generate report process
94154        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
94155        ------------------------------------------------------------------------------------------
94156 
94157        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
94158        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
94159    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
94160    -- call ADRs
94161    -- Bug 4922099
94162    --
94163    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94164         (NVL(l_actual_upg_option, 'N') = 'O') OR
94165         (NVL(l_enc_upg_option, 'N') = 'O')
94166       )
94167    THEN
94168    NULL;
94169    --
94170    --
94171    
94172   l_ccid := AcctDerRule_4(
94173            p_application_id           => p_application_id
94174          , p_ae_header_id             => l_ae_header_id 
94175 , p_source_4 => p_source_4
94176          , x_transaction_coa_id       => l_adr_transaction_coa_id
94177          , x_accounting_coa_id        => l_adr_accounting_coa_id
94178          , x_value_type_code          => l_adr_value_type_code
94179          , p_side                     => 'NA'
94180    );
94181 
94182    xla_ae_lines_pkg.set_ccid(
94183     p_code_combination_id          => l_ccid
94184   , p_value_type_code              => l_adr_value_type_code
94185   , p_transaction_coa_id           => l_adr_transaction_coa_id
94186   , p_accounting_coa_id            => l_adr_accounting_coa_id
94187   , p_adr_code                     => 'CST_DEFAULT'
94188   , p_adr_type_code                => 'S'
94189   , p_component_type               => l_component_type
94190   , p_component_code               => l_component_code
94191   , p_component_type_code          => l_component_type_code
94192   , p_component_appl_id            => l_component_appl_id
94193   , p_amb_context_code             => l_amb_context_code
94194   , p_side                         => 'NA'
94195   );
94196 
94197 
94198    --
94199    --
94200    END IF;
94201 
94202        --
94203        -- Update the line information that should be overwritten
94204        --
94205        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
94206                                          p_header_num   => 1);
94207        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
94208 
94209        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
94210 
94211        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
94212           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
94213        END IF;
94214 
94215       --
94216       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
94217       --
94218       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
94219           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
94220       ELSE
94221           ---------------------------------------------------------------------------------------------------
94222           -- 4262811a Switch Sign
94223           ---------------------------------------------------------------------------------------------------
94224           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
94225           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94226                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94227           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94228                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94229           -- 5132302
94230           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
94231                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94232 
94233       END IF;
94234 
94235       -- 4955764
94236       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94237       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
94238 
94239 
94240       XLA_AE_LINES_PKG.ValidateCurrentLine;
94241       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94242 
94243       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94244                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
94245                ,p_balance_type_code => l_balance_type_code);
94246 
94247    END IF;
94248 
94249    -----------------------------------------------------------------------------------------
94250    -- 4262811 Multiperiod Accounting
94251    -----------------------------------------------------------------------------------------
94252      -- No MPA option is assigned.
94253 
94254 
94255 END IF;
94256 END IF;
94257 --
94258 
94259 --
94260 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94261    trace
94262       (p_msg      => 'END of AcctLineType_171'
94263       ,p_level    => C_LEVEL_PROCEDURE
94264       ,p_module   => l_log_module);
94265 END IF;
94266 --
94267 EXCEPTION
94268   WHEN xla_exceptions_pkg.application_exception THEN
94269       RAISE;
94270   WHEN OTHERS THEN
94271        xla_exceptions_pkg.raise_message
94272            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_171');
94273 END AcctLineType_171;
94274 --
94275 
94276 ---------------------------------------
94277 --
94278 -- PRIVATE FUNCTION
94279 --         AcctLineType_172
94280 --
94281 ---------------------------------------
94282 PROCEDURE AcctLineType_172 (
94283   p_application_id        IN NUMBER
94284  ,p_event_id              IN NUMBER
94285  ,p_calculate_acctd_flag  IN VARCHAR2
94286  ,p_calculate_g_l_flag    IN VARCHAR2
94287  ,p_actual_flag           IN OUT VARCHAR2
94288  ,p_balance_type_code     OUT VARCHAR2
94289  ,p_gain_or_loss_ref      OUT VARCHAR2
94290  
94291 --Cost Management Default Account
94292  , p_source_4            IN NUMBER
94293 --DISTRIBUTION_IDENTIFIER
94294  , p_source_11            IN NUMBER
94295 --Distribution Type
94296  , p_source_12            IN VARCHAR2
94297  , p_source_12_meaning    IN VARCHAR2
94298 --Entered Currency Code
94299  , p_source_15            IN VARCHAR2
94300 --Entered Amount
94301  , p_source_18            IN NUMBER
94302 --Currency Conversion Date
94303  , p_source_19            IN DATE
94304 --Currency Conversion Rate
94305  , p_source_20            IN NUMBER
94306 --Currency Conversion Type
94307  , p_source_21            IN VARCHAR2
94308 --Accounted Amount
94309  , p_source_22            IN NUMBER
94310 --Accounting Line Type
94311  , p_source_24            IN NUMBER
94312 )
94313 IS
94314 
94315 l_component_type              VARCHAR2(80);
94316 l_component_code              VARCHAR2(30);
94317 l_component_type_code         VARCHAR2(1);
94318 l_component_appl_id           INTEGER;
94319 l_amb_context_code            VARCHAR2(30);
94320 l_entity_code                 VARCHAR2(30);
94321 l_event_class_code            VARCHAR2(30);
94322 l_ae_header_id                NUMBER;
94323 l_event_type_code             VARCHAR2(30);
94324 l_line_definition_code        VARCHAR2(30);
94325 l_line_definition_owner_code  VARCHAR2(1);
94326 --
94327 -- adr variables
94328 l_segment                     VARCHAR2(30);
94329 l_ccid                        NUMBER;
94330 l_adr_transaction_coa_id      NUMBER;
94331 l_adr_accounting_coa_id       NUMBER;
94332 l_adr_flexfield_segment_code  VARCHAR2(30);
94333 l_adr_flex_value_set_id       NUMBER;
94334 l_adr_value_type_code         VARCHAR2(30);
94335 l_adr_value_combination_id    NUMBER;
94336 l_adr_value_segment_code      VARCHAR2(30);
94337 
94338 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
94339 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
94340 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
94341 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
94342 
94343 -- 4262811 Variables ------------------------------------------------------------------------------------------
94344 l_entered_amt_idx             NUMBER;
94345 l_accted_amt_idx              NUMBER;
94346 l_acc_rev_flag                VARCHAR2(1);
94347 l_accrual_line_num            NUMBER;
94348 l_tmp_amt                     NUMBER;
94349 l_acc_rev_natural_side_code   VARCHAR2(1);
94350 
94351 l_num_entries                 NUMBER;
94352 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
94353 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
94354 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
94355 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
94356 l_recog_line_1                NUMBER;
94357 l_recog_line_2                NUMBER;
94358 
94359 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
94360 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
94361 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
94362 
94363 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
94364 
94365 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
94366 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
94367 
94368 ---------------------------------------------------------------------------------------------------------------
94369 
94370 
94371 --
94372 -- bulk performance
94373 --
94374 l_balance_type_code           VARCHAR2(1);
94375 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
94376 l_log_module                  VARCHAR2(240);
94377 
94378 --
94379 -- Upgrade strategy
94380 --
94381 l_actual_upg_option           VARCHAR2(1);
94382 l_enc_upg_option           VARCHAR2(1);
94383 
94384 --
94385 BEGIN
94386 --
94387 IF g_log_enabled THEN
94388       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_172';
94389 END IF;
94390 --
94391 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94392 
94393       trace
94394          (p_msg      => 'BEGIN of AcctLineType_172'
94395          ,p_level    => C_LEVEL_PROCEDURE
94396          ,p_module   => l_log_module);
94397 
94398 END IF;
94399 --
94400 l_component_type             := 'AMB_JLT';
94401 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
94402 l_component_type_code        := 'S';
94403 l_component_appl_id          :=  707;
94404 l_amb_context_code           := 'DEFAULT';
94405 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
94406 l_event_class_code           := 'USER_DEFINE';
94407 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
94408 l_line_definition_owner_code := 'S';
94409 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
94410 --
94411 l_balance_type_code          := 'A';
94412 l_segment                     := NULL;
94413 l_ccid                        := NULL;
94414 l_adr_transaction_coa_id      := NULL;
94415 l_adr_accounting_coa_id       := NULL;
94416 l_adr_flexfield_segment_code  := NULL;
94417 l_adr_flex_value_set_id       := NULL;
94418 l_adr_value_type_code         := NULL;
94419 l_adr_value_combination_id    := NULL;
94420 l_adr_value_segment_code      := NULL;
94421 
94422 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
94423 l_bflow_class_code           := '';    -- 4219869 Business Flow
94424 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
94425 l_budgetary_control_flag     := 'N';
94426 
94427 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
94428 l_bflow_applied_to_amt       := NULL; -- 5132302
94429 l_entered_amt_idx            := NULL;          -- 4262811
94430 l_accted_amt_idx             := NULL;          -- 4262811
94431 l_acc_rev_flag               := NULL;          -- 4262811
94432 l_accrual_line_num           := NULL;          -- 4262811
94433 l_tmp_amt                    := NULL;          -- 4262811
94434 --
94435  
94436 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
94437     l_balance_type_code <> 'B' THEN
94438 IF NVL(p_source_24,9E125) =  3
94439  THEN 
94440 
94441    --
94442    XLA_AE_LINES_PKG.SetNewLine;
94443 
94444    p_balance_type_code          := l_balance_type_code;
94445    -- set the flag so later we will know whether the gain loss line needs to be created
94446    
94447    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
94448      p_actual_flag :='A';
94449    END IF;
94450 
94451    --
94452    -- bulk performance
94453    --
94454    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
94455                                       p_header_num   => 0); -- 4262811
94456    --
94457    -- set accounting line options
94458    --
94459    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
94460            p_natural_side_code          => 'D'
94461          , p_gain_or_loss_flag          => 'N'
94462          , p_gl_transfer_mode_code      => 'S'
94463          , p_acct_entry_type_code       => 'A'
94464          , p_switch_side_flag           => 'Y'
94465          , p_merge_duplicate_code       => 'N'
94466          );
94467    --
94468    l_acc_rev_natural_side_code := 'C';  -- 4262811
94469    -- 
94470    --
94471    -- set accounting line type info
94472    --
94473    xla_ae_lines_pkg.SetAcctLineType
94474       (p_component_type             => l_component_type
94475       ,p_event_type_code            => l_event_type_code
94476       ,p_line_definition_owner_code => l_line_definition_owner_code
94477       ,p_line_definition_code       => l_line_definition_code
94478       ,p_accounting_line_code       => l_component_code
94479       ,p_accounting_line_type_code  => l_component_type_code
94480       ,p_accounting_line_appl_id    => l_component_appl_id
94481       ,p_amb_context_code           => l_amb_context_code
94482       ,p_entity_code                => l_entity_code
94483       ,p_event_class_code           => l_event_class_code);
94484    --
94485    -- set accounting class
94486    --
94487    xla_ae_lines_pkg.SetAcctClass(
94488            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
94489          , p_ae_header_id           => l_ae_header_id
94490          );
94491 
94492    --
94493    -- set rounding class
94494    --
94495    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
94496                       'MATERIAL_OVERHEAD_ABSORPTION';
94497 
94498    --
94499    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
94500    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
94501    --
94502    -- bulk performance
94503    --
94504    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
94505 
94506    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
94507       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
94508 
94509    -- 4955764
94510    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94511       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
94512 
94513    -- 4458381 Public Sector Enh
94514    
94515    --
94516    -- set accounting attributes for the line type
94517    --
94518    l_entered_amt_idx := 3;
94519    l_accted_amt_idx  := 8;
94520    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
94521    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
94522    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
94523    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
94524    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
94525    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
94526    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
94527    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
94528    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
94529    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
94530    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
94531    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
94532    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
94533    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
94534    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
94535    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
94536    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
94537 
94538    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
94539    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
94540 
94541    ---------------------------------------------------------------------------------------------------------------
94542    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
94543    ---------------------------------------------------------------------------------------------------------------
94544    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
94545 
94546    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94547    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94548 
94549    IF xla_accounting_cache_pkg.GetValueChar
94550          (p_source_code         => 'LEDGER_CATEGORY_CODE'
94551          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
94552    AND l_bflow_method_code = 'PRIOR_ENTRY'
94553 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
94554    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
94555          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
94556        )
94557    THEN
94558          xla_ae_lines_pkg.BflowUpgEntry
94559            (p_business_method_code    => l_bflow_method_code
94560            ,p_business_class_code     => l_bflow_class_code
94561            ,p_balance_type            => l_balance_type_code);
94562    ELSE
94563       NULL;
94564 -- No business flow processing for business flow method of NONE.
94565    END IF;
94566 
94567    --
94568    -- call analytical criteria
94569    --
94570    
94571    --
94572    -- call description
94573    --
94574    -- No description or it is inherited.
94575    --
94576    -- call ADRs
94577    -- Bug 4922099
94578    --
94579    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94580         (NVL(l_actual_upg_option, 'N') = 'O') OR
94581         (NVL(l_enc_upg_option, 'N') = 'O')
94582       )
94583    THEN
94584    NULL;
94585    --
94586    --
94587    
94588   l_ccid := AcctDerRule_4(
94589            p_application_id           => p_application_id
94590          , p_ae_header_id             => l_ae_header_id 
94591 , p_source_4 => p_source_4
94592          , x_transaction_coa_id       => l_adr_transaction_coa_id
94593          , x_accounting_coa_id        => l_adr_accounting_coa_id
94594          , x_value_type_code          => l_adr_value_type_code
94595          , p_side                     => 'NA'
94596    );
94597 
94598    xla_ae_lines_pkg.set_ccid(
94599     p_code_combination_id          => l_ccid
94600   , p_value_type_code              => l_adr_value_type_code
94601   , p_transaction_coa_id           => l_adr_transaction_coa_id
94602   , p_accounting_coa_id            => l_adr_accounting_coa_id
94603   , p_adr_code                     => 'CST_DEFAULT'
94604   , p_adr_type_code                => 'S'
94605   , p_component_type               => l_component_type
94606   , p_component_code               => l_component_code
94607   , p_component_type_code          => l_component_type_code
94608   , p_component_appl_id            => l_component_appl_id
94609   , p_amb_context_code             => l_amb_context_code
94610   , p_side                         => 'NA'
94611   );
94612 
94613 
94614    --
94615    --
94616    END IF;
94617    --
94618    -- Bug 4922099
94619    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
94620           (NVL(l_enc_upg_option, 'N') = 'O')
94621         ) AND
94622         (l_bflow_method_code = 'PRIOR_ENTRY')
94623       )
94624    THEN
94625       IF
94626       --
94627       1 = 2
94628       --
94629       THEN
94630       xla_accounting_err_pkg.build_message
94631                                     (p_appli_s_name            => 'XLA'
94632                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94633                                     ,p_token_1                 => 'LINE_NUMBER'
94634                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
94635                                     ,p_token_2                 => 'LINE_TYPE_NAME'
94636                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
94637                                                                              l_component_type
94638                                                                             ,l_component_code
94639                                                                             ,l_component_type_code
94640                                                                             ,l_component_appl_id
94641                                                                             ,l_amb_context_code
94642                                                                             ,l_entity_code
94643                                                                             ,l_event_class_code
94644                                                                            )
94645                                     ,p_token_3                 => 'OWNER'
94646                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
94647                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
94648                                                                           ,p_lookup_code    => l_component_type_code
94649                                                                          )
94650                                     ,p_token_4                 => 'PRODUCT_NAME'
94651                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
94652                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
94653                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
94654                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
94655                                     ,p_ae_header_id            =>  NULL
94656                                        );
94657 
94658         IF (C_LEVEL_ERROR>= g_log_level) THEN
94659                  trace
94660                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94661                       ,p_level    => C_LEVEL_ERROR
94662                       ,p_module   => l_log_module);
94663         END IF;
94664       END IF;
94665    END IF;
94666    --
94667    --
94668    ------------------------------------------------------------------------------------------------
94669    -- 4219869 Business Flow
94670    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
94671    -- Prior Entry.  Currently, the following code is always generated.
94672    ------------------------------------------------------------------------------------------------
94673    XLA_AE_LINES_PKG.ValidateCurrentLine;
94674 
94675    ------------------------------------------------------------------------------------
94676    -- 4219869 Business Flow
94677    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
94678    ------------------------------------------------------------------------------------
94679    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94680 
94681    ----------------------------------------------------------------------------------
94682    -- 4219869 Business Flow
94683    -- Update journal entry status -- Need to generate this within IF <condition>
94684    ----------------------------------------------------------------------------------
94685    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94686          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
94687          ,p_balance_type_code => l_balance_type_code
94688          );
94689 
94690    -------------------------------------------------------------------------------------------
94691    -- 4262811 - Generate the Accrual Reversal lines
94692    -------------------------------------------------------------------------------------------
94693    BEGIN
94694       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
94695                               (g_array_event(p_event_id).array_value_num('header_index'));
94696       IF l_acc_rev_flag IS NULL THEN
94697          l_acc_rev_flag := 'N';
94698       END IF;
94699    EXCEPTION
94700       WHEN OTHERS THEN
94701          l_acc_rev_flag := 'N';
94702    END;
94703    --
94704    IF (l_acc_rev_flag = 'Y') THEN
94705 
94706        -- 4645092  ------------------------------------------------------------------------------
94707        -- To allow MPA report to determine if it should generate report process
94708        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
94709        ------------------------------------------------------------------------------------------
94710 
94711        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
94712        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
94713    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
94714    -- call ADRs
94715    -- Bug 4922099
94716    --
94717    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94718         (NVL(l_actual_upg_option, 'N') = 'O') OR
94719         (NVL(l_enc_upg_option, 'N') = 'O')
94720       )
94721    THEN
94722    NULL;
94723    --
94724    --
94725    
94726   l_ccid := AcctDerRule_4(
94727            p_application_id           => p_application_id
94728          , p_ae_header_id             => l_ae_header_id 
94729 , p_source_4 => p_source_4
94730          , x_transaction_coa_id       => l_adr_transaction_coa_id
94731          , x_accounting_coa_id        => l_adr_accounting_coa_id
94732          , x_value_type_code          => l_adr_value_type_code
94733          , p_side                     => 'NA'
94734    );
94735 
94736    xla_ae_lines_pkg.set_ccid(
94737     p_code_combination_id          => l_ccid
94738   , p_value_type_code              => l_adr_value_type_code
94739   , p_transaction_coa_id           => l_adr_transaction_coa_id
94740   , p_accounting_coa_id            => l_adr_accounting_coa_id
94741   , p_adr_code                     => 'CST_DEFAULT'
94742   , p_adr_type_code                => 'S'
94743   , p_component_type               => l_component_type
94744   , p_component_code               => l_component_code
94745   , p_component_type_code          => l_component_type_code
94746   , p_component_appl_id            => l_component_appl_id
94747   , p_amb_context_code             => l_amb_context_code
94748   , p_side                         => 'NA'
94749   );
94750 
94751 
94752    --
94753    --
94754    END IF;
94755 
94756        --
94757        -- Update the line information that should be overwritten
94758        --
94759        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
94760                                          p_header_num   => 1);
94761        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
94762 
94763        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
94764 
94765        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
94766           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
94767        END IF;
94768 
94769       --
94770       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
94771       --
94772       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
94773           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
94774       ELSE
94775           ---------------------------------------------------------------------------------------------------
94776           -- 4262811a Switch Sign
94777           ---------------------------------------------------------------------------------------------------
94778           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
94779           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94780                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94781           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94782                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94783           -- 5132302
94784           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
94785                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94786 
94787       END IF;
94788 
94789       -- 4955764
94790       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94791       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
94792 
94793 
94794       XLA_AE_LINES_PKG.ValidateCurrentLine;
94795       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94796 
94797       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94798                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
94799                ,p_balance_type_code => l_balance_type_code);
94800 
94801    END IF;
94802 
94803    -----------------------------------------------------------------------------------------
94804    -- 4262811 Multiperiod Accounting
94805    -----------------------------------------------------------------------------------------
94806      -- No MPA option is assigned.
94807 
94808 
94809 END IF;
94810 END IF;
94811 --
94812 
94813 --
94814 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94815    trace
94816       (p_msg      => 'END of AcctLineType_172'
94817       ,p_level    => C_LEVEL_PROCEDURE
94818       ,p_module   => l_log_module);
94819 END IF;
94820 --
94821 EXCEPTION
94822   WHEN xla_exceptions_pkg.application_exception THEN
94823       RAISE;
94824   WHEN OTHERS THEN
94825        xla_exceptions_pkg.raise_message
94826            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_172');
94827 END AcctLineType_172;
94828 --
94829 
94830 ---------------------------------------
94831 --
94832 -- PRIVATE FUNCTION
94833 --         AcctLineType_173
94834 --
94835 ---------------------------------------
94836 PROCEDURE AcctLineType_173 (
94837   p_application_id        IN NUMBER
94838  ,p_event_id              IN NUMBER
94839  ,p_calculate_acctd_flag  IN VARCHAR2
94840  ,p_calculate_g_l_flag    IN VARCHAR2
94841  ,p_actual_flag           IN OUT VARCHAR2
94842  ,p_balance_type_code     OUT VARCHAR2
94843  ,p_gain_or_loss_ref      OUT VARCHAR2
94844  
94845 --Cost Management Default Account
94846  , p_source_4            IN NUMBER
94847 --DISTRIBUTION_IDENTIFIER
94848  , p_source_11            IN NUMBER
94849 --Distribution Type
94850  , p_source_12            IN VARCHAR2
94851  , p_source_12_meaning    IN VARCHAR2
94852 --Entered Currency Code
94853  , p_source_15            IN VARCHAR2
94854 --Entered Amount
94855  , p_source_18            IN NUMBER
94856 --Currency Conversion Date
94857  , p_source_19            IN DATE
94858 --Currency Conversion Rate
94859  , p_source_20            IN NUMBER
94860 --Currency Conversion Type
94861  , p_source_21            IN VARCHAR2
94862 --Accounted Amount
94863  , p_source_22            IN NUMBER
94864 --Accounting Line Type
94865  , p_source_24            IN NUMBER
94866 )
94867 IS
94868 
94869 l_component_type              VARCHAR2(80);
94870 l_component_code              VARCHAR2(30);
94871 l_component_type_code         VARCHAR2(1);
94872 l_component_appl_id           INTEGER;
94873 l_amb_context_code            VARCHAR2(30);
94874 l_entity_code                 VARCHAR2(30);
94875 l_event_class_code            VARCHAR2(30);
94876 l_ae_header_id                NUMBER;
94877 l_event_type_code             VARCHAR2(30);
94878 l_line_definition_code        VARCHAR2(30);
94879 l_line_definition_owner_code  VARCHAR2(1);
94880 --
94881 -- adr variables
94882 l_segment                     VARCHAR2(30);
94883 l_ccid                        NUMBER;
94884 l_adr_transaction_coa_id      NUMBER;
94885 l_adr_accounting_coa_id       NUMBER;
94886 l_adr_flexfield_segment_code  VARCHAR2(30);
94887 l_adr_flex_value_set_id       NUMBER;
94888 l_adr_value_type_code         VARCHAR2(30);
94889 l_adr_value_combination_id    NUMBER;
94890 l_adr_value_segment_code      VARCHAR2(30);
94891 
94892 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
94893 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
94894 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
94895 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
94896 
94897 -- 4262811 Variables ------------------------------------------------------------------------------------------
94898 l_entered_amt_idx             NUMBER;
94899 l_accted_amt_idx              NUMBER;
94900 l_acc_rev_flag                VARCHAR2(1);
94901 l_accrual_line_num            NUMBER;
94902 l_tmp_amt                     NUMBER;
94903 l_acc_rev_natural_side_code   VARCHAR2(1);
94904 
94905 l_num_entries                 NUMBER;
94906 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
94907 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
94908 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
94909 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
94910 l_recog_line_1                NUMBER;
94911 l_recog_line_2                NUMBER;
94912 
94913 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
94914 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
94915 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
94916 
94917 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
94918 
94919 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
94920 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
94921 
94922 ---------------------------------------------------------------------------------------------------------------
94923 
94924 
94925 --
94926 -- bulk performance
94927 --
94928 l_balance_type_code           VARCHAR2(1);
94929 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
94930 l_log_module                  VARCHAR2(240);
94931 
94932 --
94933 -- Upgrade strategy
94934 --
94935 l_actual_upg_option           VARCHAR2(1);
94936 l_enc_upg_option           VARCHAR2(1);
94937 
94938 --
94939 BEGIN
94940 --
94941 IF g_log_enabled THEN
94942       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_173';
94943 END IF;
94944 --
94945 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94946 
94947       trace
94948          (p_msg      => 'BEGIN of AcctLineType_173'
94949          ,p_level    => C_LEVEL_PROCEDURE
94950          ,p_module   => l_log_module);
94951 
94952 END IF;
94953 --
94954 l_component_type             := 'AMB_JLT';
94955 l_component_code             := 'OFFSET';
94956 l_component_type_code        := 'S';
94957 l_component_appl_id          :=  707;
94958 l_amb_context_code           := 'DEFAULT';
94959 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
94960 l_event_class_code           := 'USER_DEFINE';
94961 l_event_type_code            := 'UCG_TXFR';
94962 l_line_definition_owner_code := 'S';
94963 l_line_definition_code       := 'USER_CG_TXFR';
94964 --
94965 l_balance_type_code          := 'A';
94966 l_segment                     := NULL;
94967 l_ccid                        := NULL;
94968 l_adr_transaction_coa_id      := NULL;
94969 l_adr_accounting_coa_id       := NULL;
94970 l_adr_flexfield_segment_code  := NULL;
94971 l_adr_flex_value_set_id       := NULL;
94972 l_adr_value_type_code         := NULL;
94973 l_adr_value_combination_id    := NULL;
94974 l_adr_value_segment_code      := NULL;
94975 
94976 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
94977 l_bflow_class_code           := '';    -- 4219869 Business Flow
94978 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
94979 l_budgetary_control_flag     := 'N';
94980 
94981 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
94982 l_bflow_applied_to_amt       := NULL; -- 5132302
94983 l_entered_amt_idx            := NULL;          -- 4262811
94984 l_accted_amt_idx             := NULL;          -- 4262811
94985 l_acc_rev_flag               := NULL;          -- 4262811
94986 l_accrual_line_num           := NULL;          -- 4262811
94987 l_tmp_amt                    := NULL;          -- 4262811
94988 --
94989  
94990 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
94991     l_balance_type_code <> 'B' THEN
94992 IF NVL(p_source_24,9E125) =  2
94993  THEN 
94994 
94995    --
94996    XLA_AE_LINES_PKG.SetNewLine;
94997 
94998    p_balance_type_code          := l_balance_type_code;
94999    -- set the flag so later we will know whether the gain loss line needs to be created
95000    
95001    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
95002      p_actual_flag :='A';
95003    END IF;
95004 
95005    --
95006    -- bulk performance
95007    --
95008    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
95009                                       p_header_num   => 0); -- 4262811
95010    --
95011    -- set accounting line options
95012    --
95013    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
95014            p_natural_side_code          => 'D'
95015          , p_gain_or_loss_flag          => 'N'
95016          , p_gl_transfer_mode_code      => 'S'
95017          , p_acct_entry_type_code       => 'A'
95018          , p_switch_side_flag           => 'Y'
95019          , p_merge_duplicate_code       => 'N'
95020          );
95021    --
95022    l_acc_rev_natural_side_code := 'C';  -- 4262811
95023    -- 
95024    --
95025    -- set accounting line type info
95026    --
95027    xla_ae_lines_pkg.SetAcctLineType
95028       (p_component_type             => l_component_type
95029       ,p_event_type_code            => l_event_type_code
95030       ,p_line_definition_owner_code => l_line_definition_owner_code
95031       ,p_line_definition_code       => l_line_definition_code
95032       ,p_accounting_line_code       => l_component_code
95033       ,p_accounting_line_type_code  => l_component_type_code
95034       ,p_accounting_line_appl_id    => l_component_appl_id
95035       ,p_amb_context_code           => l_amb_context_code
95036       ,p_entity_code                => l_entity_code
95037       ,p_event_class_code           => l_event_class_code);
95038    --
95039    -- set accounting class
95040    --
95041    xla_ae_lines_pkg.SetAcctClass(
95042            p_accounting_class_code  => 'OFFSET'
95043          , p_ae_header_id           => l_ae_header_id
95044          );
95045 
95046    --
95047    -- set rounding class
95048    --
95049    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
95050                       'OFFSET';
95051 
95052    --
95053    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
95054    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
95055    --
95056    -- bulk performance
95057    --
95058    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
95059 
95060    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
95061       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
95062 
95063    -- 4955764
95064    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95065       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
95066 
95067    -- 4458381 Public Sector Enh
95068    
95069    --
95070    -- set accounting attributes for the line type
95071    --
95072    l_entered_amt_idx := 3;
95073    l_accted_amt_idx  := 8;
95074    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
95075    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
95076    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
95077    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
95078    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
95079    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
95080    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
95081    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
95082    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
95083    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
95084    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
95085    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
95086    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
95087    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
95088    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
95089    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
95090    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
95091 
95092    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
95093    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
95094 
95095    ---------------------------------------------------------------------------------------------------------------
95096    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
95097    ---------------------------------------------------------------------------------------------------------------
95098    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
95099 
95100    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95101    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95102 
95103    IF xla_accounting_cache_pkg.GetValueChar
95104          (p_source_code         => 'LEDGER_CATEGORY_CODE'
95105          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
95106    AND l_bflow_method_code = 'PRIOR_ENTRY'
95107 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
95108    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
95109          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
95110        )
95111    THEN
95112          xla_ae_lines_pkg.BflowUpgEntry
95113            (p_business_method_code    => l_bflow_method_code
95114            ,p_business_class_code     => l_bflow_class_code
95115            ,p_balance_type            => l_balance_type_code);
95116    ELSE
95117       NULL;
95118 -- No business flow processing for business flow method of NONE.
95119    END IF;
95120 
95121    --
95122    -- call analytical criteria
95123    --
95124    
95125    --
95126    -- call description
95127    --
95128    -- No description or it is inherited.
95129    --
95130    -- call ADRs
95131    -- Bug 4922099
95132    --
95133    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95134         (NVL(l_actual_upg_option, 'N') = 'O') OR
95135         (NVL(l_enc_upg_option, 'N') = 'O')
95136       )
95137    THEN
95138    NULL;
95139    --
95140    --
95141    
95142   l_ccid := AcctDerRule_4(
95143            p_application_id           => p_application_id
95144          , p_ae_header_id             => l_ae_header_id 
95145 , p_source_4 => p_source_4
95146          , x_transaction_coa_id       => l_adr_transaction_coa_id
95147          , x_accounting_coa_id        => l_adr_accounting_coa_id
95148          , x_value_type_code          => l_adr_value_type_code
95149          , p_side                     => 'NA'
95150    );
95151 
95152    xla_ae_lines_pkg.set_ccid(
95153     p_code_combination_id          => l_ccid
95154   , p_value_type_code              => l_adr_value_type_code
95155   , p_transaction_coa_id           => l_adr_transaction_coa_id
95156   , p_accounting_coa_id            => l_adr_accounting_coa_id
95157   , p_adr_code                     => 'CST_DEFAULT'
95158   , p_adr_type_code                => 'S'
95159   , p_component_type               => l_component_type
95160   , p_component_code               => l_component_code
95161   , p_component_type_code          => l_component_type_code
95162   , p_component_appl_id            => l_component_appl_id
95163   , p_amb_context_code             => l_amb_context_code
95164   , p_side                         => 'NA'
95165   );
95166 
95167 
95168    --
95169    --
95170    END IF;
95171    --
95172    -- Bug 4922099
95173    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
95174           (NVL(l_enc_upg_option, 'N') = 'O')
95175         ) AND
95176         (l_bflow_method_code = 'PRIOR_ENTRY')
95177       )
95178    THEN
95179       IF
95180       --
95181       1 = 2
95182       --
95183       THEN
95184       xla_accounting_err_pkg.build_message
95185                                     (p_appli_s_name            => 'XLA'
95186                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95187                                     ,p_token_1                 => 'LINE_NUMBER'
95188                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
95189                                     ,p_token_2                 => 'LINE_TYPE_NAME'
95190                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
95191                                                                              l_component_type
95192                                                                             ,l_component_code
95193                                                                             ,l_component_type_code
95194                                                                             ,l_component_appl_id
95195                                                                             ,l_amb_context_code
95196                                                                             ,l_entity_code
95197                                                                             ,l_event_class_code
95198                                                                            )
95199                                     ,p_token_3                 => 'OWNER'
95200                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
95201                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
95202                                                                           ,p_lookup_code    => l_component_type_code
95203                                                                          )
95204                                     ,p_token_4                 => 'PRODUCT_NAME'
95205                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
95206                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
95207                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
95208                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
95209                                     ,p_ae_header_id            =>  NULL
95210                                        );
95211 
95212         IF (C_LEVEL_ERROR>= g_log_level) THEN
95213                  trace
95214                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95215                       ,p_level    => C_LEVEL_ERROR
95216                       ,p_module   => l_log_module);
95217         END IF;
95218       END IF;
95219    END IF;
95220    --
95221    --
95222    ------------------------------------------------------------------------------------------------
95223    -- 4219869 Business Flow
95224    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
95225    -- Prior Entry.  Currently, the following code is always generated.
95226    ------------------------------------------------------------------------------------------------
95227    XLA_AE_LINES_PKG.ValidateCurrentLine;
95228 
95229    ------------------------------------------------------------------------------------
95230    -- 4219869 Business Flow
95231    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
95232    ------------------------------------------------------------------------------------
95233    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95234 
95235    ----------------------------------------------------------------------------------
95236    -- 4219869 Business Flow
95237    -- Update journal entry status -- Need to generate this within IF <condition>
95238    ----------------------------------------------------------------------------------
95239    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95240          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
95241          ,p_balance_type_code => l_balance_type_code
95242          );
95243 
95244    -------------------------------------------------------------------------------------------
95245    -- 4262811 - Generate the Accrual Reversal lines
95246    -------------------------------------------------------------------------------------------
95247    BEGIN
95248       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
95249                               (g_array_event(p_event_id).array_value_num('header_index'));
95250       IF l_acc_rev_flag IS NULL THEN
95251          l_acc_rev_flag := 'N';
95252       END IF;
95253    EXCEPTION
95254       WHEN OTHERS THEN
95255          l_acc_rev_flag := 'N';
95256    END;
95257    --
95258    IF (l_acc_rev_flag = 'Y') THEN
95259 
95260        -- 4645092  ------------------------------------------------------------------------------
95261        -- To allow MPA report to determine if it should generate report process
95262        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
95263        ------------------------------------------------------------------------------------------
95264 
95265        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
95266        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
95267    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
95268    -- call ADRs
95269    -- Bug 4922099
95270    --
95271    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95272         (NVL(l_actual_upg_option, 'N') = 'O') OR
95273         (NVL(l_enc_upg_option, 'N') = 'O')
95274       )
95275    THEN
95276    NULL;
95277    --
95278    --
95279    
95280   l_ccid := AcctDerRule_4(
95281            p_application_id           => p_application_id
95282          , p_ae_header_id             => l_ae_header_id 
95283 , p_source_4 => p_source_4
95284          , x_transaction_coa_id       => l_adr_transaction_coa_id
95285          , x_accounting_coa_id        => l_adr_accounting_coa_id
95286          , x_value_type_code          => l_adr_value_type_code
95287          , p_side                     => 'NA'
95288    );
95289 
95290    xla_ae_lines_pkg.set_ccid(
95291     p_code_combination_id          => l_ccid
95292   , p_value_type_code              => l_adr_value_type_code
95293   , p_transaction_coa_id           => l_adr_transaction_coa_id
95294   , p_accounting_coa_id            => l_adr_accounting_coa_id
95295   , p_adr_code                     => 'CST_DEFAULT'
95296   , p_adr_type_code                => 'S'
95297   , p_component_type               => l_component_type
95298   , p_component_code               => l_component_code
95299   , p_component_type_code          => l_component_type_code
95300   , p_component_appl_id            => l_component_appl_id
95301   , p_amb_context_code             => l_amb_context_code
95302   , p_side                         => 'NA'
95303   );
95304 
95305 
95306    --
95307    --
95308    END IF;
95309 
95310        --
95311        -- Update the line information that should be overwritten
95312        --
95313        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
95314                                          p_header_num   => 1);
95315        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
95316 
95317        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
95318 
95319        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
95320           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
95321        END IF;
95322 
95323       --
95324       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
95325       --
95326       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
95327           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
95328       ELSE
95329           ---------------------------------------------------------------------------------------------------
95330           -- 4262811a Switch Sign
95331           ---------------------------------------------------------------------------------------------------
95332           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
95333           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95334                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95335           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95336                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95337           -- 5132302
95338           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
95339                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95340 
95341       END IF;
95342 
95343       -- 4955764
95344       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95345       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
95346 
95347 
95348       XLA_AE_LINES_PKG.ValidateCurrentLine;
95349       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95350 
95351       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95352                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
95353                ,p_balance_type_code => l_balance_type_code);
95354 
95355    END IF;
95356 
95357    -----------------------------------------------------------------------------------------
95358    -- 4262811 Multiperiod Accounting
95359    -----------------------------------------------------------------------------------------
95360      -- No MPA option is assigned.
95361 
95362 
95363 END IF;
95364 END IF;
95365 --
95366 
95367 --
95368 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95369    trace
95370       (p_msg      => 'END of AcctLineType_173'
95371       ,p_level    => C_LEVEL_PROCEDURE
95372       ,p_module   => l_log_module);
95373 END IF;
95374 --
95375 EXCEPTION
95376   WHEN xla_exceptions_pkg.application_exception THEN
95377       RAISE;
95378   WHEN OTHERS THEN
95379        xla_exceptions_pkg.raise_message
95380            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_173');
95381 END AcctLineType_173;
95382 --
95383 
95384 ---------------------------------------
95385 --
95386 -- PRIVATE FUNCTION
95387 --         AcctLineType_174
95388 --
95389 ---------------------------------------
95390 PROCEDURE AcctLineType_174 (
95391   p_application_id        IN NUMBER
95392  ,p_event_id              IN NUMBER
95393  ,p_calculate_acctd_flag  IN VARCHAR2
95394  ,p_calculate_g_l_flag    IN VARCHAR2
95395  ,p_actual_flag           IN OUT VARCHAR2
95396  ,p_balance_type_code     OUT VARCHAR2
95397  ,p_gain_or_loss_ref      OUT VARCHAR2
95398  
95399 --Cost Management Default Account
95400  , p_source_4            IN NUMBER
95401 --DISTRIBUTION_IDENTIFIER
95402  , p_source_11            IN NUMBER
95403 --Distribution Type
95404  , p_source_12            IN VARCHAR2
95405  , p_source_12_meaning    IN VARCHAR2
95406 --Entered Currency Code
95407  , p_source_15            IN VARCHAR2
95408 --Entered Amount
95409  , p_source_18            IN NUMBER
95410 --Currency Conversion Date
95411  , p_source_19            IN DATE
95412 --Currency Conversion Rate
95413  , p_source_20            IN NUMBER
95414 --Currency Conversion Type
95415  , p_source_21            IN VARCHAR2
95416 --Accounted Amount
95417  , p_source_22            IN NUMBER
95418 --Accounting Line Type
95419  , p_source_24            IN NUMBER
95420 )
95421 IS
95422 
95423 l_component_type              VARCHAR2(80);
95424 l_component_code              VARCHAR2(30);
95425 l_component_type_code         VARCHAR2(1);
95426 l_component_appl_id           INTEGER;
95427 l_amb_context_code            VARCHAR2(30);
95428 l_entity_code                 VARCHAR2(30);
95429 l_event_class_code            VARCHAR2(30);
95430 l_ae_header_id                NUMBER;
95431 l_event_type_code             VARCHAR2(30);
95432 l_line_definition_code        VARCHAR2(30);
95433 l_line_definition_owner_code  VARCHAR2(1);
95434 --
95435 -- adr variables
95436 l_segment                     VARCHAR2(30);
95437 l_ccid                        NUMBER;
95438 l_adr_transaction_coa_id      NUMBER;
95439 l_adr_accounting_coa_id       NUMBER;
95440 l_adr_flexfield_segment_code  VARCHAR2(30);
95441 l_adr_flex_value_set_id       NUMBER;
95442 l_adr_value_type_code         VARCHAR2(30);
95443 l_adr_value_combination_id    NUMBER;
95444 l_adr_value_segment_code      VARCHAR2(30);
95445 
95446 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
95447 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
95448 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
95449 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
95450 
95451 -- 4262811 Variables ------------------------------------------------------------------------------------------
95452 l_entered_amt_idx             NUMBER;
95453 l_accted_amt_idx              NUMBER;
95454 l_acc_rev_flag                VARCHAR2(1);
95455 l_accrual_line_num            NUMBER;
95456 l_tmp_amt                     NUMBER;
95457 l_acc_rev_natural_side_code   VARCHAR2(1);
95458 
95459 l_num_entries                 NUMBER;
95460 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
95461 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
95462 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
95463 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
95464 l_recog_line_1                NUMBER;
95465 l_recog_line_2                NUMBER;
95466 
95467 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
95468 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
95469 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
95470 
95471 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
95472 
95473 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
95474 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
95475 
95476 ---------------------------------------------------------------------------------------------------------------
95477 
95478 
95479 --
95480 -- bulk performance
95481 --
95482 l_balance_type_code           VARCHAR2(1);
95483 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
95484 l_log_module                  VARCHAR2(240);
95485 
95486 --
95487 -- Upgrade strategy
95488 --
95489 l_actual_upg_option           VARCHAR2(1);
95490 l_enc_upg_option           VARCHAR2(1);
95491 
95492 --
95493 BEGIN
95494 --
95495 IF g_log_enabled THEN
95496       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_174';
95497 END IF;
95498 --
95499 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95500 
95501       trace
95502          (p_msg      => 'BEGIN of AcctLineType_174'
95503          ,p_level    => C_LEVEL_PROCEDURE
95504          ,p_module   => l_log_module);
95505 
95506 END IF;
95507 --
95508 l_component_type             := 'AMB_JLT';
95509 l_component_code             := 'OFFSET';
95510 l_component_type_code        := 'S';
95511 l_component_appl_id          :=  707;
95512 l_amb_context_code           := 'DEFAULT';
95513 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
95514 l_event_class_code           := 'USER_DEFINE';
95515 l_event_type_code            := 'UMISC_ISSUE';
95516 l_line_definition_owner_code := 'S';
95517 l_line_definition_code       := 'USER_ISSUE';
95518 --
95519 l_balance_type_code          := 'A';
95520 l_segment                     := NULL;
95521 l_ccid                        := NULL;
95522 l_adr_transaction_coa_id      := NULL;
95523 l_adr_accounting_coa_id       := NULL;
95524 l_adr_flexfield_segment_code  := NULL;
95525 l_adr_flex_value_set_id       := NULL;
95526 l_adr_value_type_code         := NULL;
95527 l_adr_value_combination_id    := NULL;
95528 l_adr_value_segment_code      := NULL;
95529 
95530 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
95531 l_bflow_class_code           := '';    -- 4219869 Business Flow
95532 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
95533 l_budgetary_control_flag     := 'N';
95534 
95535 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
95536 l_bflow_applied_to_amt       := NULL; -- 5132302
95537 l_entered_amt_idx            := NULL;          -- 4262811
95538 l_accted_amt_idx             := NULL;          -- 4262811
95539 l_acc_rev_flag               := NULL;          -- 4262811
95540 l_accrual_line_num           := NULL;          -- 4262811
95541 l_tmp_amt                    := NULL;          -- 4262811
95542 --
95543  
95544 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
95545     l_balance_type_code <> 'B' THEN
95546 IF NVL(p_source_24,9E125) =  2
95547  THEN 
95548 
95549    --
95550    XLA_AE_LINES_PKG.SetNewLine;
95551 
95552    p_balance_type_code          := l_balance_type_code;
95553    -- set the flag so later we will know whether the gain loss line needs to be created
95554    
95555    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
95556      p_actual_flag :='A';
95557    END IF;
95558 
95559    --
95560    -- bulk performance
95561    --
95562    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
95563                                       p_header_num   => 0); -- 4262811
95564    --
95565    -- set accounting line options
95566    --
95567    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
95568            p_natural_side_code          => 'D'
95569          , p_gain_or_loss_flag          => 'N'
95570          , p_gl_transfer_mode_code      => 'S'
95571          , p_acct_entry_type_code       => 'A'
95572          , p_switch_side_flag           => 'Y'
95573          , p_merge_duplicate_code       => 'N'
95574          );
95575    --
95576    l_acc_rev_natural_side_code := 'C';  -- 4262811
95577    -- 
95578    --
95579    -- set accounting line type info
95580    --
95581    xla_ae_lines_pkg.SetAcctLineType
95582       (p_component_type             => l_component_type
95583       ,p_event_type_code            => l_event_type_code
95584       ,p_line_definition_owner_code => l_line_definition_owner_code
95585       ,p_line_definition_code       => l_line_definition_code
95586       ,p_accounting_line_code       => l_component_code
95587       ,p_accounting_line_type_code  => l_component_type_code
95588       ,p_accounting_line_appl_id    => l_component_appl_id
95589       ,p_amb_context_code           => l_amb_context_code
95590       ,p_entity_code                => l_entity_code
95591       ,p_event_class_code           => l_event_class_code);
95592    --
95593    -- set accounting class
95594    --
95595    xla_ae_lines_pkg.SetAcctClass(
95596            p_accounting_class_code  => 'OFFSET'
95597          , p_ae_header_id           => l_ae_header_id
95598          );
95599 
95600    --
95601    -- set rounding class
95602    --
95603    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
95604                       'OFFSET';
95605 
95606    --
95607    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
95608    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
95609    --
95610    -- bulk performance
95611    --
95612    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
95613 
95614    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
95615       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
95616 
95617    -- 4955764
95618    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95619       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
95620 
95621    -- 4458381 Public Sector Enh
95622    
95623    --
95624    -- set accounting attributes for the line type
95625    --
95626    l_entered_amt_idx := 3;
95627    l_accted_amt_idx  := 8;
95628    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
95629    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
95630    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
95631    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
95632    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
95633    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
95634    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
95635    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
95636    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
95637    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
95638    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
95639    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
95640    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
95641    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
95642    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
95643    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
95644    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
95645 
95646    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
95647    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
95648 
95649    ---------------------------------------------------------------------------------------------------------------
95650    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
95651    ---------------------------------------------------------------------------------------------------------------
95652    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
95653 
95654    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95655    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95656 
95657    IF xla_accounting_cache_pkg.GetValueChar
95658          (p_source_code         => 'LEDGER_CATEGORY_CODE'
95659          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
95660    AND l_bflow_method_code = 'PRIOR_ENTRY'
95661 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
95662    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
95663          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
95664        )
95665    THEN
95666          xla_ae_lines_pkg.BflowUpgEntry
95667            (p_business_method_code    => l_bflow_method_code
95668            ,p_business_class_code     => l_bflow_class_code
95669            ,p_balance_type            => l_balance_type_code);
95670    ELSE
95671       NULL;
95672 -- No business flow processing for business flow method of NONE.
95673    END IF;
95674 
95675    --
95676    -- call analytical criteria
95677    --
95678    
95679    --
95680    -- call description
95681    --
95682    -- No description or it is inherited.
95683    --
95684    -- call ADRs
95685    -- Bug 4922099
95686    --
95687    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95688         (NVL(l_actual_upg_option, 'N') = 'O') OR
95689         (NVL(l_enc_upg_option, 'N') = 'O')
95690       )
95691    THEN
95692    NULL;
95693    --
95694    --
95695    
95696   l_ccid := AcctDerRule_4(
95697            p_application_id           => p_application_id
95698          , p_ae_header_id             => l_ae_header_id 
95699 , p_source_4 => p_source_4
95700          , x_transaction_coa_id       => l_adr_transaction_coa_id
95701          , x_accounting_coa_id        => l_adr_accounting_coa_id
95702          , x_value_type_code          => l_adr_value_type_code
95703          , p_side                     => 'NA'
95704    );
95705 
95706    xla_ae_lines_pkg.set_ccid(
95707     p_code_combination_id          => l_ccid
95708   , p_value_type_code              => l_adr_value_type_code
95709   , p_transaction_coa_id           => l_adr_transaction_coa_id
95710   , p_accounting_coa_id            => l_adr_accounting_coa_id
95711   , p_adr_code                     => 'CST_DEFAULT'
95712   , p_adr_type_code                => 'S'
95713   , p_component_type               => l_component_type
95714   , p_component_code               => l_component_code
95715   , p_component_type_code          => l_component_type_code
95716   , p_component_appl_id            => l_component_appl_id
95717   , p_amb_context_code             => l_amb_context_code
95718   , p_side                         => 'NA'
95719   );
95720 
95721 
95722    --
95723    --
95724    END IF;
95725    --
95726    -- Bug 4922099
95727    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
95728           (NVL(l_enc_upg_option, 'N') = 'O')
95729         ) AND
95730         (l_bflow_method_code = 'PRIOR_ENTRY')
95731       )
95732    THEN
95733       IF
95734       --
95735       1 = 2
95736       --
95737       THEN
95738       xla_accounting_err_pkg.build_message
95739                                     (p_appli_s_name            => 'XLA'
95740                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95741                                     ,p_token_1                 => 'LINE_NUMBER'
95742                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
95743                                     ,p_token_2                 => 'LINE_TYPE_NAME'
95744                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
95745                                                                              l_component_type
95746                                                                             ,l_component_code
95747                                                                             ,l_component_type_code
95748                                                                             ,l_component_appl_id
95749                                                                             ,l_amb_context_code
95750                                                                             ,l_entity_code
95751                                                                             ,l_event_class_code
95752                                                                            )
95753                                     ,p_token_3                 => 'OWNER'
95754                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
95755                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
95756                                                                           ,p_lookup_code    => l_component_type_code
95757                                                                          )
95758                                     ,p_token_4                 => 'PRODUCT_NAME'
95759                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
95760                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
95761                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
95762                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
95763                                     ,p_ae_header_id            =>  NULL
95764                                        );
95765 
95766         IF (C_LEVEL_ERROR>= g_log_level) THEN
95767                  trace
95768                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95769                       ,p_level    => C_LEVEL_ERROR
95770                       ,p_module   => l_log_module);
95771         END IF;
95772       END IF;
95773    END IF;
95774    --
95775    --
95776    ------------------------------------------------------------------------------------------------
95777    -- 4219869 Business Flow
95778    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
95779    -- Prior Entry.  Currently, the following code is always generated.
95780    ------------------------------------------------------------------------------------------------
95781    XLA_AE_LINES_PKG.ValidateCurrentLine;
95782 
95783    ------------------------------------------------------------------------------------
95784    -- 4219869 Business Flow
95785    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
95786    ------------------------------------------------------------------------------------
95787    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95788 
95789    ----------------------------------------------------------------------------------
95790    -- 4219869 Business Flow
95791    -- Update journal entry status -- Need to generate this within IF <condition>
95792    ----------------------------------------------------------------------------------
95793    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95794          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
95795          ,p_balance_type_code => l_balance_type_code
95796          );
95797 
95798    -------------------------------------------------------------------------------------------
95799    -- 4262811 - Generate the Accrual Reversal lines
95800    -------------------------------------------------------------------------------------------
95801    BEGIN
95802       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
95803                               (g_array_event(p_event_id).array_value_num('header_index'));
95804       IF l_acc_rev_flag IS NULL THEN
95805          l_acc_rev_flag := 'N';
95806       END IF;
95807    EXCEPTION
95808       WHEN OTHERS THEN
95809          l_acc_rev_flag := 'N';
95810    END;
95811    --
95812    IF (l_acc_rev_flag = 'Y') THEN
95813 
95814        -- 4645092  ------------------------------------------------------------------------------
95815        -- To allow MPA report to determine if it should generate report process
95816        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
95817        ------------------------------------------------------------------------------------------
95818 
95819        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
95820        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
95821    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
95822    -- call ADRs
95823    -- Bug 4922099
95824    --
95825    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95826         (NVL(l_actual_upg_option, 'N') = 'O') OR
95827         (NVL(l_enc_upg_option, 'N') = 'O')
95828       )
95829    THEN
95830    NULL;
95831    --
95832    --
95833    
95834   l_ccid := AcctDerRule_4(
95835            p_application_id           => p_application_id
95836          , p_ae_header_id             => l_ae_header_id 
95837 , p_source_4 => p_source_4
95838          , x_transaction_coa_id       => l_adr_transaction_coa_id
95839          , x_accounting_coa_id        => l_adr_accounting_coa_id
95840          , x_value_type_code          => l_adr_value_type_code
95841          , p_side                     => 'NA'
95842    );
95843 
95844    xla_ae_lines_pkg.set_ccid(
95845     p_code_combination_id          => l_ccid
95846   , p_value_type_code              => l_adr_value_type_code
95847   , p_transaction_coa_id           => l_adr_transaction_coa_id
95848   , p_accounting_coa_id            => l_adr_accounting_coa_id
95849   , p_adr_code                     => 'CST_DEFAULT'
95850   , p_adr_type_code                => 'S'
95851   , p_component_type               => l_component_type
95852   , p_component_code               => l_component_code
95853   , p_component_type_code          => l_component_type_code
95854   , p_component_appl_id            => l_component_appl_id
95855   , p_amb_context_code             => l_amb_context_code
95856   , p_side                         => 'NA'
95857   );
95858 
95859 
95860    --
95861    --
95862    END IF;
95863 
95864        --
95865        -- Update the line information that should be overwritten
95866        --
95867        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
95868                                          p_header_num   => 1);
95869        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
95870 
95871        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
95872 
95873        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
95874           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
95875        END IF;
95876 
95877       --
95878       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
95879       --
95880       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
95881           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
95882       ELSE
95883           ---------------------------------------------------------------------------------------------------
95884           -- 4262811a Switch Sign
95885           ---------------------------------------------------------------------------------------------------
95886           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
95887           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95888                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95889           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95890                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95891           -- 5132302
95892           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
95893                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95894 
95895       END IF;
95896 
95897       -- 4955764
95898       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95899       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
95900 
95901 
95902       XLA_AE_LINES_PKG.ValidateCurrentLine;
95903       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95904 
95905       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95906                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
95907                ,p_balance_type_code => l_balance_type_code);
95908 
95909    END IF;
95910 
95911    -----------------------------------------------------------------------------------------
95912    -- 4262811 Multiperiod Accounting
95913    -----------------------------------------------------------------------------------------
95914      -- No MPA option is assigned.
95915 
95916 
95917 END IF;
95918 END IF;
95919 --
95920 
95921 --
95922 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95923    trace
95924       (p_msg      => 'END of AcctLineType_174'
95925       ,p_level    => C_LEVEL_PROCEDURE
95926       ,p_module   => l_log_module);
95927 END IF;
95928 --
95929 EXCEPTION
95930   WHEN xla_exceptions_pkg.application_exception THEN
95931       RAISE;
95932   WHEN OTHERS THEN
95933        xla_exceptions_pkg.raise_message
95934            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_174');
95935 END AcctLineType_174;
95936 --
95937 
95938 ---------------------------------------
95939 --
95940 -- PRIVATE FUNCTION
95941 --         AcctLineType_175
95942 --
95943 ---------------------------------------
95944 PROCEDURE AcctLineType_175 (
95945   p_application_id        IN NUMBER
95946  ,p_event_id              IN NUMBER
95947  ,p_calculate_acctd_flag  IN VARCHAR2
95948  ,p_calculate_g_l_flag    IN VARCHAR2
95949  ,p_actual_flag           IN OUT VARCHAR2
95950  ,p_balance_type_code     OUT VARCHAR2
95951  ,p_gain_or_loss_ref      OUT VARCHAR2
95952  
95953 --Cost Management Default Account
95954  , p_source_4            IN NUMBER
95955 --DISTRIBUTION_IDENTIFIER
95956  , p_source_11            IN NUMBER
95957 --Distribution Type
95958  , p_source_12            IN VARCHAR2
95959  , p_source_12_meaning    IN VARCHAR2
95960 --Entered Currency Code
95961  , p_source_15            IN VARCHAR2
95962 --Entered Amount
95963  , p_source_18            IN NUMBER
95964 --Currency Conversion Date
95965  , p_source_19            IN DATE
95966 --Currency Conversion Rate
95967  , p_source_20            IN NUMBER
95968 --Currency Conversion Type
95969  , p_source_21            IN VARCHAR2
95970 --Accounted Amount
95971  , p_source_22            IN NUMBER
95972 --Accounting Line Type
95973  , p_source_24            IN NUMBER
95974 )
95975 IS
95976 
95977 l_component_type              VARCHAR2(80);
95978 l_component_code              VARCHAR2(30);
95979 l_component_type_code         VARCHAR2(1);
95980 l_component_appl_id           INTEGER;
95981 l_amb_context_code            VARCHAR2(30);
95982 l_entity_code                 VARCHAR2(30);
95983 l_event_class_code            VARCHAR2(30);
95984 l_ae_header_id                NUMBER;
95985 l_event_type_code             VARCHAR2(30);
95986 l_line_definition_code        VARCHAR2(30);
95987 l_line_definition_owner_code  VARCHAR2(1);
95988 --
95989 -- adr variables
95990 l_segment                     VARCHAR2(30);
95991 l_ccid                        NUMBER;
95992 l_adr_transaction_coa_id      NUMBER;
95993 l_adr_accounting_coa_id       NUMBER;
95994 l_adr_flexfield_segment_code  VARCHAR2(30);
95995 l_adr_flex_value_set_id       NUMBER;
95996 l_adr_value_type_code         VARCHAR2(30);
95997 l_adr_value_combination_id    NUMBER;
95998 l_adr_value_segment_code      VARCHAR2(30);
95999 
96000 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
96001 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
96002 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
96003 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
96004 
96005 -- 4262811 Variables ------------------------------------------------------------------------------------------
96006 l_entered_amt_idx             NUMBER;
96007 l_accted_amt_idx              NUMBER;
96008 l_acc_rev_flag                VARCHAR2(1);
96009 l_accrual_line_num            NUMBER;
96010 l_tmp_amt                     NUMBER;
96011 l_acc_rev_natural_side_code   VARCHAR2(1);
96012 
96013 l_num_entries                 NUMBER;
96014 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
96015 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
96016 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
96017 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
96018 l_recog_line_1                NUMBER;
96019 l_recog_line_2                NUMBER;
96020 
96021 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
96022 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
96023 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
96024 
96025 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
96026 
96027 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
96028 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
96029 
96030 ---------------------------------------------------------------------------------------------------------------
96031 
96032 
96033 --
96034 -- bulk performance
96035 --
96036 l_balance_type_code           VARCHAR2(1);
96037 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
96038 l_log_module                  VARCHAR2(240);
96039 
96040 --
96041 -- Upgrade strategy
96042 --
96043 l_actual_upg_option           VARCHAR2(1);
96044 l_enc_upg_option           VARCHAR2(1);
96045 
96046 --
96047 BEGIN
96048 --
96049 IF g_log_enabled THEN
96050       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_175';
96051 END IF;
96052 --
96053 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96054 
96055       trace
96056          (p_msg      => 'BEGIN of AcctLineType_175'
96057          ,p_level    => C_LEVEL_PROCEDURE
96058          ,p_module   => l_log_module);
96059 
96060 END IF;
96061 --
96062 l_component_type             := 'AMB_JLT';
96063 l_component_code             := 'OFFSET';
96064 l_component_type_code        := 'S';
96065 l_component_appl_id          :=  707;
96066 l_amb_context_code           := 'DEFAULT';
96067 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
96068 l_event_class_code           := 'USER_DEFINE';
96069 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
96070 l_line_definition_owner_code := 'S';
96071 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
96072 --
96073 l_balance_type_code          := 'A';
96074 l_segment                     := NULL;
96075 l_ccid                        := NULL;
96076 l_adr_transaction_coa_id      := NULL;
96077 l_adr_accounting_coa_id       := NULL;
96078 l_adr_flexfield_segment_code  := NULL;
96079 l_adr_flex_value_set_id       := NULL;
96080 l_adr_value_type_code         := NULL;
96081 l_adr_value_combination_id    := NULL;
96082 l_adr_value_segment_code      := NULL;
96083 
96084 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
96085 l_bflow_class_code           := '';    -- 4219869 Business Flow
96086 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
96087 l_budgetary_control_flag     := 'N';
96088 
96089 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
96090 l_bflow_applied_to_amt       := NULL; -- 5132302
96091 l_entered_amt_idx            := NULL;          -- 4262811
96092 l_accted_amt_idx             := NULL;          -- 4262811
96093 l_acc_rev_flag               := NULL;          -- 4262811
96094 l_accrual_line_num           := NULL;          -- 4262811
96095 l_tmp_amt                    := NULL;          -- 4262811
96096 --
96097  
96098 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
96099     l_balance_type_code <> 'B' THEN
96100 IF NVL(p_source_24,9E125) =  2
96101  THEN 
96102 
96103    --
96104    XLA_AE_LINES_PKG.SetNewLine;
96105 
96106    p_balance_type_code          := l_balance_type_code;
96107    -- set the flag so later we will know whether the gain loss line needs to be created
96108    
96109    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
96110      p_actual_flag :='A';
96111    END IF;
96112 
96113    --
96114    -- bulk performance
96115    --
96116    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
96117                                       p_header_num   => 0); -- 4262811
96118    --
96119    -- set accounting line options
96120    --
96121    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
96122            p_natural_side_code          => 'D'
96123          , p_gain_or_loss_flag          => 'N'
96124          , p_gl_transfer_mode_code      => 'S'
96125          , p_acct_entry_type_code       => 'A'
96126          , p_switch_side_flag           => 'Y'
96127          , p_merge_duplicate_code       => 'N'
96128          );
96129    --
96130    l_acc_rev_natural_side_code := 'C';  -- 4262811
96131    -- 
96132    --
96133    -- set accounting line type info
96134    --
96135    xla_ae_lines_pkg.SetAcctLineType
96136       (p_component_type             => l_component_type
96137       ,p_event_type_code            => l_event_type_code
96138       ,p_line_definition_owner_code => l_line_definition_owner_code
96139       ,p_line_definition_code       => l_line_definition_code
96140       ,p_accounting_line_code       => l_component_code
96141       ,p_accounting_line_type_code  => l_component_type_code
96142       ,p_accounting_line_appl_id    => l_component_appl_id
96143       ,p_amb_context_code           => l_amb_context_code
96144       ,p_entity_code                => l_entity_code
96145       ,p_event_class_code           => l_event_class_code);
96146    --
96147    -- set accounting class
96148    --
96149    xla_ae_lines_pkg.SetAcctClass(
96150            p_accounting_class_code  => 'OFFSET'
96151          , p_ae_header_id           => l_ae_header_id
96152          );
96153 
96154    --
96155    -- set rounding class
96156    --
96157    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
96158                       'OFFSET';
96159 
96160    --
96161    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
96162    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
96163    --
96164    -- bulk performance
96165    --
96166    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
96167 
96168    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
96169       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
96170 
96171    -- 4955764
96172    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96173       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
96174 
96175    -- 4458381 Public Sector Enh
96176    
96177    --
96178    -- set accounting attributes for the line type
96179    --
96180    l_entered_amt_idx := 3;
96181    l_accted_amt_idx  := 8;
96182    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
96183    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
96184    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
96185    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
96186    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
96187    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
96188    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
96189    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
96190    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
96191    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
96192    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
96193    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
96194    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
96195    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
96196    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
96197    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
96198    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
96199 
96200    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
96201    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
96202 
96203    ---------------------------------------------------------------------------------------------------------------
96204    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
96205    ---------------------------------------------------------------------------------------------------------------
96206    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
96207 
96208    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96209    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96210 
96211    IF xla_accounting_cache_pkg.GetValueChar
96212          (p_source_code         => 'LEDGER_CATEGORY_CODE'
96213          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
96214    AND l_bflow_method_code = 'PRIOR_ENTRY'
96215 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
96216    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
96217          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
96218        )
96219    THEN
96220          xla_ae_lines_pkg.BflowUpgEntry
96221            (p_business_method_code    => l_bflow_method_code
96222            ,p_business_class_code     => l_bflow_class_code
96223            ,p_balance_type            => l_balance_type_code);
96224    ELSE
96225       NULL;
96226 -- No business flow processing for business flow method of NONE.
96227    END IF;
96228 
96229    --
96230    -- call analytical criteria
96231    --
96232    
96233    --
96234    -- call description
96235    --
96236    -- No description or it is inherited.
96237    --
96238    -- call ADRs
96239    -- Bug 4922099
96240    --
96241    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96242         (NVL(l_actual_upg_option, 'N') = 'O') OR
96243         (NVL(l_enc_upg_option, 'N') = 'O')
96244       )
96245    THEN
96246    NULL;
96247    --
96248    --
96249    
96250   l_ccid := AcctDerRule_4(
96251            p_application_id           => p_application_id
96252          , p_ae_header_id             => l_ae_header_id 
96253 , p_source_4 => p_source_4
96254          , x_transaction_coa_id       => l_adr_transaction_coa_id
96255          , x_accounting_coa_id        => l_adr_accounting_coa_id
96256          , x_value_type_code          => l_adr_value_type_code
96257          , p_side                     => 'NA'
96258    );
96259 
96260    xla_ae_lines_pkg.set_ccid(
96261     p_code_combination_id          => l_ccid
96262   , p_value_type_code              => l_adr_value_type_code
96263   , p_transaction_coa_id           => l_adr_transaction_coa_id
96264   , p_accounting_coa_id            => l_adr_accounting_coa_id
96265   , p_adr_code                     => 'CST_DEFAULT'
96266   , p_adr_type_code                => 'S'
96267   , p_component_type               => l_component_type
96268   , p_component_code               => l_component_code
96269   , p_component_type_code          => l_component_type_code
96270   , p_component_appl_id            => l_component_appl_id
96271   , p_amb_context_code             => l_amb_context_code
96272   , p_side                         => 'NA'
96273   );
96274 
96275 
96276    --
96277    --
96278    END IF;
96279    --
96280    -- Bug 4922099
96281    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
96282           (NVL(l_enc_upg_option, 'N') = 'O')
96283         ) AND
96284         (l_bflow_method_code = 'PRIOR_ENTRY')
96285       )
96286    THEN
96287       IF
96288       --
96289       1 = 2
96290       --
96291       THEN
96292       xla_accounting_err_pkg.build_message
96293                                     (p_appli_s_name            => 'XLA'
96294                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96295                                     ,p_token_1                 => 'LINE_NUMBER'
96296                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
96297                                     ,p_token_2                 => 'LINE_TYPE_NAME'
96298                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
96299                                                                              l_component_type
96300                                                                             ,l_component_code
96301                                                                             ,l_component_type_code
96302                                                                             ,l_component_appl_id
96303                                                                             ,l_amb_context_code
96304                                                                             ,l_entity_code
96305                                                                             ,l_event_class_code
96306                                                                            )
96307                                     ,p_token_3                 => 'OWNER'
96308                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
96309                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
96310                                                                           ,p_lookup_code    => l_component_type_code
96311                                                                          )
96312                                     ,p_token_4                 => 'PRODUCT_NAME'
96313                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
96314                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
96315                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
96316                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
96317                                     ,p_ae_header_id            =>  NULL
96318                                        );
96319 
96320         IF (C_LEVEL_ERROR>= g_log_level) THEN
96321                  trace
96322                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96323                       ,p_level    => C_LEVEL_ERROR
96324                       ,p_module   => l_log_module);
96325         END IF;
96326       END IF;
96327    END IF;
96328    --
96329    --
96330    ------------------------------------------------------------------------------------------------
96331    -- 4219869 Business Flow
96332    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
96333    -- Prior Entry.  Currently, the following code is always generated.
96334    ------------------------------------------------------------------------------------------------
96335    XLA_AE_LINES_PKG.ValidateCurrentLine;
96336 
96337    ------------------------------------------------------------------------------------
96338    -- 4219869 Business Flow
96339    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
96340    ------------------------------------------------------------------------------------
96341    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96342 
96343    ----------------------------------------------------------------------------------
96344    -- 4219869 Business Flow
96345    -- Update journal entry status -- Need to generate this within IF <condition>
96346    ----------------------------------------------------------------------------------
96347    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96348          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
96349          ,p_balance_type_code => l_balance_type_code
96350          );
96351 
96352    -------------------------------------------------------------------------------------------
96353    -- 4262811 - Generate the Accrual Reversal lines
96354    -------------------------------------------------------------------------------------------
96355    BEGIN
96356       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
96357                               (g_array_event(p_event_id).array_value_num('header_index'));
96358       IF l_acc_rev_flag IS NULL THEN
96359          l_acc_rev_flag := 'N';
96360       END IF;
96361    EXCEPTION
96362       WHEN OTHERS THEN
96363          l_acc_rev_flag := 'N';
96364    END;
96365    --
96366    IF (l_acc_rev_flag = 'Y') THEN
96367 
96368        -- 4645092  ------------------------------------------------------------------------------
96369        -- To allow MPA report to determine if it should generate report process
96370        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
96371        ------------------------------------------------------------------------------------------
96372 
96373        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
96374        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
96375    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
96376    -- call ADRs
96377    -- Bug 4922099
96378    --
96379    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96380         (NVL(l_actual_upg_option, 'N') = 'O') OR
96381         (NVL(l_enc_upg_option, 'N') = 'O')
96382       )
96383    THEN
96384    NULL;
96385    --
96386    --
96387    
96388   l_ccid := AcctDerRule_4(
96389            p_application_id           => p_application_id
96390          , p_ae_header_id             => l_ae_header_id 
96391 , p_source_4 => p_source_4
96392          , x_transaction_coa_id       => l_adr_transaction_coa_id
96393          , x_accounting_coa_id        => l_adr_accounting_coa_id
96394          , x_value_type_code          => l_adr_value_type_code
96395          , p_side                     => 'NA'
96396    );
96397 
96398    xla_ae_lines_pkg.set_ccid(
96399     p_code_combination_id          => l_ccid
96400   , p_value_type_code              => l_adr_value_type_code
96401   , p_transaction_coa_id           => l_adr_transaction_coa_id
96402   , p_accounting_coa_id            => l_adr_accounting_coa_id
96403   , p_adr_code                     => 'CST_DEFAULT'
96404   , p_adr_type_code                => 'S'
96405   , p_component_type               => l_component_type
96406   , p_component_code               => l_component_code
96407   , p_component_type_code          => l_component_type_code
96408   , p_component_appl_id            => l_component_appl_id
96409   , p_amb_context_code             => l_amb_context_code
96410   , p_side                         => 'NA'
96411   );
96412 
96413 
96414    --
96415    --
96416    END IF;
96417 
96418        --
96419        -- Update the line information that should be overwritten
96420        --
96421        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
96422                                          p_header_num   => 1);
96423        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
96424 
96425        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
96426 
96427        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
96428           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
96429        END IF;
96430 
96431       --
96432       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
96433       --
96434       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
96435           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
96436       ELSE
96437           ---------------------------------------------------------------------------------------------------
96438           -- 4262811a Switch Sign
96439           ---------------------------------------------------------------------------------------------------
96440           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
96441           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96442                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96443           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96444                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96445           -- 5132302
96446           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
96447                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96448 
96449       END IF;
96450 
96451       -- 4955764
96452       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96453       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
96454 
96455 
96456       XLA_AE_LINES_PKG.ValidateCurrentLine;
96457       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96458 
96459       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96460                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
96461                ,p_balance_type_code => l_balance_type_code);
96462 
96463    END IF;
96464 
96465    -----------------------------------------------------------------------------------------
96466    -- 4262811 Multiperiod Accounting
96467    -----------------------------------------------------------------------------------------
96468      -- No MPA option is assigned.
96469 
96470 
96471 END IF;
96472 END IF;
96473 --
96474 
96475 --
96476 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96477    trace
96478       (p_msg      => 'END of AcctLineType_175'
96479       ,p_level    => C_LEVEL_PROCEDURE
96480       ,p_module   => l_log_module);
96481 END IF;
96482 --
96483 EXCEPTION
96484   WHEN xla_exceptions_pkg.application_exception THEN
96485       RAISE;
96486   WHEN OTHERS THEN
96487        xla_exceptions_pkg.raise_message
96488            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_175');
96489 END AcctLineType_175;
96490 --
96491 
96492 ---------------------------------------
96493 --
96494 -- PRIVATE FUNCTION
96495 --         AcctLineType_176
96496 --
96497 ---------------------------------------
96498 PROCEDURE AcctLineType_176 (
96499   p_application_id        IN NUMBER
96500  ,p_event_id              IN NUMBER
96501  ,p_calculate_acctd_flag  IN VARCHAR2
96502  ,p_calculate_g_l_flag    IN VARCHAR2
96503  ,p_actual_flag           IN OUT VARCHAR2
96504  ,p_balance_type_code     OUT VARCHAR2
96505  ,p_gain_or_loss_ref      OUT VARCHAR2
96506  
96507 --Cost Management Default Account
96508  , p_source_4            IN NUMBER
96509 --DISTRIBUTION_IDENTIFIER
96510  , p_source_11            IN NUMBER
96511 --Distribution Type
96512  , p_source_12            IN VARCHAR2
96513  , p_source_12_meaning    IN VARCHAR2
96514 --Entered Currency Code
96515  , p_source_15            IN VARCHAR2
96516 --Entered Amount
96517  , p_source_18            IN NUMBER
96518 --Currency Conversion Date
96519  , p_source_19            IN DATE
96520 --Currency Conversion Rate
96521  , p_source_20            IN NUMBER
96522 --Currency Conversion Type
96523  , p_source_21            IN VARCHAR2
96524 --Accounted Amount
96525  , p_source_22            IN NUMBER
96526 --Accounting Line Type
96527  , p_source_24            IN NUMBER
96528 )
96529 IS
96530 
96531 l_component_type              VARCHAR2(80);
96532 l_component_code              VARCHAR2(30);
96533 l_component_type_code         VARCHAR2(1);
96534 l_component_appl_id           INTEGER;
96535 l_amb_context_code            VARCHAR2(30);
96536 l_entity_code                 VARCHAR2(30);
96537 l_event_class_code            VARCHAR2(30);
96538 l_ae_header_id                NUMBER;
96539 l_event_type_code             VARCHAR2(30);
96540 l_line_definition_code        VARCHAR2(30);
96541 l_line_definition_owner_code  VARCHAR2(1);
96542 --
96543 -- adr variables
96544 l_segment                     VARCHAR2(30);
96545 l_ccid                        NUMBER;
96546 l_adr_transaction_coa_id      NUMBER;
96547 l_adr_accounting_coa_id       NUMBER;
96548 l_adr_flexfield_segment_code  VARCHAR2(30);
96549 l_adr_flex_value_set_id       NUMBER;
96550 l_adr_value_type_code         VARCHAR2(30);
96551 l_adr_value_combination_id    NUMBER;
96552 l_adr_value_segment_code      VARCHAR2(30);
96553 
96554 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
96555 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
96556 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
96557 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
96558 
96559 -- 4262811 Variables ------------------------------------------------------------------------------------------
96560 l_entered_amt_idx             NUMBER;
96561 l_accted_amt_idx              NUMBER;
96562 l_acc_rev_flag                VARCHAR2(1);
96563 l_accrual_line_num            NUMBER;
96564 l_tmp_amt                     NUMBER;
96565 l_acc_rev_natural_side_code   VARCHAR2(1);
96566 
96567 l_num_entries                 NUMBER;
96568 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
96569 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
96570 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
96571 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
96572 l_recog_line_1                NUMBER;
96573 l_recog_line_2                NUMBER;
96574 
96575 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
96576 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
96577 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
96578 
96579 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
96580 
96581 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
96582 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
96583 
96584 ---------------------------------------------------------------------------------------------------------------
96585 
96586 
96587 --
96588 -- bulk performance
96589 --
96590 l_balance_type_code           VARCHAR2(1);
96591 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
96592 l_log_module                  VARCHAR2(240);
96593 
96594 --
96595 -- Upgrade strategy
96596 --
96597 l_actual_upg_option           VARCHAR2(1);
96598 l_enc_upg_option           VARCHAR2(1);
96599 
96600 --
96601 BEGIN
96602 --
96603 IF g_log_enabled THEN
96604       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_176';
96605 END IF;
96606 --
96607 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96608 
96609       trace
96610          (p_msg      => 'BEGIN of AcctLineType_176'
96611          ,p_level    => C_LEVEL_PROCEDURE
96612          ,p_module   => l_log_module);
96613 
96614 END IF;
96615 --
96616 l_component_type             := 'AMB_JLT';
96617 l_component_code             := 'OFFSET';
96618 l_component_type_code        := 'S';
96619 l_component_appl_id          :=  707;
96620 l_amb_context_code           := 'DEFAULT';
96621 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
96622 l_event_class_code           := 'USER_DEFINE';
96623 l_event_type_code            := 'USUB_TXFR';
96624 l_line_definition_owner_code := 'S';
96625 l_line_definition_code       := 'USER_SUB_TXFR';
96626 --
96627 l_balance_type_code          := 'A';
96628 l_segment                     := NULL;
96629 l_ccid                        := NULL;
96630 l_adr_transaction_coa_id      := NULL;
96631 l_adr_accounting_coa_id       := NULL;
96632 l_adr_flexfield_segment_code  := NULL;
96633 l_adr_flex_value_set_id       := NULL;
96634 l_adr_value_type_code         := NULL;
96635 l_adr_value_combination_id    := NULL;
96636 l_adr_value_segment_code      := NULL;
96637 
96638 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
96639 l_bflow_class_code           := '';    -- 4219869 Business Flow
96640 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
96641 l_budgetary_control_flag     := 'N';
96642 
96643 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
96644 l_bflow_applied_to_amt       := NULL; -- 5132302
96645 l_entered_amt_idx            := NULL;          -- 4262811
96646 l_accted_amt_idx             := NULL;          -- 4262811
96647 l_acc_rev_flag               := NULL;          -- 4262811
96648 l_accrual_line_num           := NULL;          -- 4262811
96649 l_tmp_amt                    := NULL;          -- 4262811
96650 --
96651  
96652 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
96653     l_balance_type_code <> 'B' THEN
96654 IF NVL(p_source_24,9E125) =  2
96655  THEN 
96656 
96657    --
96658    XLA_AE_LINES_PKG.SetNewLine;
96659 
96660    p_balance_type_code          := l_balance_type_code;
96661    -- set the flag so later we will know whether the gain loss line needs to be created
96662    
96663    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
96664      p_actual_flag :='A';
96665    END IF;
96666 
96667    --
96668    -- bulk performance
96669    --
96670    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
96671                                       p_header_num   => 0); -- 4262811
96672    --
96673    -- set accounting line options
96674    --
96675    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
96676            p_natural_side_code          => 'D'
96677          , p_gain_or_loss_flag          => 'N'
96678          , p_gl_transfer_mode_code      => 'S'
96679          , p_acct_entry_type_code       => 'A'
96680          , p_switch_side_flag           => 'Y'
96681          , p_merge_duplicate_code       => 'N'
96682          );
96683    --
96684    l_acc_rev_natural_side_code := 'C';  -- 4262811
96685    -- 
96686    --
96687    -- set accounting line type info
96688    --
96689    xla_ae_lines_pkg.SetAcctLineType
96690       (p_component_type             => l_component_type
96691       ,p_event_type_code            => l_event_type_code
96692       ,p_line_definition_owner_code => l_line_definition_owner_code
96693       ,p_line_definition_code       => l_line_definition_code
96694       ,p_accounting_line_code       => l_component_code
96695       ,p_accounting_line_type_code  => l_component_type_code
96696       ,p_accounting_line_appl_id    => l_component_appl_id
96697       ,p_amb_context_code           => l_amb_context_code
96698       ,p_entity_code                => l_entity_code
96699       ,p_event_class_code           => l_event_class_code);
96700    --
96701    -- set accounting class
96702    --
96703    xla_ae_lines_pkg.SetAcctClass(
96704            p_accounting_class_code  => 'OFFSET'
96705          , p_ae_header_id           => l_ae_header_id
96706          );
96707 
96708    --
96709    -- set rounding class
96710    --
96711    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
96712                       'OFFSET';
96713 
96714    --
96715    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
96716    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
96717    --
96718    -- bulk performance
96719    --
96720    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
96721 
96722    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
96723       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
96724 
96725    -- 4955764
96726    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96727       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
96728 
96729    -- 4458381 Public Sector Enh
96730    
96731    --
96732    -- set accounting attributes for the line type
96733    --
96734    l_entered_amt_idx := 3;
96735    l_accted_amt_idx  := 8;
96736    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
96737    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
96738    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
96739    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
96740    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
96741    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
96742    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
96743    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
96744    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
96745    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
96746    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
96747    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
96748    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
96749    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
96750    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
96751    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
96752    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
96753 
96754    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
96755    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
96756 
96757    ---------------------------------------------------------------------------------------------------------------
96758    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
96759    ---------------------------------------------------------------------------------------------------------------
96760    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
96761 
96762    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96763    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96764 
96765    IF xla_accounting_cache_pkg.GetValueChar
96766          (p_source_code         => 'LEDGER_CATEGORY_CODE'
96767          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
96768    AND l_bflow_method_code = 'PRIOR_ENTRY'
96769 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
96770    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
96771          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
96772        )
96773    THEN
96774          xla_ae_lines_pkg.BflowUpgEntry
96775            (p_business_method_code    => l_bflow_method_code
96776            ,p_business_class_code     => l_bflow_class_code
96777            ,p_balance_type            => l_balance_type_code);
96778    ELSE
96779       NULL;
96780 -- No business flow processing for business flow method of NONE.
96781    END IF;
96782 
96783    --
96784    -- call analytical criteria
96785    --
96786    
96787    --
96788    -- call description
96789    --
96790    -- No description or it is inherited.
96791    --
96792    -- call ADRs
96793    -- Bug 4922099
96794    --
96795    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96796         (NVL(l_actual_upg_option, 'N') = 'O') OR
96797         (NVL(l_enc_upg_option, 'N') = 'O')
96798       )
96799    THEN
96800    NULL;
96801    --
96802    --
96803    
96804   l_ccid := AcctDerRule_4(
96805            p_application_id           => p_application_id
96806          , p_ae_header_id             => l_ae_header_id 
96807 , p_source_4 => p_source_4
96808          , x_transaction_coa_id       => l_adr_transaction_coa_id
96809          , x_accounting_coa_id        => l_adr_accounting_coa_id
96810          , x_value_type_code          => l_adr_value_type_code
96811          , p_side                     => 'NA'
96812    );
96813 
96814    xla_ae_lines_pkg.set_ccid(
96815     p_code_combination_id          => l_ccid
96816   , p_value_type_code              => l_adr_value_type_code
96817   , p_transaction_coa_id           => l_adr_transaction_coa_id
96818   , p_accounting_coa_id            => l_adr_accounting_coa_id
96819   , p_adr_code                     => 'CST_DEFAULT'
96820   , p_adr_type_code                => 'S'
96821   , p_component_type               => l_component_type
96822   , p_component_code               => l_component_code
96823   , p_component_type_code          => l_component_type_code
96824   , p_component_appl_id            => l_component_appl_id
96825   , p_amb_context_code             => l_amb_context_code
96826   , p_side                         => 'NA'
96827   );
96828 
96829 
96830    --
96831    --
96832    END IF;
96833    --
96834    -- Bug 4922099
96835    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
96836           (NVL(l_enc_upg_option, 'N') = 'O')
96837         ) AND
96838         (l_bflow_method_code = 'PRIOR_ENTRY')
96839       )
96840    THEN
96841       IF
96842       --
96843       1 = 2
96844       --
96845       THEN
96846       xla_accounting_err_pkg.build_message
96847                                     (p_appli_s_name            => 'XLA'
96848                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96849                                     ,p_token_1                 => 'LINE_NUMBER'
96850                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
96851                                     ,p_token_2                 => 'LINE_TYPE_NAME'
96852                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
96853                                                                              l_component_type
96854                                                                             ,l_component_code
96855                                                                             ,l_component_type_code
96856                                                                             ,l_component_appl_id
96857                                                                             ,l_amb_context_code
96858                                                                             ,l_entity_code
96859                                                                             ,l_event_class_code
96860                                                                            )
96861                                     ,p_token_3                 => 'OWNER'
96862                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
96863                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
96864                                                                           ,p_lookup_code    => l_component_type_code
96865                                                                          )
96866                                     ,p_token_4                 => 'PRODUCT_NAME'
96867                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
96868                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
96869                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
96870                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
96871                                     ,p_ae_header_id            =>  NULL
96872                                        );
96873 
96874         IF (C_LEVEL_ERROR>= g_log_level) THEN
96875                  trace
96876                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96877                       ,p_level    => C_LEVEL_ERROR
96878                       ,p_module   => l_log_module);
96879         END IF;
96880       END IF;
96881    END IF;
96882    --
96883    --
96884    ------------------------------------------------------------------------------------------------
96885    -- 4219869 Business Flow
96886    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
96887    -- Prior Entry.  Currently, the following code is always generated.
96888    ------------------------------------------------------------------------------------------------
96889    XLA_AE_LINES_PKG.ValidateCurrentLine;
96890 
96891    ------------------------------------------------------------------------------------
96892    -- 4219869 Business Flow
96893    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
96894    ------------------------------------------------------------------------------------
96895    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96896 
96897    ----------------------------------------------------------------------------------
96898    -- 4219869 Business Flow
96899    -- Update journal entry status -- Need to generate this within IF <condition>
96900    ----------------------------------------------------------------------------------
96901    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96902          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
96903          ,p_balance_type_code => l_balance_type_code
96904          );
96905 
96906    -------------------------------------------------------------------------------------------
96907    -- 4262811 - Generate the Accrual Reversal lines
96908    -------------------------------------------------------------------------------------------
96909    BEGIN
96910       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
96911                               (g_array_event(p_event_id).array_value_num('header_index'));
96912       IF l_acc_rev_flag IS NULL THEN
96913          l_acc_rev_flag := 'N';
96914       END IF;
96915    EXCEPTION
96916       WHEN OTHERS THEN
96917          l_acc_rev_flag := 'N';
96918    END;
96919    --
96920    IF (l_acc_rev_flag = 'Y') THEN
96921 
96922        -- 4645092  ------------------------------------------------------------------------------
96923        -- To allow MPA report to determine if it should generate report process
96924        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
96925        ------------------------------------------------------------------------------------------
96926 
96927        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
96928        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
96929    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
96930    -- call ADRs
96931    -- Bug 4922099
96932    --
96933    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96934         (NVL(l_actual_upg_option, 'N') = 'O') OR
96935         (NVL(l_enc_upg_option, 'N') = 'O')
96936       )
96937    THEN
96938    NULL;
96939    --
96940    --
96941    
96942   l_ccid := AcctDerRule_4(
96943            p_application_id           => p_application_id
96944          , p_ae_header_id             => l_ae_header_id 
96945 , p_source_4 => p_source_4
96946          , x_transaction_coa_id       => l_adr_transaction_coa_id
96947          , x_accounting_coa_id        => l_adr_accounting_coa_id
96948          , x_value_type_code          => l_adr_value_type_code
96949          , p_side                     => 'NA'
96950    );
96951 
96952    xla_ae_lines_pkg.set_ccid(
96953     p_code_combination_id          => l_ccid
96954   , p_value_type_code              => l_adr_value_type_code
96955   , p_transaction_coa_id           => l_adr_transaction_coa_id
96956   , p_accounting_coa_id            => l_adr_accounting_coa_id
96957   , p_adr_code                     => 'CST_DEFAULT'
96958   , p_adr_type_code                => 'S'
96959   , p_component_type               => l_component_type
96960   , p_component_code               => l_component_code
96961   , p_component_type_code          => l_component_type_code
96962   , p_component_appl_id            => l_component_appl_id
96963   , p_amb_context_code             => l_amb_context_code
96964   , p_side                         => 'NA'
96965   );
96966 
96967 
96968    --
96969    --
96970    END IF;
96971 
96972        --
96973        -- Update the line information that should be overwritten
96974        --
96975        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
96976                                          p_header_num   => 1);
96977        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
96978 
96979        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
96980 
96981        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
96982           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
96983        END IF;
96984 
96985       --
96986       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
96987       --
96988       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
96989           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
96990       ELSE
96991           ---------------------------------------------------------------------------------------------------
96992           -- 4262811a Switch Sign
96993           ---------------------------------------------------------------------------------------------------
96994           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
96995           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96996                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96997           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96998                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96999           -- 5132302
97000           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
97001                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97002 
97003       END IF;
97004 
97005       -- 4955764
97006       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97007       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
97008 
97009 
97010       XLA_AE_LINES_PKG.ValidateCurrentLine;
97011       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97012 
97013       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97014                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
97015                ,p_balance_type_code => l_balance_type_code);
97016 
97017    END IF;
97018 
97019    -----------------------------------------------------------------------------------------
97020    -- 4262811 Multiperiod Accounting
97021    -----------------------------------------------------------------------------------------
97022      -- No MPA option is assigned.
97023 
97024 
97025 END IF;
97026 END IF;
97027 --
97028 
97029 --
97030 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97031    trace
97032       (p_msg      => 'END of AcctLineType_176'
97033       ,p_level    => C_LEVEL_PROCEDURE
97034       ,p_module   => l_log_module);
97035 END IF;
97036 --
97037 EXCEPTION
97038   WHEN xla_exceptions_pkg.application_exception THEN
97039       RAISE;
97040   WHEN OTHERS THEN
97041        xla_exceptions_pkg.raise_message
97042            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_176');
97043 END AcctLineType_176;
97044 --
97045 
97046 ---------------------------------------
97047 --
97048 -- PRIVATE FUNCTION
97049 --         AcctLineType_177
97050 --
97051 ---------------------------------------
97052 PROCEDURE AcctLineType_177 (
97053   p_application_id        IN NUMBER
97054  ,p_event_id              IN NUMBER
97055  ,p_calculate_acctd_flag  IN VARCHAR2
97056  ,p_calculate_g_l_flag    IN VARCHAR2
97057  ,p_actual_flag           IN OUT VARCHAR2
97058  ,p_balance_type_code     OUT VARCHAR2
97059  ,p_gain_or_loss_ref      OUT VARCHAR2
97060  
97061 --Cost Management Default Account
97062  , p_source_4            IN NUMBER
97063 --DISTRIBUTION_IDENTIFIER
97064  , p_source_11            IN NUMBER
97065 --Distribution Type
97066  , p_source_12            IN VARCHAR2
97067  , p_source_12_meaning    IN VARCHAR2
97068 --Entered Currency Code
97069  , p_source_15            IN VARCHAR2
97070 --Entered Amount
97071  , p_source_18            IN NUMBER
97072 --Currency Conversion Date
97073  , p_source_19            IN DATE
97074 --Currency Conversion Rate
97075  , p_source_20            IN NUMBER
97076 --Currency Conversion Type
97077  , p_source_21            IN VARCHAR2
97078 --Accounted Amount
97079  , p_source_22            IN NUMBER
97080 --Accounting Line Type
97081  , p_source_24            IN NUMBER
97082 )
97083 IS
97084 
97085 l_component_type              VARCHAR2(80);
97086 l_component_code              VARCHAR2(30);
97087 l_component_type_code         VARCHAR2(1);
97088 l_component_appl_id           INTEGER;
97089 l_amb_context_code            VARCHAR2(30);
97090 l_entity_code                 VARCHAR2(30);
97091 l_event_class_code            VARCHAR2(30);
97092 l_ae_header_id                NUMBER;
97093 l_event_type_code             VARCHAR2(30);
97094 l_line_definition_code        VARCHAR2(30);
97095 l_line_definition_owner_code  VARCHAR2(1);
97096 --
97097 -- adr variables
97098 l_segment                     VARCHAR2(30);
97099 l_ccid                        NUMBER;
97100 l_adr_transaction_coa_id      NUMBER;
97101 l_adr_accounting_coa_id       NUMBER;
97102 l_adr_flexfield_segment_code  VARCHAR2(30);
97103 l_adr_flex_value_set_id       NUMBER;
97104 l_adr_value_type_code         VARCHAR2(30);
97105 l_adr_value_combination_id    NUMBER;
97106 l_adr_value_segment_code      VARCHAR2(30);
97107 
97108 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
97109 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
97110 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
97111 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
97112 
97113 -- 4262811 Variables ------------------------------------------------------------------------------------------
97114 l_entered_amt_idx             NUMBER;
97115 l_accted_amt_idx              NUMBER;
97116 l_acc_rev_flag                VARCHAR2(1);
97117 l_accrual_line_num            NUMBER;
97118 l_tmp_amt                     NUMBER;
97119 l_acc_rev_natural_side_code   VARCHAR2(1);
97120 
97121 l_num_entries                 NUMBER;
97122 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
97123 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
97124 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
97125 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
97126 l_recog_line_1                NUMBER;
97127 l_recog_line_2                NUMBER;
97128 
97129 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
97130 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
97131 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
97132 
97133 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
97134 
97135 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
97136 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
97137 
97138 ---------------------------------------------------------------------------------------------------------------
97139 
97140 
97141 --
97142 -- bulk performance
97143 --
97144 l_balance_type_code           VARCHAR2(1);
97145 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
97146 l_log_module                  VARCHAR2(240);
97147 
97148 --
97149 -- Upgrade strategy
97150 --
97151 l_actual_upg_option           VARCHAR2(1);
97152 l_enc_upg_option           VARCHAR2(1);
97153 
97154 --
97155 BEGIN
97156 --
97157 IF g_log_enabled THEN
97158       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_177';
97159 END IF;
97160 --
97161 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97162 
97163       trace
97164          (p_msg      => 'BEGIN of AcctLineType_177'
97165          ,p_level    => C_LEVEL_PROCEDURE
97166          ,p_module   => l_log_module);
97167 
97168 END IF;
97169 --
97170 l_component_type             := 'AMB_JLT';
97171 l_component_code             := 'OFFSET';
97172 l_component_type_code        := 'S';
97173 l_component_appl_id          :=  707;
97174 l_amb_context_code           := 'DEFAULT';
97175 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
97176 l_event_class_code           := 'WIP_LOT';
97177 l_event_type_code            := 'WIP_LOT_ALL';
97178 l_line_definition_owner_code := 'S';
97179 l_line_definition_code       := 'WIP_LOT';
97180 --
97181 l_balance_type_code          := 'A';
97182 l_segment                     := NULL;
97183 l_ccid                        := NULL;
97184 l_adr_transaction_coa_id      := NULL;
97185 l_adr_accounting_coa_id       := NULL;
97186 l_adr_flexfield_segment_code  := NULL;
97187 l_adr_flex_value_set_id       := NULL;
97188 l_adr_value_type_code         := NULL;
97189 l_adr_value_combination_id    := NULL;
97190 l_adr_value_segment_code      := NULL;
97191 
97192 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
97193 l_bflow_class_code           := '';    -- 4219869 Business Flow
97194 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
97195 l_budgetary_control_flag     := 'N';
97196 
97197 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
97198 l_bflow_applied_to_amt       := NULL; -- 5132302
97199 l_entered_amt_idx            := NULL;          -- 4262811
97200 l_accted_amt_idx             := NULL;          -- 4262811
97201 l_acc_rev_flag               := NULL;          -- 4262811
97202 l_accrual_line_num           := NULL;          -- 4262811
97203 l_tmp_amt                    := NULL;          -- 4262811
97204 --
97205  
97206 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
97207     l_balance_type_code <> 'B' THEN
97208 IF NVL(p_source_24,9E125) =  25 OR 
97209 NVL(p_source_24,9E125) =  27
97210  THEN 
97211 
97212    --
97213    XLA_AE_LINES_PKG.SetNewLine;
97214 
97215    p_balance_type_code          := l_balance_type_code;
97216    -- set the flag so later we will know whether the gain loss line needs to be created
97217    
97218    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
97219      p_actual_flag :='A';
97220    END IF;
97221 
97222    --
97223    -- bulk performance
97224    --
97225    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
97226                                       p_header_num   => 0); -- 4262811
97227    --
97228    -- set accounting line options
97229    --
97230    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
97231            p_natural_side_code          => 'D'
97232          , p_gain_or_loss_flag          => 'N'
97233          , p_gl_transfer_mode_code      => 'S'
97234          , p_acct_entry_type_code       => 'A'
97235          , p_switch_side_flag           => 'Y'
97236          , p_merge_duplicate_code       => 'N'
97237          );
97238    --
97239    l_acc_rev_natural_side_code := 'C';  -- 4262811
97240    -- 
97241    --
97242    -- set accounting line type info
97243    --
97244    xla_ae_lines_pkg.SetAcctLineType
97245       (p_component_type             => l_component_type
97246       ,p_event_type_code            => l_event_type_code
97247       ,p_line_definition_owner_code => l_line_definition_owner_code
97248       ,p_line_definition_code       => l_line_definition_code
97249       ,p_accounting_line_code       => l_component_code
97250       ,p_accounting_line_type_code  => l_component_type_code
97251       ,p_accounting_line_appl_id    => l_component_appl_id
97252       ,p_amb_context_code           => l_amb_context_code
97253       ,p_entity_code                => l_entity_code
97254       ,p_event_class_code           => l_event_class_code);
97255    --
97256    -- set accounting class
97257    --
97258    xla_ae_lines_pkg.SetAcctClass(
97259            p_accounting_class_code  => 'OFFSET'
97260          , p_ae_header_id           => l_ae_header_id
97261          );
97262 
97263    --
97264    -- set rounding class
97265    --
97266    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
97267                       'OFFSET';
97268 
97269    --
97270    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
97271    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
97272    --
97273    -- bulk performance
97274    --
97275    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
97276 
97277    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
97278       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
97279 
97280    -- 4955764
97281    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97282       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
97283 
97284    -- 4458381 Public Sector Enh
97285    
97286    --
97287    -- set accounting attributes for the line type
97288    --
97289    l_entered_amt_idx := 3;
97290    l_accted_amt_idx  := 8;
97291    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
97292    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
97293    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
97294    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
97295    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
97296    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
97297    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
97298    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
97299    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
97300    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
97301    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
97302    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
97303    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
97304    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
97305    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
97306    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
97307    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
97308 
97309    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
97310    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
97311 
97312    ---------------------------------------------------------------------------------------------------------------
97313    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
97314    ---------------------------------------------------------------------------------------------------------------
97315    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
97316 
97317    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97318    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97319 
97320    IF xla_accounting_cache_pkg.GetValueChar
97321          (p_source_code         => 'LEDGER_CATEGORY_CODE'
97322          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
97323    AND l_bflow_method_code = 'PRIOR_ENTRY'
97324 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
97325    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
97326          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
97327        )
97328    THEN
97329          xla_ae_lines_pkg.BflowUpgEntry
97330            (p_business_method_code    => l_bflow_method_code
97331            ,p_business_class_code     => l_bflow_class_code
97332            ,p_balance_type            => l_balance_type_code);
97333    ELSE
97334       NULL;
97335 -- No business flow processing for business flow method of NONE.
97336    END IF;
97337 
97338    --
97339    -- call analytical criteria
97340    --
97341    
97342    --
97343    -- call description
97344    --
97345    -- No description or it is inherited.
97346    --
97347    -- call ADRs
97348    -- Bug 4922099
97349    --
97350    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97351         (NVL(l_actual_upg_option, 'N') = 'O') OR
97352         (NVL(l_enc_upg_option, 'N') = 'O')
97353       )
97354    THEN
97355    NULL;
97356    --
97357    --
97358    
97359   l_ccid := AcctDerRule_4(
97360            p_application_id           => p_application_id
97361          , p_ae_header_id             => l_ae_header_id 
97362 , p_source_4 => p_source_4
97363          , x_transaction_coa_id       => l_adr_transaction_coa_id
97364          , x_accounting_coa_id        => l_adr_accounting_coa_id
97365          , x_value_type_code          => l_adr_value_type_code
97366          , p_side                     => 'NA'
97367    );
97368 
97369    xla_ae_lines_pkg.set_ccid(
97370     p_code_combination_id          => l_ccid
97371   , p_value_type_code              => l_adr_value_type_code
97372   , p_transaction_coa_id           => l_adr_transaction_coa_id
97373   , p_accounting_coa_id            => l_adr_accounting_coa_id
97374   , p_adr_code                     => 'CST_DEFAULT'
97375   , p_adr_type_code                => 'S'
97376   , p_component_type               => l_component_type
97377   , p_component_code               => l_component_code
97378   , p_component_type_code          => l_component_type_code
97379   , p_component_appl_id            => l_component_appl_id
97380   , p_amb_context_code             => l_amb_context_code
97381   , p_side                         => 'NA'
97382   );
97383 
97384 
97385    --
97386    --
97387    END IF;
97388    --
97389    -- Bug 4922099
97390    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
97391           (NVL(l_enc_upg_option, 'N') = 'O')
97392         ) AND
97393         (l_bflow_method_code = 'PRIOR_ENTRY')
97394       )
97395    THEN
97396       IF
97397       --
97398       1 = 2
97399       --
97400       THEN
97401       xla_accounting_err_pkg.build_message
97402                                     (p_appli_s_name            => 'XLA'
97403                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97404                                     ,p_token_1                 => 'LINE_NUMBER'
97405                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
97406                                     ,p_token_2                 => 'LINE_TYPE_NAME'
97407                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
97408                                                                              l_component_type
97409                                                                             ,l_component_code
97410                                                                             ,l_component_type_code
97411                                                                             ,l_component_appl_id
97412                                                                             ,l_amb_context_code
97413                                                                             ,l_entity_code
97414                                                                             ,l_event_class_code
97415                                                                            )
97416                                     ,p_token_3                 => 'OWNER'
97417                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
97418                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
97419                                                                           ,p_lookup_code    => l_component_type_code
97420                                                                          )
97421                                     ,p_token_4                 => 'PRODUCT_NAME'
97422                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
97423                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
97424                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
97425                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
97426                                     ,p_ae_header_id            =>  NULL
97427                                        );
97428 
97429         IF (C_LEVEL_ERROR>= g_log_level) THEN
97430                  trace
97431                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97432                       ,p_level    => C_LEVEL_ERROR
97433                       ,p_module   => l_log_module);
97434         END IF;
97435       END IF;
97436    END IF;
97437    --
97438    --
97439    ------------------------------------------------------------------------------------------------
97440    -- 4219869 Business Flow
97441    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
97442    -- Prior Entry.  Currently, the following code is always generated.
97443    ------------------------------------------------------------------------------------------------
97444    XLA_AE_LINES_PKG.ValidateCurrentLine;
97445 
97446    ------------------------------------------------------------------------------------
97447    -- 4219869 Business Flow
97448    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
97449    ------------------------------------------------------------------------------------
97450    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97451 
97452    ----------------------------------------------------------------------------------
97453    -- 4219869 Business Flow
97454    -- Update journal entry status -- Need to generate this within IF <condition>
97455    ----------------------------------------------------------------------------------
97456    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97457          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
97458          ,p_balance_type_code => l_balance_type_code
97459          );
97460 
97461    -------------------------------------------------------------------------------------------
97462    -- 4262811 - Generate the Accrual Reversal lines
97463    -------------------------------------------------------------------------------------------
97464    BEGIN
97465       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
97466                               (g_array_event(p_event_id).array_value_num('header_index'));
97467       IF l_acc_rev_flag IS NULL THEN
97468          l_acc_rev_flag := 'N';
97469       END IF;
97470    EXCEPTION
97471       WHEN OTHERS THEN
97472          l_acc_rev_flag := 'N';
97473    END;
97474    --
97475    IF (l_acc_rev_flag = 'Y') THEN
97476 
97477        -- 4645092  ------------------------------------------------------------------------------
97478        -- To allow MPA report to determine if it should generate report process
97479        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
97480        ------------------------------------------------------------------------------------------
97481 
97482        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
97483        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
97484    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
97485    -- call ADRs
97486    -- Bug 4922099
97487    --
97488    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97489         (NVL(l_actual_upg_option, 'N') = 'O') OR
97490         (NVL(l_enc_upg_option, 'N') = 'O')
97491       )
97492    THEN
97493    NULL;
97494    --
97495    --
97496    
97497   l_ccid := AcctDerRule_4(
97498            p_application_id           => p_application_id
97499          , p_ae_header_id             => l_ae_header_id 
97500 , p_source_4 => p_source_4
97501          , x_transaction_coa_id       => l_adr_transaction_coa_id
97502          , x_accounting_coa_id        => l_adr_accounting_coa_id
97503          , x_value_type_code          => l_adr_value_type_code
97504          , p_side                     => 'NA'
97505    );
97506 
97507    xla_ae_lines_pkg.set_ccid(
97508     p_code_combination_id          => l_ccid
97509   , p_value_type_code              => l_adr_value_type_code
97510   , p_transaction_coa_id           => l_adr_transaction_coa_id
97511   , p_accounting_coa_id            => l_adr_accounting_coa_id
97512   , p_adr_code                     => 'CST_DEFAULT'
97513   , p_adr_type_code                => 'S'
97514   , p_component_type               => l_component_type
97515   , p_component_code               => l_component_code
97516   , p_component_type_code          => l_component_type_code
97517   , p_component_appl_id            => l_component_appl_id
97518   , p_amb_context_code             => l_amb_context_code
97519   , p_side                         => 'NA'
97520   );
97521 
97522 
97523    --
97524    --
97525    END IF;
97526 
97527        --
97528        -- Update the line information that should be overwritten
97529        --
97530        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
97531                                          p_header_num   => 1);
97532        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
97533 
97534        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
97535 
97536        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
97537           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
97538        END IF;
97539 
97540       --
97541       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
97542       --
97543       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
97544           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
97545       ELSE
97546           ---------------------------------------------------------------------------------------------------
97547           -- 4262811a Switch Sign
97548           ---------------------------------------------------------------------------------------------------
97549           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
97550           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97551                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97552           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97553                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97554           -- 5132302
97555           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
97556                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97557 
97558       END IF;
97559 
97560       -- 4955764
97561       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97562       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
97563 
97564 
97565       XLA_AE_LINES_PKG.ValidateCurrentLine;
97566       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97567 
97568       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97569                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
97570                ,p_balance_type_code => l_balance_type_code);
97571 
97572    END IF;
97573 
97574    -----------------------------------------------------------------------------------------
97575    -- 4262811 Multiperiod Accounting
97576    -----------------------------------------------------------------------------------------
97577      -- No MPA option is assigned.
97578 
97579 
97580 END IF;
97581 END IF;
97582 --
97583 
97584 --
97585 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97586    trace
97587       (p_msg      => 'END of AcctLineType_177'
97588       ,p_level    => C_LEVEL_PROCEDURE
97589       ,p_module   => l_log_module);
97590 END IF;
97591 --
97592 EXCEPTION
97593   WHEN xla_exceptions_pkg.application_exception THEN
97594       RAISE;
97595   WHEN OTHERS THEN
97596        xla_exceptions_pkg.raise_message
97597            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_177');
97598 END AcctLineType_177;
97599 --
97600 
97601 ---------------------------------------
97602 --
97603 -- PRIVATE FUNCTION
97604 --         AcctLineType_178
97605 --
97606 ---------------------------------------
97607 PROCEDURE AcctLineType_178 (
97608   p_application_id        IN NUMBER
97609  ,p_event_id              IN NUMBER
97610  ,p_calculate_acctd_flag  IN VARCHAR2
97611  ,p_calculate_g_l_flag    IN VARCHAR2
97612  ,p_actual_flag           IN OUT VARCHAR2
97613  ,p_balance_type_code     OUT VARCHAR2
97614  ,p_gain_or_loss_ref      OUT VARCHAR2
97615  
97616 --Cost Management Default Account
97617  , p_source_4            IN NUMBER
97618 --DISTRIBUTION_IDENTIFIER
97619  , p_source_11            IN NUMBER
97620 --Distribution Type
97621  , p_source_12            IN VARCHAR2
97622  , p_source_12_meaning    IN VARCHAR2
97623 --Entered Currency Code
97624  , p_source_15            IN VARCHAR2
97625 --Entered Amount
97626  , p_source_18            IN NUMBER
97627 --Currency Conversion Date
97628  , p_source_19            IN DATE
97629 --Currency Conversion Rate
97630  , p_source_20            IN NUMBER
97631 --Currency Conversion Type
97632  , p_source_21            IN VARCHAR2
97633 --Accounted Amount
97634  , p_source_22            IN NUMBER
97635 --Accounting Line Type
97636  , p_source_24            IN NUMBER
97637 )
97638 IS
97639 
97640 l_component_type              VARCHAR2(80);
97641 l_component_code              VARCHAR2(30);
97642 l_component_type_code         VARCHAR2(1);
97643 l_component_appl_id           INTEGER;
97644 l_amb_context_code            VARCHAR2(30);
97645 l_entity_code                 VARCHAR2(30);
97646 l_event_class_code            VARCHAR2(30);
97647 l_ae_header_id                NUMBER;
97648 l_event_type_code             VARCHAR2(30);
97649 l_line_definition_code        VARCHAR2(30);
97650 l_line_definition_owner_code  VARCHAR2(1);
97651 --
97652 -- adr variables
97653 l_segment                     VARCHAR2(30);
97654 l_ccid                        NUMBER;
97655 l_adr_transaction_coa_id      NUMBER;
97656 l_adr_accounting_coa_id       NUMBER;
97657 l_adr_flexfield_segment_code  VARCHAR2(30);
97658 l_adr_flex_value_set_id       NUMBER;
97659 l_adr_value_type_code         VARCHAR2(30);
97660 l_adr_value_combination_id    NUMBER;
97661 l_adr_value_segment_code      VARCHAR2(30);
97662 
97663 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
97664 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
97665 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
97666 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
97667 
97668 -- 4262811 Variables ------------------------------------------------------------------------------------------
97669 l_entered_amt_idx             NUMBER;
97670 l_accted_amt_idx              NUMBER;
97671 l_acc_rev_flag                VARCHAR2(1);
97672 l_accrual_line_num            NUMBER;
97673 l_tmp_amt                     NUMBER;
97674 l_acc_rev_natural_side_code   VARCHAR2(1);
97675 
97676 l_num_entries                 NUMBER;
97677 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
97678 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
97679 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
97680 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
97681 l_recog_line_1                NUMBER;
97682 l_recog_line_2                NUMBER;
97683 
97684 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
97685 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
97686 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
97687 
97688 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
97689 
97690 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
97691 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
97692 
97693 ---------------------------------------------------------------------------------------------------------------
97694 
97695 
97696 --
97697 -- bulk performance
97698 --
97699 l_balance_type_code           VARCHAR2(1);
97700 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
97701 l_log_module                  VARCHAR2(240);
97702 
97703 --
97704 -- Upgrade strategy
97705 --
97706 l_actual_upg_option           VARCHAR2(1);
97707 l_enc_upg_option           VARCHAR2(1);
97708 
97709 --
97710 BEGIN
97711 --
97712 IF g_log_enabled THEN
97713       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_178';
97714 END IF;
97715 --
97716 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97717 
97718       trace
97719          (p_msg      => 'BEGIN of AcctLineType_178'
97720          ,p_level    => C_LEVEL_PROCEDURE
97721          ,p_module   => l_log_module);
97722 
97723 END IF;
97724 --
97725 l_component_type             := 'AMB_JLT';
97726 l_component_code             := 'OFFSET';
97727 l_component_type_code        := 'S';
97728 l_component_appl_id          :=  707;
97729 l_amb_context_code           := 'DEFAULT';
97730 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
97731 l_event_class_code           := 'DIR_INTERORG_SHIP';
97732 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
97733 l_line_definition_owner_code := 'S';
97734 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
97735 --
97736 l_balance_type_code          := 'A';
97737 l_segment                     := NULL;
97738 l_ccid                        := NULL;
97739 l_adr_transaction_coa_id      := NULL;
97740 l_adr_accounting_coa_id       := NULL;
97741 l_adr_flexfield_segment_code  := NULL;
97742 l_adr_flex_value_set_id       := NULL;
97743 l_adr_value_type_code         := NULL;
97744 l_adr_value_combination_id    := NULL;
97745 l_adr_value_segment_code      := NULL;
97746 
97747 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
97748 l_bflow_class_code           := '';    -- 4219869 Business Flow
97749 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
97750 l_budgetary_control_flag     := 'N';
97751 
97752 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
97753 l_bflow_applied_to_amt       := NULL; -- 5132302
97754 l_entered_amt_idx            := NULL;          -- 4262811
97755 l_accted_amt_idx             := NULL;          -- 4262811
97756 l_acc_rev_flag               := NULL;          -- 4262811
97757 l_accrual_line_num           := NULL;          -- 4262811
97758 l_tmp_amt                    := NULL;          -- 4262811
97759 --
97760  
97761 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
97762     l_balance_type_code <> 'B' THEN
97763 IF NVL(p_source_24,9E125) =  2
97764  THEN 
97765 
97766    --
97767    XLA_AE_LINES_PKG.SetNewLine;
97768 
97769    p_balance_type_code          := l_balance_type_code;
97770    -- set the flag so later we will know whether the gain loss line needs to be created
97771    
97772    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
97773      p_actual_flag :='A';
97774    END IF;
97775 
97776    --
97777    -- bulk performance
97778    --
97779    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
97780                                       p_header_num   => 0); -- 4262811
97781    --
97782    -- set accounting line options
97783    --
97784    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
97785            p_natural_side_code          => 'D'
97786          , p_gain_or_loss_flag          => 'N'
97787          , p_gl_transfer_mode_code      => 'S'
97788          , p_acct_entry_type_code       => 'A'
97789          , p_switch_side_flag           => 'Y'
97790          , p_merge_duplicate_code       => 'N'
97791          );
97792    --
97793    l_acc_rev_natural_side_code := 'C';  -- 4262811
97794    -- 
97795    --
97796    -- set accounting line type info
97797    --
97798    xla_ae_lines_pkg.SetAcctLineType
97799       (p_component_type             => l_component_type
97800       ,p_event_type_code            => l_event_type_code
97801       ,p_line_definition_owner_code => l_line_definition_owner_code
97802       ,p_line_definition_code       => l_line_definition_code
97803       ,p_accounting_line_code       => l_component_code
97804       ,p_accounting_line_type_code  => l_component_type_code
97805       ,p_accounting_line_appl_id    => l_component_appl_id
97806       ,p_amb_context_code           => l_amb_context_code
97807       ,p_entity_code                => l_entity_code
97808       ,p_event_class_code           => l_event_class_code);
97809    --
97810    -- set accounting class
97811    --
97812    xla_ae_lines_pkg.SetAcctClass(
97813            p_accounting_class_code  => 'OFFSET'
97814          , p_ae_header_id           => l_ae_header_id
97815          );
97816 
97817    --
97818    -- set rounding class
97819    --
97820    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
97821                       'OFFSET';
97822 
97823    --
97824    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
97825    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
97826    --
97827    -- bulk performance
97828    --
97829    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
97830 
97831    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
97832       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
97833 
97834    -- 4955764
97835    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97836       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
97837 
97838    -- 4458381 Public Sector Enh
97839    
97840    --
97841    -- set accounting attributes for the line type
97842    --
97843    l_entered_amt_idx := 3;
97844    l_accted_amt_idx  := 8;
97845    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
97846    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
97847    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
97848    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
97849    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
97850    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
97851    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
97852    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
97853    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
97854    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
97855    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
97856    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
97857    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
97858    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
97859    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
97860    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
97861    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
97862 
97863    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
97864    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
97865 
97866    ---------------------------------------------------------------------------------------------------------------
97867    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
97868    ---------------------------------------------------------------------------------------------------------------
97869    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
97870 
97871    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97872    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97873 
97874    IF xla_accounting_cache_pkg.GetValueChar
97875          (p_source_code         => 'LEDGER_CATEGORY_CODE'
97876          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
97877    AND l_bflow_method_code = 'PRIOR_ENTRY'
97878 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
97879    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
97880          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
97881        )
97882    THEN
97883          xla_ae_lines_pkg.BflowUpgEntry
97884            (p_business_method_code    => l_bflow_method_code
97885            ,p_business_class_code     => l_bflow_class_code
97886            ,p_balance_type            => l_balance_type_code);
97887    ELSE
97888       NULL;
97889 -- No business flow processing for business flow method of NONE.
97890    END IF;
97891 
97892    --
97893    -- call analytical criteria
97894    --
97895    
97896    --
97897    -- call description
97898    --
97899    -- No description or it is inherited.
97900    --
97901    -- call ADRs
97902    -- Bug 4922099
97903    --
97904    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97905         (NVL(l_actual_upg_option, 'N') = 'O') OR
97906         (NVL(l_enc_upg_option, 'N') = 'O')
97907       )
97908    THEN
97909    NULL;
97910    --
97911    --
97912    
97913   l_ccid := AcctDerRule_4(
97914            p_application_id           => p_application_id
97915          , p_ae_header_id             => l_ae_header_id 
97916 , p_source_4 => p_source_4
97917          , x_transaction_coa_id       => l_adr_transaction_coa_id
97918          , x_accounting_coa_id        => l_adr_accounting_coa_id
97919          , x_value_type_code          => l_adr_value_type_code
97920          , p_side                     => 'NA'
97921    );
97922 
97923    xla_ae_lines_pkg.set_ccid(
97924     p_code_combination_id          => l_ccid
97925   , p_value_type_code              => l_adr_value_type_code
97926   , p_transaction_coa_id           => l_adr_transaction_coa_id
97927   , p_accounting_coa_id            => l_adr_accounting_coa_id
97928   , p_adr_code                     => 'CST_DEFAULT'
97929   , p_adr_type_code                => 'S'
97930   , p_component_type               => l_component_type
97931   , p_component_code               => l_component_code
97932   , p_component_type_code          => l_component_type_code
97933   , p_component_appl_id            => l_component_appl_id
97934   , p_amb_context_code             => l_amb_context_code
97935   , p_side                         => 'NA'
97936   );
97937 
97938 
97939    --
97940    --
97941    END IF;
97942    --
97943    -- Bug 4922099
97944    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
97945           (NVL(l_enc_upg_option, 'N') = 'O')
97946         ) AND
97947         (l_bflow_method_code = 'PRIOR_ENTRY')
97948       )
97949    THEN
97950       IF
97951       --
97952       1 = 2
97953       --
97954       THEN
97955       xla_accounting_err_pkg.build_message
97956                                     (p_appli_s_name            => 'XLA'
97957                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97958                                     ,p_token_1                 => 'LINE_NUMBER'
97959                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
97960                                     ,p_token_2                 => 'LINE_TYPE_NAME'
97961                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
97962                                                                              l_component_type
97963                                                                             ,l_component_code
97964                                                                             ,l_component_type_code
97965                                                                             ,l_component_appl_id
97966                                                                             ,l_amb_context_code
97967                                                                             ,l_entity_code
97968                                                                             ,l_event_class_code
97969                                                                            )
97970                                     ,p_token_3                 => 'OWNER'
97971                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
97972                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
97973                                                                           ,p_lookup_code    => l_component_type_code
97974                                                                          )
97975                                     ,p_token_4                 => 'PRODUCT_NAME'
97976                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
97977                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
97978                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
97979                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
97980                                     ,p_ae_header_id            =>  NULL
97981                                        );
97982 
97983         IF (C_LEVEL_ERROR>= g_log_level) THEN
97984                  trace
97985                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97986                       ,p_level    => C_LEVEL_ERROR
97987                       ,p_module   => l_log_module);
97988         END IF;
97989       END IF;
97990    END IF;
97991    --
97992    --
97993    ------------------------------------------------------------------------------------------------
97994    -- 4219869 Business Flow
97995    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
97996    -- Prior Entry.  Currently, the following code is always generated.
97997    ------------------------------------------------------------------------------------------------
97998    XLA_AE_LINES_PKG.ValidateCurrentLine;
97999 
98000    ------------------------------------------------------------------------------------
98001    -- 4219869 Business Flow
98002    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
98003    ------------------------------------------------------------------------------------
98004    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98005 
98006    ----------------------------------------------------------------------------------
98007    -- 4219869 Business Flow
98008    -- Update journal entry status -- Need to generate this within IF <condition>
98009    ----------------------------------------------------------------------------------
98010    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98011          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
98012          ,p_balance_type_code => l_balance_type_code
98013          );
98014 
98015    -------------------------------------------------------------------------------------------
98016    -- 4262811 - Generate the Accrual Reversal lines
98017    -------------------------------------------------------------------------------------------
98018    BEGIN
98019       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
98020                               (g_array_event(p_event_id).array_value_num('header_index'));
98021       IF l_acc_rev_flag IS NULL THEN
98022          l_acc_rev_flag := 'N';
98023       END IF;
98024    EXCEPTION
98025       WHEN OTHERS THEN
98026          l_acc_rev_flag := 'N';
98027    END;
98028    --
98029    IF (l_acc_rev_flag = 'Y') THEN
98030 
98031        -- 4645092  ------------------------------------------------------------------------------
98032        -- To allow MPA report to determine if it should generate report process
98033        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
98034        ------------------------------------------------------------------------------------------
98035 
98036        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
98037        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
98038    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
98039    -- call ADRs
98040    -- Bug 4922099
98041    --
98042    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98043         (NVL(l_actual_upg_option, 'N') = 'O') OR
98044         (NVL(l_enc_upg_option, 'N') = 'O')
98045       )
98046    THEN
98047    NULL;
98048    --
98049    --
98050    
98051   l_ccid := AcctDerRule_4(
98052            p_application_id           => p_application_id
98053          , p_ae_header_id             => l_ae_header_id 
98054 , p_source_4 => p_source_4
98055          , x_transaction_coa_id       => l_adr_transaction_coa_id
98056          , x_accounting_coa_id        => l_adr_accounting_coa_id
98057          , x_value_type_code          => l_adr_value_type_code
98058          , p_side                     => 'NA'
98059    );
98060 
98061    xla_ae_lines_pkg.set_ccid(
98062     p_code_combination_id          => l_ccid
98063   , p_value_type_code              => l_adr_value_type_code
98064   , p_transaction_coa_id           => l_adr_transaction_coa_id
98065   , p_accounting_coa_id            => l_adr_accounting_coa_id
98066   , p_adr_code                     => 'CST_DEFAULT'
98067   , p_adr_type_code                => 'S'
98068   , p_component_type               => l_component_type
98069   , p_component_code               => l_component_code
98070   , p_component_type_code          => l_component_type_code
98071   , p_component_appl_id            => l_component_appl_id
98072   , p_amb_context_code             => l_amb_context_code
98073   , p_side                         => 'NA'
98074   );
98075 
98076 
98077    --
98078    --
98079    END IF;
98080 
98081        --
98082        -- Update the line information that should be overwritten
98083        --
98084        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
98085                                          p_header_num   => 1);
98086        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
98087 
98088        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
98089 
98090        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
98091           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
98092        END IF;
98093 
98094       --
98095       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
98096       --
98097       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
98098           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
98099       ELSE
98100           ---------------------------------------------------------------------------------------------------
98101           -- 4262811a Switch Sign
98102           ---------------------------------------------------------------------------------------------------
98103           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
98104           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98105                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98106           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98107                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98108           -- 5132302
98109           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
98110                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98111 
98112       END IF;
98113 
98114       -- 4955764
98115       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98116       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
98117 
98118 
98119       XLA_AE_LINES_PKG.ValidateCurrentLine;
98120       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98121 
98122       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98123                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
98124                ,p_balance_type_code => l_balance_type_code);
98125 
98126    END IF;
98127 
98128    -----------------------------------------------------------------------------------------
98129    -- 4262811 Multiperiod Accounting
98130    -----------------------------------------------------------------------------------------
98131      -- No MPA option is assigned.
98132 
98133 
98134 END IF;
98135 END IF;
98136 --
98137 
98138 --
98139 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98140    trace
98141       (p_msg      => 'END of AcctLineType_178'
98142       ,p_level    => C_LEVEL_PROCEDURE
98143       ,p_module   => l_log_module);
98144 END IF;
98145 --
98146 EXCEPTION
98147   WHEN xla_exceptions_pkg.application_exception THEN
98148       RAISE;
98149   WHEN OTHERS THEN
98150        xla_exceptions_pkg.raise_message
98151            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_178');
98152 END AcctLineType_178;
98153 --
98154 
98155 ---------------------------------------
98156 --
98157 -- PRIVATE FUNCTION
98158 --         AcctLineType_179
98159 --
98160 ---------------------------------------
98161 PROCEDURE AcctLineType_179 (
98162   p_application_id        IN NUMBER
98163  ,p_event_id              IN NUMBER
98164  ,p_calculate_acctd_flag  IN VARCHAR2
98165  ,p_calculate_g_l_flag    IN VARCHAR2
98166  ,p_actual_flag           IN OUT VARCHAR2
98167  ,p_balance_type_code     OUT VARCHAR2
98168  ,p_gain_or_loss_ref      OUT VARCHAR2
98169  
98170 --Cost Management Default Account
98171  , p_source_4            IN NUMBER
98172 --DISTRIBUTION_IDENTIFIER
98173  , p_source_11            IN NUMBER
98174 --Distribution Type
98175  , p_source_12            IN VARCHAR2
98176  , p_source_12_meaning    IN VARCHAR2
98177 --Entered Currency Code
98178  , p_source_15            IN VARCHAR2
98179 --Entered Amount
98180  , p_source_18            IN NUMBER
98181 --Currency Conversion Date
98182  , p_source_19            IN DATE
98183 --Currency Conversion Rate
98184  , p_source_20            IN NUMBER
98185 --Currency Conversion Type
98186  , p_source_21            IN VARCHAR2
98187 --Accounted Amount
98188  , p_source_22            IN NUMBER
98189 --Accounting Line Type
98190  , p_source_24            IN NUMBER
98191 )
98192 IS
98193 
98194 l_component_type              VARCHAR2(80);
98195 l_component_code              VARCHAR2(30);
98196 l_component_type_code         VARCHAR2(1);
98197 l_component_appl_id           INTEGER;
98198 l_amb_context_code            VARCHAR2(30);
98199 l_entity_code                 VARCHAR2(30);
98200 l_event_class_code            VARCHAR2(30);
98201 l_ae_header_id                NUMBER;
98202 l_event_type_code             VARCHAR2(30);
98203 l_line_definition_code        VARCHAR2(30);
98204 l_line_definition_owner_code  VARCHAR2(1);
98205 --
98206 -- adr variables
98207 l_segment                     VARCHAR2(30);
98208 l_ccid                        NUMBER;
98209 l_adr_transaction_coa_id      NUMBER;
98210 l_adr_accounting_coa_id       NUMBER;
98211 l_adr_flexfield_segment_code  VARCHAR2(30);
98212 l_adr_flex_value_set_id       NUMBER;
98213 l_adr_value_type_code         VARCHAR2(30);
98214 l_adr_value_combination_id    NUMBER;
98215 l_adr_value_segment_code      VARCHAR2(30);
98216 
98217 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
98218 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
98219 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
98220 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
98221 
98222 -- 4262811 Variables ------------------------------------------------------------------------------------------
98223 l_entered_amt_idx             NUMBER;
98224 l_accted_amt_idx              NUMBER;
98225 l_acc_rev_flag                VARCHAR2(1);
98226 l_accrual_line_num            NUMBER;
98227 l_tmp_amt                     NUMBER;
98228 l_acc_rev_natural_side_code   VARCHAR2(1);
98229 
98230 l_num_entries                 NUMBER;
98231 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
98232 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
98233 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
98234 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
98235 l_recog_line_1                NUMBER;
98236 l_recog_line_2                NUMBER;
98237 
98238 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
98239 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
98240 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
98241 
98242 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
98243 
98244 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
98245 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
98246 
98247 ---------------------------------------------------------------------------------------------------------------
98248 
98249 
98250 --
98251 -- bulk performance
98252 --
98253 l_balance_type_code           VARCHAR2(1);
98254 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
98255 l_log_module                  VARCHAR2(240);
98256 
98257 --
98258 -- Upgrade strategy
98259 --
98260 l_actual_upg_option           VARCHAR2(1);
98261 l_enc_upg_option           VARCHAR2(1);
98262 
98263 --
98264 BEGIN
98265 --
98266 IF g_log_enabled THEN
98267       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_179';
98268 END IF;
98269 --
98270 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98271 
98272       trace
98273          (p_msg      => 'BEGIN of AcctLineType_179'
98274          ,p_level    => C_LEVEL_PROCEDURE
98275          ,p_module   => l_log_module);
98276 
98277 END IF;
98278 --
98279 l_component_type             := 'AMB_JLT';
98280 l_component_code             := 'OFFSET';
98281 l_component_type_code        := 'S';
98282 l_component_appl_id          :=  707;
98283 l_amb_context_code           := 'DEFAULT';
98284 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
98285 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
98286 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_ALL';
98287 l_line_definition_owner_code := 'S';
98288 l_line_definition_code       := 'FOB_SHIP_SENDER_SHIP';
98289 --
98290 l_balance_type_code          := 'A';
98291 l_segment                     := NULL;
98292 l_ccid                        := NULL;
98293 l_adr_transaction_coa_id      := NULL;
98294 l_adr_accounting_coa_id       := NULL;
98295 l_adr_flexfield_segment_code  := NULL;
98296 l_adr_flex_value_set_id       := NULL;
98297 l_adr_value_type_code         := NULL;
98298 l_adr_value_combination_id    := NULL;
98299 l_adr_value_segment_code      := NULL;
98300 
98301 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
98302 l_bflow_class_code           := '';    -- 4219869 Business Flow
98303 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
98304 l_budgetary_control_flag     := 'N';
98305 
98306 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
98307 l_bflow_applied_to_amt       := NULL; -- 5132302
98308 l_entered_amt_idx            := NULL;          -- 4262811
98309 l_accted_amt_idx             := NULL;          -- 4262811
98310 l_acc_rev_flag               := NULL;          -- 4262811
98311 l_accrual_line_num           := NULL;          -- 4262811
98312 l_tmp_amt                    := NULL;          -- 4262811
98313 --
98314  
98315 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
98316     l_balance_type_code <> 'B' THEN
98317 IF NVL(p_source_24,9E125) =  2 AND 
98318 p_source_22 <=  0
98319  THEN 
98320 
98321    --
98322    XLA_AE_LINES_PKG.SetNewLine;
98323 
98324    p_balance_type_code          := l_balance_type_code;
98325    -- set the flag so later we will know whether the gain loss line needs to be created
98326    
98327    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
98328      p_actual_flag :='A';
98329    END IF;
98330 
98331    --
98332    -- bulk performance
98333    --
98334    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
98335                                       p_header_num   => 0); -- 4262811
98336    --
98337    -- set accounting line options
98338    --
98339    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
98340            p_natural_side_code          => 'D'
98341          , p_gain_or_loss_flag          => 'N'
98342          , p_gl_transfer_mode_code      => 'S'
98343          , p_acct_entry_type_code       => 'A'
98344          , p_switch_side_flag           => 'Y'
98345          , p_merge_duplicate_code       => 'N'
98346          );
98347    --
98348    l_acc_rev_natural_side_code := 'C';  -- 4262811
98349    -- 
98350    --
98351    -- set accounting line type info
98352    --
98353    xla_ae_lines_pkg.SetAcctLineType
98354       (p_component_type             => l_component_type
98355       ,p_event_type_code            => l_event_type_code
98356       ,p_line_definition_owner_code => l_line_definition_owner_code
98357       ,p_line_definition_code       => l_line_definition_code
98358       ,p_accounting_line_code       => l_component_code
98359       ,p_accounting_line_type_code  => l_component_type_code
98360       ,p_accounting_line_appl_id    => l_component_appl_id
98361       ,p_amb_context_code           => l_amb_context_code
98362       ,p_entity_code                => l_entity_code
98363       ,p_event_class_code           => l_event_class_code);
98364    --
98365    -- set accounting class
98366    --
98367    xla_ae_lines_pkg.SetAcctClass(
98368            p_accounting_class_code  => 'OFFSET'
98369          , p_ae_header_id           => l_ae_header_id
98370          );
98371 
98372    --
98373    -- set rounding class
98374    --
98375    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
98376                       'OFFSET';
98377 
98378    --
98379    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
98380    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
98381    --
98382    -- bulk performance
98383    --
98384    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
98385 
98386    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
98387       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
98388 
98389    -- 4955764
98390    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98391       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
98392 
98393    -- 4458381 Public Sector Enh
98394    
98395    --
98396    -- set accounting attributes for the line type
98397    --
98398    l_entered_amt_idx := 3;
98399    l_accted_amt_idx  := 8;
98400    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
98401    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
98402    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
98403    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
98404    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
98405    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
98406    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
98407    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
98408    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
98409    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
98410    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
98411    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
98412    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
98413    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
98414    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
98415    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
98416    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
98417 
98418    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
98419    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
98420 
98421    ---------------------------------------------------------------------------------------------------------------
98422    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
98423    ---------------------------------------------------------------------------------------------------------------
98424    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
98425 
98426    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98427    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98428 
98429    IF xla_accounting_cache_pkg.GetValueChar
98430          (p_source_code         => 'LEDGER_CATEGORY_CODE'
98431          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
98432    AND l_bflow_method_code = 'PRIOR_ENTRY'
98433 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
98434    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
98435          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
98436        )
98437    THEN
98438          xla_ae_lines_pkg.BflowUpgEntry
98439            (p_business_method_code    => l_bflow_method_code
98440            ,p_business_class_code     => l_bflow_class_code
98441            ,p_balance_type            => l_balance_type_code);
98442    ELSE
98443       NULL;
98444 -- No business flow processing for business flow method of NONE.
98445    END IF;
98446 
98447    --
98448    -- call analytical criteria
98449    --
98450    
98451    --
98452    -- call description
98453    --
98454    -- No description or it is inherited.
98455    --
98456    -- call ADRs
98457    -- Bug 4922099
98458    --
98459    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98460         (NVL(l_actual_upg_option, 'N') = 'O') OR
98461         (NVL(l_enc_upg_option, 'N') = 'O')
98462       )
98463    THEN
98464    NULL;
98465    --
98466    --
98467    
98468   l_ccid := AcctDerRule_4(
98469            p_application_id           => p_application_id
98470          , p_ae_header_id             => l_ae_header_id 
98471 , p_source_4 => p_source_4
98472          , x_transaction_coa_id       => l_adr_transaction_coa_id
98473          , x_accounting_coa_id        => l_adr_accounting_coa_id
98474          , x_value_type_code          => l_adr_value_type_code
98475          , p_side                     => 'NA'
98476    );
98477 
98478    xla_ae_lines_pkg.set_ccid(
98479     p_code_combination_id          => l_ccid
98480   , p_value_type_code              => l_adr_value_type_code
98481   , p_transaction_coa_id           => l_adr_transaction_coa_id
98482   , p_accounting_coa_id            => l_adr_accounting_coa_id
98483   , p_adr_code                     => 'CST_DEFAULT'
98484   , p_adr_type_code                => 'S'
98485   , p_component_type               => l_component_type
98486   , p_component_code               => l_component_code
98487   , p_component_type_code          => l_component_type_code
98488   , p_component_appl_id            => l_component_appl_id
98489   , p_amb_context_code             => l_amb_context_code
98490   , p_side                         => 'NA'
98491   );
98492 
98493 
98494    --
98495    --
98496    END IF;
98497    --
98498    -- Bug 4922099
98499    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
98500           (NVL(l_enc_upg_option, 'N') = 'O')
98501         ) AND
98502         (l_bflow_method_code = 'PRIOR_ENTRY')
98503       )
98504    THEN
98505       IF
98506       --
98507       1 = 2
98508       --
98509       THEN
98510       xla_accounting_err_pkg.build_message
98511                                     (p_appli_s_name            => 'XLA'
98512                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98513                                     ,p_token_1                 => 'LINE_NUMBER'
98514                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
98515                                     ,p_token_2                 => 'LINE_TYPE_NAME'
98516                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
98517                                                                              l_component_type
98518                                                                             ,l_component_code
98519                                                                             ,l_component_type_code
98520                                                                             ,l_component_appl_id
98521                                                                             ,l_amb_context_code
98522                                                                             ,l_entity_code
98523                                                                             ,l_event_class_code
98524                                                                            )
98525                                     ,p_token_3                 => 'OWNER'
98526                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
98527                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
98528                                                                           ,p_lookup_code    => l_component_type_code
98529                                                                          )
98530                                     ,p_token_4                 => 'PRODUCT_NAME'
98531                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
98532                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
98533                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
98534                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
98535                                     ,p_ae_header_id            =>  NULL
98536                                        );
98537 
98538         IF (C_LEVEL_ERROR>= g_log_level) THEN
98539                  trace
98540                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98541                       ,p_level    => C_LEVEL_ERROR
98542                       ,p_module   => l_log_module);
98543         END IF;
98544       END IF;
98545    END IF;
98546    --
98547    --
98548    ------------------------------------------------------------------------------------------------
98549    -- 4219869 Business Flow
98550    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
98551    -- Prior Entry.  Currently, the following code is always generated.
98552    ------------------------------------------------------------------------------------------------
98553    XLA_AE_LINES_PKG.ValidateCurrentLine;
98554 
98555    ------------------------------------------------------------------------------------
98556    -- 4219869 Business Flow
98557    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
98558    ------------------------------------------------------------------------------------
98559    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98560 
98561    ----------------------------------------------------------------------------------
98562    -- 4219869 Business Flow
98563    -- Update journal entry status -- Need to generate this within IF <condition>
98564    ----------------------------------------------------------------------------------
98565    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98566          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
98567          ,p_balance_type_code => l_balance_type_code
98568          );
98569 
98570    -------------------------------------------------------------------------------------------
98571    -- 4262811 - Generate the Accrual Reversal lines
98572    -------------------------------------------------------------------------------------------
98573    BEGIN
98574       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
98575                               (g_array_event(p_event_id).array_value_num('header_index'));
98576       IF l_acc_rev_flag IS NULL THEN
98577          l_acc_rev_flag := 'N';
98578       END IF;
98579    EXCEPTION
98580       WHEN OTHERS THEN
98581          l_acc_rev_flag := 'N';
98582    END;
98583    --
98584    IF (l_acc_rev_flag = 'Y') THEN
98585 
98586        -- 4645092  ------------------------------------------------------------------------------
98587        -- To allow MPA report to determine if it should generate report process
98588        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
98589        ------------------------------------------------------------------------------------------
98590 
98591        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
98592        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
98593    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
98594    -- call ADRs
98595    -- Bug 4922099
98596    --
98597    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98598         (NVL(l_actual_upg_option, 'N') = 'O') OR
98599         (NVL(l_enc_upg_option, 'N') = 'O')
98600       )
98601    THEN
98602    NULL;
98603    --
98604    --
98605    
98606   l_ccid := AcctDerRule_4(
98607            p_application_id           => p_application_id
98608          , p_ae_header_id             => l_ae_header_id 
98609 , p_source_4 => p_source_4
98610          , x_transaction_coa_id       => l_adr_transaction_coa_id
98611          , x_accounting_coa_id        => l_adr_accounting_coa_id
98612          , x_value_type_code          => l_adr_value_type_code
98613          , p_side                     => 'NA'
98614    );
98615 
98616    xla_ae_lines_pkg.set_ccid(
98617     p_code_combination_id          => l_ccid
98618   , p_value_type_code              => l_adr_value_type_code
98619   , p_transaction_coa_id           => l_adr_transaction_coa_id
98620   , p_accounting_coa_id            => l_adr_accounting_coa_id
98621   , p_adr_code                     => 'CST_DEFAULT'
98622   , p_adr_type_code                => 'S'
98623   , p_component_type               => l_component_type
98624   , p_component_code               => l_component_code
98625   , p_component_type_code          => l_component_type_code
98626   , p_component_appl_id            => l_component_appl_id
98627   , p_amb_context_code             => l_amb_context_code
98628   , p_side                         => 'NA'
98629   );
98630 
98631 
98632    --
98633    --
98634    END IF;
98635 
98636        --
98637        -- Update the line information that should be overwritten
98638        --
98639        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
98640                                          p_header_num   => 1);
98641        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
98642 
98643        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
98644 
98645        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
98646           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
98647        END IF;
98648 
98649       --
98650       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
98651       --
98652       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
98653           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
98654       ELSE
98655           ---------------------------------------------------------------------------------------------------
98656           -- 4262811a Switch Sign
98657           ---------------------------------------------------------------------------------------------------
98658           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
98659           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98660                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98661           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98662                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98663           -- 5132302
98664           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
98665                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98666 
98667       END IF;
98668 
98669       -- 4955764
98670       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98671       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
98672 
98673 
98674       XLA_AE_LINES_PKG.ValidateCurrentLine;
98675       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98676 
98677       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98678                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
98679                ,p_balance_type_code => l_balance_type_code);
98680 
98681    END IF;
98682 
98683    -----------------------------------------------------------------------------------------
98684    -- 4262811 Multiperiod Accounting
98685    -----------------------------------------------------------------------------------------
98686      -- No MPA option is assigned.
98687 
98688 
98689 END IF;
98690 END IF;
98691 --
98692 
98693 --
98694 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98695    trace
98696       (p_msg      => 'END of AcctLineType_179'
98697       ,p_level    => C_LEVEL_PROCEDURE
98698       ,p_module   => l_log_module);
98699 END IF;
98700 --
98701 EXCEPTION
98702   WHEN xla_exceptions_pkg.application_exception THEN
98703       RAISE;
98704   WHEN OTHERS THEN
98705        xla_exceptions_pkg.raise_message
98706            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_179');
98707 END AcctLineType_179;
98708 --
98709 
98710 ---------------------------------------
98711 --
98712 -- PRIVATE FUNCTION
98713 --         AcctLineType_180
98714 --
98715 ---------------------------------------
98716 PROCEDURE AcctLineType_180 (
98717   p_application_id        IN NUMBER
98718  ,p_event_id              IN NUMBER
98719  ,p_calculate_acctd_flag  IN VARCHAR2
98720  ,p_calculate_g_l_flag    IN VARCHAR2
98721  ,p_actual_flag           IN OUT VARCHAR2
98722  ,p_balance_type_code     OUT VARCHAR2
98723  ,p_gain_or_loss_ref      OUT VARCHAR2
98724  
98725 --Cost Management Default Account
98726  , p_source_4            IN NUMBER
98727 --DISTRIBUTION_IDENTIFIER
98728  , p_source_11            IN NUMBER
98729 --Distribution Type
98730  , p_source_12            IN VARCHAR2
98731  , p_source_12_meaning    IN VARCHAR2
98732 --Entered Currency Code
98733  , p_source_15            IN VARCHAR2
98734 --Entered Amount
98735  , p_source_18            IN NUMBER
98736 --Currency Conversion Date
98737  , p_source_19            IN DATE
98738 --Currency Conversion Rate
98739  , p_source_20            IN NUMBER
98740 --Currency Conversion Type
98741  , p_source_21            IN VARCHAR2
98742 --Accounted Amount
98743  , p_source_22            IN NUMBER
98744 --Accounting Line Type
98745  , p_source_24            IN NUMBER
98746 --Transaction Action Name
98747  , p_source_35            IN NUMBER
98748  , p_source_35_meaning    IN VARCHAR2
98749 )
98750 IS
98751 
98752 l_component_type              VARCHAR2(80);
98753 l_component_code              VARCHAR2(30);
98754 l_component_type_code         VARCHAR2(1);
98755 l_component_appl_id           INTEGER;
98756 l_amb_context_code            VARCHAR2(30);
98757 l_entity_code                 VARCHAR2(30);
98758 l_event_class_code            VARCHAR2(30);
98759 l_ae_header_id                NUMBER;
98760 l_event_type_code             VARCHAR2(30);
98761 l_line_definition_code        VARCHAR2(30);
98762 l_line_definition_owner_code  VARCHAR2(1);
98763 --
98764 -- adr variables
98765 l_segment                     VARCHAR2(30);
98766 l_ccid                        NUMBER;
98767 l_adr_transaction_coa_id      NUMBER;
98768 l_adr_accounting_coa_id       NUMBER;
98769 l_adr_flexfield_segment_code  VARCHAR2(30);
98770 l_adr_flex_value_set_id       NUMBER;
98771 l_adr_value_type_code         VARCHAR2(30);
98772 l_adr_value_combination_id    NUMBER;
98773 l_adr_value_segment_code      VARCHAR2(30);
98774 
98775 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
98776 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
98777 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
98778 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
98779 
98780 -- 4262811 Variables ------------------------------------------------------------------------------------------
98781 l_entered_amt_idx             NUMBER;
98782 l_accted_amt_idx              NUMBER;
98783 l_acc_rev_flag                VARCHAR2(1);
98784 l_accrual_line_num            NUMBER;
98785 l_tmp_amt                     NUMBER;
98786 l_acc_rev_natural_side_code   VARCHAR2(1);
98787 
98788 l_num_entries                 NUMBER;
98789 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
98790 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
98791 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
98792 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
98793 l_recog_line_1                NUMBER;
98794 l_recog_line_2                NUMBER;
98795 
98796 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
98797 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
98798 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
98799 
98800 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
98801 
98802 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
98803 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
98804 
98805 ---------------------------------------------------------------------------------------------------------------
98806 
98807 
98808 --
98809 -- bulk performance
98810 --
98811 l_balance_type_code           VARCHAR2(1);
98812 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
98813 l_log_module                  VARCHAR2(240);
98814 
98815 --
98816 -- Upgrade strategy
98817 --
98818 l_actual_upg_option           VARCHAR2(1);
98819 l_enc_upg_option           VARCHAR2(1);
98820 
98821 --
98822 BEGIN
98823 --
98824 IF g_log_enabled THEN
98825       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_180';
98826 END IF;
98827 --
98828 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98829 
98830       trace
98831          (p_msg      => 'BEGIN of AcctLineType_180'
98832          ,p_level    => C_LEVEL_PROCEDURE
98833          ,p_module   => l_log_module);
98834 
98835 END IF;
98836 --
98837 l_component_type             := 'AMB_JLT';
98838 l_component_code             := 'OFFSET';
98839 l_component_type_code        := 'S';
98840 l_component_appl_id          :=  707;
98841 l_amb_context_code           := 'DEFAULT';
98842 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
98843 l_event_class_code           := 'LOG_INTERCOMPANY';
98844 l_event_type_code            := 'LOG_INTERCOMPANY_ALL';
98845 l_line_definition_owner_code := 'S';
98846 l_line_definition_code       := 'LOG_INTERCOMPANY';
98847 --
98848 l_balance_type_code          := 'A';
98849 l_segment                     := NULL;
98850 l_ccid                        := NULL;
98851 l_adr_transaction_coa_id      := NULL;
98852 l_adr_accounting_coa_id       := NULL;
98853 l_adr_flexfield_segment_code  := NULL;
98854 l_adr_flex_value_set_id       := NULL;
98855 l_adr_value_type_code         := NULL;
98856 l_adr_value_combination_id    := NULL;
98857 l_adr_value_segment_code      := NULL;
98858 
98859 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
98860 l_bflow_class_code           := '';    -- 4219869 Business Flow
98861 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
98862 l_budgetary_control_flag     := 'N';
98863 
98864 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
98865 l_bflow_applied_to_amt       := NULL; -- 5132302
98866 l_entered_amt_idx            := NULL;          -- 4262811
98867 l_accted_amt_idx             := NULL;          -- 4262811
98868 l_acc_rev_flag               := NULL;          -- 4262811
98869 l_accrual_line_num           := NULL;          -- 4262811
98870 l_tmp_amt                    := NULL;          -- 4262811
98871 --
98872  
98873 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
98874     l_balance_type_code <> 'B' THEN
98875 IF NVL(p_source_24,9E125) =  2 AND 
98876 ((p_source_22 <=  0 AND 
98877 NVL(p_source_35,9E125) =  13) OR 
98878 (p_source_22 <=  0 AND 
98879 NVL(p_source_35,9E125) =  9) OR 
98880 (p_source_22 >=  0 AND 
98881 NVL(p_source_35,9E125) =  10) OR 
98882 NVL(p_source_35,9E125) =  10 OR 
98883 NVL(p_source_35,9E125) =  13)
98884  THEN 
98885 
98886    --
98887    XLA_AE_LINES_PKG.SetNewLine;
98888 
98889    p_balance_type_code          := l_balance_type_code;
98890    -- set the flag so later we will know whether the gain loss line needs to be created
98891    
98892    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
98893      p_actual_flag :='A';
98894    END IF;
98895 
98896    --
98897    -- bulk performance
98898    --
98899    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
98900                                       p_header_num   => 0); -- 4262811
98901    --
98902    -- set accounting line options
98903    --
98904    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
98905            p_natural_side_code          => 'D'
98906          , p_gain_or_loss_flag          => 'N'
98907          , p_gl_transfer_mode_code      => 'S'
98908          , p_acct_entry_type_code       => 'A'
98909          , p_switch_side_flag           => 'Y'
98910          , p_merge_duplicate_code       => 'N'
98911          );
98912    --
98913    l_acc_rev_natural_side_code := 'C';  -- 4262811
98914    -- 
98915    --
98916    -- set accounting line type info
98917    --
98918    xla_ae_lines_pkg.SetAcctLineType
98919       (p_component_type             => l_component_type
98920       ,p_event_type_code            => l_event_type_code
98921       ,p_line_definition_owner_code => l_line_definition_owner_code
98922       ,p_line_definition_code       => l_line_definition_code
98923       ,p_accounting_line_code       => l_component_code
98924       ,p_accounting_line_type_code  => l_component_type_code
98925       ,p_accounting_line_appl_id    => l_component_appl_id
98926       ,p_amb_context_code           => l_amb_context_code
98927       ,p_entity_code                => l_entity_code
98928       ,p_event_class_code           => l_event_class_code);
98929    --
98930    -- set accounting class
98931    --
98932    xla_ae_lines_pkg.SetAcctClass(
98933            p_accounting_class_code  => 'OFFSET'
98934          , p_ae_header_id           => l_ae_header_id
98935          );
98936 
98937    --
98938    -- set rounding class
98939    --
98940    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
98941                       'OFFSET';
98942 
98943    --
98944    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
98945    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
98946    --
98947    -- bulk performance
98948    --
98949    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
98950 
98951    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
98952       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
98953 
98954    -- 4955764
98955    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98956       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
98957 
98958    -- 4458381 Public Sector Enh
98959    
98960    --
98961    -- set accounting attributes for the line type
98962    --
98963    l_entered_amt_idx := 3;
98964    l_accted_amt_idx  := 8;
98965    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
98966    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
98967    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
98968    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
98969    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
98970    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
98971    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
98972    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
98973    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
98974    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
98975    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
98976    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
98977    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
98978    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
98979    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
98980    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
98981    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
98982 
98983    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
98984    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
98985 
98986    ---------------------------------------------------------------------------------------------------------------
98987    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
98988    ---------------------------------------------------------------------------------------------------------------
98989    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
98990 
98991    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98992    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98993 
98994    IF xla_accounting_cache_pkg.GetValueChar
98995          (p_source_code         => 'LEDGER_CATEGORY_CODE'
98996          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
98997    AND l_bflow_method_code = 'PRIOR_ENTRY'
98998 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
98999    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
99000          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
99001        )
99002    THEN
99003          xla_ae_lines_pkg.BflowUpgEntry
99004            (p_business_method_code    => l_bflow_method_code
99005            ,p_business_class_code     => l_bflow_class_code
99006            ,p_balance_type            => l_balance_type_code);
99007    ELSE
99008       NULL;
99009 -- No business flow processing for business flow method of NONE.
99010    END IF;
99011 
99012    --
99013    -- call analytical criteria
99014    --
99015    
99016    --
99017    -- call description
99018    --
99019    -- No description or it is inherited.
99020    --
99021    -- call ADRs
99022    -- Bug 4922099
99023    --
99024    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99025         (NVL(l_actual_upg_option, 'N') = 'O') OR
99026         (NVL(l_enc_upg_option, 'N') = 'O')
99027       )
99028    THEN
99029    NULL;
99030    --
99031    --
99032    
99033   l_ccid := AcctDerRule_4(
99034            p_application_id           => p_application_id
99035          , p_ae_header_id             => l_ae_header_id 
99036 , p_source_4 => p_source_4
99037          , x_transaction_coa_id       => l_adr_transaction_coa_id
99038          , x_accounting_coa_id        => l_adr_accounting_coa_id
99039          , x_value_type_code          => l_adr_value_type_code
99040          , p_side                     => 'NA'
99041    );
99042 
99043    xla_ae_lines_pkg.set_ccid(
99044     p_code_combination_id          => l_ccid
99045   , p_value_type_code              => l_adr_value_type_code
99046   , p_transaction_coa_id           => l_adr_transaction_coa_id
99047   , p_accounting_coa_id            => l_adr_accounting_coa_id
99048   , p_adr_code                     => 'CST_DEFAULT'
99049   , p_adr_type_code                => 'S'
99050   , p_component_type               => l_component_type
99051   , p_component_code               => l_component_code
99052   , p_component_type_code          => l_component_type_code
99053   , p_component_appl_id            => l_component_appl_id
99054   , p_amb_context_code             => l_amb_context_code
99055   , p_side                         => 'NA'
99056   );
99057 
99058 
99059    --
99060    --
99061    END IF;
99062    --
99063    -- Bug 4922099
99064    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
99065           (NVL(l_enc_upg_option, 'N') = 'O')
99066         ) AND
99067         (l_bflow_method_code = 'PRIOR_ENTRY')
99068       )
99069    THEN
99070       IF
99071       --
99072       1 = 2
99073       --
99074       THEN
99075       xla_accounting_err_pkg.build_message
99076                                     (p_appli_s_name            => 'XLA'
99077                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99078                                     ,p_token_1                 => 'LINE_NUMBER'
99079                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
99080                                     ,p_token_2                 => 'LINE_TYPE_NAME'
99081                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
99082                                                                              l_component_type
99083                                                                             ,l_component_code
99084                                                                             ,l_component_type_code
99085                                                                             ,l_component_appl_id
99086                                                                             ,l_amb_context_code
99087                                                                             ,l_entity_code
99088                                                                             ,l_event_class_code
99089                                                                            )
99090                                     ,p_token_3                 => 'OWNER'
99091                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
99092                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
99093                                                                           ,p_lookup_code    => l_component_type_code
99094                                                                          )
99095                                     ,p_token_4                 => 'PRODUCT_NAME'
99096                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
99097                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
99098                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
99099                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
99100                                     ,p_ae_header_id            =>  NULL
99101                                        );
99102 
99103         IF (C_LEVEL_ERROR>= g_log_level) THEN
99104                  trace
99105                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99106                       ,p_level    => C_LEVEL_ERROR
99107                       ,p_module   => l_log_module);
99108         END IF;
99109       END IF;
99110    END IF;
99111    --
99112    --
99113    ------------------------------------------------------------------------------------------------
99114    -- 4219869 Business Flow
99115    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
99116    -- Prior Entry.  Currently, the following code is always generated.
99117    ------------------------------------------------------------------------------------------------
99118    XLA_AE_LINES_PKG.ValidateCurrentLine;
99119 
99120    ------------------------------------------------------------------------------------
99121    -- 4219869 Business Flow
99122    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
99123    ------------------------------------------------------------------------------------
99124    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99125 
99126    ----------------------------------------------------------------------------------
99127    -- 4219869 Business Flow
99128    -- Update journal entry status -- Need to generate this within IF <condition>
99129    ----------------------------------------------------------------------------------
99130    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99131          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
99132          ,p_balance_type_code => l_balance_type_code
99133          );
99134 
99135    -------------------------------------------------------------------------------------------
99136    -- 4262811 - Generate the Accrual Reversal lines
99137    -------------------------------------------------------------------------------------------
99138    BEGIN
99139       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
99140                               (g_array_event(p_event_id).array_value_num('header_index'));
99141       IF l_acc_rev_flag IS NULL THEN
99142          l_acc_rev_flag := 'N';
99143       END IF;
99144    EXCEPTION
99145       WHEN OTHERS THEN
99146          l_acc_rev_flag := 'N';
99147    END;
99148    --
99149    IF (l_acc_rev_flag = 'Y') THEN
99150 
99151        -- 4645092  ------------------------------------------------------------------------------
99152        -- To allow MPA report to determine if it should generate report process
99153        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
99154        ------------------------------------------------------------------------------------------
99155 
99156        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
99157        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
99158    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
99159    -- call ADRs
99160    -- Bug 4922099
99161    --
99162    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99163         (NVL(l_actual_upg_option, 'N') = 'O') OR
99164         (NVL(l_enc_upg_option, 'N') = 'O')
99165       )
99166    THEN
99167    NULL;
99168    --
99169    --
99170    
99171   l_ccid := AcctDerRule_4(
99172            p_application_id           => p_application_id
99173          , p_ae_header_id             => l_ae_header_id 
99174 , p_source_4 => p_source_4
99175          , x_transaction_coa_id       => l_adr_transaction_coa_id
99176          , x_accounting_coa_id        => l_adr_accounting_coa_id
99177          , x_value_type_code          => l_adr_value_type_code
99178          , p_side                     => 'NA'
99179    );
99180 
99181    xla_ae_lines_pkg.set_ccid(
99182     p_code_combination_id          => l_ccid
99183   , p_value_type_code              => l_adr_value_type_code
99184   , p_transaction_coa_id           => l_adr_transaction_coa_id
99185   , p_accounting_coa_id            => l_adr_accounting_coa_id
99186   , p_adr_code                     => 'CST_DEFAULT'
99187   , p_adr_type_code                => 'S'
99188   , p_component_type               => l_component_type
99189   , p_component_code               => l_component_code
99190   , p_component_type_code          => l_component_type_code
99191   , p_component_appl_id            => l_component_appl_id
99192   , p_amb_context_code             => l_amb_context_code
99193   , p_side                         => 'NA'
99194   );
99195 
99196 
99197    --
99198    --
99199    END IF;
99200 
99201        --
99202        -- Update the line information that should be overwritten
99203        --
99204        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
99205                                          p_header_num   => 1);
99206        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
99207 
99208        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
99209 
99210        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
99211           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
99212        END IF;
99213 
99214       --
99215       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
99216       --
99217       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
99218           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
99219       ELSE
99220           ---------------------------------------------------------------------------------------------------
99221           -- 4262811a Switch Sign
99222           ---------------------------------------------------------------------------------------------------
99223           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
99224           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99225                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99226           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99227                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99228           -- 5132302
99229           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
99230                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99231 
99232       END IF;
99233 
99234       -- 4955764
99235       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99236       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
99237 
99238 
99239       XLA_AE_LINES_PKG.ValidateCurrentLine;
99240       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99241 
99242       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99243                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
99244                ,p_balance_type_code => l_balance_type_code);
99245 
99246    END IF;
99247 
99248    -----------------------------------------------------------------------------------------
99249    -- 4262811 Multiperiod Accounting
99250    -----------------------------------------------------------------------------------------
99251      -- No MPA option is assigned.
99252 
99253 
99254 END IF;
99255 END IF;
99256 --
99257 
99258 --
99259 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99260    trace
99261       (p_msg      => 'END of AcctLineType_180'
99262       ,p_level    => C_LEVEL_PROCEDURE
99263       ,p_module   => l_log_module);
99264 END IF;
99265 --
99266 EXCEPTION
99267   WHEN xla_exceptions_pkg.application_exception THEN
99268       RAISE;
99269   WHEN OTHERS THEN
99270        xla_exceptions_pkg.raise_message
99271            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_180');
99272 END AcctLineType_180;
99273 --
99274 
99275 ---------------------------------------
99276 --
99277 -- PRIVATE FUNCTION
99278 --         AcctLineType_181
99279 --
99280 ---------------------------------------
99281 PROCEDURE AcctLineType_181 (
99282   p_application_id        IN NUMBER
99283  ,p_event_id              IN NUMBER
99284  ,p_calculate_acctd_flag  IN VARCHAR2
99285  ,p_calculate_g_l_flag    IN VARCHAR2
99286  ,p_actual_flag           IN OUT VARCHAR2
99287  ,p_balance_type_code     OUT VARCHAR2
99288  ,p_gain_or_loss_ref      OUT VARCHAR2
99289  
99290 --Cost Management Default Account
99291  , p_source_4            IN NUMBER
99292 --DISTRIBUTION_IDENTIFIER
99293  , p_source_11            IN NUMBER
99294 --Distribution Type
99295  , p_source_12            IN VARCHAR2
99296  , p_source_12_meaning    IN VARCHAR2
99297 --Entered Currency Code
99298  , p_source_15            IN VARCHAR2
99299 --Entered Amount
99300  , p_source_18            IN NUMBER
99301 --Currency Conversion Date
99302  , p_source_19            IN DATE
99303 --Currency Conversion Rate
99304  , p_source_20            IN NUMBER
99305 --Currency Conversion Type
99306  , p_source_21            IN VARCHAR2
99307 --Accounted Amount
99308  , p_source_22            IN NUMBER
99309 --Accounting Line Type
99310  , p_source_24            IN NUMBER
99311 )
99312 IS
99313 
99314 l_component_type              VARCHAR2(80);
99315 l_component_code              VARCHAR2(30);
99316 l_component_type_code         VARCHAR2(1);
99317 l_component_appl_id           INTEGER;
99318 l_amb_context_code            VARCHAR2(30);
99319 l_entity_code                 VARCHAR2(30);
99320 l_event_class_code            VARCHAR2(30);
99321 l_ae_header_id                NUMBER;
99322 l_event_type_code             VARCHAR2(30);
99323 l_line_definition_code        VARCHAR2(30);
99324 l_line_definition_owner_code  VARCHAR2(1);
99325 --
99326 -- adr variables
99327 l_segment                     VARCHAR2(30);
99328 l_ccid                        NUMBER;
99329 l_adr_transaction_coa_id      NUMBER;
99330 l_adr_accounting_coa_id       NUMBER;
99331 l_adr_flexfield_segment_code  VARCHAR2(30);
99332 l_adr_flex_value_set_id       NUMBER;
99333 l_adr_value_type_code         VARCHAR2(30);
99334 l_adr_value_combination_id    NUMBER;
99335 l_adr_value_segment_code      VARCHAR2(30);
99336 
99337 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
99338 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
99339 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
99340 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
99341 
99342 -- 4262811 Variables ------------------------------------------------------------------------------------------
99343 l_entered_amt_idx             NUMBER;
99344 l_accted_amt_idx              NUMBER;
99345 l_acc_rev_flag                VARCHAR2(1);
99346 l_accrual_line_num            NUMBER;
99347 l_tmp_amt                     NUMBER;
99348 l_acc_rev_natural_side_code   VARCHAR2(1);
99349 
99350 l_num_entries                 NUMBER;
99351 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
99352 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
99353 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
99354 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
99355 l_recog_line_1                NUMBER;
99356 l_recog_line_2                NUMBER;
99357 
99358 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
99359 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
99360 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
99361 
99362 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
99363 
99364 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
99365 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
99366 
99367 ---------------------------------------------------------------------------------------------------------------
99368 
99369 
99370 --
99371 -- bulk performance
99372 --
99373 l_balance_type_code           VARCHAR2(1);
99374 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
99375 l_log_module                  VARCHAR2(240);
99376 
99377 --
99378 -- Upgrade strategy
99379 --
99380 l_actual_upg_option           VARCHAR2(1);
99381 l_enc_upg_option           VARCHAR2(1);
99382 
99383 --
99384 BEGIN
99385 --
99386 IF g_log_enabled THEN
99387       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_181';
99388 END IF;
99389 --
99390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99391 
99392       trace
99393          (p_msg      => 'BEGIN of AcctLineType_181'
99394          ,p_level    => C_LEVEL_PROCEDURE
99395          ,p_module   => l_log_module);
99396 
99397 END IF;
99398 --
99399 l_component_type             := 'AMB_JLT';
99400 l_component_code             := 'OFFSET';
99401 l_component_type_code        := 'S';
99402 l_component_appl_id          :=  707;
99403 l_amb_context_code           := 'DEFAULT';
99404 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
99405 l_event_class_code           := 'USER_DEFINE';
99406 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
99407 l_line_definition_owner_code := 'S';
99408 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
99409 --
99410 l_balance_type_code          := 'A';
99411 l_segment                     := NULL;
99412 l_ccid                        := NULL;
99413 l_adr_transaction_coa_id      := NULL;
99414 l_adr_accounting_coa_id       := NULL;
99415 l_adr_flexfield_segment_code  := NULL;
99416 l_adr_flex_value_set_id       := NULL;
99417 l_adr_value_type_code         := NULL;
99418 l_adr_value_combination_id    := NULL;
99419 l_adr_value_segment_code      := NULL;
99420 
99421 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
99422 l_bflow_class_code           := '';    -- 4219869 Business Flow
99423 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
99424 l_budgetary_control_flag     := 'N';
99425 
99426 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
99427 l_bflow_applied_to_amt       := NULL; -- 5132302
99428 l_entered_amt_idx            := NULL;          -- 4262811
99429 l_accted_amt_idx             := NULL;          -- 4262811
99430 l_acc_rev_flag               := NULL;          -- 4262811
99431 l_accrual_line_num           := NULL;          -- 4262811
99432 l_tmp_amt                    := NULL;          -- 4262811
99433 --
99434  
99435 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
99436     l_balance_type_code <> 'B' THEN
99437 IF NVL(p_source_24,9E125) =  2
99438  THEN 
99439 
99440    --
99441    XLA_AE_LINES_PKG.SetNewLine;
99442 
99443    p_balance_type_code          := l_balance_type_code;
99444    -- set the flag so later we will know whether the gain loss line needs to be created
99445    
99446    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
99447      p_actual_flag :='A';
99448    END IF;
99449 
99450    --
99451    -- bulk performance
99452    --
99453    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
99454                                       p_header_num   => 0); -- 4262811
99455    --
99456    -- set accounting line options
99457    --
99458    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
99459            p_natural_side_code          => 'D'
99460          , p_gain_or_loss_flag          => 'N'
99461          , p_gl_transfer_mode_code      => 'S'
99462          , p_acct_entry_type_code       => 'A'
99463          , p_switch_side_flag           => 'Y'
99464          , p_merge_duplicate_code       => 'N'
99465          );
99466    --
99467    l_acc_rev_natural_side_code := 'C';  -- 4262811
99468    -- 
99469    --
99470    -- set accounting line type info
99471    --
99472    xla_ae_lines_pkg.SetAcctLineType
99473       (p_component_type             => l_component_type
99474       ,p_event_type_code            => l_event_type_code
99475       ,p_line_definition_owner_code => l_line_definition_owner_code
99476       ,p_line_definition_code       => l_line_definition_code
99477       ,p_accounting_line_code       => l_component_code
99478       ,p_accounting_line_type_code  => l_component_type_code
99479       ,p_accounting_line_appl_id    => l_component_appl_id
99480       ,p_amb_context_code           => l_amb_context_code
99481       ,p_entity_code                => l_entity_code
99482       ,p_event_class_code           => l_event_class_code);
99483    --
99484    -- set accounting class
99485    --
99486    xla_ae_lines_pkg.SetAcctClass(
99487            p_accounting_class_code  => 'OFFSET'
99488          , p_ae_header_id           => l_ae_header_id
99489          );
99490 
99491    --
99492    -- set rounding class
99493    --
99494    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
99495                       'OFFSET';
99496 
99497    --
99498    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
99499    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
99500    --
99501    -- bulk performance
99502    --
99503    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
99504 
99505    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
99506       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
99507 
99508    -- 4955764
99509    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99510       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
99511 
99512    -- 4458381 Public Sector Enh
99513    
99514    --
99515    -- set accounting attributes for the line type
99516    --
99517    l_entered_amt_idx := 3;
99518    l_accted_amt_idx  := 8;
99519    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
99520    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
99521    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
99522    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
99523    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
99524    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
99525    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
99526    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
99527    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
99528    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
99529    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
99530    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
99531    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
99532    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
99533    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
99534    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
99535    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
99536 
99537    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
99538    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
99539 
99540    ---------------------------------------------------------------------------------------------------------------
99541    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
99542    ---------------------------------------------------------------------------------------------------------------
99543    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
99544 
99545    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99546    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99547 
99548    IF xla_accounting_cache_pkg.GetValueChar
99549          (p_source_code         => 'LEDGER_CATEGORY_CODE'
99550          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
99551    AND l_bflow_method_code = 'PRIOR_ENTRY'
99552 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
99553    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
99554          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
99555        )
99556    THEN
99557          xla_ae_lines_pkg.BflowUpgEntry
99558            (p_business_method_code    => l_bflow_method_code
99559            ,p_business_class_code     => l_bflow_class_code
99560            ,p_balance_type            => l_balance_type_code);
99561    ELSE
99562       NULL;
99563 -- No business flow processing for business flow method of NONE.
99564    END IF;
99565 
99566    --
99567    -- call analytical criteria
99568    --
99569    
99570    --
99571    -- call description
99572    --
99573    -- No description or it is inherited.
99574    --
99575    -- call ADRs
99576    -- Bug 4922099
99577    --
99578    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99579         (NVL(l_actual_upg_option, 'N') = 'O') OR
99580         (NVL(l_enc_upg_option, 'N') = 'O')
99581       )
99582    THEN
99583    NULL;
99584    --
99585    --
99586    
99587   l_ccid := AcctDerRule_4(
99588            p_application_id           => p_application_id
99589          , p_ae_header_id             => l_ae_header_id 
99590 , p_source_4 => p_source_4
99591          , x_transaction_coa_id       => l_adr_transaction_coa_id
99592          , x_accounting_coa_id        => l_adr_accounting_coa_id
99593          , x_value_type_code          => l_adr_value_type_code
99594          , p_side                     => 'NA'
99595    );
99596 
99597    xla_ae_lines_pkg.set_ccid(
99598     p_code_combination_id          => l_ccid
99599   , p_value_type_code              => l_adr_value_type_code
99600   , p_transaction_coa_id           => l_adr_transaction_coa_id
99601   , p_accounting_coa_id            => l_adr_accounting_coa_id
99602   , p_adr_code                     => 'CST_DEFAULT'
99603   , p_adr_type_code                => 'S'
99604   , p_component_type               => l_component_type
99605   , p_component_code               => l_component_code
99606   , p_component_type_code          => l_component_type_code
99607   , p_component_appl_id            => l_component_appl_id
99608   , p_amb_context_code             => l_amb_context_code
99609   , p_side                         => 'NA'
99610   );
99611 
99612 
99613    --
99614    --
99615    END IF;
99616    --
99617    -- Bug 4922099
99618    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
99619           (NVL(l_enc_upg_option, 'N') = 'O')
99620         ) AND
99621         (l_bflow_method_code = 'PRIOR_ENTRY')
99622       )
99623    THEN
99624       IF
99625       --
99626       1 = 2
99627       --
99628       THEN
99629       xla_accounting_err_pkg.build_message
99630                                     (p_appli_s_name            => 'XLA'
99631                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99632                                     ,p_token_1                 => 'LINE_NUMBER'
99633                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
99634                                     ,p_token_2                 => 'LINE_TYPE_NAME'
99635                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
99636                                                                              l_component_type
99637                                                                             ,l_component_code
99638                                                                             ,l_component_type_code
99639                                                                             ,l_component_appl_id
99640                                                                             ,l_amb_context_code
99641                                                                             ,l_entity_code
99642                                                                             ,l_event_class_code
99643                                                                            )
99644                                     ,p_token_3                 => 'OWNER'
99645                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
99646                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
99647                                                                           ,p_lookup_code    => l_component_type_code
99648                                                                          )
99649                                     ,p_token_4                 => 'PRODUCT_NAME'
99650                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
99651                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
99652                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
99653                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
99654                                     ,p_ae_header_id            =>  NULL
99655                                        );
99656 
99657         IF (C_LEVEL_ERROR>= g_log_level) THEN
99658                  trace
99659                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99660                       ,p_level    => C_LEVEL_ERROR
99661                       ,p_module   => l_log_module);
99662         END IF;
99663       END IF;
99664    END IF;
99665    --
99666    --
99667    ------------------------------------------------------------------------------------------------
99668    -- 4219869 Business Flow
99669    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
99670    -- Prior Entry.  Currently, the following code is always generated.
99671    ------------------------------------------------------------------------------------------------
99672    XLA_AE_LINES_PKG.ValidateCurrentLine;
99673 
99674    ------------------------------------------------------------------------------------
99675    -- 4219869 Business Flow
99676    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
99677    ------------------------------------------------------------------------------------
99678    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99679 
99680    ----------------------------------------------------------------------------------
99681    -- 4219869 Business Flow
99682    -- Update journal entry status -- Need to generate this within IF <condition>
99683    ----------------------------------------------------------------------------------
99684    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99685          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
99686          ,p_balance_type_code => l_balance_type_code
99687          );
99688 
99689    -------------------------------------------------------------------------------------------
99690    -- 4262811 - Generate the Accrual Reversal lines
99691    -------------------------------------------------------------------------------------------
99692    BEGIN
99693       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
99694                               (g_array_event(p_event_id).array_value_num('header_index'));
99695       IF l_acc_rev_flag IS NULL THEN
99696          l_acc_rev_flag := 'N';
99697       END IF;
99698    EXCEPTION
99699       WHEN OTHERS THEN
99700          l_acc_rev_flag := 'N';
99701    END;
99702    --
99703    IF (l_acc_rev_flag = 'Y') THEN
99704 
99705        -- 4645092  ------------------------------------------------------------------------------
99706        -- To allow MPA report to determine if it should generate report process
99707        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
99708        ------------------------------------------------------------------------------------------
99709 
99710        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
99711        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
99712    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
99713    -- call ADRs
99714    -- Bug 4922099
99715    --
99716    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99717         (NVL(l_actual_upg_option, 'N') = 'O') OR
99718         (NVL(l_enc_upg_option, 'N') = 'O')
99719       )
99720    THEN
99721    NULL;
99722    --
99723    --
99724    
99725   l_ccid := AcctDerRule_4(
99726            p_application_id           => p_application_id
99727          , p_ae_header_id             => l_ae_header_id 
99728 , p_source_4 => p_source_4
99729          , x_transaction_coa_id       => l_adr_transaction_coa_id
99730          , x_accounting_coa_id        => l_adr_accounting_coa_id
99731          , x_value_type_code          => l_adr_value_type_code
99732          , p_side                     => 'NA'
99733    );
99734 
99735    xla_ae_lines_pkg.set_ccid(
99736     p_code_combination_id          => l_ccid
99737   , p_value_type_code              => l_adr_value_type_code
99738   , p_transaction_coa_id           => l_adr_transaction_coa_id
99739   , p_accounting_coa_id            => l_adr_accounting_coa_id
99740   , p_adr_code                     => 'CST_DEFAULT'
99741   , p_adr_type_code                => 'S'
99742   , p_component_type               => l_component_type
99743   , p_component_code               => l_component_code
99744   , p_component_type_code          => l_component_type_code
99745   , p_component_appl_id            => l_component_appl_id
99746   , p_amb_context_code             => l_amb_context_code
99747   , p_side                         => 'NA'
99748   );
99749 
99750 
99751    --
99752    --
99753    END IF;
99754 
99755        --
99756        -- Update the line information that should be overwritten
99757        --
99758        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
99759                                          p_header_num   => 1);
99760        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
99761 
99762        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
99763 
99764        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
99765           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
99766        END IF;
99767 
99768       --
99769       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
99770       --
99771       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
99772           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
99773       ELSE
99774           ---------------------------------------------------------------------------------------------------
99775           -- 4262811a Switch Sign
99776           ---------------------------------------------------------------------------------------------------
99777           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
99778           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99779                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99780           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99781                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99782           -- 5132302
99783           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
99784                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99785 
99786       END IF;
99787 
99788       -- 4955764
99789       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99790       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
99791 
99792 
99793       XLA_AE_LINES_PKG.ValidateCurrentLine;
99794       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99795 
99796       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99797                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
99798                ,p_balance_type_code => l_balance_type_code);
99799 
99800    END IF;
99801 
99802    -----------------------------------------------------------------------------------------
99803    -- 4262811 Multiperiod Accounting
99804    -----------------------------------------------------------------------------------------
99805      -- No MPA option is assigned.
99806 
99807 
99808 END IF;
99809 END IF;
99810 --
99811 
99812 --
99813 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99814    trace
99815       (p_msg      => 'END of AcctLineType_181'
99816       ,p_level    => C_LEVEL_PROCEDURE
99817       ,p_module   => l_log_module);
99818 END IF;
99819 --
99820 EXCEPTION
99821   WHEN xla_exceptions_pkg.application_exception THEN
99822       RAISE;
99823   WHEN OTHERS THEN
99824        xla_exceptions_pkg.raise_message
99825            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_181');
99826 END AcctLineType_181;
99827 --
99828 
99829 ---------------------------------------
99830 --
99831 -- PRIVATE FUNCTION
99832 --         AcctLineType_182
99833 --
99834 ---------------------------------------
99835 PROCEDURE AcctLineType_182 (
99836   p_application_id        IN NUMBER
99837  ,p_event_id              IN NUMBER
99838  ,p_calculate_acctd_flag  IN VARCHAR2
99839  ,p_calculate_g_l_flag    IN VARCHAR2
99840  ,p_actual_flag           IN OUT VARCHAR2
99841  ,p_balance_type_code     OUT VARCHAR2
99842  ,p_gain_or_loss_ref      OUT VARCHAR2
99843  
99844 --Cost Management Default Account
99845  , p_source_4            IN NUMBER
99846 --DISTRIBUTION_IDENTIFIER
99847  , p_source_11            IN NUMBER
99848 --Distribution Type
99849  , p_source_12            IN VARCHAR2
99850  , p_source_12_meaning    IN VARCHAR2
99851 --Entered Currency Code
99852  , p_source_15            IN VARCHAR2
99853 --Entered Amount
99854  , p_source_18            IN NUMBER
99855 --Currency Conversion Date
99856  , p_source_19            IN DATE
99857 --Currency Conversion Rate
99858  , p_source_20            IN NUMBER
99859 --Currency Conversion Type
99860  , p_source_21            IN VARCHAR2
99861 --Accounted Amount
99862  , p_source_22            IN NUMBER
99863 --Accounting Line Type
99864  , p_source_24            IN NUMBER
99865 )
99866 IS
99867 
99868 l_component_type              VARCHAR2(80);
99869 l_component_code              VARCHAR2(30);
99870 l_component_type_code         VARCHAR2(1);
99871 l_component_appl_id           INTEGER;
99872 l_amb_context_code            VARCHAR2(30);
99873 l_entity_code                 VARCHAR2(30);
99874 l_event_class_code            VARCHAR2(30);
99875 l_ae_header_id                NUMBER;
99876 l_event_type_code             VARCHAR2(30);
99877 l_line_definition_code        VARCHAR2(30);
99878 l_line_definition_owner_code  VARCHAR2(1);
99879 --
99880 -- adr variables
99881 l_segment                     VARCHAR2(30);
99882 l_ccid                        NUMBER;
99883 l_adr_transaction_coa_id      NUMBER;
99884 l_adr_accounting_coa_id       NUMBER;
99885 l_adr_flexfield_segment_code  VARCHAR2(30);
99886 l_adr_flex_value_set_id       NUMBER;
99887 l_adr_value_type_code         VARCHAR2(30);
99888 l_adr_value_combination_id    NUMBER;
99889 l_adr_value_segment_code      VARCHAR2(30);
99890 
99891 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
99892 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
99893 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
99894 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
99895 
99896 -- 4262811 Variables ------------------------------------------------------------------------------------------
99897 l_entered_amt_idx             NUMBER;
99898 l_accted_amt_idx              NUMBER;
99899 l_acc_rev_flag                VARCHAR2(1);
99900 l_accrual_line_num            NUMBER;
99901 l_tmp_amt                     NUMBER;
99902 l_acc_rev_natural_side_code   VARCHAR2(1);
99903 
99904 l_num_entries                 NUMBER;
99905 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
99906 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
99907 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
99908 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
99909 l_recog_line_1                NUMBER;
99910 l_recog_line_2                NUMBER;
99911 
99912 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
99913 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
99914 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
99915 
99916 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
99917 
99918 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
99919 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
99920 
99921 ---------------------------------------------------------------------------------------------------------------
99922 
99923 
99924 --
99925 -- bulk performance
99926 --
99927 l_balance_type_code           VARCHAR2(1);
99928 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
99929 l_log_module                  VARCHAR2(240);
99930 
99931 --
99932 -- Upgrade strategy
99933 --
99934 l_actual_upg_option           VARCHAR2(1);
99935 l_enc_upg_option           VARCHAR2(1);
99936 
99937 --
99938 BEGIN
99939 --
99940 IF g_log_enabled THEN
99941       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_182';
99942 END IF;
99943 --
99944 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99945 
99946       trace
99947          (p_msg      => 'BEGIN of AcctLineType_182'
99948          ,p_level    => C_LEVEL_PROCEDURE
99949          ,p_module   => l_log_module);
99950 
99951 END IF;
99952 --
99953 l_component_type             := 'AMB_JLT';
99954 l_component_code             := 'OFFSET';
99955 l_component_type_code        := 'S';
99956 l_component_appl_id          :=  707;
99957 l_amb_context_code           := 'DEFAULT';
99958 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
99959 l_event_class_code           := 'USER_DEFINE';
99960 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
99961 l_line_definition_owner_code := 'S';
99962 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
99963 --
99964 l_balance_type_code          := 'A';
99965 l_segment                     := NULL;
99966 l_ccid                        := NULL;
99967 l_adr_transaction_coa_id      := NULL;
99968 l_adr_accounting_coa_id       := NULL;
99969 l_adr_flexfield_segment_code  := NULL;
99970 l_adr_flex_value_set_id       := NULL;
99971 l_adr_value_type_code         := NULL;
99972 l_adr_value_combination_id    := NULL;
99973 l_adr_value_segment_code      := NULL;
99974 
99975 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
99976 l_bflow_class_code           := '';    -- 4219869 Business Flow
99977 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
99978 l_budgetary_control_flag     := 'N';
99979 
99980 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
99981 l_bflow_applied_to_amt       := NULL; -- 5132302
99982 l_entered_amt_idx            := NULL;          -- 4262811
99983 l_accted_amt_idx             := NULL;          -- 4262811
99984 l_acc_rev_flag               := NULL;          -- 4262811
99985 l_accrual_line_num           := NULL;          -- 4262811
99986 l_tmp_amt                    := NULL;          -- 4262811
99987 --
99988  
99989 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
99990     l_balance_type_code <> 'B' THEN
99991 IF NVL(p_source_24,9E125) =  2
99992  THEN 
99993 
99994    --
99995    XLA_AE_LINES_PKG.SetNewLine;
99996 
99997    p_balance_type_code          := l_balance_type_code;
99998    -- set the flag so later we will know whether the gain loss line needs to be created
99999    
100000    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
100001      p_actual_flag :='A';
100002    END IF;
100003 
100004    --
100005    -- bulk performance
100006    --
100007    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
100008                                       p_header_num   => 0); -- 4262811
100009    --
100010    -- set accounting line options
100011    --
100012    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
100013            p_natural_side_code          => 'D'
100014          , p_gain_or_loss_flag          => 'N'
100015          , p_gl_transfer_mode_code      => 'S'
100016          , p_acct_entry_type_code       => 'A'
100017          , p_switch_side_flag           => 'Y'
100018          , p_merge_duplicate_code       => 'N'
100019          );
100020    --
100021    l_acc_rev_natural_side_code := 'C';  -- 4262811
100022    -- 
100023    --
100024    -- set accounting line type info
100025    --
100026    xla_ae_lines_pkg.SetAcctLineType
100027       (p_component_type             => l_component_type
100028       ,p_event_type_code            => l_event_type_code
100029       ,p_line_definition_owner_code => l_line_definition_owner_code
100030       ,p_line_definition_code       => l_line_definition_code
100031       ,p_accounting_line_code       => l_component_code
100032       ,p_accounting_line_type_code  => l_component_type_code
100033       ,p_accounting_line_appl_id    => l_component_appl_id
100034       ,p_amb_context_code           => l_amb_context_code
100035       ,p_entity_code                => l_entity_code
100036       ,p_event_class_code           => l_event_class_code);
100037    --
100038    -- set accounting class
100039    --
100040    xla_ae_lines_pkg.SetAcctClass(
100041            p_accounting_class_code  => 'OFFSET'
100042          , p_ae_header_id           => l_ae_header_id
100043          );
100044 
100045    --
100046    -- set rounding class
100047    --
100048    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
100049                       'OFFSET';
100050 
100051    --
100052    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
100053    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
100054    --
100055    -- bulk performance
100056    --
100057    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
100058 
100059    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
100060       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
100061 
100062    -- 4955764
100063    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100064       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
100065 
100066    -- 4458381 Public Sector Enh
100067    
100068    --
100069    -- set accounting attributes for the line type
100070    --
100071    l_entered_amt_idx := 3;
100072    l_accted_amt_idx  := 8;
100073    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
100074    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
100075    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
100076    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
100077    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
100078    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
100079    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
100080    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
100081    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
100082    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
100083    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
100084    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
100085    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
100086    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
100087    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
100088    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
100089    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
100090 
100091    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
100092    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
100093 
100094    ---------------------------------------------------------------------------------------------------------------
100095    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
100096    ---------------------------------------------------------------------------------------------------------------
100097    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
100098 
100099    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100100    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100101 
100102    IF xla_accounting_cache_pkg.GetValueChar
100103          (p_source_code         => 'LEDGER_CATEGORY_CODE'
100104          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
100105    AND l_bflow_method_code = 'PRIOR_ENTRY'
100106 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
100107    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
100108          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
100109        )
100110    THEN
100111          xla_ae_lines_pkg.BflowUpgEntry
100112            (p_business_method_code    => l_bflow_method_code
100113            ,p_business_class_code     => l_bflow_class_code
100114            ,p_balance_type            => l_balance_type_code);
100115    ELSE
100116       NULL;
100117 -- No business flow processing for business flow method of NONE.
100118    END IF;
100119 
100120    --
100121    -- call analytical criteria
100122    --
100123    
100124    --
100125    -- call description
100126    --
100127    -- No description or it is inherited.
100128    --
100129    -- call ADRs
100130    -- Bug 4922099
100131    --
100132    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100133         (NVL(l_actual_upg_option, 'N') = 'O') OR
100134         (NVL(l_enc_upg_option, 'N') = 'O')
100135       )
100136    THEN
100137    NULL;
100138    --
100139    --
100140    
100141   l_ccid := AcctDerRule_4(
100142            p_application_id           => p_application_id
100143          , p_ae_header_id             => l_ae_header_id 
100144 , p_source_4 => p_source_4
100145          , x_transaction_coa_id       => l_adr_transaction_coa_id
100146          , x_accounting_coa_id        => l_adr_accounting_coa_id
100147          , x_value_type_code          => l_adr_value_type_code
100148          , p_side                     => 'NA'
100149    );
100150 
100151    xla_ae_lines_pkg.set_ccid(
100152     p_code_combination_id          => l_ccid
100153   , p_value_type_code              => l_adr_value_type_code
100154   , p_transaction_coa_id           => l_adr_transaction_coa_id
100155   , p_accounting_coa_id            => l_adr_accounting_coa_id
100156   , p_adr_code                     => 'CST_DEFAULT'
100157   , p_adr_type_code                => 'S'
100158   , p_component_type               => l_component_type
100159   , p_component_code               => l_component_code
100160   , p_component_type_code          => l_component_type_code
100161   , p_component_appl_id            => l_component_appl_id
100162   , p_amb_context_code             => l_amb_context_code
100163   , p_side                         => 'NA'
100164   );
100165 
100166 
100167    --
100168    --
100169    END IF;
100170    --
100171    -- Bug 4922099
100172    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
100173           (NVL(l_enc_upg_option, 'N') = 'O')
100174         ) AND
100175         (l_bflow_method_code = 'PRIOR_ENTRY')
100176       )
100177    THEN
100178       IF
100179       --
100180       1 = 2
100181       --
100182       THEN
100183       xla_accounting_err_pkg.build_message
100184                                     (p_appli_s_name            => 'XLA'
100185                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100186                                     ,p_token_1                 => 'LINE_NUMBER'
100187                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
100188                                     ,p_token_2                 => 'LINE_TYPE_NAME'
100189                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
100190                                                                              l_component_type
100191                                                                             ,l_component_code
100192                                                                             ,l_component_type_code
100193                                                                             ,l_component_appl_id
100194                                                                             ,l_amb_context_code
100195                                                                             ,l_entity_code
100196                                                                             ,l_event_class_code
100197                                                                            )
100198                                     ,p_token_3                 => 'OWNER'
100199                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
100200                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
100201                                                                           ,p_lookup_code    => l_component_type_code
100202                                                                          )
100203                                     ,p_token_4                 => 'PRODUCT_NAME'
100204                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
100205                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
100206                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
100207                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
100208                                     ,p_ae_header_id            =>  NULL
100209                                        );
100210 
100211         IF (C_LEVEL_ERROR>= g_log_level) THEN
100212                  trace
100213                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100214                       ,p_level    => C_LEVEL_ERROR
100215                       ,p_module   => l_log_module);
100216         END IF;
100217       END IF;
100218    END IF;
100219    --
100220    --
100221    ------------------------------------------------------------------------------------------------
100222    -- 4219869 Business Flow
100223    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
100224    -- Prior Entry.  Currently, the following code is always generated.
100225    ------------------------------------------------------------------------------------------------
100226    XLA_AE_LINES_PKG.ValidateCurrentLine;
100227 
100228    ------------------------------------------------------------------------------------
100229    -- 4219869 Business Flow
100230    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
100231    ------------------------------------------------------------------------------------
100232    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100233 
100234    ----------------------------------------------------------------------------------
100235    -- 4219869 Business Flow
100236    -- Update journal entry status -- Need to generate this within IF <condition>
100237    ----------------------------------------------------------------------------------
100238    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100239          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
100240          ,p_balance_type_code => l_balance_type_code
100241          );
100242 
100243    -------------------------------------------------------------------------------------------
100244    -- 4262811 - Generate the Accrual Reversal lines
100245    -------------------------------------------------------------------------------------------
100246    BEGIN
100247       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
100248                               (g_array_event(p_event_id).array_value_num('header_index'));
100249       IF l_acc_rev_flag IS NULL THEN
100250          l_acc_rev_flag := 'N';
100251       END IF;
100252    EXCEPTION
100253       WHEN OTHERS THEN
100254          l_acc_rev_flag := 'N';
100255    END;
100256    --
100257    IF (l_acc_rev_flag = 'Y') THEN
100258 
100259        -- 4645092  ------------------------------------------------------------------------------
100260        -- To allow MPA report to determine if it should generate report process
100261        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
100262        ------------------------------------------------------------------------------------------
100263 
100264        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
100265        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
100266    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
100267    -- call ADRs
100268    -- Bug 4922099
100269    --
100270    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100271         (NVL(l_actual_upg_option, 'N') = 'O') OR
100272         (NVL(l_enc_upg_option, 'N') = 'O')
100273       )
100274    THEN
100275    NULL;
100276    --
100277    --
100278    
100279   l_ccid := AcctDerRule_4(
100280            p_application_id           => p_application_id
100281          , p_ae_header_id             => l_ae_header_id 
100282 , p_source_4 => p_source_4
100283          , x_transaction_coa_id       => l_adr_transaction_coa_id
100284          , x_accounting_coa_id        => l_adr_accounting_coa_id
100285          , x_value_type_code          => l_adr_value_type_code
100286          , p_side                     => 'NA'
100287    );
100288 
100289    xla_ae_lines_pkg.set_ccid(
100290     p_code_combination_id          => l_ccid
100291   , p_value_type_code              => l_adr_value_type_code
100292   , p_transaction_coa_id           => l_adr_transaction_coa_id
100293   , p_accounting_coa_id            => l_adr_accounting_coa_id
100294   , p_adr_code                     => 'CST_DEFAULT'
100295   , p_adr_type_code                => 'S'
100296   , p_component_type               => l_component_type
100297   , p_component_code               => l_component_code
100298   , p_component_type_code          => l_component_type_code
100299   , p_component_appl_id            => l_component_appl_id
100300   , p_amb_context_code             => l_amb_context_code
100301   , p_side                         => 'NA'
100302   );
100303 
100304 
100305    --
100306    --
100307    END IF;
100308 
100309        --
100310        -- Update the line information that should be overwritten
100311        --
100312        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
100313                                          p_header_num   => 1);
100314        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
100315 
100316        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
100317 
100318        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
100319           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
100320        END IF;
100321 
100322       --
100323       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
100324       --
100325       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
100326           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
100327       ELSE
100328           ---------------------------------------------------------------------------------------------------
100329           -- 4262811a Switch Sign
100330           ---------------------------------------------------------------------------------------------------
100331           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
100332           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100333                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100334           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100335                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100336           -- 5132302
100337           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
100338                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100339 
100340       END IF;
100341 
100342       -- 4955764
100343       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100344       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
100345 
100346 
100347       XLA_AE_LINES_PKG.ValidateCurrentLine;
100348       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100349 
100350       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100351                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
100352                ,p_balance_type_code => l_balance_type_code);
100353 
100354    END IF;
100355 
100356    -----------------------------------------------------------------------------------------
100357    -- 4262811 Multiperiod Accounting
100358    -----------------------------------------------------------------------------------------
100359      -- No MPA option is assigned.
100360 
100361 
100362 END IF;
100363 END IF;
100364 --
100365 
100366 --
100367 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100368    trace
100369       (p_msg      => 'END of AcctLineType_182'
100370       ,p_level    => C_LEVEL_PROCEDURE
100371       ,p_module   => l_log_module);
100372 END IF;
100373 --
100374 EXCEPTION
100375   WHEN xla_exceptions_pkg.application_exception THEN
100376       RAISE;
100377   WHEN OTHERS THEN
100378        xla_exceptions_pkg.raise_message
100379            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_182');
100380 END AcctLineType_182;
100381 --
100382 
100383 ---------------------------------------
100384 --
100385 -- PRIVATE FUNCTION
100386 --         AcctLineType_183
100387 --
100388 ---------------------------------------
100389 PROCEDURE AcctLineType_183 (
100390   p_application_id        IN NUMBER
100391  ,p_event_id              IN NUMBER
100392  ,p_calculate_acctd_flag  IN VARCHAR2
100393  ,p_calculate_g_l_flag    IN VARCHAR2
100394  ,p_actual_flag           IN OUT VARCHAR2
100395  ,p_balance_type_code     OUT VARCHAR2
100396  ,p_gain_or_loss_ref      OUT VARCHAR2
100397  
100398 --Cost Management Default Account
100399  , p_source_4            IN NUMBER
100400 --DISTRIBUTION_IDENTIFIER
100401  , p_source_11            IN NUMBER
100402 --Distribution Type
100403  , p_source_12            IN VARCHAR2
100404  , p_source_12_meaning    IN VARCHAR2
100405 --Entered Currency Code
100406  , p_source_15            IN VARCHAR2
100407 --Entered Amount
100408  , p_source_18            IN NUMBER
100409 --Currency Conversion Date
100410  , p_source_19            IN DATE
100411 --Currency Conversion Rate
100412  , p_source_20            IN NUMBER
100413 --Currency Conversion Type
100414  , p_source_21            IN VARCHAR2
100415 --Accounted Amount
100416  , p_source_22            IN NUMBER
100417 --Accounting Line Type
100418  , p_source_24            IN NUMBER
100419 )
100420 IS
100421 
100422 l_component_type              VARCHAR2(80);
100423 l_component_code              VARCHAR2(30);
100424 l_component_type_code         VARCHAR2(1);
100425 l_component_appl_id           INTEGER;
100426 l_amb_context_code            VARCHAR2(30);
100427 l_entity_code                 VARCHAR2(30);
100428 l_event_class_code            VARCHAR2(30);
100429 l_ae_header_id                NUMBER;
100430 l_event_type_code             VARCHAR2(30);
100431 l_line_definition_code        VARCHAR2(30);
100432 l_line_definition_owner_code  VARCHAR2(1);
100433 --
100434 -- adr variables
100435 l_segment                     VARCHAR2(30);
100436 l_ccid                        NUMBER;
100437 l_adr_transaction_coa_id      NUMBER;
100438 l_adr_accounting_coa_id       NUMBER;
100439 l_adr_flexfield_segment_code  VARCHAR2(30);
100440 l_adr_flex_value_set_id       NUMBER;
100441 l_adr_value_type_code         VARCHAR2(30);
100442 l_adr_value_combination_id    NUMBER;
100443 l_adr_value_segment_code      VARCHAR2(30);
100444 
100445 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
100446 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
100447 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
100448 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
100449 
100450 -- 4262811 Variables ------------------------------------------------------------------------------------------
100451 l_entered_amt_idx             NUMBER;
100452 l_accted_amt_idx              NUMBER;
100453 l_acc_rev_flag                VARCHAR2(1);
100454 l_accrual_line_num            NUMBER;
100455 l_tmp_amt                     NUMBER;
100456 l_acc_rev_natural_side_code   VARCHAR2(1);
100457 
100458 l_num_entries                 NUMBER;
100459 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
100460 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
100461 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
100462 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
100463 l_recog_line_1                NUMBER;
100464 l_recog_line_2                NUMBER;
100465 
100466 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
100467 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
100468 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
100469 
100470 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
100471 
100472 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
100473 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
100474 
100475 ---------------------------------------------------------------------------------------------------------------
100476 
100477 
100478 --
100479 -- bulk performance
100480 --
100481 l_balance_type_code           VARCHAR2(1);
100482 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
100483 l_log_module                  VARCHAR2(240);
100484 
100485 --
100486 -- Upgrade strategy
100487 --
100488 l_actual_upg_option           VARCHAR2(1);
100489 l_enc_upg_option           VARCHAR2(1);
100490 
100491 --
100492 BEGIN
100493 --
100494 IF g_log_enabled THEN
100495       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_183';
100496 END IF;
100497 --
100498 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100499 
100500       trace
100501          (p_msg      => 'BEGIN of AcctLineType_183'
100502          ,p_level    => C_LEVEL_PROCEDURE
100503          ,p_module   => l_log_module);
100504 
100505 END IF;
100506 --
100507 l_component_type             := 'AMB_JLT';
100508 l_component_code             := 'OFFSET';
100509 l_component_type_code        := 'S';
100510 l_component_appl_id          :=  707;
100511 l_amb_context_code           := 'DEFAULT';
100512 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
100513 l_event_class_code           := 'USER_DEFINE';
100514 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
100515 l_line_definition_owner_code := 'S';
100516 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
100517 --
100518 l_balance_type_code          := 'A';
100519 l_segment                     := NULL;
100520 l_ccid                        := NULL;
100521 l_adr_transaction_coa_id      := NULL;
100522 l_adr_accounting_coa_id       := NULL;
100523 l_adr_flexfield_segment_code  := NULL;
100524 l_adr_flex_value_set_id       := NULL;
100525 l_adr_value_type_code         := NULL;
100526 l_adr_value_combination_id    := NULL;
100527 l_adr_value_segment_code      := NULL;
100528 
100529 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
100530 l_bflow_class_code           := '';    -- 4219869 Business Flow
100531 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
100532 l_budgetary_control_flag     := 'N';
100533 
100534 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
100535 l_bflow_applied_to_amt       := NULL; -- 5132302
100536 l_entered_amt_idx            := NULL;          -- 4262811
100537 l_accted_amt_idx             := NULL;          -- 4262811
100538 l_acc_rev_flag               := NULL;          -- 4262811
100539 l_accrual_line_num           := NULL;          -- 4262811
100540 l_tmp_amt                    := NULL;          -- 4262811
100541 --
100542  
100543 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
100544     l_balance_type_code <> 'B' THEN
100545 IF NVL(p_source_24,9E125) =  2
100546  THEN 
100547 
100548    --
100549    XLA_AE_LINES_PKG.SetNewLine;
100550 
100551    p_balance_type_code          := l_balance_type_code;
100552    -- set the flag so later we will know whether the gain loss line needs to be created
100553    
100554    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
100555      p_actual_flag :='A';
100556    END IF;
100557 
100558    --
100559    -- bulk performance
100560    --
100561    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
100562                                       p_header_num   => 0); -- 4262811
100563    --
100564    -- set accounting line options
100565    --
100566    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
100567            p_natural_side_code          => 'D'
100568          , p_gain_or_loss_flag          => 'N'
100569          , p_gl_transfer_mode_code      => 'S'
100570          , p_acct_entry_type_code       => 'A'
100571          , p_switch_side_flag           => 'Y'
100572          , p_merge_duplicate_code       => 'N'
100573          );
100574    --
100575    l_acc_rev_natural_side_code := 'C';  -- 4262811
100576    -- 
100577    --
100578    -- set accounting line type info
100579    --
100580    xla_ae_lines_pkg.SetAcctLineType
100581       (p_component_type             => l_component_type
100582       ,p_event_type_code            => l_event_type_code
100583       ,p_line_definition_owner_code => l_line_definition_owner_code
100584       ,p_line_definition_code       => l_line_definition_code
100585       ,p_accounting_line_code       => l_component_code
100586       ,p_accounting_line_type_code  => l_component_type_code
100587       ,p_accounting_line_appl_id    => l_component_appl_id
100588       ,p_amb_context_code           => l_amb_context_code
100589       ,p_entity_code                => l_entity_code
100590       ,p_event_class_code           => l_event_class_code);
100591    --
100592    -- set accounting class
100593    --
100594    xla_ae_lines_pkg.SetAcctClass(
100595            p_accounting_class_code  => 'OFFSET'
100596          , p_ae_header_id           => l_ae_header_id
100597          );
100598 
100599    --
100600    -- set rounding class
100601    --
100602    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
100603                       'OFFSET';
100604 
100605    --
100606    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
100607    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
100608    --
100609    -- bulk performance
100610    --
100611    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
100612 
100613    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
100614       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
100615 
100616    -- 4955764
100617    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100618       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
100619 
100620    -- 4458381 Public Sector Enh
100621    
100622    --
100623    -- set accounting attributes for the line type
100624    --
100625    l_entered_amt_idx := 3;
100626    l_accted_amt_idx  := 8;
100627    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
100628    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
100629    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
100630    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
100631    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
100632    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
100633    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
100634    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
100635    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
100636    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
100637    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
100638    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
100639    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
100640    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
100641    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
100642    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
100643    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
100644 
100645    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
100646    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
100647 
100648    ---------------------------------------------------------------------------------------------------------------
100649    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
100650    ---------------------------------------------------------------------------------------------------------------
100651    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
100652 
100653    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100654    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100655 
100656    IF xla_accounting_cache_pkg.GetValueChar
100657          (p_source_code         => 'LEDGER_CATEGORY_CODE'
100658          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
100659    AND l_bflow_method_code = 'PRIOR_ENTRY'
100660 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
100661    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
100662          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
100663        )
100664    THEN
100665          xla_ae_lines_pkg.BflowUpgEntry
100666            (p_business_method_code    => l_bflow_method_code
100667            ,p_business_class_code     => l_bflow_class_code
100668            ,p_balance_type            => l_balance_type_code);
100669    ELSE
100670       NULL;
100671 -- No business flow processing for business flow method of NONE.
100672    END IF;
100673 
100674    --
100675    -- call analytical criteria
100676    --
100677    
100678    --
100679    -- call description
100680    --
100681    -- No description or it is inherited.
100682    --
100683    -- call ADRs
100684    -- Bug 4922099
100685    --
100686    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100687         (NVL(l_actual_upg_option, 'N') = 'O') OR
100688         (NVL(l_enc_upg_option, 'N') = 'O')
100689       )
100690    THEN
100691    NULL;
100692    --
100693    --
100694    
100695   l_ccid := AcctDerRule_4(
100696            p_application_id           => p_application_id
100697          , p_ae_header_id             => l_ae_header_id 
100698 , p_source_4 => p_source_4
100699          , x_transaction_coa_id       => l_adr_transaction_coa_id
100700          , x_accounting_coa_id        => l_adr_accounting_coa_id
100701          , x_value_type_code          => l_adr_value_type_code
100702          , p_side                     => 'NA'
100703    );
100704 
100705    xla_ae_lines_pkg.set_ccid(
100706     p_code_combination_id          => l_ccid
100707   , p_value_type_code              => l_adr_value_type_code
100708   , p_transaction_coa_id           => l_adr_transaction_coa_id
100709   , p_accounting_coa_id            => l_adr_accounting_coa_id
100710   , p_adr_code                     => 'CST_DEFAULT'
100711   , p_adr_type_code                => 'S'
100712   , p_component_type               => l_component_type
100713   , p_component_code               => l_component_code
100714   , p_component_type_code          => l_component_type_code
100715   , p_component_appl_id            => l_component_appl_id
100716   , p_amb_context_code             => l_amb_context_code
100717   , p_side                         => 'NA'
100718   );
100719 
100720 
100721    --
100722    --
100723    END IF;
100724    --
100725    -- Bug 4922099
100726    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
100727           (NVL(l_enc_upg_option, 'N') = 'O')
100728         ) AND
100729         (l_bflow_method_code = 'PRIOR_ENTRY')
100730       )
100731    THEN
100732       IF
100733       --
100734       1 = 2
100735       --
100736       THEN
100737       xla_accounting_err_pkg.build_message
100738                                     (p_appli_s_name            => 'XLA'
100739                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100740                                     ,p_token_1                 => 'LINE_NUMBER'
100741                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
100742                                     ,p_token_2                 => 'LINE_TYPE_NAME'
100743                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
100744                                                                              l_component_type
100745                                                                             ,l_component_code
100746                                                                             ,l_component_type_code
100747                                                                             ,l_component_appl_id
100748                                                                             ,l_amb_context_code
100749                                                                             ,l_entity_code
100750                                                                             ,l_event_class_code
100751                                                                            )
100752                                     ,p_token_3                 => 'OWNER'
100753                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
100754                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
100755                                                                           ,p_lookup_code    => l_component_type_code
100756                                                                          )
100757                                     ,p_token_4                 => 'PRODUCT_NAME'
100758                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
100759                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
100760                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
100761                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
100762                                     ,p_ae_header_id            =>  NULL
100763                                        );
100764 
100765         IF (C_LEVEL_ERROR>= g_log_level) THEN
100766                  trace
100767                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100768                       ,p_level    => C_LEVEL_ERROR
100769                       ,p_module   => l_log_module);
100770         END IF;
100771       END IF;
100772    END IF;
100773    --
100774    --
100775    ------------------------------------------------------------------------------------------------
100776    -- 4219869 Business Flow
100777    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
100778    -- Prior Entry.  Currently, the following code is always generated.
100779    ------------------------------------------------------------------------------------------------
100780    XLA_AE_LINES_PKG.ValidateCurrentLine;
100781 
100782    ------------------------------------------------------------------------------------
100783    -- 4219869 Business Flow
100784    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
100785    ------------------------------------------------------------------------------------
100786    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100787 
100788    ----------------------------------------------------------------------------------
100789    -- 4219869 Business Flow
100790    -- Update journal entry status -- Need to generate this within IF <condition>
100791    ----------------------------------------------------------------------------------
100792    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100793          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
100794          ,p_balance_type_code => l_balance_type_code
100795          );
100796 
100797    -------------------------------------------------------------------------------------------
100798    -- 4262811 - Generate the Accrual Reversal lines
100799    -------------------------------------------------------------------------------------------
100800    BEGIN
100801       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
100802                               (g_array_event(p_event_id).array_value_num('header_index'));
100803       IF l_acc_rev_flag IS NULL THEN
100804          l_acc_rev_flag := 'N';
100805       END IF;
100806    EXCEPTION
100807       WHEN OTHERS THEN
100808          l_acc_rev_flag := 'N';
100809    END;
100810    --
100811    IF (l_acc_rev_flag = 'Y') THEN
100812 
100813        -- 4645092  ------------------------------------------------------------------------------
100814        -- To allow MPA report to determine if it should generate report process
100815        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
100816        ------------------------------------------------------------------------------------------
100817 
100818        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
100819        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
100820    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
100821    -- call ADRs
100822    -- Bug 4922099
100823    --
100824    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100825         (NVL(l_actual_upg_option, 'N') = 'O') OR
100826         (NVL(l_enc_upg_option, 'N') = 'O')
100827       )
100828    THEN
100829    NULL;
100830    --
100831    --
100832    
100833   l_ccid := AcctDerRule_4(
100834            p_application_id           => p_application_id
100835          , p_ae_header_id             => l_ae_header_id 
100836 , p_source_4 => p_source_4
100837          , x_transaction_coa_id       => l_adr_transaction_coa_id
100838          , x_accounting_coa_id        => l_adr_accounting_coa_id
100839          , x_value_type_code          => l_adr_value_type_code
100840          , p_side                     => 'NA'
100841    );
100842 
100843    xla_ae_lines_pkg.set_ccid(
100844     p_code_combination_id          => l_ccid
100845   , p_value_type_code              => l_adr_value_type_code
100846   , p_transaction_coa_id           => l_adr_transaction_coa_id
100847   , p_accounting_coa_id            => l_adr_accounting_coa_id
100848   , p_adr_code                     => 'CST_DEFAULT'
100849   , p_adr_type_code                => 'S'
100850   , p_component_type               => l_component_type
100851   , p_component_code               => l_component_code
100852   , p_component_type_code          => l_component_type_code
100853   , p_component_appl_id            => l_component_appl_id
100854   , p_amb_context_code             => l_amb_context_code
100855   , p_side                         => 'NA'
100856   );
100857 
100858 
100859    --
100860    --
100861    END IF;
100862 
100863        --
100864        -- Update the line information that should be overwritten
100865        --
100866        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
100867                                          p_header_num   => 1);
100868        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
100869 
100870        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
100871 
100872        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
100873           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
100874        END IF;
100875 
100876       --
100877       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
100878       --
100879       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
100880           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
100881       ELSE
100882           ---------------------------------------------------------------------------------------------------
100883           -- 4262811a Switch Sign
100884           ---------------------------------------------------------------------------------------------------
100885           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
100886           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100887                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100888           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100889                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100890           -- 5132302
100891           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
100892                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100893 
100894       END IF;
100895 
100896       -- 4955764
100897       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100898       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
100899 
100900 
100901       XLA_AE_LINES_PKG.ValidateCurrentLine;
100902       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100903 
100904       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100905                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
100906                ,p_balance_type_code => l_balance_type_code);
100907 
100908    END IF;
100909 
100910    -----------------------------------------------------------------------------------------
100911    -- 4262811 Multiperiod Accounting
100912    -----------------------------------------------------------------------------------------
100913      -- No MPA option is assigned.
100914 
100915 
100916 END IF;
100917 END IF;
100918 --
100919 
100920 --
100921 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100922    trace
100923       (p_msg      => 'END of AcctLineType_183'
100924       ,p_level    => C_LEVEL_PROCEDURE
100925       ,p_module   => l_log_module);
100926 END IF;
100927 --
100928 EXCEPTION
100929   WHEN xla_exceptions_pkg.application_exception THEN
100930       RAISE;
100931   WHEN OTHERS THEN
100932        xla_exceptions_pkg.raise_message
100933            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_183');
100934 END AcctLineType_183;
100935 --
100936 
100937 ---------------------------------------
100938 --
100939 -- PRIVATE FUNCTION
100940 --         AcctLineType_184
100941 --
100942 ---------------------------------------
100943 PROCEDURE AcctLineType_184 (
100944   p_application_id        IN NUMBER
100945  ,p_event_id              IN NUMBER
100946  ,p_calculate_acctd_flag  IN VARCHAR2
100947  ,p_calculate_g_l_flag    IN VARCHAR2
100948  ,p_actual_flag           IN OUT VARCHAR2
100949  ,p_balance_type_code     OUT VARCHAR2
100950  ,p_gain_or_loss_ref      OUT VARCHAR2
100951  
100952 --Cost Management Default Account
100953  , p_source_4            IN NUMBER
100954 --Applied to Application ID
100955  , p_source_6            IN NUMBER
100956 --Applied to Distribution Link Type
100957  , p_source_7            IN VARCHAR2
100958 --Applied to Entity Code
100959  , p_source_8            IN VARCHAR2
100960 --DISTRIBUTION_IDENTIFIER
100961  , p_source_11            IN NUMBER
100962 --Distribution Type
100963  , p_source_12            IN VARCHAR2
100964  , p_source_12_meaning    IN VARCHAR2
100965 --Encumbrance Reversal Amount Entered
100966  , p_source_14            IN NUMBER
100967 --Entered Currency Code
100968  , p_source_15            IN VARCHAR2
100969 --Transaction Encumbrance Reversal Amount
100970  , p_source_16            IN NUMBER
100971 --Entered Amount
100972  , p_source_18            IN NUMBER
100973 --Currency Conversion Date
100974  , p_source_19            IN DATE
100975 --Currency Conversion Rate
100976  , p_source_20            IN NUMBER
100977 --Currency Conversion Type
100978  , p_source_21            IN VARCHAR2
100979 --Accounted Amount
100980  , p_source_22            IN NUMBER
100981 --Accounting Line Type
100982  , p_source_24            IN NUMBER
100983 --Costing Encumbrance Upgrade Option
100984  , p_source_27            IN VARCHAR2
100985 --TXN_PO_DISTRIBUTION_ID
100986  , p_source_28            IN NUMBER
100987 --TXN_PO_HEADER_ID
100988  , p_source_29            IN NUMBER
100989 --Requisition Budget Account
100990  , p_source_30            IN NUMBER
100991 --Requisition Encumbrance Type Identifier
100992  , p_source_31            IN NUMBER
100993 )
100994 IS
100995 
100996 l_component_type              VARCHAR2(80);
100997 l_component_code              VARCHAR2(30);
100998 l_component_type_code         VARCHAR2(1);
100999 l_component_appl_id           INTEGER;
101000 l_amb_context_code            VARCHAR2(30);
101001 l_entity_code                 VARCHAR2(30);
101002 l_event_class_code            VARCHAR2(30);
101003 l_ae_header_id                NUMBER;
101004 l_event_type_code             VARCHAR2(30);
101005 l_line_definition_code        VARCHAR2(30);
101006 l_line_definition_owner_code  VARCHAR2(1);
101007 --
101008 -- adr variables
101009 l_segment                     VARCHAR2(30);
101010 l_ccid                        NUMBER;
101011 l_adr_transaction_coa_id      NUMBER;
101012 l_adr_accounting_coa_id       NUMBER;
101013 l_adr_flexfield_segment_code  VARCHAR2(30);
101014 l_adr_flex_value_set_id       NUMBER;
101015 l_adr_value_type_code         VARCHAR2(30);
101016 l_adr_value_combination_id    NUMBER;
101017 l_adr_value_segment_code      VARCHAR2(30);
101018 
101019 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
101020 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
101021 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
101022 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
101023 
101024 -- 4262811 Variables ------------------------------------------------------------------------------------------
101025 l_entered_amt_idx             NUMBER;
101026 l_accted_amt_idx              NUMBER;
101027 l_acc_rev_flag                VARCHAR2(1);
101028 l_accrual_line_num            NUMBER;
101029 l_tmp_amt                     NUMBER;
101030 l_acc_rev_natural_side_code   VARCHAR2(1);
101031 
101032 l_num_entries                 NUMBER;
101033 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
101034 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
101035 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
101036 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
101037 l_recog_line_1                NUMBER;
101038 l_recog_line_2                NUMBER;
101039 
101040 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
101041 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
101042 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
101043 
101044 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
101045 
101046 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
101047 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
101048 
101049 ---------------------------------------------------------------------------------------------------------------
101050 
101051 
101052 --
101053 -- bulk performance
101054 --
101055 l_balance_type_code           VARCHAR2(1);
101056 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
101057 l_log_module                  VARCHAR2(240);
101058 
101059 --
101060 -- Upgrade strategy
101061 --
101062 l_actual_upg_option           VARCHAR2(1);
101063 l_enc_upg_option           VARCHAR2(1);
101064 
101065 --
101066 BEGIN
101067 --
101068 IF g_log_enabled THEN
101069       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_184';
101070 END IF;
101071 --
101072 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101073 
101074       trace
101075          (p_msg      => 'BEGIN of AcctLineType_184'
101076          ,p_level    => C_LEVEL_PROCEDURE
101077          ,p_module   => l_log_module);
101078 
101079 END IF;
101080 --
101081 l_component_type             := 'AMB_JLT';
101082 l_component_code             := 'OFFSET';
101083 l_component_type_code        := 'S';
101084 l_component_appl_id          :=  707;
101085 l_amb_context_code           := 'DEFAULT';
101086 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
101087 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
101088 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
101089 l_line_definition_owner_code := 'S';
101090 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT';
101091 --
101092 l_balance_type_code          := 'A';
101093 l_segment                     := NULL;
101094 l_ccid                        := NULL;
101095 l_adr_transaction_coa_id      := NULL;
101096 l_adr_accounting_coa_id       := NULL;
101097 l_adr_flexfield_segment_code  := NULL;
101098 l_adr_flex_value_set_id       := NULL;
101099 l_adr_value_type_code         := NULL;
101100 l_adr_value_combination_id    := NULL;
101101 l_adr_value_segment_code      := NULL;
101102 
101103 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
101104 l_bflow_class_code           := '';    -- 4219869 Business Flow
101105 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
101106 l_budgetary_control_flag     := 'N';
101107 
101108 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
101109 l_bflow_applied_to_amt       := NULL; -- 5132302
101110 l_entered_amt_idx            := NULL;          -- 4262811
101111 l_accted_amt_idx             := NULL;          -- 4262811
101112 l_acc_rev_flag               := NULL;          -- 4262811
101113 l_accrual_line_num           := NULL;          -- 4262811
101114 l_tmp_amt                    := NULL;          -- 4262811
101115 --
101116  
101117 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
101118     l_balance_type_code <> 'B' THEN
101119 IF NVL(p_source_24,9E125) =  2 AND 
101120 p_source_22 >=  0
101121  THEN 
101122 
101123    --
101124    XLA_AE_LINES_PKG.SetNewLine;
101125 
101126    p_balance_type_code          := l_balance_type_code;
101127    -- set the flag so later we will know whether the gain loss line needs to be created
101128    
101129    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
101130      p_actual_flag :='A';
101131    END IF;
101132 
101133    --
101134    -- bulk performance
101135    --
101136    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
101137                                       p_header_num   => 0); -- 4262811
101138    --
101139    -- set accounting line options
101140    --
101141    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
101142            p_natural_side_code          => 'D'
101143          , p_gain_or_loss_flag          => 'N'
101144          , p_gl_transfer_mode_code      => 'S'
101145          , p_acct_entry_type_code       => 'A'
101146          , p_switch_side_flag           => 'Y'
101147          , p_merge_duplicate_code       => 'N'
101148          );
101149    --
101150    l_acc_rev_natural_side_code := 'C';  -- 4262811
101151    -- 
101152    --
101153    -- set accounting line type info
101154    --
101155    xla_ae_lines_pkg.SetAcctLineType
101156       (p_component_type             => l_component_type
101157       ,p_event_type_code            => l_event_type_code
101158       ,p_line_definition_owner_code => l_line_definition_owner_code
101159       ,p_line_definition_code       => l_line_definition_code
101160       ,p_accounting_line_code       => l_component_code
101161       ,p_accounting_line_type_code  => l_component_type_code
101162       ,p_accounting_line_appl_id    => l_component_appl_id
101163       ,p_amb_context_code           => l_amb_context_code
101164       ,p_entity_code                => l_entity_code
101165       ,p_event_class_code           => l_event_class_code);
101166    --
101167    -- set accounting class
101168    --
101169    xla_ae_lines_pkg.SetAcctClass(
101170            p_accounting_class_code  => 'OFFSET'
101171          , p_ae_header_id           => l_ae_header_id
101172          );
101173 
101174    --
101175    -- set rounding class
101176    --
101177    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
101178                       'OFFSET';
101179 
101180    --
101181    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
101182    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
101183    --
101184    -- bulk performance
101185    --
101186    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
101187 
101188    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
101189       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
101190 
101191    -- 4955764
101192    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101193       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
101194 
101195    -- 4458381 Public Sector Enh
101196    
101197    --
101198    -- set accounting attributes for the line type
101199    --
101200    l_entered_amt_idx := 17;
101201    l_accted_amt_idx  := 22;
101202    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
101203    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
101204    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
101205    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
101206    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
101207    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
101208    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
101209    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
101210    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
101211    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
101212    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
101213    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
101214    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
101215    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
101216    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
101217    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
101218    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
101219    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
101220    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
101221    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
101222    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
101223    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
101224    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
101225    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
101226    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
101227    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
101228    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
101229    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
101230    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
101231    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
101232    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
101233    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
101234    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
101235    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
101236    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
101237    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
101238    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
101239    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
101240    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
101241    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
101242    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
101243    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
101244    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
101245    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
101246    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
101247    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
101248    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
101249    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
101250    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
101251 
101252    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
101253    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
101254 
101255    ---------------------------------------------------------------------------------------------------------------
101256    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
101257    ---------------------------------------------------------------------------------------------------------------
101258    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
101259 
101260    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101261    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101262 
101263    IF xla_accounting_cache_pkg.GetValueChar
101264          (p_source_code         => 'LEDGER_CATEGORY_CODE'
101265          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
101266    AND l_bflow_method_code = 'PRIOR_ENTRY'
101267 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
101268    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
101269          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
101270        )
101271    THEN
101272          xla_ae_lines_pkg.BflowUpgEntry
101273            (p_business_method_code    => l_bflow_method_code
101274            ,p_business_class_code     => l_bflow_class_code
101275            ,p_balance_type            => l_balance_type_code);
101276    ELSE
101277       NULL;
101278 -- No business flow processing for business flow method of NONE.
101279    END IF;
101280 
101281    --
101282    -- call analytical criteria
101283    --
101284    
101285    --
101286    -- call description
101287    --
101288    -- No description or it is inherited.
101289    --
101290    -- call ADRs
101291    -- Bug 4922099
101292    --
101293    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101294         (NVL(l_actual_upg_option, 'N') = 'O') OR
101295         (NVL(l_enc_upg_option, 'N') = 'O')
101296       )
101297    THEN
101298    NULL;
101299    --
101300    --
101301    
101302   l_ccid := AcctDerRule_4(
101303            p_application_id           => p_application_id
101304          , p_ae_header_id             => l_ae_header_id 
101305 , p_source_4 => p_source_4
101306          , x_transaction_coa_id       => l_adr_transaction_coa_id
101307          , x_accounting_coa_id        => l_adr_accounting_coa_id
101308          , x_value_type_code          => l_adr_value_type_code
101309          , p_side                     => 'NA'
101310    );
101311 
101312    xla_ae_lines_pkg.set_ccid(
101313     p_code_combination_id          => l_ccid
101314   , p_value_type_code              => l_adr_value_type_code
101315   , p_transaction_coa_id           => l_adr_transaction_coa_id
101316   , p_accounting_coa_id            => l_adr_accounting_coa_id
101317   , p_adr_code                     => 'CST_DEFAULT'
101318   , p_adr_type_code                => 'S'
101319   , p_component_type               => l_component_type
101320   , p_component_code               => l_component_code
101321   , p_component_type_code          => l_component_type_code
101322   , p_component_appl_id            => l_component_appl_id
101323   , p_amb_context_code             => l_amb_context_code
101324   , p_side                         => 'NA'
101325   );
101326 
101327 
101328    --
101329    --
101330    END IF;
101331    --
101332    -- Bug 4922099
101333    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
101334           (NVL(l_enc_upg_option, 'N') = 'O')
101335         ) AND
101336         (l_bflow_method_code = 'PRIOR_ENTRY')
101337       )
101338    THEN
101339       IF
101340       --
101341       1 = 2
101342       --
101343       THEN
101344       xla_accounting_err_pkg.build_message
101345                                     (p_appli_s_name            => 'XLA'
101346                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101347                                     ,p_token_1                 => 'LINE_NUMBER'
101348                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
101349                                     ,p_token_2                 => 'LINE_TYPE_NAME'
101350                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
101351                                                                              l_component_type
101352                                                                             ,l_component_code
101353                                                                             ,l_component_type_code
101354                                                                             ,l_component_appl_id
101355                                                                             ,l_amb_context_code
101356                                                                             ,l_entity_code
101357                                                                             ,l_event_class_code
101358                                                                            )
101359                                     ,p_token_3                 => 'OWNER'
101360                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
101361                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
101362                                                                           ,p_lookup_code    => l_component_type_code
101363                                                                          )
101364                                     ,p_token_4                 => 'PRODUCT_NAME'
101365                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
101366                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
101367                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
101368                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
101369                                     ,p_ae_header_id            =>  NULL
101370                                        );
101371 
101372         IF (C_LEVEL_ERROR>= g_log_level) THEN
101373                  trace
101374                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101375                       ,p_level    => C_LEVEL_ERROR
101376                       ,p_module   => l_log_module);
101377         END IF;
101378       END IF;
101379    END IF;
101380    --
101381    --
101382    ------------------------------------------------------------------------------------------------
101383    -- 4219869 Business Flow
101384    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
101385    -- Prior Entry.  Currently, the following code is always generated.
101386    ------------------------------------------------------------------------------------------------
101387    XLA_AE_LINES_PKG.ValidateCurrentLine;
101388 
101389    ------------------------------------------------------------------------------------
101390    -- 4219869 Business Flow
101391    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
101392    ------------------------------------------------------------------------------------
101393    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101394 
101395    ----------------------------------------------------------------------------------
101396    -- 4219869 Business Flow
101397    -- Update journal entry status -- Need to generate this within IF <condition>
101398    ----------------------------------------------------------------------------------
101399    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101400          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
101401          ,p_balance_type_code => l_balance_type_code
101402          );
101403 
101404    -------------------------------------------------------------------------------------------
101405    -- 4262811 - Generate the Accrual Reversal lines
101406    -------------------------------------------------------------------------------------------
101407    BEGIN
101408       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
101409                               (g_array_event(p_event_id).array_value_num('header_index'));
101410       IF l_acc_rev_flag IS NULL THEN
101411          l_acc_rev_flag := 'N';
101412       END IF;
101413    EXCEPTION
101414       WHEN OTHERS THEN
101415          l_acc_rev_flag := 'N';
101416    END;
101417    --
101418    IF (l_acc_rev_flag = 'Y') THEN
101419 
101420        -- 4645092  ------------------------------------------------------------------------------
101421        -- To allow MPA report to determine if it should generate report process
101422        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
101423        ------------------------------------------------------------------------------------------
101424 
101425        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
101426        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
101427    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
101428    -- call ADRs
101429    -- Bug 4922099
101430    --
101431    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101432         (NVL(l_actual_upg_option, 'N') = 'O') OR
101433         (NVL(l_enc_upg_option, 'N') = 'O')
101434       )
101435    THEN
101436    NULL;
101437    --
101438    --
101439    
101440   l_ccid := AcctDerRule_4(
101441            p_application_id           => p_application_id
101442          , p_ae_header_id             => l_ae_header_id 
101443 , p_source_4 => p_source_4
101444          , x_transaction_coa_id       => l_adr_transaction_coa_id
101445          , x_accounting_coa_id        => l_adr_accounting_coa_id
101446          , x_value_type_code          => l_adr_value_type_code
101447          , p_side                     => 'NA'
101448    );
101449 
101450    xla_ae_lines_pkg.set_ccid(
101451     p_code_combination_id          => l_ccid
101452   , p_value_type_code              => l_adr_value_type_code
101453   , p_transaction_coa_id           => l_adr_transaction_coa_id
101454   , p_accounting_coa_id            => l_adr_accounting_coa_id
101455   , p_adr_code                     => 'CST_DEFAULT'
101456   , p_adr_type_code                => 'S'
101457   , p_component_type               => l_component_type
101458   , p_component_code               => l_component_code
101459   , p_component_type_code          => l_component_type_code
101460   , p_component_appl_id            => l_component_appl_id
101461   , p_amb_context_code             => l_amb_context_code
101462   , p_side                         => 'NA'
101463   );
101464 
101465 
101466    --
101467    --
101468    END IF;
101469 
101470        --
101471        -- Update the line information that should be overwritten
101472        --
101473        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
101474                                          p_header_num   => 1);
101475        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
101476 
101477        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
101478 
101479        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
101480           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
101481        END IF;
101482 
101483       --
101484       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
101485       --
101486       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
101487           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
101488       ELSE
101489           ---------------------------------------------------------------------------------------------------
101490           -- 4262811a Switch Sign
101491           ---------------------------------------------------------------------------------------------------
101492           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
101493           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101494                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101495           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101496                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101497           -- 5132302
101498           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
101499                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101500 
101501       END IF;
101502 
101503       -- 4955764
101504       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101505       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
101506 
101507 
101508       XLA_AE_LINES_PKG.ValidateCurrentLine;
101509       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101510 
101511       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101512                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
101513                ,p_balance_type_code => l_balance_type_code);
101514 
101515    END IF;
101516 
101517    -----------------------------------------------------------------------------------------
101518    -- 4262811 Multiperiod Accounting
101519    -----------------------------------------------------------------------------------------
101520      -- No MPA option is assigned.
101521 
101522 
101523 END IF;
101524 END IF;
101525 --
101526 
101527 --
101528 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101529    trace
101530       (p_msg      => 'END of AcctLineType_184'
101531       ,p_level    => C_LEVEL_PROCEDURE
101532       ,p_module   => l_log_module);
101533 END IF;
101534 --
101535 EXCEPTION
101536   WHEN xla_exceptions_pkg.application_exception THEN
101537       RAISE;
101538   WHEN OTHERS THEN
101539        xla_exceptions_pkg.raise_message
101540            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_184');
101541 END AcctLineType_184;
101542 --
101543 
101544 ---------------------------------------
101545 --
101546 -- PRIVATE FUNCTION
101547 --         AcctLineType_185
101548 --
101549 ---------------------------------------
101550 PROCEDURE AcctLineType_185 (
101551   p_application_id        IN NUMBER
101552  ,p_event_id              IN NUMBER
101553  ,p_calculate_acctd_flag  IN VARCHAR2
101554  ,p_calculate_g_l_flag    IN VARCHAR2
101555  ,p_actual_flag           IN OUT VARCHAR2
101556  ,p_balance_type_code     OUT VARCHAR2
101557  ,p_gain_or_loss_ref      OUT VARCHAR2
101558  
101559 --Cost Management Default Account
101560  , p_source_4            IN NUMBER
101561 --Applied to Application ID
101562  , p_source_6            IN NUMBER
101563 --Applied to Distribution Link Type
101564  , p_source_7            IN VARCHAR2
101565 --Applied to Entity Code
101566  , p_source_8            IN VARCHAR2
101567 --Applied To Purchase Document Identifier
101568  , p_source_10            IN NUMBER
101569 --DISTRIBUTION_IDENTIFIER
101570  , p_source_11            IN NUMBER
101571 --Distribution Type
101572  , p_source_12            IN VARCHAR2
101573  , p_source_12_meaning    IN VARCHAR2
101574 --PO Budget Account
101575  , p_source_13            IN NUMBER
101576 --Encumbrance Reversal Amount Entered
101577  , p_source_14            IN NUMBER
101578 --Entered Currency Code
101579  , p_source_15            IN VARCHAR2
101580 --Transaction Encumbrance Reversal Amount
101581  , p_source_16            IN NUMBER
101582 --Entered Amount
101583  , p_source_18            IN NUMBER
101584 --Currency Conversion Date
101585  , p_source_19            IN DATE
101586 --Currency Conversion Rate
101587  , p_source_20            IN NUMBER
101588 --Currency Conversion Type
101589  , p_source_21            IN VARCHAR2
101590 --Accounted Amount
101591  , p_source_22            IN NUMBER
101592 --Purchasing Encumbrance Type Identifier
101593  , p_source_23            IN NUMBER
101594 --Accounting Line Type
101595  , p_source_24            IN NUMBER
101596 --Costing Encumbrance Upgrade Option
101597  , p_source_27            IN VARCHAR2
101598 --TXN_PO_DISTRIBUTION_ID
101599  , p_source_28            IN NUMBER
101600 )
101601 IS
101602 
101603 l_component_type              VARCHAR2(80);
101604 l_component_code              VARCHAR2(30);
101605 l_component_type_code         VARCHAR2(1);
101606 l_component_appl_id           INTEGER;
101607 l_amb_context_code            VARCHAR2(30);
101608 l_entity_code                 VARCHAR2(30);
101609 l_event_class_code            VARCHAR2(30);
101610 l_ae_header_id                NUMBER;
101611 l_event_type_code             VARCHAR2(30);
101612 l_line_definition_code        VARCHAR2(30);
101613 l_line_definition_owner_code  VARCHAR2(1);
101614 --
101615 -- adr variables
101616 l_segment                     VARCHAR2(30);
101617 l_ccid                        NUMBER;
101618 l_adr_transaction_coa_id      NUMBER;
101619 l_adr_accounting_coa_id       NUMBER;
101620 l_adr_flexfield_segment_code  VARCHAR2(30);
101621 l_adr_flex_value_set_id       NUMBER;
101622 l_adr_value_type_code         VARCHAR2(30);
101623 l_adr_value_combination_id    NUMBER;
101624 l_adr_value_segment_code      VARCHAR2(30);
101625 
101626 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
101627 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
101628 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
101629 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
101630 
101631 -- 4262811 Variables ------------------------------------------------------------------------------------------
101632 l_entered_amt_idx             NUMBER;
101633 l_accted_amt_idx              NUMBER;
101634 l_acc_rev_flag                VARCHAR2(1);
101635 l_accrual_line_num            NUMBER;
101636 l_tmp_amt                     NUMBER;
101637 l_acc_rev_natural_side_code   VARCHAR2(1);
101638 
101639 l_num_entries                 NUMBER;
101640 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
101641 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
101642 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
101643 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
101644 l_recog_line_1                NUMBER;
101645 l_recog_line_2                NUMBER;
101646 
101647 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
101648 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
101649 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
101650 
101651 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
101652 
101653 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
101654 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
101655 
101656 ---------------------------------------------------------------------------------------------------------------
101657 
101658 
101659 --
101660 -- bulk performance
101661 --
101662 l_balance_type_code           VARCHAR2(1);
101663 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
101664 l_log_module                  VARCHAR2(240);
101665 
101666 --
101667 -- Upgrade strategy
101668 --
101669 l_actual_upg_option           VARCHAR2(1);
101670 l_enc_upg_option           VARCHAR2(1);
101671 
101672 --
101673 BEGIN
101674 --
101675 IF g_log_enabled THEN
101676       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_185';
101677 END IF;
101678 --
101679 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101680 
101681       trace
101682          (p_msg      => 'BEGIN of AcctLineType_185'
101683          ,p_level    => C_LEVEL_PROCEDURE
101684          ,p_module   => l_log_module);
101685 
101686 END IF;
101687 --
101688 l_component_type             := 'AMB_JLT';
101689 l_component_code             := 'OFFSET';
101690 l_component_type_code        := 'S';
101691 l_component_appl_id          :=  707;
101692 l_amb_context_code           := 'DEFAULT';
101693 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
101694 l_event_class_code           := 'PURCHASE_ORDER';
101695 l_event_type_code            := 'PURCHASE_ORDER_ALL';
101696 l_line_definition_owner_code := 'S';
101697 l_line_definition_code       := 'PURCHASE_ORDER';
101698 --
101699 l_balance_type_code          := 'A';
101700 l_segment                     := NULL;
101701 l_ccid                        := NULL;
101702 l_adr_transaction_coa_id      := NULL;
101703 l_adr_accounting_coa_id       := NULL;
101704 l_adr_flexfield_segment_code  := NULL;
101705 l_adr_flex_value_set_id       := NULL;
101706 l_adr_value_type_code         := NULL;
101707 l_adr_value_combination_id    := NULL;
101708 l_adr_value_segment_code      := NULL;
101709 
101710 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
101711 l_bflow_class_code           := '';    -- 4219869 Business Flow
101712 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
101713 l_budgetary_control_flag     := 'N';
101714 
101715 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
101716 l_bflow_applied_to_amt       := NULL; -- 5132302
101717 l_entered_amt_idx            := NULL;          -- 4262811
101718 l_accted_amt_idx             := NULL;          -- 4262811
101719 l_acc_rev_flag               := NULL;          -- 4262811
101720 l_accrual_line_num           := NULL;          -- 4262811
101721 l_tmp_amt                    := NULL;          -- 4262811
101722 --
101723  
101724 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
101725     l_balance_type_code <> 'B' THEN
101726 IF NVL(p_source_24,9E125) =  2
101727  THEN 
101728 
101729    --
101730    XLA_AE_LINES_PKG.SetNewLine;
101731 
101732    p_balance_type_code          := l_balance_type_code;
101733    -- set the flag so later we will know whether the gain loss line needs to be created
101734    
101735    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
101736      p_actual_flag :='A';
101737    END IF;
101738 
101739    --
101740    -- bulk performance
101741    --
101742    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
101743                                       p_header_num   => 0); -- 4262811
101744    --
101745    -- set accounting line options
101746    --
101747    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
101748            p_natural_side_code          => 'D'
101749          , p_gain_or_loss_flag          => 'N'
101750          , p_gl_transfer_mode_code      => 'S'
101751          , p_acct_entry_type_code       => 'A'
101752          , p_switch_side_flag           => 'Y'
101753          , p_merge_duplicate_code       => 'N'
101754          );
101755    --
101756    l_acc_rev_natural_side_code := 'C';  -- 4262811
101757    -- 
101758    --
101759    -- set accounting line type info
101760    --
101761    xla_ae_lines_pkg.SetAcctLineType
101762       (p_component_type             => l_component_type
101763       ,p_event_type_code            => l_event_type_code
101764       ,p_line_definition_owner_code => l_line_definition_owner_code
101765       ,p_line_definition_code       => l_line_definition_code
101766       ,p_accounting_line_code       => l_component_code
101767       ,p_accounting_line_type_code  => l_component_type_code
101768       ,p_accounting_line_appl_id    => l_component_appl_id
101769       ,p_amb_context_code           => l_amb_context_code
101770       ,p_entity_code                => l_entity_code
101771       ,p_event_class_code           => l_event_class_code);
101772    --
101773    -- set accounting class
101774    --
101775    xla_ae_lines_pkg.SetAcctClass(
101776            p_accounting_class_code  => 'OFFSET'
101777          , p_ae_header_id           => l_ae_header_id
101778          );
101779 
101780    --
101781    -- set rounding class
101782    --
101783    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
101784                       'OFFSET';
101785 
101786    --
101787    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
101788    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
101789    --
101790    -- bulk performance
101791    --
101792    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
101793 
101794    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
101795       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
101796 
101797    -- 4955764
101798    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101799       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
101800 
101801    -- 4458381 Public Sector Enh
101802    
101803    --
101804    -- set accounting attributes for the line type
101805    --
101806    l_entered_amt_idx := 17;
101807    l_accted_amt_idx  := 22;
101808    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
101809    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
101810    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
101811    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
101812    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
101813    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
101814    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
101815    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
101816    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
101817    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
101818    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
101819    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
101820    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
101821    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
101822    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
101823    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
101824    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
101825    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
101826    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
101827    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
101828    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
101829    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
101830    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
101831    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
101832    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
101833    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
101834    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
101835    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
101836    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
101837    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
101838    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
101839    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
101840    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
101841    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
101842    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
101843    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
101844    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
101845    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
101846    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
101847    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
101848    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
101849    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
101850    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
101851    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
101852    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
101853    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
101854    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
101855    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
101856    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
101857 
101858    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
101859    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
101860 
101861    ---------------------------------------------------------------------------------------------------------------
101862    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
101863    ---------------------------------------------------------------------------------------------------------------
101864    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
101865 
101866    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101867    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101868 
101869    IF xla_accounting_cache_pkg.GetValueChar
101870          (p_source_code         => 'LEDGER_CATEGORY_CODE'
101871          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
101872    AND l_bflow_method_code = 'PRIOR_ENTRY'
101873 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
101874    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
101875          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
101876        )
101877    THEN
101878          xla_ae_lines_pkg.BflowUpgEntry
101879            (p_business_method_code    => l_bflow_method_code
101880            ,p_business_class_code     => l_bflow_class_code
101881            ,p_balance_type            => l_balance_type_code);
101882    ELSE
101883       NULL;
101884 -- No business flow processing for business flow method of NONE.
101885    END IF;
101886 
101887    --
101888    -- call analytical criteria
101889    --
101890    
101891    --
101892    -- call description
101893    --
101894    -- No description or it is inherited.
101895    --
101896    -- call ADRs
101897    -- Bug 4922099
101898    --
101899    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101900         (NVL(l_actual_upg_option, 'N') = 'O') OR
101901         (NVL(l_enc_upg_option, 'N') = 'O')
101902       )
101903    THEN
101904    NULL;
101905    --
101906    --
101907    
101908   l_ccid := AcctDerRule_4(
101909            p_application_id           => p_application_id
101910          , p_ae_header_id             => l_ae_header_id 
101911 , p_source_4 => p_source_4
101912          , x_transaction_coa_id       => l_adr_transaction_coa_id
101913          , x_accounting_coa_id        => l_adr_accounting_coa_id
101914          , x_value_type_code          => l_adr_value_type_code
101915          , p_side                     => 'NA'
101916    );
101917 
101918    xla_ae_lines_pkg.set_ccid(
101919     p_code_combination_id          => l_ccid
101920   , p_value_type_code              => l_adr_value_type_code
101921   , p_transaction_coa_id           => l_adr_transaction_coa_id
101922   , p_accounting_coa_id            => l_adr_accounting_coa_id
101923   , p_adr_code                     => 'CST_DEFAULT'
101924   , p_adr_type_code                => 'S'
101925   , p_component_type               => l_component_type
101926   , p_component_code               => l_component_code
101927   , p_component_type_code          => l_component_type_code
101928   , p_component_appl_id            => l_component_appl_id
101929   , p_amb_context_code             => l_amb_context_code
101930   , p_side                         => 'NA'
101931   );
101932 
101933 
101934    --
101935    --
101936    END IF;
101937    --
101938    -- Bug 4922099
101939    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
101940           (NVL(l_enc_upg_option, 'N') = 'O')
101941         ) AND
101942         (l_bflow_method_code = 'PRIOR_ENTRY')
101943       )
101944    THEN
101945       IF
101946       --
101947       1 = 2
101948       --
101949       THEN
101950       xla_accounting_err_pkg.build_message
101951                                     (p_appli_s_name            => 'XLA'
101952                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101953                                     ,p_token_1                 => 'LINE_NUMBER'
101954                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
101955                                     ,p_token_2                 => 'LINE_TYPE_NAME'
101956                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
101957                                                                              l_component_type
101958                                                                             ,l_component_code
101959                                                                             ,l_component_type_code
101960                                                                             ,l_component_appl_id
101961                                                                             ,l_amb_context_code
101962                                                                             ,l_entity_code
101963                                                                             ,l_event_class_code
101964                                                                            )
101965                                     ,p_token_3                 => 'OWNER'
101966                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
101967                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
101968                                                                           ,p_lookup_code    => l_component_type_code
101969                                                                          )
101970                                     ,p_token_4                 => 'PRODUCT_NAME'
101971                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
101972                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
101973                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
101974                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
101975                                     ,p_ae_header_id            =>  NULL
101976                                        );
101977 
101978         IF (C_LEVEL_ERROR>= g_log_level) THEN
101979                  trace
101980                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101981                       ,p_level    => C_LEVEL_ERROR
101982                       ,p_module   => l_log_module);
101983         END IF;
101984       END IF;
101985    END IF;
101986    --
101987    --
101988    ------------------------------------------------------------------------------------------------
101989    -- 4219869 Business Flow
101990    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
101991    -- Prior Entry.  Currently, the following code is always generated.
101992    ------------------------------------------------------------------------------------------------
101993    XLA_AE_LINES_PKG.ValidateCurrentLine;
101994 
101995    ------------------------------------------------------------------------------------
101996    -- 4219869 Business Flow
101997    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
101998    ------------------------------------------------------------------------------------
101999    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102000 
102001    ----------------------------------------------------------------------------------
102002    -- 4219869 Business Flow
102003    -- Update journal entry status -- Need to generate this within IF <condition>
102004    ----------------------------------------------------------------------------------
102005    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102006          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
102007          ,p_balance_type_code => l_balance_type_code
102008          );
102009 
102010    -------------------------------------------------------------------------------------------
102011    -- 4262811 - Generate the Accrual Reversal lines
102012    -------------------------------------------------------------------------------------------
102013    BEGIN
102014       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
102015                               (g_array_event(p_event_id).array_value_num('header_index'));
102016       IF l_acc_rev_flag IS NULL THEN
102017          l_acc_rev_flag := 'N';
102018       END IF;
102019    EXCEPTION
102020       WHEN OTHERS THEN
102021          l_acc_rev_flag := 'N';
102022    END;
102023    --
102024    IF (l_acc_rev_flag = 'Y') THEN
102025 
102026        -- 4645092  ------------------------------------------------------------------------------
102027        -- To allow MPA report to determine if it should generate report process
102028        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
102029        ------------------------------------------------------------------------------------------
102030 
102031        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
102032        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
102033    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
102034    -- call ADRs
102035    -- Bug 4922099
102036    --
102037    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102038         (NVL(l_actual_upg_option, 'N') = 'O') OR
102039         (NVL(l_enc_upg_option, 'N') = 'O')
102040       )
102041    THEN
102042    NULL;
102043    --
102044    --
102045    
102046   l_ccid := AcctDerRule_4(
102047            p_application_id           => p_application_id
102048          , p_ae_header_id             => l_ae_header_id 
102049 , p_source_4 => p_source_4
102050          , x_transaction_coa_id       => l_adr_transaction_coa_id
102051          , x_accounting_coa_id        => l_adr_accounting_coa_id
102052          , x_value_type_code          => l_adr_value_type_code
102053          , p_side                     => 'NA'
102054    );
102055 
102056    xla_ae_lines_pkg.set_ccid(
102057     p_code_combination_id          => l_ccid
102058   , p_value_type_code              => l_adr_value_type_code
102059   , p_transaction_coa_id           => l_adr_transaction_coa_id
102060   , p_accounting_coa_id            => l_adr_accounting_coa_id
102061   , p_adr_code                     => 'CST_DEFAULT'
102062   , p_adr_type_code                => 'S'
102063   , p_component_type               => l_component_type
102064   , p_component_code               => l_component_code
102065   , p_component_type_code          => l_component_type_code
102066   , p_component_appl_id            => l_component_appl_id
102067   , p_amb_context_code             => l_amb_context_code
102068   , p_side                         => 'NA'
102069   );
102070 
102071 
102072    --
102073    --
102074    END IF;
102075 
102076        --
102077        -- Update the line information that should be overwritten
102078        --
102079        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
102080                                          p_header_num   => 1);
102081        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
102082 
102083        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
102084 
102085        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
102086           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
102087        END IF;
102088 
102089       --
102090       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
102091       --
102092       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
102093           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
102094       ELSE
102095           ---------------------------------------------------------------------------------------------------
102096           -- 4262811a Switch Sign
102097           ---------------------------------------------------------------------------------------------------
102098           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
102099           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102100                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102101           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102102                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102103           -- 5132302
102104           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
102105                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102106 
102107       END IF;
102108 
102109       -- 4955764
102110       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102111       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
102112 
102113 
102114       XLA_AE_LINES_PKG.ValidateCurrentLine;
102115       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102116 
102117       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102118                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
102119                ,p_balance_type_code => l_balance_type_code);
102120 
102121    END IF;
102122 
102123    -----------------------------------------------------------------------------------------
102124    -- 4262811 Multiperiod Accounting
102125    -----------------------------------------------------------------------------------------
102126      -- No MPA option is assigned.
102127 
102128 
102129 END IF;
102130 END IF;
102131 --
102132 
102133 --
102134 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102135    trace
102136       (p_msg      => 'END of AcctLineType_185'
102137       ,p_level    => C_LEVEL_PROCEDURE
102138       ,p_module   => l_log_module);
102139 END IF;
102140 --
102141 EXCEPTION
102142   WHEN xla_exceptions_pkg.application_exception THEN
102143       RAISE;
102144   WHEN OTHERS THEN
102145        xla_exceptions_pkg.raise_message
102146            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_185');
102147 END AcctLineType_185;
102148 --
102149 
102150 ---------------------------------------
102151 --
102152 -- PRIVATE FUNCTION
102153 --         AcctLineType_186
102154 --
102155 ---------------------------------------
102156 PROCEDURE AcctLineType_186 (
102157   p_application_id        IN NUMBER
102158  ,p_event_id              IN NUMBER
102159  ,p_calculate_acctd_flag  IN VARCHAR2
102160  ,p_calculate_g_l_flag    IN VARCHAR2
102161  ,p_actual_flag           IN OUT VARCHAR2
102162  ,p_balance_type_code     OUT VARCHAR2
102163  ,p_gain_or_loss_ref      OUT VARCHAR2
102164  
102165 --Cost Management Default Account
102166  , p_source_4            IN NUMBER
102167 --DISTRIBUTION_IDENTIFIER
102168  , p_source_11            IN NUMBER
102169 --Distribution Type
102170  , p_source_12            IN VARCHAR2
102171  , p_source_12_meaning    IN VARCHAR2
102172 --Entered Currency Code
102173  , p_source_15            IN VARCHAR2
102174 --Entered Amount
102175  , p_source_18            IN NUMBER
102176 --Currency Conversion Date
102177  , p_source_19            IN DATE
102178 --Currency Conversion Rate
102179  , p_source_20            IN NUMBER
102180 --Currency Conversion Type
102181  , p_source_21            IN VARCHAR2
102182 --Accounted Amount
102183  , p_source_22            IN NUMBER
102184 --Accounting Line Type
102185  , p_source_24            IN NUMBER
102186 )
102187 IS
102188 
102189 l_component_type              VARCHAR2(80);
102190 l_component_code              VARCHAR2(30);
102191 l_component_type_code         VARCHAR2(1);
102192 l_component_appl_id           INTEGER;
102193 l_amb_context_code            VARCHAR2(30);
102194 l_entity_code                 VARCHAR2(30);
102195 l_event_class_code            VARCHAR2(30);
102196 l_ae_header_id                NUMBER;
102197 l_event_type_code             VARCHAR2(30);
102198 l_line_definition_code        VARCHAR2(30);
102199 l_line_definition_owner_code  VARCHAR2(1);
102200 --
102201 -- adr variables
102202 l_segment                     VARCHAR2(30);
102203 l_ccid                        NUMBER;
102204 l_adr_transaction_coa_id      NUMBER;
102205 l_adr_accounting_coa_id       NUMBER;
102206 l_adr_flexfield_segment_code  VARCHAR2(30);
102207 l_adr_flex_value_set_id       NUMBER;
102208 l_adr_value_type_code         VARCHAR2(30);
102209 l_adr_value_combination_id    NUMBER;
102210 l_adr_value_segment_code      VARCHAR2(30);
102211 
102212 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
102213 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
102214 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
102215 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
102216 
102217 -- 4262811 Variables ------------------------------------------------------------------------------------------
102218 l_entered_amt_idx             NUMBER;
102219 l_accted_amt_idx              NUMBER;
102220 l_acc_rev_flag                VARCHAR2(1);
102221 l_accrual_line_num            NUMBER;
102222 l_tmp_amt                     NUMBER;
102223 l_acc_rev_natural_side_code   VARCHAR2(1);
102224 
102225 l_num_entries                 NUMBER;
102226 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
102227 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
102228 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
102229 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
102230 l_recog_line_1                NUMBER;
102231 l_recog_line_2                NUMBER;
102232 
102233 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
102234 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
102235 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
102236 
102237 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
102238 
102239 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
102240 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
102241 
102242 ---------------------------------------------------------------------------------------------------------------
102243 
102244 
102245 --
102246 -- bulk performance
102247 --
102248 l_balance_type_code           VARCHAR2(1);
102249 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
102250 l_log_module                  VARCHAR2(240);
102251 
102252 --
102253 -- Upgrade strategy
102254 --
102255 l_actual_upg_option           VARCHAR2(1);
102256 l_enc_upg_option           VARCHAR2(1);
102257 
102258 --
102259 BEGIN
102260 --
102261 IF g_log_enabled THEN
102262       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_186';
102263 END IF;
102264 --
102265 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102266 
102267       trace
102268          (p_msg      => 'BEGIN of AcctLineType_186'
102269          ,p_level    => C_LEVEL_PROCEDURE
102270          ,p_module   => l_log_module);
102271 
102272 END IF;
102273 --
102274 l_component_type             := 'AMB_JLT';
102275 l_component_code             := 'OFFSET';
102276 l_component_type_code        := 'S';
102277 l_component_appl_id          :=  707;
102278 l_amb_context_code           := 'DEFAULT';
102279 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
102280 l_event_class_code           := 'USER_DEFINE';
102281 l_event_type_code            := 'UDIR_INTERORG_RCPT';
102282 l_line_definition_owner_code := 'S';
102283 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
102284 --
102285 l_balance_type_code          := 'A';
102286 l_segment                     := NULL;
102287 l_ccid                        := NULL;
102288 l_adr_transaction_coa_id      := NULL;
102289 l_adr_accounting_coa_id       := NULL;
102290 l_adr_flexfield_segment_code  := NULL;
102291 l_adr_flex_value_set_id       := NULL;
102292 l_adr_value_type_code         := NULL;
102293 l_adr_value_combination_id    := NULL;
102294 l_adr_value_segment_code      := NULL;
102295 
102296 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
102297 l_bflow_class_code           := '';    -- 4219869 Business Flow
102298 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
102299 l_budgetary_control_flag     := 'N';
102300 
102301 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
102302 l_bflow_applied_to_amt       := NULL; -- 5132302
102303 l_entered_amt_idx            := NULL;          -- 4262811
102304 l_accted_amt_idx             := NULL;          -- 4262811
102305 l_acc_rev_flag               := NULL;          -- 4262811
102306 l_accrual_line_num           := NULL;          -- 4262811
102307 l_tmp_amt                    := NULL;          -- 4262811
102308 --
102309  
102310 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
102311     l_balance_type_code <> 'B' THEN
102312 IF NVL(p_source_24,9E125) =  2
102313  THEN 
102314 
102315    --
102316    XLA_AE_LINES_PKG.SetNewLine;
102317 
102318    p_balance_type_code          := l_balance_type_code;
102319    -- set the flag so later we will know whether the gain loss line needs to be created
102320    
102321    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
102322      p_actual_flag :='A';
102323    END IF;
102324 
102325    --
102326    -- bulk performance
102327    --
102328    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
102329                                       p_header_num   => 0); -- 4262811
102330    --
102331    -- set accounting line options
102332    --
102333    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
102334            p_natural_side_code          => 'D'
102335          , p_gain_or_loss_flag          => 'N'
102336          , p_gl_transfer_mode_code      => 'S'
102337          , p_acct_entry_type_code       => 'A'
102338          , p_switch_side_flag           => 'Y'
102339          , p_merge_duplicate_code       => 'N'
102340          );
102341    --
102342    l_acc_rev_natural_side_code := 'C';  -- 4262811
102343    -- 
102344    --
102345    -- set accounting line type info
102346    --
102347    xla_ae_lines_pkg.SetAcctLineType
102348       (p_component_type             => l_component_type
102349       ,p_event_type_code            => l_event_type_code
102350       ,p_line_definition_owner_code => l_line_definition_owner_code
102351       ,p_line_definition_code       => l_line_definition_code
102352       ,p_accounting_line_code       => l_component_code
102353       ,p_accounting_line_type_code  => l_component_type_code
102354       ,p_accounting_line_appl_id    => l_component_appl_id
102355       ,p_amb_context_code           => l_amb_context_code
102356       ,p_entity_code                => l_entity_code
102357       ,p_event_class_code           => l_event_class_code);
102358    --
102359    -- set accounting class
102360    --
102361    xla_ae_lines_pkg.SetAcctClass(
102362            p_accounting_class_code  => 'OFFSET'
102363          , p_ae_header_id           => l_ae_header_id
102364          );
102365 
102366    --
102367    -- set rounding class
102368    --
102369    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
102370                       'OFFSET';
102371 
102372    --
102373    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
102374    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
102375    --
102376    -- bulk performance
102377    --
102378    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
102379 
102380    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
102381       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
102382 
102383    -- 4955764
102384    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102385       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
102386 
102387    -- 4458381 Public Sector Enh
102388    
102389    --
102390    -- set accounting attributes for the line type
102391    --
102392    l_entered_amt_idx := 3;
102393    l_accted_amt_idx  := 8;
102394    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
102395    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
102396    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
102397    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
102398    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
102399    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
102400    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
102401    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
102402    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
102403    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
102404    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
102405    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
102406    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
102407    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
102408    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
102409    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
102410    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
102411 
102412    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
102413    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
102414 
102415    ---------------------------------------------------------------------------------------------------------------
102416    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
102417    ---------------------------------------------------------------------------------------------------------------
102418    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
102419 
102420    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102421    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102422 
102423    IF xla_accounting_cache_pkg.GetValueChar
102424          (p_source_code         => 'LEDGER_CATEGORY_CODE'
102425          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
102426    AND l_bflow_method_code = 'PRIOR_ENTRY'
102427 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
102428    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
102429          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
102430        )
102431    THEN
102432          xla_ae_lines_pkg.BflowUpgEntry
102433            (p_business_method_code    => l_bflow_method_code
102434            ,p_business_class_code     => l_bflow_class_code
102435            ,p_balance_type            => l_balance_type_code);
102436    ELSE
102437       NULL;
102438 -- No business flow processing for business flow method of NONE.
102439    END IF;
102440 
102441    --
102442    -- call analytical criteria
102443    --
102444    
102445    --
102446    -- call description
102447    --
102448    -- No description or it is inherited.
102449    --
102450    -- call ADRs
102451    -- Bug 4922099
102452    --
102453    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102454         (NVL(l_actual_upg_option, 'N') = 'O') OR
102455         (NVL(l_enc_upg_option, 'N') = 'O')
102456       )
102457    THEN
102458    NULL;
102459    --
102460    --
102461    
102462   l_ccid := AcctDerRule_4(
102463            p_application_id           => p_application_id
102464          , p_ae_header_id             => l_ae_header_id 
102465 , p_source_4 => p_source_4
102466          , x_transaction_coa_id       => l_adr_transaction_coa_id
102467          , x_accounting_coa_id        => l_adr_accounting_coa_id
102468          , x_value_type_code          => l_adr_value_type_code
102469          , p_side                     => 'NA'
102470    );
102471 
102472    xla_ae_lines_pkg.set_ccid(
102473     p_code_combination_id          => l_ccid
102474   , p_value_type_code              => l_adr_value_type_code
102475   , p_transaction_coa_id           => l_adr_transaction_coa_id
102476   , p_accounting_coa_id            => l_adr_accounting_coa_id
102477   , p_adr_code                     => 'CST_DEFAULT'
102478   , p_adr_type_code                => 'S'
102479   , p_component_type               => l_component_type
102480   , p_component_code               => l_component_code
102481   , p_component_type_code          => l_component_type_code
102482   , p_component_appl_id            => l_component_appl_id
102483   , p_amb_context_code             => l_amb_context_code
102484   , p_side                         => 'NA'
102485   );
102486 
102487 
102488    --
102489    --
102490    END IF;
102491    --
102492    -- Bug 4922099
102493    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
102494           (NVL(l_enc_upg_option, 'N') = 'O')
102495         ) AND
102496         (l_bflow_method_code = 'PRIOR_ENTRY')
102497       )
102498    THEN
102499       IF
102500       --
102501       1 = 2
102502       --
102503       THEN
102504       xla_accounting_err_pkg.build_message
102505                                     (p_appli_s_name            => 'XLA'
102506                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102507                                     ,p_token_1                 => 'LINE_NUMBER'
102508                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
102509                                     ,p_token_2                 => 'LINE_TYPE_NAME'
102510                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
102511                                                                              l_component_type
102512                                                                             ,l_component_code
102513                                                                             ,l_component_type_code
102514                                                                             ,l_component_appl_id
102515                                                                             ,l_amb_context_code
102516                                                                             ,l_entity_code
102517                                                                             ,l_event_class_code
102518                                                                            )
102519                                     ,p_token_3                 => 'OWNER'
102520                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
102521                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
102522                                                                           ,p_lookup_code    => l_component_type_code
102523                                                                          )
102524                                     ,p_token_4                 => 'PRODUCT_NAME'
102525                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
102526                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
102527                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
102528                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
102529                                     ,p_ae_header_id            =>  NULL
102530                                        );
102531 
102532         IF (C_LEVEL_ERROR>= g_log_level) THEN
102533                  trace
102534                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102535                       ,p_level    => C_LEVEL_ERROR
102536                       ,p_module   => l_log_module);
102537         END IF;
102538       END IF;
102539    END IF;
102540    --
102541    --
102542    ------------------------------------------------------------------------------------------------
102543    -- 4219869 Business Flow
102544    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
102545    -- Prior Entry.  Currently, the following code is always generated.
102546    ------------------------------------------------------------------------------------------------
102547    XLA_AE_LINES_PKG.ValidateCurrentLine;
102548 
102549    ------------------------------------------------------------------------------------
102550    -- 4219869 Business Flow
102551    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
102552    ------------------------------------------------------------------------------------
102553    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102554 
102555    ----------------------------------------------------------------------------------
102556    -- 4219869 Business Flow
102557    -- Update journal entry status -- Need to generate this within IF <condition>
102558    ----------------------------------------------------------------------------------
102559    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102560          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
102561          ,p_balance_type_code => l_balance_type_code
102562          );
102563 
102564    -------------------------------------------------------------------------------------------
102565    -- 4262811 - Generate the Accrual Reversal lines
102566    -------------------------------------------------------------------------------------------
102567    BEGIN
102568       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
102569                               (g_array_event(p_event_id).array_value_num('header_index'));
102570       IF l_acc_rev_flag IS NULL THEN
102571          l_acc_rev_flag := 'N';
102572       END IF;
102573    EXCEPTION
102574       WHEN OTHERS THEN
102575          l_acc_rev_flag := 'N';
102576    END;
102577    --
102578    IF (l_acc_rev_flag = 'Y') THEN
102579 
102580        -- 4645092  ------------------------------------------------------------------------------
102581        -- To allow MPA report to determine if it should generate report process
102582        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
102583        ------------------------------------------------------------------------------------------
102584 
102585        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
102586        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
102587    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
102588    -- call ADRs
102589    -- Bug 4922099
102590    --
102591    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102592         (NVL(l_actual_upg_option, 'N') = 'O') OR
102593         (NVL(l_enc_upg_option, 'N') = 'O')
102594       )
102595    THEN
102596    NULL;
102597    --
102598    --
102599    
102600   l_ccid := AcctDerRule_4(
102601            p_application_id           => p_application_id
102602          , p_ae_header_id             => l_ae_header_id 
102603 , p_source_4 => p_source_4
102604          , x_transaction_coa_id       => l_adr_transaction_coa_id
102605          , x_accounting_coa_id        => l_adr_accounting_coa_id
102606          , x_value_type_code          => l_adr_value_type_code
102607          , p_side                     => 'NA'
102608    );
102609 
102610    xla_ae_lines_pkg.set_ccid(
102611     p_code_combination_id          => l_ccid
102612   , p_value_type_code              => l_adr_value_type_code
102613   , p_transaction_coa_id           => l_adr_transaction_coa_id
102614   , p_accounting_coa_id            => l_adr_accounting_coa_id
102615   , p_adr_code                     => 'CST_DEFAULT'
102616   , p_adr_type_code                => 'S'
102617   , p_component_type               => l_component_type
102618   , p_component_code               => l_component_code
102619   , p_component_type_code          => l_component_type_code
102620   , p_component_appl_id            => l_component_appl_id
102621   , p_amb_context_code             => l_amb_context_code
102622   , p_side                         => 'NA'
102623   );
102624 
102625 
102626    --
102627    --
102628    END IF;
102629 
102630        --
102631        -- Update the line information that should be overwritten
102632        --
102633        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
102634                                          p_header_num   => 1);
102635        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
102636 
102637        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
102638 
102639        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
102640           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
102641        END IF;
102642 
102643       --
102644       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
102645       --
102646       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
102647           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
102648       ELSE
102649           ---------------------------------------------------------------------------------------------------
102650           -- 4262811a Switch Sign
102651           ---------------------------------------------------------------------------------------------------
102652           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
102653           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102654                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102655           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102656                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102657           -- 5132302
102658           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
102659                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102660 
102661       END IF;
102662 
102663       -- 4955764
102664       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102665       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
102666 
102667 
102668       XLA_AE_LINES_PKG.ValidateCurrentLine;
102669       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102670 
102671       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102672                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
102673                ,p_balance_type_code => l_balance_type_code);
102674 
102675    END IF;
102676 
102677    -----------------------------------------------------------------------------------------
102678    -- 4262811 Multiperiod Accounting
102679    -----------------------------------------------------------------------------------------
102680      -- No MPA option is assigned.
102681 
102682 
102683 END IF;
102684 END IF;
102685 --
102686 
102687 --
102688 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102689    trace
102690       (p_msg      => 'END of AcctLineType_186'
102691       ,p_level    => C_LEVEL_PROCEDURE
102692       ,p_module   => l_log_module);
102693 END IF;
102694 --
102695 EXCEPTION
102696   WHEN xla_exceptions_pkg.application_exception THEN
102697       RAISE;
102698   WHEN OTHERS THEN
102699        xla_exceptions_pkg.raise_message
102700            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_186');
102701 END AcctLineType_186;
102702 --
102703 
102704 ---------------------------------------
102705 --
102706 -- PRIVATE FUNCTION
102707 --         AcctLineType_187
102708 --
102709 ---------------------------------------
102710 PROCEDURE AcctLineType_187 (
102711   p_application_id        IN NUMBER
102712  ,p_event_id              IN NUMBER
102713  ,p_calculate_acctd_flag  IN VARCHAR2
102714  ,p_calculate_g_l_flag    IN VARCHAR2
102715  ,p_actual_flag           IN OUT VARCHAR2
102716  ,p_balance_type_code     OUT VARCHAR2
102717  ,p_gain_or_loss_ref      OUT VARCHAR2
102718  
102719 --Cost Management Default Account
102720  , p_source_4            IN NUMBER
102721 --DISTRIBUTION_IDENTIFIER
102722  , p_source_11            IN NUMBER
102723 --Distribution Type
102724  , p_source_12            IN VARCHAR2
102725  , p_source_12_meaning    IN VARCHAR2
102726 --Entered Currency Code
102727  , p_source_15            IN VARCHAR2
102728 --Entered Amount
102729  , p_source_18            IN NUMBER
102730 --Currency Conversion Date
102731  , p_source_19            IN DATE
102732 --Currency Conversion Rate
102733  , p_source_20            IN NUMBER
102734 --Currency Conversion Type
102735  , p_source_21            IN VARCHAR2
102736 --Accounted Amount
102737  , p_source_22            IN NUMBER
102738 --Accounting Line Type
102739  , p_source_24            IN NUMBER
102740 )
102741 IS
102742 
102743 l_component_type              VARCHAR2(80);
102744 l_component_code              VARCHAR2(30);
102745 l_component_type_code         VARCHAR2(1);
102746 l_component_appl_id           INTEGER;
102747 l_amb_context_code            VARCHAR2(30);
102748 l_entity_code                 VARCHAR2(30);
102749 l_event_class_code            VARCHAR2(30);
102750 l_ae_header_id                NUMBER;
102751 l_event_type_code             VARCHAR2(30);
102752 l_line_definition_code        VARCHAR2(30);
102753 l_line_definition_owner_code  VARCHAR2(1);
102754 --
102755 -- adr variables
102756 l_segment                     VARCHAR2(30);
102757 l_ccid                        NUMBER;
102758 l_adr_transaction_coa_id      NUMBER;
102759 l_adr_accounting_coa_id       NUMBER;
102760 l_adr_flexfield_segment_code  VARCHAR2(30);
102761 l_adr_flex_value_set_id       NUMBER;
102762 l_adr_value_type_code         VARCHAR2(30);
102763 l_adr_value_combination_id    NUMBER;
102764 l_adr_value_segment_code      VARCHAR2(30);
102765 
102766 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
102767 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
102768 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
102769 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
102770 
102771 -- 4262811 Variables ------------------------------------------------------------------------------------------
102772 l_entered_amt_idx             NUMBER;
102773 l_accted_amt_idx              NUMBER;
102774 l_acc_rev_flag                VARCHAR2(1);
102775 l_accrual_line_num            NUMBER;
102776 l_tmp_amt                     NUMBER;
102777 l_acc_rev_natural_side_code   VARCHAR2(1);
102778 
102779 l_num_entries                 NUMBER;
102780 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
102781 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
102782 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
102783 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
102784 l_recog_line_1                NUMBER;
102785 l_recog_line_2                NUMBER;
102786 
102787 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
102788 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
102789 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
102790 
102791 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
102792 
102793 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
102794 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
102795 
102796 ---------------------------------------------------------------------------------------------------------------
102797 
102798 
102799 --
102800 -- bulk performance
102801 --
102802 l_balance_type_code           VARCHAR2(1);
102803 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
102804 l_log_module                  VARCHAR2(240);
102805 
102806 --
102807 -- Upgrade strategy
102808 --
102809 l_actual_upg_option           VARCHAR2(1);
102810 l_enc_upg_option           VARCHAR2(1);
102811 
102812 --
102813 BEGIN
102814 --
102815 IF g_log_enabled THEN
102816       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_187';
102817 END IF;
102818 --
102819 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102820 
102821       trace
102822          (p_msg      => 'BEGIN of AcctLineType_187'
102823          ,p_level    => C_LEVEL_PROCEDURE
102824          ,p_module   => l_log_module);
102825 
102826 END IF;
102827 --
102828 l_component_type             := 'AMB_JLT';
102829 l_component_code             := 'OFFSET';
102830 l_component_type_code        := 'S';
102831 l_component_appl_id          :=  707;
102832 l_amb_context_code           := 'DEFAULT';
102833 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
102834 l_event_class_code           := 'USER_DEFINE';
102835 l_event_type_code            := 'UDIR_INTERORG_SHIP';
102836 l_line_definition_owner_code := 'S';
102837 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
102838 --
102839 l_balance_type_code          := 'A';
102840 l_segment                     := NULL;
102841 l_ccid                        := NULL;
102842 l_adr_transaction_coa_id      := NULL;
102843 l_adr_accounting_coa_id       := NULL;
102844 l_adr_flexfield_segment_code  := NULL;
102845 l_adr_flex_value_set_id       := NULL;
102846 l_adr_value_type_code         := NULL;
102847 l_adr_value_combination_id    := NULL;
102848 l_adr_value_segment_code      := NULL;
102849 
102850 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
102851 l_bflow_class_code           := '';    -- 4219869 Business Flow
102852 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
102853 l_budgetary_control_flag     := 'N';
102854 
102855 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
102856 l_bflow_applied_to_amt       := NULL; -- 5132302
102857 l_entered_amt_idx            := NULL;          -- 4262811
102858 l_accted_amt_idx             := NULL;          -- 4262811
102859 l_acc_rev_flag               := NULL;          -- 4262811
102860 l_accrual_line_num           := NULL;          -- 4262811
102861 l_tmp_amt                    := NULL;          -- 4262811
102862 --
102863  
102864 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
102865     l_balance_type_code <> 'B' THEN
102866 IF NVL(p_source_24,9E125) =  2
102867  THEN 
102868 
102869    --
102870    XLA_AE_LINES_PKG.SetNewLine;
102871 
102872    p_balance_type_code          := l_balance_type_code;
102873    -- set the flag so later we will know whether the gain loss line needs to be created
102874    
102875    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
102876      p_actual_flag :='A';
102877    END IF;
102878 
102879    --
102880    -- bulk performance
102881    --
102882    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
102883                                       p_header_num   => 0); -- 4262811
102884    --
102885    -- set accounting line options
102886    --
102887    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
102888            p_natural_side_code          => 'D'
102889          , p_gain_or_loss_flag          => 'N'
102890          , p_gl_transfer_mode_code      => 'S'
102891          , p_acct_entry_type_code       => 'A'
102892          , p_switch_side_flag           => 'Y'
102893          , p_merge_duplicate_code       => 'N'
102894          );
102895    --
102896    l_acc_rev_natural_side_code := 'C';  -- 4262811
102897    -- 
102898    --
102899    -- set accounting line type info
102900    --
102901    xla_ae_lines_pkg.SetAcctLineType
102902       (p_component_type             => l_component_type
102903       ,p_event_type_code            => l_event_type_code
102904       ,p_line_definition_owner_code => l_line_definition_owner_code
102905       ,p_line_definition_code       => l_line_definition_code
102906       ,p_accounting_line_code       => l_component_code
102907       ,p_accounting_line_type_code  => l_component_type_code
102908       ,p_accounting_line_appl_id    => l_component_appl_id
102909       ,p_amb_context_code           => l_amb_context_code
102910       ,p_entity_code                => l_entity_code
102911       ,p_event_class_code           => l_event_class_code);
102912    --
102913    -- set accounting class
102914    --
102915    xla_ae_lines_pkg.SetAcctClass(
102916            p_accounting_class_code  => 'OFFSET'
102917          , p_ae_header_id           => l_ae_header_id
102918          );
102919 
102920    --
102921    -- set rounding class
102922    --
102923    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
102924                       'OFFSET';
102925 
102926    --
102927    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
102928    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
102929    --
102930    -- bulk performance
102931    --
102932    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
102933 
102934    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
102935       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
102936 
102937    -- 4955764
102938    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102939       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
102940 
102941    -- 4458381 Public Sector Enh
102942    
102943    --
102944    -- set accounting attributes for the line type
102945    --
102946    l_entered_amt_idx := 3;
102947    l_accted_amt_idx  := 8;
102948    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
102949    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
102950    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
102951    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
102952    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
102953    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
102954    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
102955    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
102956    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
102957    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
102958    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
102959    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
102960    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
102961    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
102962    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
102963    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
102964    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
102965 
102966    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
102967    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
102968 
102969    ---------------------------------------------------------------------------------------------------------------
102970    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
102971    ---------------------------------------------------------------------------------------------------------------
102972    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
102973 
102974    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102975    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102976 
102977    IF xla_accounting_cache_pkg.GetValueChar
102978          (p_source_code         => 'LEDGER_CATEGORY_CODE'
102979          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
102980    AND l_bflow_method_code = 'PRIOR_ENTRY'
102981 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
102982    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
102983          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
102984        )
102985    THEN
102986          xla_ae_lines_pkg.BflowUpgEntry
102987            (p_business_method_code    => l_bflow_method_code
102988            ,p_business_class_code     => l_bflow_class_code
102989            ,p_balance_type            => l_balance_type_code);
102990    ELSE
102991       NULL;
102992 -- No business flow processing for business flow method of NONE.
102993    END IF;
102994 
102995    --
102996    -- call analytical criteria
102997    --
102998    
102999    --
103000    -- call description
103001    --
103002    -- No description or it is inherited.
103003    --
103004    -- call ADRs
103005    -- Bug 4922099
103006    --
103007    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103008         (NVL(l_actual_upg_option, 'N') = 'O') OR
103009         (NVL(l_enc_upg_option, 'N') = 'O')
103010       )
103011    THEN
103012    NULL;
103013    --
103014    --
103015    
103016   l_ccid := AcctDerRule_4(
103017            p_application_id           => p_application_id
103018          , p_ae_header_id             => l_ae_header_id 
103019 , p_source_4 => p_source_4
103020          , x_transaction_coa_id       => l_adr_transaction_coa_id
103021          , x_accounting_coa_id        => l_adr_accounting_coa_id
103022          , x_value_type_code          => l_adr_value_type_code
103023          , p_side                     => 'NA'
103024    );
103025 
103026    xla_ae_lines_pkg.set_ccid(
103027     p_code_combination_id          => l_ccid
103028   , p_value_type_code              => l_adr_value_type_code
103029   , p_transaction_coa_id           => l_adr_transaction_coa_id
103030   , p_accounting_coa_id            => l_adr_accounting_coa_id
103031   , p_adr_code                     => 'CST_DEFAULT'
103032   , p_adr_type_code                => 'S'
103033   , p_component_type               => l_component_type
103034   , p_component_code               => l_component_code
103035   , p_component_type_code          => l_component_type_code
103036   , p_component_appl_id            => l_component_appl_id
103037   , p_amb_context_code             => l_amb_context_code
103038   , p_side                         => 'NA'
103039   );
103040 
103041 
103042    --
103043    --
103044    END IF;
103045    --
103046    -- Bug 4922099
103047    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
103048           (NVL(l_enc_upg_option, 'N') = 'O')
103049         ) AND
103050         (l_bflow_method_code = 'PRIOR_ENTRY')
103051       )
103052    THEN
103053       IF
103054       --
103055       1 = 2
103056       --
103057       THEN
103058       xla_accounting_err_pkg.build_message
103059                                     (p_appli_s_name            => 'XLA'
103060                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103061                                     ,p_token_1                 => 'LINE_NUMBER'
103062                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
103063                                     ,p_token_2                 => 'LINE_TYPE_NAME'
103064                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
103065                                                                              l_component_type
103066                                                                             ,l_component_code
103067                                                                             ,l_component_type_code
103068                                                                             ,l_component_appl_id
103069                                                                             ,l_amb_context_code
103070                                                                             ,l_entity_code
103071                                                                             ,l_event_class_code
103072                                                                            )
103073                                     ,p_token_3                 => 'OWNER'
103074                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
103075                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
103076                                                                           ,p_lookup_code    => l_component_type_code
103077                                                                          )
103078                                     ,p_token_4                 => 'PRODUCT_NAME'
103079                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
103080                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
103081                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
103082                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
103083                                     ,p_ae_header_id            =>  NULL
103084                                        );
103085 
103086         IF (C_LEVEL_ERROR>= g_log_level) THEN
103087                  trace
103088                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103089                       ,p_level    => C_LEVEL_ERROR
103090                       ,p_module   => l_log_module);
103091         END IF;
103092       END IF;
103093    END IF;
103094    --
103095    --
103096    ------------------------------------------------------------------------------------------------
103097    -- 4219869 Business Flow
103098    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
103099    -- Prior Entry.  Currently, the following code is always generated.
103100    ------------------------------------------------------------------------------------------------
103101    XLA_AE_LINES_PKG.ValidateCurrentLine;
103102 
103103    ------------------------------------------------------------------------------------
103104    -- 4219869 Business Flow
103105    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
103106    ------------------------------------------------------------------------------------
103107    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103108 
103109    ----------------------------------------------------------------------------------
103110    -- 4219869 Business Flow
103111    -- Update journal entry status -- Need to generate this within IF <condition>
103112    ----------------------------------------------------------------------------------
103113    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103114          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
103115          ,p_balance_type_code => l_balance_type_code
103116          );
103117 
103118    -------------------------------------------------------------------------------------------
103119    -- 4262811 - Generate the Accrual Reversal lines
103120    -------------------------------------------------------------------------------------------
103121    BEGIN
103122       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
103123                               (g_array_event(p_event_id).array_value_num('header_index'));
103124       IF l_acc_rev_flag IS NULL THEN
103125          l_acc_rev_flag := 'N';
103126       END IF;
103127    EXCEPTION
103128       WHEN OTHERS THEN
103129          l_acc_rev_flag := 'N';
103130    END;
103131    --
103132    IF (l_acc_rev_flag = 'Y') THEN
103133 
103134        -- 4645092  ------------------------------------------------------------------------------
103135        -- To allow MPA report to determine if it should generate report process
103136        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
103137        ------------------------------------------------------------------------------------------
103138 
103139        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
103140        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
103141    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
103142    -- call ADRs
103143    -- Bug 4922099
103144    --
103145    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103146         (NVL(l_actual_upg_option, 'N') = 'O') OR
103147         (NVL(l_enc_upg_option, 'N') = 'O')
103148       )
103149    THEN
103150    NULL;
103151    --
103152    --
103153    
103154   l_ccid := AcctDerRule_4(
103155            p_application_id           => p_application_id
103156          , p_ae_header_id             => l_ae_header_id 
103157 , p_source_4 => p_source_4
103158          , x_transaction_coa_id       => l_adr_transaction_coa_id
103159          , x_accounting_coa_id        => l_adr_accounting_coa_id
103160          , x_value_type_code          => l_adr_value_type_code
103161          , p_side                     => 'NA'
103162    );
103163 
103164    xla_ae_lines_pkg.set_ccid(
103165     p_code_combination_id          => l_ccid
103166   , p_value_type_code              => l_adr_value_type_code
103167   , p_transaction_coa_id           => l_adr_transaction_coa_id
103168   , p_accounting_coa_id            => l_adr_accounting_coa_id
103169   , p_adr_code                     => 'CST_DEFAULT'
103170   , p_adr_type_code                => 'S'
103171   , p_component_type               => l_component_type
103172   , p_component_code               => l_component_code
103173   , p_component_type_code          => l_component_type_code
103174   , p_component_appl_id            => l_component_appl_id
103175   , p_amb_context_code             => l_amb_context_code
103176   , p_side                         => 'NA'
103177   );
103178 
103179 
103180    --
103181    --
103182    END IF;
103183 
103184        --
103185        -- Update the line information that should be overwritten
103186        --
103187        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
103188                                          p_header_num   => 1);
103189        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
103190 
103191        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
103192 
103193        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
103194           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
103195        END IF;
103196 
103197       --
103198       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
103199       --
103200       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
103201           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
103202       ELSE
103203           ---------------------------------------------------------------------------------------------------
103204           -- 4262811a Switch Sign
103205           ---------------------------------------------------------------------------------------------------
103206           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
103207           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103208                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103209           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103210                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103211           -- 5132302
103212           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
103213                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103214 
103215       END IF;
103216 
103217       -- 4955764
103218       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103219       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
103220 
103221 
103222       XLA_AE_LINES_PKG.ValidateCurrentLine;
103223       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103224 
103225       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103226                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
103227                ,p_balance_type_code => l_balance_type_code);
103228 
103229    END IF;
103230 
103231    -----------------------------------------------------------------------------------------
103232    -- 4262811 Multiperiod Accounting
103233    -----------------------------------------------------------------------------------------
103234      -- No MPA option is assigned.
103235 
103236 
103237 END IF;
103238 END IF;
103239 --
103240 
103241 --
103242 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103243    trace
103244       (p_msg      => 'END of AcctLineType_187'
103245       ,p_level    => C_LEVEL_PROCEDURE
103246       ,p_module   => l_log_module);
103247 END IF;
103248 --
103249 EXCEPTION
103250   WHEN xla_exceptions_pkg.application_exception THEN
103251       RAISE;
103252   WHEN OTHERS THEN
103253        xla_exceptions_pkg.raise_message
103254            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_187');
103255 END AcctLineType_187;
103256 --
103257 
103258 ---------------------------------------
103259 --
103260 -- PRIVATE FUNCTION
103261 --         AcctLineType_188
103262 --
103263 ---------------------------------------
103264 PROCEDURE AcctLineType_188 (
103265   p_application_id        IN NUMBER
103266  ,p_event_id              IN NUMBER
103267  ,p_calculate_acctd_flag  IN VARCHAR2
103268  ,p_calculate_g_l_flag    IN VARCHAR2
103269  ,p_actual_flag           IN OUT VARCHAR2
103270  ,p_balance_type_code     OUT VARCHAR2
103271  ,p_gain_or_loss_ref      OUT VARCHAR2
103272  
103273 --Cost Management Default Account
103274  , p_source_4            IN NUMBER
103275 --DISTRIBUTION_IDENTIFIER
103276  , p_source_11            IN NUMBER
103277 --Distribution Type
103278  , p_source_12            IN VARCHAR2
103279  , p_source_12_meaning    IN VARCHAR2
103280 --Entered Currency Code
103281  , p_source_15            IN VARCHAR2
103282 --Entered Amount
103283  , p_source_18            IN NUMBER
103284 --Currency Conversion Date
103285  , p_source_19            IN DATE
103286 --Currency Conversion Rate
103287  , p_source_20            IN NUMBER
103288 --Accounted Amount
103289  , p_source_22            IN NUMBER
103290 --Accounting Line Type
103291  , p_source_24            IN NUMBER
103292 )
103293 IS
103294 
103295 l_component_type              VARCHAR2(80);
103296 l_component_code              VARCHAR2(30);
103297 l_component_type_code         VARCHAR2(1);
103298 l_component_appl_id           INTEGER;
103299 l_amb_context_code            VARCHAR2(30);
103300 l_entity_code                 VARCHAR2(30);
103301 l_event_class_code            VARCHAR2(30);
103302 l_ae_header_id                NUMBER;
103303 l_event_type_code             VARCHAR2(30);
103304 l_line_definition_code        VARCHAR2(30);
103305 l_line_definition_owner_code  VARCHAR2(1);
103306 --
103307 -- adr variables
103308 l_segment                     VARCHAR2(30);
103309 l_ccid                        NUMBER;
103310 l_adr_transaction_coa_id      NUMBER;
103311 l_adr_accounting_coa_id       NUMBER;
103312 l_adr_flexfield_segment_code  VARCHAR2(30);
103313 l_adr_flex_value_set_id       NUMBER;
103314 l_adr_value_type_code         VARCHAR2(30);
103315 l_adr_value_combination_id    NUMBER;
103316 l_adr_value_segment_code      VARCHAR2(30);
103317 
103318 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
103319 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
103320 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
103321 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
103322 
103323 -- 4262811 Variables ------------------------------------------------------------------------------------------
103324 l_entered_amt_idx             NUMBER;
103325 l_accted_amt_idx              NUMBER;
103326 l_acc_rev_flag                VARCHAR2(1);
103327 l_accrual_line_num            NUMBER;
103328 l_tmp_amt                     NUMBER;
103329 l_acc_rev_natural_side_code   VARCHAR2(1);
103330 
103331 l_num_entries                 NUMBER;
103332 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
103333 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
103334 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
103335 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
103336 l_recog_line_1                NUMBER;
103337 l_recog_line_2                NUMBER;
103338 
103339 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
103340 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
103341 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
103342 
103343 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
103344 
103345 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
103346 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
103347 
103348 ---------------------------------------------------------------------------------------------------------------
103349 
103350 
103351 --
103352 -- bulk performance
103353 --
103354 l_balance_type_code           VARCHAR2(1);
103355 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
103356 l_log_module                  VARCHAR2(240);
103357 
103358 --
103359 -- Upgrade strategy
103360 --
103361 l_actual_upg_option           VARCHAR2(1);
103362 l_enc_upg_option           VARCHAR2(1);
103363 
103364 --
103365 BEGIN
103366 --
103367 IF g_log_enabled THEN
103368       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_188';
103369 END IF;
103370 --
103371 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103372 
103373       trace
103374          (p_msg      => 'BEGIN of AcctLineType_188'
103375          ,p_level    => C_LEVEL_PROCEDURE
103376          ,p_module   => l_log_module);
103377 
103378 END IF;
103379 --
103380 l_component_type             := 'AMB_JLT';
103381 l_component_code             := 'OFFSET';
103382 l_component_type_code        := 'S';
103383 l_component_appl_id          :=  707;
103384 l_amb_context_code           := 'DEFAULT';
103385 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
103386 l_event_class_code           := 'OSP';
103387 l_event_type_code            := 'OSP_ALL';
103388 l_line_definition_owner_code := 'S';
103389 l_line_definition_code       := 'OUTSIDE_PROCESSING';
103390 --
103391 l_balance_type_code          := 'A';
103392 l_segment                     := NULL;
103393 l_ccid                        := NULL;
103394 l_adr_transaction_coa_id      := NULL;
103395 l_adr_accounting_coa_id       := NULL;
103396 l_adr_flexfield_segment_code  := NULL;
103397 l_adr_flex_value_set_id       := NULL;
103398 l_adr_value_type_code         := NULL;
103399 l_adr_value_combination_id    := NULL;
103400 l_adr_value_segment_code      := NULL;
103401 
103402 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
103403 l_bflow_class_code           := '';    -- 4219869 Business Flow
103404 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
103405 l_budgetary_control_flag     := 'N';
103406 
103407 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
103408 l_bflow_applied_to_amt       := NULL; -- 5132302
103409 l_entered_amt_idx            := NULL;          -- 4262811
103410 l_accted_amt_idx             := NULL;          -- 4262811
103411 l_acc_rev_flag               := NULL;          -- 4262811
103412 l_accrual_line_num           := NULL;          -- 4262811
103413 l_tmp_amt                    := NULL;          -- 4262811
103414 --
103415  
103416 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
103417     l_balance_type_code <> 'B' THEN
103418 IF NVL(p_source_24,9E125) =  2
103419  THEN 
103420 
103421    --
103422    XLA_AE_LINES_PKG.SetNewLine;
103423 
103424    p_balance_type_code          := l_balance_type_code;
103425    -- set the flag so later we will know whether the gain loss line needs to be created
103426    
103427    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
103428      p_actual_flag :='A';
103429    END IF;
103430 
103431    --
103432    -- bulk performance
103433    --
103434    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
103435                                       p_header_num   => 0); -- 4262811
103436    --
103437    -- set accounting line options
103438    --
103439    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
103440            p_natural_side_code          => 'D'
103441          , p_gain_or_loss_flag          => 'N'
103442          , p_gl_transfer_mode_code      => 'S'
103443          , p_acct_entry_type_code       => 'A'
103444          , p_switch_side_flag           => 'Y'
103445          , p_merge_duplicate_code       => 'N'
103446          );
103447    --
103448    l_acc_rev_natural_side_code := 'C';  -- 4262811
103449    -- 
103450    --
103451    -- set accounting line type info
103452    --
103453    xla_ae_lines_pkg.SetAcctLineType
103454       (p_component_type             => l_component_type
103455       ,p_event_type_code            => l_event_type_code
103456       ,p_line_definition_owner_code => l_line_definition_owner_code
103457       ,p_line_definition_code       => l_line_definition_code
103458       ,p_accounting_line_code       => l_component_code
103459       ,p_accounting_line_type_code  => l_component_type_code
103460       ,p_accounting_line_appl_id    => l_component_appl_id
103461       ,p_amb_context_code           => l_amb_context_code
103462       ,p_entity_code                => l_entity_code
103463       ,p_event_class_code           => l_event_class_code);
103464    --
103465    -- set accounting class
103466    --
103467    xla_ae_lines_pkg.SetAcctClass(
103468            p_accounting_class_code  => 'OFFSET'
103469          , p_ae_header_id           => l_ae_header_id
103470          );
103471 
103472    --
103473    -- set rounding class
103474    --
103475    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
103476                       'OFFSET';
103477 
103478    --
103479    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
103480    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
103481    --
103482    -- bulk performance
103483    --
103484    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
103485 
103486    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
103487       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
103488 
103489    -- 4955764
103490    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103491       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
103492 
103493    -- 4458381 Public Sector Enh
103494    
103495    --
103496    -- set accounting attributes for the line type
103497    --
103498    l_entered_amt_idx := 3;
103499    l_accted_amt_idx  := 8;
103500    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
103501    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
103502    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
103503    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
103504    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
103505    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
103506    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
103507    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
103508    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
103509    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
103510    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
103511    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
103512    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
103513    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
103514    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
103515    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
103516    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
103517 
103518    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
103519    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
103520 
103521    ---------------------------------------------------------------------------------------------------------------
103522    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
103523    ---------------------------------------------------------------------------------------------------------------
103524    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
103525 
103526    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103527    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103528 
103529    IF xla_accounting_cache_pkg.GetValueChar
103530          (p_source_code         => 'LEDGER_CATEGORY_CODE'
103531          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
103532    AND l_bflow_method_code = 'PRIOR_ENTRY'
103533 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
103534    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
103535          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
103536        )
103537    THEN
103538          xla_ae_lines_pkg.BflowUpgEntry
103539            (p_business_method_code    => l_bflow_method_code
103540            ,p_business_class_code     => l_bflow_class_code
103541            ,p_balance_type            => l_balance_type_code);
103542    ELSE
103543       NULL;
103544 -- No business flow processing for business flow method of NONE.
103545    END IF;
103546 
103547    --
103548    -- call analytical criteria
103549    --
103550    
103551    --
103552    -- call description
103553    --
103554    -- No description or it is inherited.
103555    --
103556    -- call ADRs
103557    -- Bug 4922099
103558    --
103559    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103560         (NVL(l_actual_upg_option, 'N') = 'O') OR
103561         (NVL(l_enc_upg_option, 'N') = 'O')
103562       )
103563    THEN
103564    NULL;
103565    --
103566    --
103567    
103568   l_ccid := AcctDerRule_4(
103569            p_application_id           => p_application_id
103570          , p_ae_header_id             => l_ae_header_id 
103571 , p_source_4 => p_source_4
103572          , x_transaction_coa_id       => l_adr_transaction_coa_id
103573          , x_accounting_coa_id        => l_adr_accounting_coa_id
103574          , x_value_type_code          => l_adr_value_type_code
103575          , p_side                     => 'NA'
103576    );
103577 
103578    xla_ae_lines_pkg.set_ccid(
103579     p_code_combination_id          => l_ccid
103580   , p_value_type_code              => l_adr_value_type_code
103581   , p_transaction_coa_id           => l_adr_transaction_coa_id
103582   , p_accounting_coa_id            => l_adr_accounting_coa_id
103583   , p_adr_code                     => 'CST_DEFAULT'
103584   , p_adr_type_code                => 'S'
103585   , p_component_type               => l_component_type
103586   , p_component_code               => l_component_code
103587   , p_component_type_code          => l_component_type_code
103588   , p_component_appl_id            => l_component_appl_id
103589   , p_amb_context_code             => l_amb_context_code
103590   , p_side                         => 'NA'
103591   );
103592 
103593 
103594    --
103595    --
103596    END IF;
103597    --
103598    -- Bug 4922099
103599    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
103600           (NVL(l_enc_upg_option, 'N') = 'O')
103601         ) AND
103602         (l_bflow_method_code = 'PRIOR_ENTRY')
103603       )
103604    THEN
103605       IF
103606       --
103607       1 = 2
103608       --
103609       THEN
103610       xla_accounting_err_pkg.build_message
103611                                     (p_appli_s_name            => 'XLA'
103612                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103613                                     ,p_token_1                 => 'LINE_NUMBER'
103614                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
103615                                     ,p_token_2                 => 'LINE_TYPE_NAME'
103616                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
103617                                                                              l_component_type
103618                                                                             ,l_component_code
103619                                                                             ,l_component_type_code
103620                                                                             ,l_component_appl_id
103621                                                                             ,l_amb_context_code
103622                                                                             ,l_entity_code
103623                                                                             ,l_event_class_code
103624                                                                            )
103625                                     ,p_token_3                 => 'OWNER'
103626                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
103627                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
103628                                                                           ,p_lookup_code    => l_component_type_code
103629                                                                          )
103630                                     ,p_token_4                 => 'PRODUCT_NAME'
103631                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
103632                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
103633                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
103634                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
103635                                     ,p_ae_header_id            =>  NULL
103636                                        );
103637 
103638         IF (C_LEVEL_ERROR>= g_log_level) THEN
103639                  trace
103640                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103641                       ,p_level    => C_LEVEL_ERROR
103642                       ,p_module   => l_log_module);
103643         END IF;
103644       END IF;
103645    END IF;
103646    --
103647    --
103648    ------------------------------------------------------------------------------------------------
103649    -- 4219869 Business Flow
103650    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
103651    -- Prior Entry.  Currently, the following code is always generated.
103652    ------------------------------------------------------------------------------------------------
103653    XLA_AE_LINES_PKG.ValidateCurrentLine;
103654 
103655    ------------------------------------------------------------------------------------
103656    -- 4219869 Business Flow
103657    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
103658    ------------------------------------------------------------------------------------
103659    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103660 
103661    ----------------------------------------------------------------------------------
103662    -- 4219869 Business Flow
103663    -- Update journal entry status -- Need to generate this within IF <condition>
103664    ----------------------------------------------------------------------------------
103665    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103666          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
103667          ,p_balance_type_code => l_balance_type_code
103668          );
103669 
103670    -------------------------------------------------------------------------------------------
103671    -- 4262811 - Generate the Accrual Reversal lines
103672    -------------------------------------------------------------------------------------------
103673    BEGIN
103674       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
103675                               (g_array_event(p_event_id).array_value_num('header_index'));
103676       IF l_acc_rev_flag IS NULL THEN
103677          l_acc_rev_flag := 'N';
103678       END IF;
103679    EXCEPTION
103680       WHEN OTHERS THEN
103681          l_acc_rev_flag := 'N';
103682    END;
103683    --
103684    IF (l_acc_rev_flag = 'Y') THEN
103685 
103686        -- 4645092  ------------------------------------------------------------------------------
103687        -- To allow MPA report to determine if it should generate report process
103688        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
103689        ------------------------------------------------------------------------------------------
103690 
103691        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
103692        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
103693    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
103694    -- call ADRs
103695    -- Bug 4922099
103696    --
103697    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103698         (NVL(l_actual_upg_option, 'N') = 'O') OR
103699         (NVL(l_enc_upg_option, 'N') = 'O')
103700       )
103701    THEN
103702    NULL;
103703    --
103704    --
103705    
103706   l_ccid := AcctDerRule_4(
103707            p_application_id           => p_application_id
103708          , p_ae_header_id             => l_ae_header_id 
103709 , p_source_4 => p_source_4
103710          , x_transaction_coa_id       => l_adr_transaction_coa_id
103711          , x_accounting_coa_id        => l_adr_accounting_coa_id
103712          , x_value_type_code          => l_adr_value_type_code
103713          , p_side                     => 'NA'
103714    );
103715 
103716    xla_ae_lines_pkg.set_ccid(
103717     p_code_combination_id          => l_ccid
103718   , p_value_type_code              => l_adr_value_type_code
103719   , p_transaction_coa_id           => l_adr_transaction_coa_id
103720   , p_accounting_coa_id            => l_adr_accounting_coa_id
103721   , p_adr_code                     => 'CST_DEFAULT'
103722   , p_adr_type_code                => 'S'
103723   , p_component_type               => l_component_type
103724   , p_component_code               => l_component_code
103725   , p_component_type_code          => l_component_type_code
103726   , p_component_appl_id            => l_component_appl_id
103727   , p_amb_context_code             => l_amb_context_code
103728   , p_side                         => 'NA'
103729   );
103730 
103731 
103732    --
103733    --
103734    END IF;
103735 
103736        --
103737        -- Update the line information that should be overwritten
103738        --
103739        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
103740                                          p_header_num   => 1);
103741        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
103742 
103743        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
103744 
103745        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
103746           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
103747        END IF;
103748 
103749       --
103750       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
103751       --
103752       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
103753           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
103754       ELSE
103755           ---------------------------------------------------------------------------------------------------
103756           -- 4262811a Switch Sign
103757           ---------------------------------------------------------------------------------------------------
103758           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
103759           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103760                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103761           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103762                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103763           -- 5132302
103764           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
103765                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103766 
103767       END IF;
103768 
103769       -- 4955764
103770       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103771       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
103772 
103773 
103774       XLA_AE_LINES_PKG.ValidateCurrentLine;
103775       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103776 
103777       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103778                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
103779                ,p_balance_type_code => l_balance_type_code);
103780 
103781    END IF;
103782 
103783    -----------------------------------------------------------------------------------------
103784    -- 4262811 Multiperiod Accounting
103785    -----------------------------------------------------------------------------------------
103786      -- No MPA option is assigned.
103787 
103788 
103789 END IF;
103790 END IF;
103791 --
103792 
103793 --
103794 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103795    trace
103796       (p_msg      => 'END of AcctLineType_188'
103797       ,p_level    => C_LEVEL_PROCEDURE
103798       ,p_module   => l_log_module);
103799 END IF;
103800 --
103801 EXCEPTION
103802   WHEN xla_exceptions_pkg.application_exception THEN
103803       RAISE;
103804   WHEN OTHERS THEN
103805        xla_exceptions_pkg.raise_message
103806            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_188');
103807 END AcctLineType_188;
103808 --
103809 
103810 ---------------------------------------
103811 --
103812 -- PRIVATE FUNCTION
103813 --         AcctLineType_189
103814 --
103815 ---------------------------------------
103816 PROCEDURE AcctLineType_189 (
103817   p_application_id        IN NUMBER
103818  ,p_event_id              IN NUMBER
103819  ,p_calculate_acctd_flag  IN VARCHAR2
103820  ,p_calculate_g_l_flag    IN VARCHAR2
103821  ,p_actual_flag           IN OUT VARCHAR2
103822  ,p_balance_type_code     OUT VARCHAR2
103823  ,p_gain_or_loss_ref      OUT VARCHAR2
103824  
103825 --Cost Management Default Account
103826  , p_source_4            IN NUMBER
103827 --DISTRIBUTION_IDENTIFIER
103828  , p_source_11            IN NUMBER
103829 --Distribution Type
103830  , p_source_12            IN VARCHAR2
103831  , p_source_12_meaning    IN VARCHAR2
103832 --Entered Currency Code
103833  , p_source_15            IN VARCHAR2
103834 --Entered Amount
103835  , p_source_18            IN NUMBER
103836 --Currency Conversion Date
103837  , p_source_19            IN DATE
103838 --Currency Conversion Rate
103839  , p_source_20            IN NUMBER
103840 --Currency Conversion Type
103841  , p_source_21            IN VARCHAR2
103842 --Accounted Amount
103843  , p_source_22            IN NUMBER
103844 --Accounting Line Type
103845  , p_source_24            IN NUMBER
103846 )
103847 IS
103848 
103849 l_component_type              VARCHAR2(80);
103850 l_component_code              VARCHAR2(30);
103851 l_component_type_code         VARCHAR2(1);
103852 l_component_appl_id           INTEGER;
103853 l_amb_context_code            VARCHAR2(30);
103854 l_entity_code                 VARCHAR2(30);
103855 l_event_class_code            VARCHAR2(30);
103856 l_ae_header_id                NUMBER;
103857 l_event_type_code             VARCHAR2(30);
103858 l_line_definition_code        VARCHAR2(30);
103859 l_line_definition_owner_code  VARCHAR2(1);
103860 --
103861 -- adr variables
103862 l_segment                     VARCHAR2(30);
103863 l_ccid                        NUMBER;
103864 l_adr_transaction_coa_id      NUMBER;
103865 l_adr_accounting_coa_id       NUMBER;
103866 l_adr_flexfield_segment_code  VARCHAR2(30);
103867 l_adr_flex_value_set_id       NUMBER;
103868 l_adr_value_type_code         VARCHAR2(30);
103869 l_adr_value_combination_id    NUMBER;
103870 l_adr_value_segment_code      VARCHAR2(30);
103871 
103872 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
103873 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
103874 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
103875 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
103876 
103877 -- 4262811 Variables ------------------------------------------------------------------------------------------
103878 l_entered_amt_idx             NUMBER;
103879 l_accted_amt_idx              NUMBER;
103880 l_acc_rev_flag                VARCHAR2(1);
103881 l_accrual_line_num            NUMBER;
103882 l_tmp_amt                     NUMBER;
103883 l_acc_rev_natural_side_code   VARCHAR2(1);
103884 
103885 l_num_entries                 NUMBER;
103886 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
103887 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
103888 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
103889 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
103890 l_recog_line_1                NUMBER;
103891 l_recog_line_2                NUMBER;
103892 
103893 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
103894 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
103895 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
103896 
103897 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
103898 
103899 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
103900 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
103901 
103902 ---------------------------------------------------------------------------------------------------------------
103903 
103904 
103905 --
103906 -- bulk performance
103907 --
103908 l_balance_type_code           VARCHAR2(1);
103909 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
103910 l_log_module                  VARCHAR2(240);
103911 
103912 --
103913 -- Upgrade strategy
103914 --
103915 l_actual_upg_option           VARCHAR2(1);
103916 l_enc_upg_option           VARCHAR2(1);
103917 
103918 --
103919 BEGIN
103920 --
103921 IF g_log_enabled THEN
103922       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_189';
103923 END IF;
103924 --
103925 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103926 
103927       trace
103928          (p_msg      => 'BEGIN of AcctLineType_189'
103929          ,p_level    => C_LEVEL_PROCEDURE
103930          ,p_module   => l_log_module);
103931 
103932 END IF;
103933 --
103934 l_component_type             := 'AMB_JLT';
103935 l_component_code             := 'OFFSET';
103936 l_component_type_code        := 'S';
103937 l_component_appl_id          :=  707;
103938 l_amb_context_code           := 'DEFAULT';
103939 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
103940 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
103941 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_ALL';
103942 l_line_definition_owner_code := 'S';
103943 l_line_definition_code       := 'FOB_RCPT_SENDER_RCPT';
103944 --
103945 l_balance_type_code          := 'A';
103946 l_segment                     := NULL;
103947 l_ccid                        := NULL;
103948 l_adr_transaction_coa_id      := NULL;
103949 l_adr_accounting_coa_id       := NULL;
103950 l_adr_flexfield_segment_code  := NULL;
103951 l_adr_flex_value_set_id       := NULL;
103952 l_adr_value_type_code         := NULL;
103953 l_adr_value_combination_id    := NULL;
103954 l_adr_value_segment_code      := NULL;
103955 
103956 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
103957 l_bflow_class_code           := '';    -- 4219869 Business Flow
103958 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
103959 l_budgetary_control_flag     := 'N';
103960 
103961 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
103962 l_bflow_applied_to_amt       := NULL; -- 5132302
103963 l_entered_amt_idx            := NULL;          -- 4262811
103964 l_accted_amt_idx             := NULL;          -- 4262811
103965 l_acc_rev_flag               := NULL;          -- 4262811
103966 l_accrual_line_num           := NULL;          -- 4262811
103967 l_tmp_amt                    := NULL;          -- 4262811
103968 --
103969  
103970 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
103971     l_balance_type_code <> 'B' THEN
103972 IF NVL(p_source_24,9E125) =  2 AND 
103973 p_source_22 <=  0
103974  THEN 
103975 
103976    --
103977    XLA_AE_LINES_PKG.SetNewLine;
103978 
103979    p_balance_type_code          := l_balance_type_code;
103980    -- set the flag so later we will know whether the gain loss line needs to be created
103981    
103982    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
103983      p_actual_flag :='A';
103984    END IF;
103985 
103986    --
103987    -- bulk performance
103988    --
103989    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
103990                                       p_header_num   => 0); -- 4262811
103991    --
103992    -- set accounting line options
103993    --
103994    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
103995            p_natural_side_code          => 'D'
103996          , p_gain_or_loss_flag          => 'N'
103997          , p_gl_transfer_mode_code      => 'S'
103998          , p_acct_entry_type_code       => 'A'
103999          , p_switch_side_flag           => 'Y'
104000          , p_merge_duplicate_code       => 'N'
104001          );
104002    --
104003    l_acc_rev_natural_side_code := 'C';  -- 4262811
104004    -- 
104005    --
104006    -- set accounting line type info
104007    --
104008    xla_ae_lines_pkg.SetAcctLineType
104009       (p_component_type             => l_component_type
104010       ,p_event_type_code            => l_event_type_code
104011       ,p_line_definition_owner_code => l_line_definition_owner_code
104012       ,p_line_definition_code       => l_line_definition_code
104013       ,p_accounting_line_code       => l_component_code
104014       ,p_accounting_line_type_code  => l_component_type_code
104015       ,p_accounting_line_appl_id    => l_component_appl_id
104016       ,p_amb_context_code           => l_amb_context_code
104017       ,p_entity_code                => l_entity_code
104018       ,p_event_class_code           => l_event_class_code);
104019    --
104020    -- set accounting class
104021    --
104022    xla_ae_lines_pkg.SetAcctClass(
104023            p_accounting_class_code  => 'OFFSET'
104024          , p_ae_header_id           => l_ae_header_id
104025          );
104026 
104027    --
104028    -- set rounding class
104029    --
104030    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
104031                       'OFFSET';
104032 
104033    --
104034    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
104035    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
104036    --
104037    -- bulk performance
104038    --
104039    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
104040 
104041    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
104042       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
104043 
104044    -- 4955764
104045    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104046       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
104047 
104048    -- 4458381 Public Sector Enh
104049    
104050    --
104051    -- set accounting attributes for the line type
104052    --
104053    l_entered_amt_idx := 3;
104054    l_accted_amt_idx  := 8;
104055    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
104056    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
104057    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
104058    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
104059    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
104060    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
104061    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
104062    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
104063    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
104064    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
104065    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
104066    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
104067    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
104068    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
104069    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
104070    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
104071    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
104072 
104073    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
104074    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
104075 
104076    ---------------------------------------------------------------------------------------------------------------
104077    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
104078    ---------------------------------------------------------------------------------------------------------------
104079    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
104080 
104081    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104082    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104083 
104084    IF xla_accounting_cache_pkg.GetValueChar
104085          (p_source_code         => 'LEDGER_CATEGORY_CODE'
104086          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
104087    AND l_bflow_method_code = 'PRIOR_ENTRY'
104088 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
104089    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
104090          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
104091        )
104092    THEN
104093          xla_ae_lines_pkg.BflowUpgEntry
104094            (p_business_method_code    => l_bflow_method_code
104095            ,p_business_class_code     => l_bflow_class_code
104096            ,p_balance_type            => l_balance_type_code);
104097    ELSE
104098       NULL;
104099 -- No business flow processing for business flow method of NONE.
104100    END IF;
104101 
104102    --
104103    -- call analytical criteria
104104    --
104105    
104106    --
104107    -- call description
104108    --
104109    -- No description or it is inherited.
104110    --
104111    -- call ADRs
104112    -- Bug 4922099
104113    --
104114    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104115         (NVL(l_actual_upg_option, 'N') = 'O') OR
104116         (NVL(l_enc_upg_option, 'N') = 'O')
104117       )
104118    THEN
104119    NULL;
104120    --
104121    --
104122    
104123   l_ccid := AcctDerRule_4(
104124            p_application_id           => p_application_id
104125          , p_ae_header_id             => l_ae_header_id 
104126 , p_source_4 => p_source_4
104127          , x_transaction_coa_id       => l_adr_transaction_coa_id
104128          , x_accounting_coa_id        => l_adr_accounting_coa_id
104129          , x_value_type_code          => l_adr_value_type_code
104130          , p_side                     => 'NA'
104131    );
104132 
104133    xla_ae_lines_pkg.set_ccid(
104134     p_code_combination_id          => l_ccid
104135   , p_value_type_code              => l_adr_value_type_code
104136   , p_transaction_coa_id           => l_adr_transaction_coa_id
104137   , p_accounting_coa_id            => l_adr_accounting_coa_id
104138   , p_adr_code                     => 'CST_DEFAULT'
104139   , p_adr_type_code                => 'S'
104140   , p_component_type               => l_component_type
104141   , p_component_code               => l_component_code
104142   , p_component_type_code          => l_component_type_code
104143   , p_component_appl_id            => l_component_appl_id
104144   , p_amb_context_code             => l_amb_context_code
104145   , p_side                         => 'NA'
104146   );
104147 
104148 
104149    --
104150    --
104151    END IF;
104152    --
104153    -- Bug 4922099
104154    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
104155           (NVL(l_enc_upg_option, 'N') = 'O')
104156         ) AND
104157         (l_bflow_method_code = 'PRIOR_ENTRY')
104158       )
104159    THEN
104160       IF
104161       --
104162       1 = 2
104163       --
104164       THEN
104165       xla_accounting_err_pkg.build_message
104166                                     (p_appli_s_name            => 'XLA'
104167                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104168                                     ,p_token_1                 => 'LINE_NUMBER'
104169                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
104170                                     ,p_token_2                 => 'LINE_TYPE_NAME'
104171                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
104172                                                                              l_component_type
104173                                                                             ,l_component_code
104174                                                                             ,l_component_type_code
104175                                                                             ,l_component_appl_id
104176                                                                             ,l_amb_context_code
104177                                                                             ,l_entity_code
104178                                                                             ,l_event_class_code
104179                                                                            )
104180                                     ,p_token_3                 => 'OWNER'
104181                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
104182                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
104183                                                                           ,p_lookup_code    => l_component_type_code
104184                                                                          )
104185                                     ,p_token_4                 => 'PRODUCT_NAME'
104186                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
104187                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
104188                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
104189                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
104190                                     ,p_ae_header_id            =>  NULL
104191                                        );
104192 
104193         IF (C_LEVEL_ERROR>= g_log_level) THEN
104194                  trace
104195                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104196                       ,p_level    => C_LEVEL_ERROR
104197                       ,p_module   => l_log_module);
104198         END IF;
104199       END IF;
104200    END IF;
104201    --
104202    --
104203    ------------------------------------------------------------------------------------------------
104204    -- 4219869 Business Flow
104205    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
104206    -- Prior Entry.  Currently, the following code is always generated.
104207    ------------------------------------------------------------------------------------------------
104208    XLA_AE_LINES_PKG.ValidateCurrentLine;
104209 
104210    ------------------------------------------------------------------------------------
104211    -- 4219869 Business Flow
104212    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
104213    ------------------------------------------------------------------------------------
104214    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104215 
104216    ----------------------------------------------------------------------------------
104217    -- 4219869 Business Flow
104218    -- Update journal entry status -- Need to generate this within IF <condition>
104219    ----------------------------------------------------------------------------------
104220    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104221          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
104222          ,p_balance_type_code => l_balance_type_code
104223          );
104224 
104225    -------------------------------------------------------------------------------------------
104226    -- 4262811 - Generate the Accrual Reversal lines
104227    -------------------------------------------------------------------------------------------
104228    BEGIN
104229       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
104230                               (g_array_event(p_event_id).array_value_num('header_index'));
104231       IF l_acc_rev_flag IS NULL THEN
104232          l_acc_rev_flag := 'N';
104233       END IF;
104234    EXCEPTION
104235       WHEN OTHERS THEN
104236          l_acc_rev_flag := 'N';
104237    END;
104238    --
104239    IF (l_acc_rev_flag = 'Y') THEN
104240 
104241        -- 4645092  ------------------------------------------------------------------------------
104242        -- To allow MPA report to determine if it should generate report process
104243        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
104244        ------------------------------------------------------------------------------------------
104245 
104246        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
104247        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
104248    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
104249    -- call ADRs
104250    -- Bug 4922099
104251    --
104252    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104253         (NVL(l_actual_upg_option, 'N') = 'O') OR
104254         (NVL(l_enc_upg_option, 'N') = 'O')
104255       )
104256    THEN
104257    NULL;
104258    --
104259    --
104260    
104261   l_ccid := AcctDerRule_4(
104262            p_application_id           => p_application_id
104263          , p_ae_header_id             => l_ae_header_id 
104264 , p_source_4 => p_source_4
104265          , x_transaction_coa_id       => l_adr_transaction_coa_id
104266          , x_accounting_coa_id        => l_adr_accounting_coa_id
104267          , x_value_type_code          => l_adr_value_type_code
104268          , p_side                     => 'NA'
104269    );
104270 
104271    xla_ae_lines_pkg.set_ccid(
104272     p_code_combination_id          => l_ccid
104273   , p_value_type_code              => l_adr_value_type_code
104274   , p_transaction_coa_id           => l_adr_transaction_coa_id
104275   , p_accounting_coa_id            => l_adr_accounting_coa_id
104276   , p_adr_code                     => 'CST_DEFAULT'
104277   , p_adr_type_code                => 'S'
104278   , p_component_type               => l_component_type
104279   , p_component_code               => l_component_code
104280   , p_component_type_code          => l_component_type_code
104281   , p_component_appl_id            => l_component_appl_id
104282   , p_amb_context_code             => l_amb_context_code
104283   , p_side                         => 'NA'
104284   );
104285 
104286 
104287    --
104288    --
104289    END IF;
104290 
104291        --
104292        -- Update the line information that should be overwritten
104293        --
104294        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
104295                                          p_header_num   => 1);
104296        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
104297 
104298        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
104299 
104300        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
104301           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
104302        END IF;
104303 
104304       --
104305       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
104306       --
104307       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
104308           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
104309       ELSE
104310           ---------------------------------------------------------------------------------------------------
104311           -- 4262811a Switch Sign
104312           ---------------------------------------------------------------------------------------------------
104313           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
104314           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104315                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104316           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104317                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104318           -- 5132302
104319           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
104320                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104321 
104322       END IF;
104323 
104324       -- 4955764
104325       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104326       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
104327 
104328 
104329       XLA_AE_LINES_PKG.ValidateCurrentLine;
104330       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104331 
104332       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104333                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
104334                ,p_balance_type_code => l_balance_type_code);
104335 
104336    END IF;
104337 
104338    -----------------------------------------------------------------------------------------
104339    -- 4262811 Multiperiod Accounting
104340    -----------------------------------------------------------------------------------------
104341      -- No MPA option is assigned.
104342 
104343 
104344 END IF;
104345 END IF;
104346 --
104347 
104348 --
104349 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104350    trace
104351       (p_msg      => 'END of AcctLineType_189'
104352       ,p_level    => C_LEVEL_PROCEDURE
104353       ,p_module   => l_log_module);
104354 END IF;
104355 --
104356 EXCEPTION
104357   WHEN xla_exceptions_pkg.application_exception THEN
104358       RAISE;
104359   WHEN OTHERS THEN
104360        xla_exceptions_pkg.raise_message
104361            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_189');
104362 END AcctLineType_189;
104363 --
104364 
104365 ---------------------------------------
104366 --
104367 -- PRIVATE FUNCTION
104368 --         AcctLineType_190
104369 --
104370 ---------------------------------------
104371 PROCEDURE AcctLineType_190 (
104372   p_application_id        IN NUMBER
104373  ,p_event_id              IN NUMBER
104374  ,p_calculate_acctd_flag  IN VARCHAR2
104375  ,p_calculate_g_l_flag    IN VARCHAR2
104376  ,p_actual_flag           IN OUT VARCHAR2
104377  ,p_balance_type_code     OUT VARCHAR2
104378  ,p_gain_or_loss_ref      OUT VARCHAR2
104379  
104380 --Cost Management Default Account
104381  , p_source_4            IN NUMBER
104382 --DISTRIBUTION_IDENTIFIER
104383  , p_source_11            IN NUMBER
104384 --Distribution Type
104385  , p_source_12            IN VARCHAR2
104386  , p_source_12_meaning    IN VARCHAR2
104387 --Entered Currency Code
104388  , p_source_15            IN VARCHAR2
104389 --Entered Amount
104390  , p_source_18            IN NUMBER
104391 --Currency Conversion Date
104392  , p_source_19            IN DATE
104393 --Currency Conversion Rate
104394  , p_source_20            IN NUMBER
104395 --Currency Conversion Type
104396  , p_source_21            IN VARCHAR2
104397 --Accounted Amount
104398  , p_source_22            IN NUMBER
104399 --Accounting Line Type
104400  , p_source_24            IN NUMBER
104401 )
104402 IS
104403 
104404 l_component_type              VARCHAR2(80);
104405 l_component_code              VARCHAR2(30);
104406 l_component_type_code         VARCHAR2(1);
104407 l_component_appl_id           INTEGER;
104408 l_amb_context_code            VARCHAR2(30);
104409 l_entity_code                 VARCHAR2(30);
104410 l_event_class_code            VARCHAR2(30);
104411 l_ae_header_id                NUMBER;
104412 l_event_type_code             VARCHAR2(30);
104413 l_line_definition_code        VARCHAR2(30);
104414 l_line_definition_owner_code  VARCHAR2(1);
104415 --
104416 -- adr variables
104417 l_segment                     VARCHAR2(30);
104418 l_ccid                        NUMBER;
104419 l_adr_transaction_coa_id      NUMBER;
104420 l_adr_accounting_coa_id       NUMBER;
104421 l_adr_flexfield_segment_code  VARCHAR2(30);
104422 l_adr_flex_value_set_id       NUMBER;
104423 l_adr_value_type_code         VARCHAR2(30);
104424 l_adr_value_combination_id    NUMBER;
104425 l_adr_value_segment_code      VARCHAR2(30);
104426 
104427 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
104428 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
104429 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
104430 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
104431 
104432 -- 4262811 Variables ------------------------------------------------------------------------------------------
104433 l_entered_amt_idx             NUMBER;
104434 l_accted_amt_idx              NUMBER;
104435 l_acc_rev_flag                VARCHAR2(1);
104436 l_accrual_line_num            NUMBER;
104437 l_tmp_amt                     NUMBER;
104438 l_acc_rev_natural_side_code   VARCHAR2(1);
104439 
104440 l_num_entries                 NUMBER;
104441 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
104442 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
104443 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
104444 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
104445 l_recog_line_1                NUMBER;
104446 l_recog_line_2                NUMBER;
104447 
104448 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
104449 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
104450 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
104451 
104452 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
104453 
104454 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
104455 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
104456 
104457 ---------------------------------------------------------------------------------------------------------------
104458 
104459 
104460 --
104461 -- bulk performance
104462 --
104463 l_balance_type_code           VARCHAR2(1);
104464 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
104465 l_log_module                  VARCHAR2(240);
104466 
104467 --
104468 -- Upgrade strategy
104469 --
104470 l_actual_upg_option           VARCHAR2(1);
104471 l_enc_upg_option           VARCHAR2(1);
104472 
104473 --
104474 BEGIN
104475 --
104476 IF g_log_enabled THEN
104477       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_190';
104478 END IF;
104479 --
104480 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104481 
104482       trace
104483          (p_msg      => 'BEGIN of AcctLineType_190'
104484          ,p_level    => C_LEVEL_PROCEDURE
104485          ,p_module   => l_log_module);
104486 
104487 END IF;
104488 --
104489 l_component_type             := 'AMB_JLT';
104490 l_component_code             := 'OFFSET';
104491 l_component_type_code        := 'S';
104492 l_component_appl_id          :=  707;
104493 l_amb_context_code           := 'DEFAULT';
104494 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
104495 l_event_class_code           := 'FOB_RCPT_SENDER_SHIP';
104496 l_event_type_code            := 'FOB_RCPT_SENDER_SHIP_ALL';
104497 l_line_definition_owner_code := 'S';
104498 l_line_definition_code       := 'FOB_RCPT_SEND_SHIP';
104499 --
104500 l_balance_type_code          := 'A';
104501 l_segment                     := NULL;
104502 l_ccid                        := NULL;
104503 l_adr_transaction_coa_id      := NULL;
104504 l_adr_accounting_coa_id       := NULL;
104505 l_adr_flexfield_segment_code  := NULL;
104506 l_adr_flex_value_set_id       := NULL;
104507 l_adr_value_type_code         := NULL;
104508 l_adr_value_combination_id    := NULL;
104509 l_adr_value_segment_code      := NULL;
104510 
104511 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
104512 l_bflow_class_code           := '';    -- 4219869 Business Flow
104513 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
104514 l_budgetary_control_flag     := 'N';
104515 
104516 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
104517 l_bflow_applied_to_amt       := NULL; -- 5132302
104518 l_entered_amt_idx            := NULL;          -- 4262811
104519 l_accted_amt_idx             := NULL;          -- 4262811
104520 l_acc_rev_flag               := NULL;          -- 4262811
104521 l_accrual_line_num           := NULL;          -- 4262811
104522 l_tmp_amt                    := NULL;          -- 4262811
104523 --
104524  
104525 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
104526     l_balance_type_code <> 'B' THEN
104527 IF NVL(p_source_24,9E125) =  2
104528  THEN 
104529 
104530    --
104531    XLA_AE_LINES_PKG.SetNewLine;
104532 
104533    p_balance_type_code          := l_balance_type_code;
104534    -- set the flag so later we will know whether the gain loss line needs to be created
104535    
104536    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
104537      p_actual_flag :='A';
104538    END IF;
104539 
104540    --
104541    -- bulk performance
104542    --
104543    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
104544                                       p_header_num   => 0); -- 4262811
104545    --
104546    -- set accounting line options
104547    --
104548    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
104549            p_natural_side_code          => 'D'
104550          , p_gain_or_loss_flag          => 'N'
104551          , p_gl_transfer_mode_code      => 'S'
104552          , p_acct_entry_type_code       => 'A'
104553          , p_switch_side_flag           => 'Y'
104554          , p_merge_duplicate_code       => 'N'
104555          );
104556    --
104557    l_acc_rev_natural_side_code := 'C';  -- 4262811
104558    -- 
104559    --
104560    -- set accounting line type info
104561    --
104562    xla_ae_lines_pkg.SetAcctLineType
104563       (p_component_type             => l_component_type
104564       ,p_event_type_code            => l_event_type_code
104565       ,p_line_definition_owner_code => l_line_definition_owner_code
104566       ,p_line_definition_code       => l_line_definition_code
104567       ,p_accounting_line_code       => l_component_code
104568       ,p_accounting_line_type_code  => l_component_type_code
104569       ,p_accounting_line_appl_id    => l_component_appl_id
104570       ,p_amb_context_code           => l_amb_context_code
104571       ,p_entity_code                => l_entity_code
104572       ,p_event_class_code           => l_event_class_code);
104573    --
104574    -- set accounting class
104575    --
104576    xla_ae_lines_pkg.SetAcctClass(
104577            p_accounting_class_code  => 'OFFSET'
104578          , p_ae_header_id           => l_ae_header_id
104579          );
104580 
104581    --
104582    -- set rounding class
104583    --
104584    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
104585                       'OFFSET';
104586 
104587    --
104588    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
104589    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
104590    --
104591    -- bulk performance
104592    --
104593    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
104594 
104595    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
104596       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
104597 
104598    -- 4955764
104599    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104600       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
104601 
104602    -- 4458381 Public Sector Enh
104603    
104604    --
104605    -- set accounting attributes for the line type
104606    --
104607    l_entered_amt_idx := 3;
104608    l_accted_amt_idx  := 8;
104609    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
104610    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
104611    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
104612    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
104613    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
104614    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
104615    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
104616    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
104617    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
104618    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
104619    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
104620    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
104621    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
104622    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
104623    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
104624    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
104625    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
104626 
104627    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
104628    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
104629 
104630    ---------------------------------------------------------------------------------------------------------------
104631    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
104632    ---------------------------------------------------------------------------------------------------------------
104633    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
104634 
104635    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104636    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104637 
104638    IF xla_accounting_cache_pkg.GetValueChar
104639          (p_source_code         => 'LEDGER_CATEGORY_CODE'
104640          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
104641    AND l_bflow_method_code = 'PRIOR_ENTRY'
104642 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
104643    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
104644          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
104645        )
104646    THEN
104647          xla_ae_lines_pkg.BflowUpgEntry
104648            (p_business_method_code    => l_bflow_method_code
104649            ,p_business_class_code     => l_bflow_class_code
104650            ,p_balance_type            => l_balance_type_code);
104651    ELSE
104652       NULL;
104653 -- No business flow processing for business flow method of NONE.
104654    END IF;
104655 
104656    --
104657    -- call analytical criteria
104658    --
104659    
104660    --
104661    -- call description
104662    --
104663    -- No description or it is inherited.
104664    --
104665    -- call ADRs
104666    -- Bug 4922099
104667    --
104668    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104669         (NVL(l_actual_upg_option, 'N') = 'O') OR
104670         (NVL(l_enc_upg_option, 'N') = 'O')
104671       )
104672    THEN
104673    NULL;
104674    --
104675    --
104676    
104677   l_ccid := AcctDerRule_4(
104678            p_application_id           => p_application_id
104679          , p_ae_header_id             => l_ae_header_id 
104680 , p_source_4 => p_source_4
104681          , x_transaction_coa_id       => l_adr_transaction_coa_id
104682          , x_accounting_coa_id        => l_adr_accounting_coa_id
104683          , x_value_type_code          => l_adr_value_type_code
104684          , p_side                     => 'NA'
104685    );
104686 
104687    xla_ae_lines_pkg.set_ccid(
104688     p_code_combination_id          => l_ccid
104689   , p_value_type_code              => l_adr_value_type_code
104690   , p_transaction_coa_id           => l_adr_transaction_coa_id
104691   , p_accounting_coa_id            => l_adr_accounting_coa_id
104692   , p_adr_code                     => 'CST_DEFAULT'
104693   , p_adr_type_code                => 'S'
104694   , p_component_type               => l_component_type
104695   , p_component_code               => l_component_code
104696   , p_component_type_code          => l_component_type_code
104697   , p_component_appl_id            => l_component_appl_id
104698   , p_amb_context_code             => l_amb_context_code
104699   , p_side                         => 'NA'
104700   );
104701 
104702 
104703    --
104704    --
104705    END IF;
104706    --
104707    -- Bug 4922099
104708    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
104709           (NVL(l_enc_upg_option, 'N') = 'O')
104710         ) AND
104711         (l_bflow_method_code = 'PRIOR_ENTRY')
104712       )
104713    THEN
104714       IF
104715       --
104716       1 = 2
104717       --
104718       THEN
104719       xla_accounting_err_pkg.build_message
104720                                     (p_appli_s_name            => 'XLA'
104721                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104722                                     ,p_token_1                 => 'LINE_NUMBER'
104723                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
104724                                     ,p_token_2                 => 'LINE_TYPE_NAME'
104725                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
104726                                                                              l_component_type
104727                                                                             ,l_component_code
104728                                                                             ,l_component_type_code
104729                                                                             ,l_component_appl_id
104730                                                                             ,l_amb_context_code
104731                                                                             ,l_entity_code
104732                                                                             ,l_event_class_code
104733                                                                            )
104734                                     ,p_token_3                 => 'OWNER'
104735                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
104736                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
104737                                                                           ,p_lookup_code    => l_component_type_code
104738                                                                          )
104739                                     ,p_token_4                 => 'PRODUCT_NAME'
104740                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
104741                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
104742                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
104743                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
104744                                     ,p_ae_header_id            =>  NULL
104745                                        );
104746 
104747         IF (C_LEVEL_ERROR>= g_log_level) THEN
104748                  trace
104749                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104750                       ,p_level    => C_LEVEL_ERROR
104751                       ,p_module   => l_log_module);
104752         END IF;
104753       END IF;
104754    END IF;
104755    --
104756    --
104757    ------------------------------------------------------------------------------------------------
104758    -- 4219869 Business Flow
104759    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
104760    -- Prior Entry.  Currently, the following code is always generated.
104761    ------------------------------------------------------------------------------------------------
104762    XLA_AE_LINES_PKG.ValidateCurrentLine;
104763 
104764    ------------------------------------------------------------------------------------
104765    -- 4219869 Business Flow
104766    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
104767    ------------------------------------------------------------------------------------
104768    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104769 
104770    ----------------------------------------------------------------------------------
104771    -- 4219869 Business Flow
104772    -- Update journal entry status -- Need to generate this within IF <condition>
104773    ----------------------------------------------------------------------------------
104774    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104775          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
104776          ,p_balance_type_code => l_balance_type_code
104777          );
104778 
104779    -------------------------------------------------------------------------------------------
104780    -- 4262811 - Generate the Accrual Reversal lines
104781    -------------------------------------------------------------------------------------------
104782    BEGIN
104783       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
104784                               (g_array_event(p_event_id).array_value_num('header_index'));
104785       IF l_acc_rev_flag IS NULL THEN
104786          l_acc_rev_flag := 'N';
104787       END IF;
104788    EXCEPTION
104789       WHEN OTHERS THEN
104790          l_acc_rev_flag := 'N';
104791    END;
104792    --
104793    IF (l_acc_rev_flag = 'Y') THEN
104794 
104795        -- 4645092  ------------------------------------------------------------------------------
104796        -- To allow MPA report to determine if it should generate report process
104797        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
104798        ------------------------------------------------------------------------------------------
104799 
104800        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
104801        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
104802    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
104803    -- call ADRs
104804    -- Bug 4922099
104805    --
104806    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104807         (NVL(l_actual_upg_option, 'N') = 'O') OR
104808         (NVL(l_enc_upg_option, 'N') = 'O')
104809       )
104810    THEN
104811    NULL;
104812    --
104813    --
104814    
104815   l_ccid := AcctDerRule_4(
104816            p_application_id           => p_application_id
104817          , p_ae_header_id             => l_ae_header_id 
104818 , p_source_4 => p_source_4
104819          , x_transaction_coa_id       => l_adr_transaction_coa_id
104820          , x_accounting_coa_id        => l_adr_accounting_coa_id
104821          , x_value_type_code          => l_adr_value_type_code
104822          , p_side                     => 'NA'
104823    );
104824 
104825    xla_ae_lines_pkg.set_ccid(
104826     p_code_combination_id          => l_ccid
104827   , p_value_type_code              => l_adr_value_type_code
104828   , p_transaction_coa_id           => l_adr_transaction_coa_id
104829   , p_accounting_coa_id            => l_adr_accounting_coa_id
104830   , p_adr_code                     => 'CST_DEFAULT'
104831   , p_adr_type_code                => 'S'
104832   , p_component_type               => l_component_type
104833   , p_component_code               => l_component_code
104834   , p_component_type_code          => l_component_type_code
104835   , p_component_appl_id            => l_component_appl_id
104836   , p_amb_context_code             => l_amb_context_code
104837   , p_side                         => 'NA'
104838   );
104839 
104840 
104841    --
104842    --
104843    END IF;
104844 
104845        --
104846        -- Update the line information that should be overwritten
104847        --
104848        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
104849                                          p_header_num   => 1);
104850        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
104851 
104852        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
104853 
104854        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
104855           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
104856        END IF;
104857 
104858       --
104859       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
104860       --
104861       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
104862           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
104863       ELSE
104864           ---------------------------------------------------------------------------------------------------
104865           -- 4262811a Switch Sign
104866           ---------------------------------------------------------------------------------------------------
104867           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
104868           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104869                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104870           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104871                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104872           -- 5132302
104873           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
104874                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104875 
104876       END IF;
104877 
104878       -- 4955764
104879       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104880       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
104881 
104882 
104883       XLA_AE_LINES_PKG.ValidateCurrentLine;
104884       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104885 
104886       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104887                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
104888                ,p_balance_type_code => l_balance_type_code);
104889 
104890    END IF;
104891 
104892    -----------------------------------------------------------------------------------------
104893    -- 4262811 Multiperiod Accounting
104894    -----------------------------------------------------------------------------------------
104895      -- No MPA option is assigned.
104896 
104897 
104898 END IF;
104899 END IF;
104900 --
104901 
104902 --
104903 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104904    trace
104905       (p_msg      => 'END of AcctLineType_190'
104906       ,p_level    => C_LEVEL_PROCEDURE
104907       ,p_module   => l_log_module);
104908 END IF;
104909 --
104910 EXCEPTION
104911   WHEN xla_exceptions_pkg.application_exception THEN
104912       RAISE;
104913   WHEN OTHERS THEN
104914        xla_exceptions_pkg.raise_message
104915            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_190');
104916 END AcctLineType_190;
104917 --
104918 
104919 ---------------------------------------
104920 --
104921 -- PRIVATE FUNCTION
104922 --         AcctLineType_191
104923 --
104924 ---------------------------------------
104925 PROCEDURE AcctLineType_191 (
104926   p_application_id        IN NUMBER
104927  ,p_event_id              IN NUMBER
104928  ,p_calculate_acctd_flag  IN VARCHAR2
104929  ,p_calculate_g_l_flag    IN VARCHAR2
104930  ,p_actual_flag           IN OUT VARCHAR2
104931  ,p_balance_type_code     OUT VARCHAR2
104932  ,p_gain_or_loss_ref      OUT VARCHAR2
104933  
104934 --Cost Management Default Account
104935  , p_source_4            IN NUMBER
104936 --DISTRIBUTION_IDENTIFIER
104937  , p_source_11            IN NUMBER
104938 --Distribution Type
104939  , p_source_12            IN VARCHAR2
104940  , p_source_12_meaning    IN VARCHAR2
104941 --Entered Currency Code
104942  , p_source_15            IN VARCHAR2
104943 --Entered Amount
104944  , p_source_18            IN NUMBER
104945 --Currency Conversion Date
104946  , p_source_19            IN DATE
104947 --Currency Conversion Rate
104948  , p_source_20            IN NUMBER
104949 --Currency Conversion Type
104950  , p_source_21            IN VARCHAR2
104951 --Accounted Amount
104952  , p_source_22            IN NUMBER
104953 --Accounting Line Type
104954  , p_source_24            IN NUMBER
104955 )
104956 IS
104957 
104958 l_component_type              VARCHAR2(80);
104959 l_component_code              VARCHAR2(30);
104960 l_component_type_code         VARCHAR2(1);
104961 l_component_appl_id           INTEGER;
104962 l_amb_context_code            VARCHAR2(30);
104963 l_entity_code                 VARCHAR2(30);
104964 l_event_class_code            VARCHAR2(30);
104965 l_ae_header_id                NUMBER;
104966 l_event_type_code             VARCHAR2(30);
104967 l_line_definition_code        VARCHAR2(30);
104968 l_line_definition_owner_code  VARCHAR2(1);
104969 --
104970 -- adr variables
104971 l_segment                     VARCHAR2(30);
104972 l_ccid                        NUMBER;
104973 l_adr_transaction_coa_id      NUMBER;
104974 l_adr_accounting_coa_id       NUMBER;
104975 l_adr_flexfield_segment_code  VARCHAR2(30);
104976 l_adr_flex_value_set_id       NUMBER;
104977 l_adr_value_type_code         VARCHAR2(30);
104978 l_adr_value_combination_id    NUMBER;
104979 l_adr_value_segment_code      VARCHAR2(30);
104980 
104981 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
104982 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
104983 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
104984 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
104985 
104986 -- 4262811 Variables ------------------------------------------------------------------------------------------
104987 l_entered_amt_idx             NUMBER;
104988 l_accted_amt_idx              NUMBER;
104989 l_acc_rev_flag                VARCHAR2(1);
104990 l_accrual_line_num            NUMBER;
104991 l_tmp_amt                     NUMBER;
104992 l_acc_rev_natural_side_code   VARCHAR2(1);
104993 
104994 l_num_entries                 NUMBER;
104995 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
104996 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
104997 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
104998 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
104999 l_recog_line_1                NUMBER;
105000 l_recog_line_2                NUMBER;
105001 
105002 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
105003 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
105004 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
105005 
105006 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
105007 
105008 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
105009 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
105010 
105011 ---------------------------------------------------------------------------------------------------------------
105012 
105013 
105014 --
105015 -- bulk performance
105016 --
105017 l_balance_type_code           VARCHAR2(1);
105018 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
105019 l_log_module                  VARCHAR2(240);
105020 
105021 --
105022 -- Upgrade strategy
105023 --
105024 l_actual_upg_option           VARCHAR2(1);
105025 l_enc_upg_option           VARCHAR2(1);
105026 
105027 --
105028 BEGIN
105029 --
105030 IF g_log_enabled THEN
105031       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_191';
105032 END IF;
105033 --
105034 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105035 
105036       trace
105037          (p_msg      => 'BEGIN of AcctLineType_191'
105038          ,p_level    => C_LEVEL_PROCEDURE
105039          ,p_module   => l_log_module);
105040 
105041 END IF;
105042 --
105043 l_component_type             := 'AMB_JLT';
105044 l_component_code             := 'OFFSET';
105045 l_component_type_code        := 'S';
105046 l_component_appl_id          :=  707;
105047 l_amb_context_code           := 'DEFAULT';
105048 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
105049 l_event_class_code           := 'INTRAORG_TXFR';
105050 l_event_type_code            := 'INTRAORG_TXFR_ALL';
105051 l_line_definition_owner_code := 'S';
105052 l_line_definition_code       := 'INTRAORG_TXFR';
105053 --
105054 l_balance_type_code          := 'A';
105055 l_segment                     := NULL;
105056 l_ccid                        := NULL;
105057 l_adr_transaction_coa_id      := NULL;
105058 l_adr_accounting_coa_id       := NULL;
105059 l_adr_flexfield_segment_code  := NULL;
105060 l_adr_flex_value_set_id       := NULL;
105061 l_adr_value_type_code         := NULL;
105062 l_adr_value_combination_id    := NULL;
105063 l_adr_value_segment_code      := NULL;
105064 
105065 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
105066 l_bflow_class_code           := '';    -- 4219869 Business Flow
105067 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
105068 l_budgetary_control_flag     := 'N';
105069 
105070 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
105071 l_bflow_applied_to_amt       := NULL; -- 5132302
105072 l_entered_amt_idx            := NULL;          -- 4262811
105073 l_accted_amt_idx             := NULL;          -- 4262811
105074 l_acc_rev_flag               := NULL;          -- 4262811
105075 l_accrual_line_num           := NULL;          -- 4262811
105076 l_tmp_amt                    := NULL;          -- 4262811
105077 --
105078  
105079 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
105080     l_balance_type_code <> 'B' THEN
105081 IF NVL(p_source_24,9E125) =  2
105082  THEN 
105083 
105084    --
105085    XLA_AE_LINES_PKG.SetNewLine;
105086 
105087    p_balance_type_code          := l_balance_type_code;
105088    -- set the flag so later we will know whether the gain loss line needs to be created
105089    
105090    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
105091      p_actual_flag :='A';
105092    END IF;
105093 
105094    --
105095    -- bulk performance
105096    --
105097    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
105098                                       p_header_num   => 0); -- 4262811
105099    --
105100    -- set accounting line options
105101    --
105102    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
105103            p_natural_side_code          => 'D'
105104          , p_gain_or_loss_flag          => 'N'
105105          , p_gl_transfer_mode_code      => 'S'
105106          , p_acct_entry_type_code       => 'A'
105107          , p_switch_side_flag           => 'Y'
105108          , p_merge_duplicate_code       => 'N'
105109          );
105110    --
105111    l_acc_rev_natural_side_code := 'C';  -- 4262811
105112    -- 
105113    --
105114    -- set accounting line type info
105115    --
105116    xla_ae_lines_pkg.SetAcctLineType
105117       (p_component_type             => l_component_type
105118       ,p_event_type_code            => l_event_type_code
105119       ,p_line_definition_owner_code => l_line_definition_owner_code
105120       ,p_line_definition_code       => l_line_definition_code
105121       ,p_accounting_line_code       => l_component_code
105122       ,p_accounting_line_type_code  => l_component_type_code
105123       ,p_accounting_line_appl_id    => l_component_appl_id
105124       ,p_amb_context_code           => l_amb_context_code
105125       ,p_entity_code                => l_entity_code
105126       ,p_event_class_code           => l_event_class_code);
105127    --
105128    -- set accounting class
105129    --
105130    xla_ae_lines_pkg.SetAcctClass(
105131            p_accounting_class_code  => 'OFFSET'
105132          , p_ae_header_id           => l_ae_header_id
105133          );
105134 
105135    --
105136    -- set rounding class
105137    --
105138    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
105139                       'OFFSET';
105140 
105141    --
105142    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
105143    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
105144    --
105145    -- bulk performance
105146    --
105147    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
105148 
105149    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
105150       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
105151 
105152    -- 4955764
105153    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105154       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
105155 
105156    -- 4458381 Public Sector Enh
105157    
105158    --
105159    -- set accounting attributes for the line type
105160    --
105161    l_entered_amt_idx := 3;
105162    l_accted_amt_idx  := 8;
105163    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
105164    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
105165    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
105166    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
105167    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
105168    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
105169    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
105170    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
105171    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
105172    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
105173    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
105174    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
105175    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
105176    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
105177    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
105178    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
105179    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
105180 
105181    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
105182    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
105183 
105184    ---------------------------------------------------------------------------------------------------------------
105185    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
105186    ---------------------------------------------------------------------------------------------------------------
105187    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
105188 
105189    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105190    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105191 
105192    IF xla_accounting_cache_pkg.GetValueChar
105193          (p_source_code         => 'LEDGER_CATEGORY_CODE'
105194          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
105195    AND l_bflow_method_code = 'PRIOR_ENTRY'
105196 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
105197    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
105198          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
105199        )
105200    THEN
105201          xla_ae_lines_pkg.BflowUpgEntry
105202            (p_business_method_code    => l_bflow_method_code
105203            ,p_business_class_code     => l_bflow_class_code
105204            ,p_balance_type            => l_balance_type_code);
105205    ELSE
105206       NULL;
105207 -- No business flow processing for business flow method of NONE.
105208    END IF;
105209 
105210    --
105211    -- call analytical criteria
105212    --
105213    
105214    --
105215    -- call description
105216    --
105217    -- No description or it is inherited.
105218    --
105219    -- call ADRs
105220    -- Bug 4922099
105221    --
105222    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105223         (NVL(l_actual_upg_option, 'N') = 'O') OR
105224         (NVL(l_enc_upg_option, 'N') = 'O')
105225       )
105226    THEN
105227    NULL;
105228    --
105229    --
105230    
105231   l_ccid := AcctDerRule_4(
105232            p_application_id           => p_application_id
105233          , p_ae_header_id             => l_ae_header_id 
105234 , p_source_4 => p_source_4
105235          , x_transaction_coa_id       => l_adr_transaction_coa_id
105236          , x_accounting_coa_id        => l_adr_accounting_coa_id
105237          , x_value_type_code          => l_adr_value_type_code
105238          , p_side                     => 'NA'
105239    );
105240 
105241    xla_ae_lines_pkg.set_ccid(
105242     p_code_combination_id          => l_ccid
105243   , p_value_type_code              => l_adr_value_type_code
105244   , p_transaction_coa_id           => l_adr_transaction_coa_id
105245   , p_accounting_coa_id            => l_adr_accounting_coa_id
105246   , p_adr_code                     => 'CST_DEFAULT'
105247   , p_adr_type_code                => 'S'
105248   , p_component_type               => l_component_type
105249   , p_component_code               => l_component_code
105250   , p_component_type_code          => l_component_type_code
105251   , p_component_appl_id            => l_component_appl_id
105252   , p_amb_context_code             => l_amb_context_code
105253   , p_side                         => 'NA'
105254   );
105255 
105256 
105257    --
105258    --
105259    END IF;
105260    --
105261    -- Bug 4922099
105262    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
105263           (NVL(l_enc_upg_option, 'N') = 'O')
105264         ) AND
105265         (l_bflow_method_code = 'PRIOR_ENTRY')
105266       )
105267    THEN
105268       IF
105269       --
105270       1 = 2
105271       --
105272       THEN
105273       xla_accounting_err_pkg.build_message
105274                                     (p_appli_s_name            => 'XLA'
105275                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105276                                     ,p_token_1                 => 'LINE_NUMBER'
105277                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
105278                                     ,p_token_2                 => 'LINE_TYPE_NAME'
105279                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
105280                                                                              l_component_type
105281                                                                             ,l_component_code
105282                                                                             ,l_component_type_code
105283                                                                             ,l_component_appl_id
105284                                                                             ,l_amb_context_code
105285                                                                             ,l_entity_code
105286                                                                             ,l_event_class_code
105287                                                                            )
105288                                     ,p_token_3                 => 'OWNER'
105289                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
105290                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
105291                                                                           ,p_lookup_code    => l_component_type_code
105292                                                                          )
105293                                     ,p_token_4                 => 'PRODUCT_NAME'
105294                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
105295                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
105296                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
105297                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
105298                                     ,p_ae_header_id            =>  NULL
105299                                        );
105300 
105301         IF (C_LEVEL_ERROR>= g_log_level) THEN
105302                  trace
105303                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105304                       ,p_level    => C_LEVEL_ERROR
105305                       ,p_module   => l_log_module);
105306         END IF;
105307       END IF;
105308    END IF;
105309    --
105310    --
105311    ------------------------------------------------------------------------------------------------
105312    -- 4219869 Business Flow
105313    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
105314    -- Prior Entry.  Currently, the following code is always generated.
105315    ------------------------------------------------------------------------------------------------
105316    XLA_AE_LINES_PKG.ValidateCurrentLine;
105317 
105318    ------------------------------------------------------------------------------------
105319    -- 4219869 Business Flow
105320    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
105321    ------------------------------------------------------------------------------------
105322    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105323 
105324    ----------------------------------------------------------------------------------
105325    -- 4219869 Business Flow
105326    -- Update journal entry status -- Need to generate this within IF <condition>
105327    ----------------------------------------------------------------------------------
105328    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105329          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
105330          ,p_balance_type_code => l_balance_type_code
105331          );
105332 
105333    -------------------------------------------------------------------------------------------
105334    -- 4262811 - Generate the Accrual Reversal lines
105335    -------------------------------------------------------------------------------------------
105336    BEGIN
105337       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
105338                               (g_array_event(p_event_id).array_value_num('header_index'));
105339       IF l_acc_rev_flag IS NULL THEN
105340          l_acc_rev_flag := 'N';
105341       END IF;
105342    EXCEPTION
105343       WHEN OTHERS THEN
105344          l_acc_rev_flag := 'N';
105345    END;
105346    --
105347    IF (l_acc_rev_flag = 'Y') THEN
105348 
105349        -- 4645092  ------------------------------------------------------------------------------
105350        -- To allow MPA report to determine if it should generate report process
105351        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
105352        ------------------------------------------------------------------------------------------
105353 
105354        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
105355        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
105356    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
105357    -- call ADRs
105358    -- Bug 4922099
105359    --
105360    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105361         (NVL(l_actual_upg_option, 'N') = 'O') OR
105362         (NVL(l_enc_upg_option, 'N') = 'O')
105363       )
105364    THEN
105365    NULL;
105366    --
105367    --
105368    
105369   l_ccid := AcctDerRule_4(
105370            p_application_id           => p_application_id
105371          , p_ae_header_id             => l_ae_header_id 
105372 , p_source_4 => p_source_4
105373          , x_transaction_coa_id       => l_adr_transaction_coa_id
105374          , x_accounting_coa_id        => l_adr_accounting_coa_id
105375          , x_value_type_code          => l_adr_value_type_code
105376          , p_side                     => 'NA'
105377    );
105378 
105379    xla_ae_lines_pkg.set_ccid(
105380     p_code_combination_id          => l_ccid
105381   , p_value_type_code              => l_adr_value_type_code
105382   , p_transaction_coa_id           => l_adr_transaction_coa_id
105383   , p_accounting_coa_id            => l_adr_accounting_coa_id
105384   , p_adr_code                     => 'CST_DEFAULT'
105385   , p_adr_type_code                => 'S'
105386   , p_component_type               => l_component_type
105387   , p_component_code               => l_component_code
105388   , p_component_type_code          => l_component_type_code
105389   , p_component_appl_id            => l_component_appl_id
105390   , p_amb_context_code             => l_amb_context_code
105391   , p_side                         => 'NA'
105392   );
105393 
105394 
105395    --
105396    --
105397    END IF;
105398 
105399        --
105400        -- Update the line information that should be overwritten
105401        --
105402        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
105403                                          p_header_num   => 1);
105404        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
105405 
105406        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
105407 
105408        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
105409           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
105410        END IF;
105411 
105412       --
105413       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
105414       --
105415       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
105416           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
105417       ELSE
105418           ---------------------------------------------------------------------------------------------------
105419           -- 4262811a Switch Sign
105420           ---------------------------------------------------------------------------------------------------
105421           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
105422           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105423                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105424           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105425                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105426           -- 5132302
105427           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
105428                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105429 
105430       END IF;
105431 
105432       -- 4955764
105433       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105434       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
105435 
105436 
105437       XLA_AE_LINES_PKG.ValidateCurrentLine;
105438       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105439 
105440       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105441                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
105442                ,p_balance_type_code => l_balance_type_code);
105443 
105444    END IF;
105445 
105446    -----------------------------------------------------------------------------------------
105447    -- 4262811 Multiperiod Accounting
105448    -----------------------------------------------------------------------------------------
105449      -- No MPA option is assigned.
105450 
105451 
105452 END IF;
105453 END IF;
105454 --
105455 
105456 --
105457 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105458    trace
105459       (p_msg      => 'END of AcctLineType_191'
105460       ,p_level    => C_LEVEL_PROCEDURE
105461       ,p_module   => l_log_module);
105462 END IF;
105463 --
105464 EXCEPTION
105465   WHEN xla_exceptions_pkg.application_exception THEN
105466       RAISE;
105467   WHEN OTHERS THEN
105468        xla_exceptions_pkg.raise_message
105469            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_191');
105470 END AcctLineType_191;
105471 --
105472 
105473 ---------------------------------------
105474 --
105475 -- PRIVATE FUNCTION
105476 --         AcctLineType_192
105477 --
105478 ---------------------------------------
105479 PROCEDURE AcctLineType_192 (
105480   p_application_id        IN NUMBER
105481  ,p_event_id              IN NUMBER
105482  ,p_calculate_acctd_flag  IN VARCHAR2
105483  ,p_calculate_g_l_flag    IN VARCHAR2
105484  ,p_actual_flag           IN OUT VARCHAR2
105485  ,p_balance_type_code     OUT VARCHAR2
105486  ,p_gain_or_loss_ref      OUT VARCHAR2
105487  
105488 --Cost Management Default Account
105489  , p_source_4            IN NUMBER
105490 --DISTRIBUTION_IDENTIFIER
105491  , p_source_11            IN NUMBER
105492 --Distribution Type
105493  , p_source_12            IN VARCHAR2
105494  , p_source_12_meaning    IN VARCHAR2
105495 --Entered Currency Code
105496  , p_source_15            IN VARCHAR2
105497 --Entered Amount
105498  , p_source_18            IN NUMBER
105499 --Currency Conversion Date
105500  , p_source_19            IN DATE
105501 --Currency Conversion Rate
105502  , p_source_20            IN NUMBER
105503 --Currency Conversion Type
105504  , p_source_21            IN VARCHAR2
105505 --Accounted Amount
105506  , p_source_22            IN NUMBER
105507 --Accounting Line Type
105508  , p_source_24            IN NUMBER
105509 )
105510 IS
105511 
105512 l_component_type              VARCHAR2(80);
105513 l_component_code              VARCHAR2(30);
105514 l_component_type_code         VARCHAR2(1);
105515 l_component_appl_id           INTEGER;
105516 l_amb_context_code            VARCHAR2(30);
105517 l_entity_code                 VARCHAR2(30);
105518 l_event_class_code            VARCHAR2(30);
105519 l_ae_header_id                NUMBER;
105520 l_event_type_code             VARCHAR2(30);
105521 l_line_definition_code        VARCHAR2(30);
105522 l_line_definition_owner_code  VARCHAR2(1);
105523 --
105524 -- adr variables
105525 l_segment                     VARCHAR2(30);
105526 l_ccid                        NUMBER;
105527 l_adr_transaction_coa_id      NUMBER;
105528 l_adr_accounting_coa_id       NUMBER;
105529 l_adr_flexfield_segment_code  VARCHAR2(30);
105530 l_adr_flex_value_set_id       NUMBER;
105531 l_adr_value_type_code         VARCHAR2(30);
105532 l_adr_value_combination_id    NUMBER;
105533 l_adr_value_segment_code      VARCHAR2(30);
105534 
105535 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
105536 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
105537 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
105538 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
105539 
105540 -- 4262811 Variables ------------------------------------------------------------------------------------------
105541 l_entered_amt_idx             NUMBER;
105542 l_accted_amt_idx              NUMBER;
105543 l_acc_rev_flag                VARCHAR2(1);
105544 l_accrual_line_num            NUMBER;
105545 l_tmp_amt                     NUMBER;
105546 l_acc_rev_natural_side_code   VARCHAR2(1);
105547 
105548 l_num_entries                 NUMBER;
105549 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
105550 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
105551 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
105552 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
105553 l_recog_line_1                NUMBER;
105554 l_recog_line_2                NUMBER;
105555 
105556 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
105557 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
105558 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
105559 
105560 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
105561 
105562 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
105563 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
105564 
105565 ---------------------------------------------------------------------------------------------------------------
105566 
105567 
105568 --
105569 -- bulk performance
105570 --
105571 l_balance_type_code           VARCHAR2(1);
105572 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
105573 l_log_module                  VARCHAR2(240);
105574 
105575 --
105576 -- Upgrade strategy
105577 --
105578 l_actual_upg_option           VARCHAR2(1);
105579 l_enc_upg_option           VARCHAR2(1);
105580 
105581 --
105582 BEGIN
105583 --
105584 IF g_log_enabled THEN
105585       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_192';
105586 END IF;
105587 --
105588 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105589 
105590       trace
105591          (p_msg      => 'BEGIN of AcctLineType_192'
105592          ,p_level    => C_LEVEL_PROCEDURE
105593          ,p_module   => l_log_module);
105594 
105595 END IF;
105596 --
105597 l_component_type             := 'AMB_JLT';
105598 l_component_code             := 'OFFSET';
105599 l_component_type_code        := 'S';
105600 l_component_appl_id          :=  707;
105601 l_amb_context_code           := 'DEFAULT';
105602 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
105603 l_event_class_code           := 'INT_ORDER_TO_EXP';
105604 l_event_type_code            := 'INT_ORDER_TO_EXP_ALL';
105605 l_line_definition_owner_code := 'S';
105606 l_line_definition_code       := 'INT_ORDER_TO_EXP';
105607 --
105608 l_balance_type_code          := 'A';
105609 l_segment                     := NULL;
105610 l_ccid                        := NULL;
105611 l_adr_transaction_coa_id      := NULL;
105612 l_adr_accounting_coa_id       := NULL;
105613 l_adr_flexfield_segment_code  := NULL;
105614 l_adr_flex_value_set_id       := NULL;
105615 l_adr_value_type_code         := NULL;
105616 l_adr_value_combination_id    := NULL;
105617 l_adr_value_segment_code      := NULL;
105618 
105619 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
105620 l_bflow_class_code           := '';    -- 4219869 Business Flow
105621 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
105622 l_budgetary_control_flag     := 'N';
105623 
105624 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
105625 l_bflow_applied_to_amt       := NULL; -- 5132302
105626 l_entered_amt_idx            := NULL;          -- 4262811
105627 l_accted_amt_idx             := NULL;          -- 4262811
105628 l_acc_rev_flag               := NULL;          -- 4262811
105629 l_accrual_line_num           := NULL;          -- 4262811
105630 l_tmp_amt                    := NULL;          -- 4262811
105631 --
105632  
105633 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
105634     l_balance_type_code <> 'B' THEN
105635 IF NVL(p_source_24,9E125) =  2
105636  THEN 
105637 
105638    --
105639    XLA_AE_LINES_PKG.SetNewLine;
105640 
105641    p_balance_type_code          := l_balance_type_code;
105642    -- set the flag so later we will know whether the gain loss line needs to be created
105643    
105644    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
105645      p_actual_flag :='A';
105646    END IF;
105647 
105648    --
105649    -- bulk performance
105650    --
105651    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
105652                                       p_header_num   => 0); -- 4262811
105653    --
105654    -- set accounting line options
105655    --
105656    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
105657            p_natural_side_code          => 'D'
105658          , p_gain_or_loss_flag          => 'N'
105659          , p_gl_transfer_mode_code      => 'S'
105660          , p_acct_entry_type_code       => 'A'
105661          , p_switch_side_flag           => 'Y'
105662          , p_merge_duplicate_code       => 'N'
105663          );
105664    --
105665    l_acc_rev_natural_side_code := 'C';  -- 4262811
105666    -- 
105667    --
105668    -- set accounting line type info
105669    --
105670    xla_ae_lines_pkg.SetAcctLineType
105671       (p_component_type             => l_component_type
105672       ,p_event_type_code            => l_event_type_code
105673       ,p_line_definition_owner_code => l_line_definition_owner_code
105674       ,p_line_definition_code       => l_line_definition_code
105675       ,p_accounting_line_code       => l_component_code
105676       ,p_accounting_line_type_code  => l_component_type_code
105677       ,p_accounting_line_appl_id    => l_component_appl_id
105678       ,p_amb_context_code           => l_amb_context_code
105679       ,p_entity_code                => l_entity_code
105680       ,p_event_class_code           => l_event_class_code);
105681    --
105682    -- set accounting class
105683    --
105684    xla_ae_lines_pkg.SetAcctClass(
105685            p_accounting_class_code  => 'OFFSET'
105686          , p_ae_header_id           => l_ae_header_id
105687          );
105688 
105689    --
105690    -- set rounding class
105691    --
105692    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
105693                       'OFFSET';
105694 
105695    --
105696    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
105697    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
105698    --
105699    -- bulk performance
105700    --
105701    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
105702 
105703    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
105704       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
105705 
105706    -- 4955764
105707    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105708       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
105709 
105710    -- 4458381 Public Sector Enh
105711    
105712    --
105713    -- set accounting attributes for the line type
105714    --
105715    l_entered_amt_idx := 3;
105716    l_accted_amt_idx  := 8;
105717    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
105718    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
105719    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
105720    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
105721    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
105722    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
105723    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
105724    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
105725    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
105726    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
105727    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
105728    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
105729    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
105730    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
105731    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
105732    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
105733    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
105734 
105735    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
105736    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
105737 
105738    ---------------------------------------------------------------------------------------------------------------
105739    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
105740    ---------------------------------------------------------------------------------------------------------------
105741    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
105742 
105743    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105744    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105745 
105746    IF xla_accounting_cache_pkg.GetValueChar
105747          (p_source_code         => 'LEDGER_CATEGORY_CODE'
105748          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
105749    AND l_bflow_method_code = 'PRIOR_ENTRY'
105750 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
105751    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
105752          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
105753        )
105754    THEN
105755          xla_ae_lines_pkg.BflowUpgEntry
105756            (p_business_method_code    => l_bflow_method_code
105757            ,p_business_class_code     => l_bflow_class_code
105758            ,p_balance_type            => l_balance_type_code);
105759    ELSE
105760       NULL;
105761 -- No business flow processing for business flow method of NONE.
105762    END IF;
105763 
105764    --
105765    -- call analytical criteria
105766    --
105767    
105768    --
105769    -- call description
105770    --
105771    -- No description or it is inherited.
105772    --
105773    -- call ADRs
105774    -- Bug 4922099
105775    --
105776    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105777         (NVL(l_actual_upg_option, 'N') = 'O') OR
105778         (NVL(l_enc_upg_option, 'N') = 'O')
105779       )
105780    THEN
105781    NULL;
105782    --
105783    --
105784    
105785   l_ccid := AcctDerRule_4(
105786            p_application_id           => p_application_id
105787          , p_ae_header_id             => l_ae_header_id 
105788 , p_source_4 => p_source_4
105789          , x_transaction_coa_id       => l_adr_transaction_coa_id
105790          , x_accounting_coa_id        => l_adr_accounting_coa_id
105791          , x_value_type_code          => l_adr_value_type_code
105792          , p_side                     => 'NA'
105793    );
105794 
105795    xla_ae_lines_pkg.set_ccid(
105796     p_code_combination_id          => l_ccid
105797   , p_value_type_code              => l_adr_value_type_code
105798   , p_transaction_coa_id           => l_adr_transaction_coa_id
105799   , p_accounting_coa_id            => l_adr_accounting_coa_id
105800   , p_adr_code                     => 'CST_DEFAULT'
105801   , p_adr_type_code                => 'S'
105802   , p_component_type               => l_component_type
105803   , p_component_code               => l_component_code
105804   , p_component_type_code          => l_component_type_code
105805   , p_component_appl_id            => l_component_appl_id
105806   , p_amb_context_code             => l_amb_context_code
105807   , p_side                         => 'NA'
105808   );
105809 
105810 
105811    --
105812    --
105813    END IF;
105814    --
105815    -- Bug 4922099
105816    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
105817           (NVL(l_enc_upg_option, 'N') = 'O')
105818         ) AND
105819         (l_bflow_method_code = 'PRIOR_ENTRY')
105820       )
105821    THEN
105822       IF
105823       --
105824       1 = 2
105825       --
105826       THEN
105827       xla_accounting_err_pkg.build_message
105828                                     (p_appli_s_name            => 'XLA'
105829                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105830                                     ,p_token_1                 => 'LINE_NUMBER'
105831                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
105832                                     ,p_token_2                 => 'LINE_TYPE_NAME'
105833                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
105834                                                                              l_component_type
105835                                                                             ,l_component_code
105836                                                                             ,l_component_type_code
105837                                                                             ,l_component_appl_id
105838                                                                             ,l_amb_context_code
105839                                                                             ,l_entity_code
105840                                                                             ,l_event_class_code
105841                                                                            )
105842                                     ,p_token_3                 => 'OWNER'
105843                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
105844                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
105845                                                                           ,p_lookup_code    => l_component_type_code
105846                                                                          )
105847                                     ,p_token_4                 => 'PRODUCT_NAME'
105848                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
105849                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
105850                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
105851                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
105852                                     ,p_ae_header_id            =>  NULL
105853                                        );
105854 
105855         IF (C_LEVEL_ERROR>= g_log_level) THEN
105856                  trace
105857                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105858                       ,p_level    => C_LEVEL_ERROR
105859                       ,p_module   => l_log_module);
105860         END IF;
105861       END IF;
105862    END IF;
105863    --
105864    --
105865    ------------------------------------------------------------------------------------------------
105866    -- 4219869 Business Flow
105867    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
105868    -- Prior Entry.  Currently, the following code is always generated.
105869    ------------------------------------------------------------------------------------------------
105870    XLA_AE_LINES_PKG.ValidateCurrentLine;
105871 
105872    ------------------------------------------------------------------------------------
105873    -- 4219869 Business Flow
105874    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
105875    ------------------------------------------------------------------------------------
105876    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105877 
105878    ----------------------------------------------------------------------------------
105879    -- 4219869 Business Flow
105880    -- Update journal entry status -- Need to generate this within IF <condition>
105881    ----------------------------------------------------------------------------------
105882    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105883          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
105884          ,p_balance_type_code => l_balance_type_code
105885          );
105886 
105887    -------------------------------------------------------------------------------------------
105888    -- 4262811 - Generate the Accrual Reversal lines
105889    -------------------------------------------------------------------------------------------
105890    BEGIN
105891       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
105892                               (g_array_event(p_event_id).array_value_num('header_index'));
105893       IF l_acc_rev_flag IS NULL THEN
105894          l_acc_rev_flag := 'N';
105895       END IF;
105896    EXCEPTION
105897       WHEN OTHERS THEN
105898          l_acc_rev_flag := 'N';
105899    END;
105900    --
105901    IF (l_acc_rev_flag = 'Y') THEN
105902 
105903        -- 4645092  ------------------------------------------------------------------------------
105904        -- To allow MPA report to determine if it should generate report process
105905        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
105906        ------------------------------------------------------------------------------------------
105907 
105908        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
105909        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
105910    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
105911    -- call ADRs
105912    -- Bug 4922099
105913    --
105914    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105915         (NVL(l_actual_upg_option, 'N') = 'O') OR
105916         (NVL(l_enc_upg_option, 'N') = 'O')
105917       )
105918    THEN
105919    NULL;
105920    --
105921    --
105922    
105923   l_ccid := AcctDerRule_4(
105924            p_application_id           => p_application_id
105925          , p_ae_header_id             => l_ae_header_id 
105926 , p_source_4 => p_source_4
105927          , x_transaction_coa_id       => l_adr_transaction_coa_id
105928          , x_accounting_coa_id        => l_adr_accounting_coa_id
105929          , x_value_type_code          => l_adr_value_type_code
105930          , p_side                     => 'NA'
105931    );
105932 
105933    xla_ae_lines_pkg.set_ccid(
105934     p_code_combination_id          => l_ccid
105935   , p_value_type_code              => l_adr_value_type_code
105936   , p_transaction_coa_id           => l_adr_transaction_coa_id
105937   , p_accounting_coa_id            => l_adr_accounting_coa_id
105938   , p_adr_code                     => 'CST_DEFAULT'
105939   , p_adr_type_code                => 'S'
105940   , p_component_type               => l_component_type
105941   , p_component_code               => l_component_code
105942   , p_component_type_code          => l_component_type_code
105943   , p_component_appl_id            => l_component_appl_id
105944   , p_amb_context_code             => l_amb_context_code
105945   , p_side                         => 'NA'
105946   );
105947 
105948 
105949    --
105950    --
105951    END IF;
105952 
105953        --
105954        -- Update the line information that should be overwritten
105955        --
105956        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
105957                                          p_header_num   => 1);
105958        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
105959 
105960        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
105961 
105962        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
105963           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
105964        END IF;
105965 
105966       --
105967       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
105968       --
105969       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
105970           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
105971       ELSE
105972           ---------------------------------------------------------------------------------------------------
105973           -- 4262811a Switch Sign
105974           ---------------------------------------------------------------------------------------------------
105975           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
105976           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105977                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105978           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105979                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105980           -- 5132302
105981           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
105982                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105983 
105984       END IF;
105985 
105986       -- 4955764
105987       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105988       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
105989 
105990 
105991       XLA_AE_LINES_PKG.ValidateCurrentLine;
105992       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105993 
105994       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105995                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
105996                ,p_balance_type_code => l_balance_type_code);
105997 
105998    END IF;
105999 
106000    -----------------------------------------------------------------------------------------
106001    -- 4262811 Multiperiod Accounting
106002    -----------------------------------------------------------------------------------------
106003      -- No MPA option is assigned.
106004 
106005 
106006 END IF;
106007 END IF;
106008 --
106009 
106010 --
106011 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106012    trace
106013       (p_msg      => 'END of AcctLineType_192'
106014       ,p_level    => C_LEVEL_PROCEDURE
106015       ,p_module   => l_log_module);
106016 END IF;
106017 --
106018 EXCEPTION
106019   WHEN xla_exceptions_pkg.application_exception THEN
106020       RAISE;
106021   WHEN OTHERS THEN
106022        xla_exceptions_pkg.raise_message
106023            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_192');
106024 END AcctLineType_192;
106025 --
106026 
106027 ---------------------------------------
106028 --
106029 -- PRIVATE FUNCTION
106030 --         AcctLineType_193
106031 --
106032 ---------------------------------------
106033 PROCEDURE AcctLineType_193 (
106034   p_application_id        IN NUMBER
106035  ,p_event_id              IN NUMBER
106036  ,p_calculate_acctd_flag  IN VARCHAR2
106037  ,p_calculate_g_l_flag    IN VARCHAR2
106038  ,p_actual_flag           IN OUT VARCHAR2
106039  ,p_balance_type_code     OUT VARCHAR2
106040  ,p_gain_or_loss_ref      OUT VARCHAR2
106041  
106042 --Cost Management Default Account
106043  , p_source_4            IN NUMBER
106044 --DISTRIBUTION_IDENTIFIER
106045  , p_source_11            IN NUMBER
106046 --Distribution Type
106047  , p_source_12            IN VARCHAR2
106048  , p_source_12_meaning    IN VARCHAR2
106049 --Entered Currency Code
106050  , p_source_15            IN VARCHAR2
106051 --Entered Amount
106052  , p_source_18            IN NUMBER
106053 --Currency Conversion Date
106054  , p_source_19            IN DATE
106055 --Currency Conversion Rate
106056  , p_source_20            IN NUMBER
106057 --Currency Conversion Type
106058  , p_source_21            IN VARCHAR2
106059 --Accounted Amount
106060  , p_source_22            IN NUMBER
106061 --Accounting Line Type
106062  , p_source_24            IN NUMBER
106063 )
106064 IS
106065 
106066 l_component_type              VARCHAR2(80);
106067 l_component_code              VARCHAR2(30);
106068 l_component_type_code         VARCHAR2(1);
106069 l_component_appl_id           INTEGER;
106070 l_amb_context_code            VARCHAR2(30);
106071 l_entity_code                 VARCHAR2(30);
106072 l_event_class_code            VARCHAR2(30);
106073 l_ae_header_id                NUMBER;
106074 l_event_type_code             VARCHAR2(30);
106075 l_line_definition_code        VARCHAR2(30);
106076 l_line_definition_owner_code  VARCHAR2(1);
106077 --
106078 -- adr variables
106079 l_segment                     VARCHAR2(30);
106080 l_ccid                        NUMBER;
106081 l_adr_transaction_coa_id      NUMBER;
106082 l_adr_accounting_coa_id       NUMBER;
106083 l_adr_flexfield_segment_code  VARCHAR2(30);
106084 l_adr_flex_value_set_id       NUMBER;
106085 l_adr_value_type_code         VARCHAR2(30);
106086 l_adr_value_combination_id    NUMBER;
106087 l_adr_value_segment_code      VARCHAR2(30);
106088 
106089 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
106090 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
106091 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
106092 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
106093 
106094 -- 4262811 Variables ------------------------------------------------------------------------------------------
106095 l_entered_amt_idx             NUMBER;
106096 l_accted_amt_idx              NUMBER;
106097 l_acc_rev_flag                VARCHAR2(1);
106098 l_accrual_line_num            NUMBER;
106099 l_tmp_amt                     NUMBER;
106100 l_acc_rev_natural_side_code   VARCHAR2(1);
106101 
106102 l_num_entries                 NUMBER;
106103 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
106104 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
106105 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
106106 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
106107 l_recog_line_1                NUMBER;
106108 l_recog_line_2                NUMBER;
106109 
106110 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
106111 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
106112 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
106113 
106114 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
106115 
106116 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
106117 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
106118 
106119 ---------------------------------------------------------------------------------------------------------------
106120 
106121 
106122 --
106123 -- bulk performance
106124 --
106125 l_balance_type_code           VARCHAR2(1);
106126 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
106127 l_log_module                  VARCHAR2(240);
106128 
106129 --
106130 -- Upgrade strategy
106131 --
106132 l_actual_upg_option           VARCHAR2(1);
106133 l_enc_upg_option           VARCHAR2(1);
106134 
106135 --
106136 BEGIN
106137 --
106138 IF g_log_enabled THEN
106139       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_193';
106140 END IF;
106141 --
106142 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106143 
106144       trace
106145          (p_msg      => 'BEGIN of AcctLineType_193'
106146          ,p_level    => C_LEVEL_PROCEDURE
106147          ,p_module   => l_log_module);
106148 
106149 END IF;
106150 --
106151 l_component_type             := 'AMB_JLT';
106152 l_component_code             := 'OFFSET';
106153 l_component_type_code        := 'S';
106154 l_component_appl_id          :=  707;
106155 l_amb_context_code           := 'DEFAULT';
106156 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
106157 l_event_class_code           := 'MISC_ISSUE_RCPT';
106158 l_event_type_code            := 'MISC_ISSUE_RCPT_ALL';
106159 l_line_definition_owner_code := 'S';
106160 l_line_definition_code       := 'MISC_ISSUE_RCPT';
106161 --
106162 l_balance_type_code          := 'A';
106163 l_segment                     := NULL;
106164 l_ccid                        := NULL;
106165 l_adr_transaction_coa_id      := NULL;
106166 l_adr_accounting_coa_id       := NULL;
106167 l_adr_flexfield_segment_code  := NULL;
106168 l_adr_flex_value_set_id       := NULL;
106169 l_adr_value_type_code         := NULL;
106170 l_adr_value_combination_id    := NULL;
106171 l_adr_value_segment_code      := NULL;
106172 
106173 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
106174 l_bflow_class_code           := '';    -- 4219869 Business Flow
106175 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
106176 l_budgetary_control_flag     := 'N';
106177 
106178 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
106179 l_bflow_applied_to_amt       := NULL; -- 5132302
106180 l_entered_amt_idx            := NULL;          -- 4262811
106181 l_accted_amt_idx             := NULL;          -- 4262811
106182 l_acc_rev_flag               := NULL;          -- 4262811
106183 l_accrual_line_num           := NULL;          -- 4262811
106184 l_tmp_amt                    := NULL;          -- 4262811
106185 --
106186  
106187 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
106188     l_balance_type_code <> 'B' THEN
106189 IF NVL(p_source_24,9E125) =  2
106190  THEN 
106191 
106192    --
106193    XLA_AE_LINES_PKG.SetNewLine;
106194 
106195    p_balance_type_code          := l_balance_type_code;
106196    -- set the flag so later we will know whether the gain loss line needs to be created
106197    
106198    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
106199      p_actual_flag :='A';
106200    END IF;
106201 
106202    --
106203    -- bulk performance
106204    --
106205    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
106206                                       p_header_num   => 0); -- 4262811
106207    --
106208    -- set accounting line options
106209    --
106210    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
106211            p_natural_side_code          => 'D'
106212          , p_gain_or_loss_flag          => 'N'
106213          , p_gl_transfer_mode_code      => 'S'
106214          , p_acct_entry_type_code       => 'A'
106215          , p_switch_side_flag           => 'Y'
106216          , p_merge_duplicate_code       => 'N'
106217          );
106218    --
106219    l_acc_rev_natural_side_code := 'C';  -- 4262811
106220    -- 
106221    --
106222    -- set accounting line type info
106223    --
106224    xla_ae_lines_pkg.SetAcctLineType
106225       (p_component_type             => l_component_type
106226       ,p_event_type_code            => l_event_type_code
106227       ,p_line_definition_owner_code => l_line_definition_owner_code
106228       ,p_line_definition_code       => l_line_definition_code
106229       ,p_accounting_line_code       => l_component_code
106230       ,p_accounting_line_type_code  => l_component_type_code
106231       ,p_accounting_line_appl_id    => l_component_appl_id
106232       ,p_amb_context_code           => l_amb_context_code
106233       ,p_entity_code                => l_entity_code
106234       ,p_event_class_code           => l_event_class_code);
106235    --
106236    -- set accounting class
106237    --
106238    xla_ae_lines_pkg.SetAcctClass(
106239            p_accounting_class_code  => 'OFFSET'
106240          , p_ae_header_id           => l_ae_header_id
106241          );
106242 
106243    --
106244    -- set rounding class
106245    --
106246    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
106247                       'OFFSET';
106248 
106249    --
106250    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
106251    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
106252    --
106253    -- bulk performance
106254    --
106255    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
106256 
106257    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
106258       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
106259 
106260    -- 4955764
106261    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106262       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
106263 
106264    -- 4458381 Public Sector Enh
106265    
106266    --
106267    -- set accounting attributes for the line type
106268    --
106269    l_entered_amt_idx := 3;
106270    l_accted_amt_idx  := 8;
106271    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
106272    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
106273    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
106274    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
106275    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
106276    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
106277    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
106278    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
106279    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
106280    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
106281    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
106282    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
106283    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
106284    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
106285    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
106286    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
106287    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
106288 
106289    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
106290    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
106291 
106292    ---------------------------------------------------------------------------------------------------------------
106293    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
106294    ---------------------------------------------------------------------------------------------------------------
106295    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
106296 
106297    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106298    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106299 
106300    IF xla_accounting_cache_pkg.GetValueChar
106301          (p_source_code         => 'LEDGER_CATEGORY_CODE'
106302          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
106303    AND l_bflow_method_code = 'PRIOR_ENTRY'
106304 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
106305    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
106306          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
106307        )
106308    THEN
106309          xla_ae_lines_pkg.BflowUpgEntry
106310            (p_business_method_code    => l_bflow_method_code
106311            ,p_business_class_code     => l_bflow_class_code
106312            ,p_balance_type            => l_balance_type_code);
106313    ELSE
106314       NULL;
106315 -- No business flow processing for business flow method of NONE.
106316    END IF;
106317 
106318    --
106319    -- call analytical criteria
106320    --
106321    
106322    --
106323    -- call description
106324    --
106325    -- No description or it is inherited.
106326    --
106327    -- call ADRs
106328    -- Bug 4922099
106329    --
106330    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106331         (NVL(l_actual_upg_option, 'N') = 'O') OR
106332         (NVL(l_enc_upg_option, 'N') = 'O')
106333       )
106334    THEN
106335    NULL;
106336    --
106337    --
106338    
106339   l_ccid := AcctDerRule_4(
106340            p_application_id           => p_application_id
106341          , p_ae_header_id             => l_ae_header_id 
106342 , p_source_4 => p_source_4
106343          , x_transaction_coa_id       => l_adr_transaction_coa_id
106344          , x_accounting_coa_id        => l_adr_accounting_coa_id
106345          , x_value_type_code          => l_adr_value_type_code
106346          , p_side                     => 'NA'
106347    );
106348 
106349    xla_ae_lines_pkg.set_ccid(
106350     p_code_combination_id          => l_ccid
106351   , p_value_type_code              => l_adr_value_type_code
106352   , p_transaction_coa_id           => l_adr_transaction_coa_id
106353   , p_accounting_coa_id            => l_adr_accounting_coa_id
106354   , p_adr_code                     => 'CST_DEFAULT'
106355   , p_adr_type_code                => 'S'
106356   , p_component_type               => l_component_type
106357   , p_component_code               => l_component_code
106358   , p_component_type_code          => l_component_type_code
106359   , p_component_appl_id            => l_component_appl_id
106360   , p_amb_context_code             => l_amb_context_code
106361   , p_side                         => 'NA'
106362   );
106363 
106364 
106365    --
106366    --
106367    END IF;
106368    --
106369    -- Bug 4922099
106370    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
106371           (NVL(l_enc_upg_option, 'N') = 'O')
106372         ) AND
106373         (l_bflow_method_code = 'PRIOR_ENTRY')
106374       )
106375    THEN
106376       IF
106377       --
106378       1 = 2
106379       --
106380       THEN
106381       xla_accounting_err_pkg.build_message
106382                                     (p_appli_s_name            => 'XLA'
106383                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106384                                     ,p_token_1                 => 'LINE_NUMBER'
106385                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
106386                                     ,p_token_2                 => 'LINE_TYPE_NAME'
106387                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
106388                                                                              l_component_type
106389                                                                             ,l_component_code
106390                                                                             ,l_component_type_code
106391                                                                             ,l_component_appl_id
106392                                                                             ,l_amb_context_code
106393                                                                             ,l_entity_code
106394                                                                             ,l_event_class_code
106395                                                                            )
106396                                     ,p_token_3                 => 'OWNER'
106397                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
106398                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
106399                                                                           ,p_lookup_code    => l_component_type_code
106400                                                                          )
106401                                     ,p_token_4                 => 'PRODUCT_NAME'
106402                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
106403                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
106404                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
106405                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
106406                                     ,p_ae_header_id            =>  NULL
106407                                        );
106408 
106409         IF (C_LEVEL_ERROR>= g_log_level) THEN
106410                  trace
106411                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106412                       ,p_level    => C_LEVEL_ERROR
106413                       ,p_module   => l_log_module);
106414         END IF;
106415       END IF;
106416    END IF;
106417    --
106418    --
106419    ------------------------------------------------------------------------------------------------
106420    -- 4219869 Business Flow
106421    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
106422    -- Prior Entry.  Currently, the following code is always generated.
106423    ------------------------------------------------------------------------------------------------
106424    XLA_AE_LINES_PKG.ValidateCurrentLine;
106425 
106426    ------------------------------------------------------------------------------------
106427    -- 4219869 Business Flow
106428    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
106429    ------------------------------------------------------------------------------------
106430    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106431 
106432    ----------------------------------------------------------------------------------
106433    -- 4219869 Business Flow
106434    -- Update journal entry status -- Need to generate this within IF <condition>
106435    ----------------------------------------------------------------------------------
106436    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106437          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
106438          ,p_balance_type_code => l_balance_type_code
106439          );
106440 
106441    -------------------------------------------------------------------------------------------
106442    -- 4262811 - Generate the Accrual Reversal lines
106443    -------------------------------------------------------------------------------------------
106444    BEGIN
106445       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
106446                               (g_array_event(p_event_id).array_value_num('header_index'));
106447       IF l_acc_rev_flag IS NULL THEN
106448          l_acc_rev_flag := 'N';
106449       END IF;
106450    EXCEPTION
106451       WHEN OTHERS THEN
106452          l_acc_rev_flag := 'N';
106453    END;
106454    --
106455    IF (l_acc_rev_flag = 'Y') THEN
106456 
106457        -- 4645092  ------------------------------------------------------------------------------
106458        -- To allow MPA report to determine if it should generate report process
106459        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
106460        ------------------------------------------------------------------------------------------
106461 
106462        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
106463        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
106464    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
106465    -- call ADRs
106466    -- Bug 4922099
106467    --
106468    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106469         (NVL(l_actual_upg_option, 'N') = 'O') OR
106470         (NVL(l_enc_upg_option, 'N') = 'O')
106471       )
106472    THEN
106473    NULL;
106474    --
106475    --
106476    
106477   l_ccid := AcctDerRule_4(
106478            p_application_id           => p_application_id
106479          , p_ae_header_id             => l_ae_header_id 
106480 , p_source_4 => p_source_4
106481          , x_transaction_coa_id       => l_adr_transaction_coa_id
106482          , x_accounting_coa_id        => l_adr_accounting_coa_id
106483          , x_value_type_code          => l_adr_value_type_code
106484          , p_side                     => 'NA'
106485    );
106486 
106487    xla_ae_lines_pkg.set_ccid(
106488     p_code_combination_id          => l_ccid
106489   , p_value_type_code              => l_adr_value_type_code
106490   , p_transaction_coa_id           => l_adr_transaction_coa_id
106491   , p_accounting_coa_id            => l_adr_accounting_coa_id
106492   , p_adr_code                     => 'CST_DEFAULT'
106493   , p_adr_type_code                => 'S'
106494   , p_component_type               => l_component_type
106495   , p_component_code               => l_component_code
106496   , p_component_type_code          => l_component_type_code
106497   , p_component_appl_id            => l_component_appl_id
106498   , p_amb_context_code             => l_amb_context_code
106499   , p_side                         => 'NA'
106500   );
106501 
106502 
106503    --
106504    --
106505    END IF;
106506 
106507        --
106508        -- Update the line information that should be overwritten
106509        --
106510        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
106511                                          p_header_num   => 1);
106512        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
106513 
106514        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
106515 
106516        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
106517           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
106518        END IF;
106519 
106520       --
106521       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
106522       --
106523       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
106524           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
106525       ELSE
106526           ---------------------------------------------------------------------------------------------------
106527           -- 4262811a Switch Sign
106528           ---------------------------------------------------------------------------------------------------
106529           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
106530           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106531                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106532           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106533                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106534           -- 5132302
106535           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
106536                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106537 
106538       END IF;
106539 
106540       -- 4955764
106541       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106542       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
106543 
106544 
106545       XLA_AE_LINES_PKG.ValidateCurrentLine;
106546       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106547 
106548       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106549                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
106550                ,p_balance_type_code => l_balance_type_code);
106551 
106552    END IF;
106553 
106554    -----------------------------------------------------------------------------------------
106555    -- 4262811 Multiperiod Accounting
106556    -----------------------------------------------------------------------------------------
106557      -- No MPA option is assigned.
106558 
106559 
106560 END IF;
106561 END IF;
106562 --
106563 
106564 --
106565 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106566    trace
106567       (p_msg      => 'END of AcctLineType_193'
106568       ,p_level    => C_LEVEL_PROCEDURE
106569       ,p_module   => l_log_module);
106570 END IF;
106571 --
106572 EXCEPTION
106573   WHEN xla_exceptions_pkg.application_exception THEN
106574       RAISE;
106575   WHEN OTHERS THEN
106576        xla_exceptions_pkg.raise_message
106577            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_193');
106578 END AcctLineType_193;
106579 --
106580 
106581 ---------------------------------------
106582 --
106583 -- PRIVATE FUNCTION
106584 --         AcctLineType_194
106585 --
106586 ---------------------------------------
106587 PROCEDURE AcctLineType_194 (
106588   p_application_id        IN NUMBER
106589  ,p_event_id              IN NUMBER
106590  ,p_calculate_acctd_flag  IN VARCHAR2
106591  ,p_calculate_g_l_flag    IN VARCHAR2
106592  ,p_actual_flag           IN OUT VARCHAR2
106593  ,p_balance_type_code     OUT VARCHAR2
106594  ,p_gain_or_loss_ref      OUT VARCHAR2
106595  
106596 --Cost Management Default Account
106597  , p_source_4            IN NUMBER
106598 --DISTRIBUTION_IDENTIFIER
106599  , p_source_11            IN NUMBER
106600 --Distribution Type
106601  , p_source_12            IN VARCHAR2
106602  , p_source_12_meaning    IN VARCHAR2
106603 --Entered Currency Code
106604  , p_source_15            IN VARCHAR2
106605 --Entered Amount
106606  , p_source_18            IN NUMBER
106607 --Currency Conversion Date
106608  , p_source_19            IN DATE
106609 --Currency Conversion Rate
106610  , p_source_20            IN NUMBER
106611 --Currency Conversion Type
106612  , p_source_21            IN VARCHAR2
106613 --Accounted Amount
106614  , p_source_22            IN NUMBER
106615 --Accounting Line Type
106616  , p_source_24            IN NUMBER
106617 )
106618 IS
106619 
106620 l_component_type              VARCHAR2(80);
106621 l_component_code              VARCHAR2(30);
106622 l_component_type_code         VARCHAR2(1);
106623 l_component_appl_id           INTEGER;
106624 l_amb_context_code            VARCHAR2(30);
106625 l_entity_code                 VARCHAR2(30);
106626 l_event_class_code            VARCHAR2(30);
106627 l_ae_header_id                NUMBER;
106628 l_event_type_code             VARCHAR2(30);
106629 l_line_definition_code        VARCHAR2(30);
106630 l_line_definition_owner_code  VARCHAR2(1);
106631 --
106632 -- adr variables
106633 l_segment                     VARCHAR2(30);
106634 l_ccid                        NUMBER;
106635 l_adr_transaction_coa_id      NUMBER;
106636 l_adr_accounting_coa_id       NUMBER;
106637 l_adr_flexfield_segment_code  VARCHAR2(30);
106638 l_adr_flex_value_set_id       NUMBER;
106639 l_adr_value_type_code         VARCHAR2(30);
106640 l_adr_value_combination_id    NUMBER;
106641 l_adr_value_segment_code      VARCHAR2(30);
106642 
106643 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
106644 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
106645 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
106646 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
106647 
106648 -- 4262811 Variables ------------------------------------------------------------------------------------------
106649 l_entered_amt_idx             NUMBER;
106650 l_accted_amt_idx              NUMBER;
106651 l_acc_rev_flag                VARCHAR2(1);
106652 l_accrual_line_num            NUMBER;
106653 l_tmp_amt                     NUMBER;
106654 l_acc_rev_natural_side_code   VARCHAR2(1);
106655 
106656 l_num_entries                 NUMBER;
106657 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
106658 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
106659 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
106660 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
106661 l_recog_line_1                NUMBER;
106662 l_recog_line_2                NUMBER;
106663 
106664 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
106665 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
106666 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
106667 
106668 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
106669 
106670 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
106671 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
106672 
106673 ---------------------------------------------------------------------------------------------------------------
106674 
106675 
106676 --
106677 -- bulk performance
106678 --
106679 l_balance_type_code           VARCHAR2(1);
106680 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
106681 l_log_module                  VARCHAR2(240);
106682 
106683 --
106684 -- Upgrade strategy
106685 --
106686 l_actual_upg_option           VARCHAR2(1);
106687 l_enc_upg_option           VARCHAR2(1);
106688 
106689 --
106690 BEGIN
106691 --
106692 IF g_log_enabled THEN
106693       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_194';
106694 END IF;
106695 --
106696 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106697 
106698       trace
106699          (p_msg      => 'BEGIN of AcctLineType_194'
106700          ,p_level    => C_LEVEL_PROCEDURE
106701          ,p_module   => l_log_module);
106702 
106703 END IF;
106704 --
106705 l_component_type             := 'AMB_JLT';
106706 l_component_code             := 'OFFSET';
106707 l_component_type_code        := 'S';
106708 l_component_appl_id          :=  707;
106709 l_amb_context_code           := 'DEFAULT';
106710 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
106711 l_event_class_code           := 'USER_DEFINE';
106712 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
106713 l_line_definition_owner_code := 'S';
106714 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
106715 --
106716 l_balance_type_code          := 'A';
106717 l_segment                     := NULL;
106718 l_ccid                        := NULL;
106719 l_adr_transaction_coa_id      := NULL;
106720 l_adr_accounting_coa_id       := NULL;
106721 l_adr_flexfield_segment_code  := NULL;
106722 l_adr_flex_value_set_id       := NULL;
106723 l_adr_value_type_code         := NULL;
106724 l_adr_value_combination_id    := NULL;
106725 l_adr_value_segment_code      := NULL;
106726 
106727 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
106728 l_bflow_class_code           := '';    -- 4219869 Business Flow
106729 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
106730 l_budgetary_control_flag     := 'N';
106731 
106732 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
106733 l_bflow_applied_to_amt       := NULL; -- 5132302
106734 l_entered_amt_idx            := NULL;          -- 4262811
106735 l_accted_amt_idx             := NULL;          -- 4262811
106736 l_acc_rev_flag               := NULL;          -- 4262811
106737 l_accrual_line_num           := NULL;          -- 4262811
106738 l_tmp_amt                    := NULL;          -- 4262811
106739 --
106740  
106741 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
106742     l_balance_type_code <> 'B' THEN
106743 IF NVL(p_source_24,9E125) =  2
106744  THEN 
106745 
106746    --
106747    XLA_AE_LINES_PKG.SetNewLine;
106748 
106749    p_balance_type_code          := l_balance_type_code;
106750    -- set the flag so later we will know whether the gain loss line needs to be created
106751    
106752    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
106753      p_actual_flag :='A';
106754    END IF;
106755 
106756    --
106757    -- bulk performance
106758    --
106759    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
106760                                       p_header_num   => 0); -- 4262811
106761    --
106762    -- set accounting line options
106763    --
106764    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
106765            p_natural_side_code          => 'D'
106766          , p_gain_or_loss_flag          => 'N'
106767          , p_gl_transfer_mode_code      => 'S'
106768          , p_acct_entry_type_code       => 'A'
106769          , p_switch_side_flag           => 'Y'
106770          , p_merge_duplicate_code       => 'N'
106771          );
106772    --
106773    l_acc_rev_natural_side_code := 'C';  -- 4262811
106774    -- 
106775    --
106776    -- set accounting line type info
106777    --
106778    xla_ae_lines_pkg.SetAcctLineType
106779       (p_component_type             => l_component_type
106780       ,p_event_type_code            => l_event_type_code
106781       ,p_line_definition_owner_code => l_line_definition_owner_code
106782       ,p_line_definition_code       => l_line_definition_code
106783       ,p_accounting_line_code       => l_component_code
106784       ,p_accounting_line_type_code  => l_component_type_code
106785       ,p_accounting_line_appl_id    => l_component_appl_id
106786       ,p_amb_context_code           => l_amb_context_code
106787       ,p_entity_code                => l_entity_code
106788       ,p_event_class_code           => l_event_class_code);
106789    --
106790    -- set accounting class
106791    --
106792    xla_ae_lines_pkg.SetAcctClass(
106793            p_accounting_class_code  => 'OFFSET'
106794          , p_ae_header_id           => l_ae_header_id
106795          );
106796 
106797    --
106798    -- set rounding class
106799    --
106800    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
106801                       'OFFSET';
106802 
106803    --
106804    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
106805    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
106806    --
106807    -- bulk performance
106808    --
106809    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
106810 
106811    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
106812       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
106813 
106814    -- 4955764
106815    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106816       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
106817 
106818    -- 4458381 Public Sector Enh
106819    
106820    --
106821    -- set accounting attributes for the line type
106822    --
106823    l_entered_amt_idx := 3;
106824    l_accted_amt_idx  := 8;
106825    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
106826    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
106827    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
106828    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
106829    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
106830    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
106831    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
106832    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
106833    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
106834    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
106835    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
106836    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
106837    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
106838    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
106839    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
106840    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
106841    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
106842 
106843    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
106844    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
106845 
106846    ---------------------------------------------------------------------------------------------------------------
106847    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
106848    ---------------------------------------------------------------------------------------------------------------
106849    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
106850 
106851    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106852    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106853 
106854    IF xla_accounting_cache_pkg.GetValueChar
106855          (p_source_code         => 'LEDGER_CATEGORY_CODE'
106856          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
106857    AND l_bflow_method_code = 'PRIOR_ENTRY'
106858 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
106859    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
106860          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
106861        )
106862    THEN
106863          xla_ae_lines_pkg.BflowUpgEntry
106864            (p_business_method_code    => l_bflow_method_code
106865            ,p_business_class_code     => l_bflow_class_code
106866            ,p_balance_type            => l_balance_type_code);
106867    ELSE
106868       NULL;
106869 -- No business flow processing for business flow method of NONE.
106870    END IF;
106871 
106872    --
106873    -- call analytical criteria
106874    --
106875    
106876    --
106877    -- call description
106878    --
106879    -- No description or it is inherited.
106880    --
106881    -- call ADRs
106882    -- Bug 4922099
106883    --
106884    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106885         (NVL(l_actual_upg_option, 'N') = 'O') OR
106886         (NVL(l_enc_upg_option, 'N') = 'O')
106887       )
106888    THEN
106889    NULL;
106890    --
106891    --
106892    
106893   l_ccid := AcctDerRule_4(
106894            p_application_id           => p_application_id
106895          , p_ae_header_id             => l_ae_header_id 
106896 , p_source_4 => p_source_4
106897          , x_transaction_coa_id       => l_adr_transaction_coa_id
106898          , x_accounting_coa_id        => l_adr_accounting_coa_id
106899          , x_value_type_code          => l_adr_value_type_code
106900          , p_side                     => 'NA'
106901    );
106902 
106903    xla_ae_lines_pkg.set_ccid(
106904     p_code_combination_id          => l_ccid
106905   , p_value_type_code              => l_adr_value_type_code
106906   , p_transaction_coa_id           => l_adr_transaction_coa_id
106907   , p_accounting_coa_id            => l_adr_accounting_coa_id
106908   , p_adr_code                     => 'CST_DEFAULT'
106909   , p_adr_type_code                => 'S'
106910   , p_component_type               => l_component_type
106911   , p_component_code               => l_component_code
106912   , p_component_type_code          => l_component_type_code
106913   , p_component_appl_id            => l_component_appl_id
106914   , p_amb_context_code             => l_amb_context_code
106915   , p_side                         => 'NA'
106916   );
106917 
106918 
106919    --
106920    --
106921    END IF;
106922    --
106923    -- Bug 4922099
106924    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
106925           (NVL(l_enc_upg_option, 'N') = 'O')
106926         ) AND
106927         (l_bflow_method_code = 'PRIOR_ENTRY')
106928       )
106929    THEN
106930       IF
106931       --
106932       1 = 2
106933       --
106934       THEN
106935       xla_accounting_err_pkg.build_message
106936                                     (p_appli_s_name            => 'XLA'
106937                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106938                                     ,p_token_1                 => 'LINE_NUMBER'
106939                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
106940                                     ,p_token_2                 => 'LINE_TYPE_NAME'
106941                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
106942                                                                              l_component_type
106943                                                                             ,l_component_code
106944                                                                             ,l_component_type_code
106945                                                                             ,l_component_appl_id
106946                                                                             ,l_amb_context_code
106947                                                                             ,l_entity_code
106948                                                                             ,l_event_class_code
106949                                                                            )
106950                                     ,p_token_3                 => 'OWNER'
106951                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
106952                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
106953                                                                           ,p_lookup_code    => l_component_type_code
106954                                                                          )
106955                                     ,p_token_4                 => 'PRODUCT_NAME'
106956                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
106957                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
106958                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
106959                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
106960                                     ,p_ae_header_id            =>  NULL
106961                                        );
106962 
106963         IF (C_LEVEL_ERROR>= g_log_level) THEN
106964                  trace
106965                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106966                       ,p_level    => C_LEVEL_ERROR
106967                       ,p_module   => l_log_module);
106968         END IF;
106969       END IF;
106970    END IF;
106971    --
106972    --
106973    ------------------------------------------------------------------------------------------------
106974    -- 4219869 Business Flow
106975    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
106976    -- Prior Entry.  Currently, the following code is always generated.
106977    ------------------------------------------------------------------------------------------------
106978    XLA_AE_LINES_PKG.ValidateCurrentLine;
106979 
106980    ------------------------------------------------------------------------------------
106981    -- 4219869 Business Flow
106982    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
106983    ------------------------------------------------------------------------------------
106984    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106985 
106986    ----------------------------------------------------------------------------------
106987    -- 4219869 Business Flow
106988    -- Update journal entry status -- Need to generate this within IF <condition>
106989    ----------------------------------------------------------------------------------
106990    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106991          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
106992          ,p_balance_type_code => l_balance_type_code
106993          );
106994 
106995    -------------------------------------------------------------------------------------------
106996    -- 4262811 - Generate the Accrual Reversal lines
106997    -------------------------------------------------------------------------------------------
106998    BEGIN
106999       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
107000                               (g_array_event(p_event_id).array_value_num('header_index'));
107001       IF l_acc_rev_flag IS NULL THEN
107002          l_acc_rev_flag := 'N';
107003       END IF;
107004    EXCEPTION
107005       WHEN OTHERS THEN
107006          l_acc_rev_flag := 'N';
107007    END;
107008    --
107009    IF (l_acc_rev_flag = 'Y') THEN
107010 
107011        -- 4645092  ------------------------------------------------------------------------------
107012        -- To allow MPA report to determine if it should generate report process
107013        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
107014        ------------------------------------------------------------------------------------------
107015 
107016        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
107017        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
107018    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
107019    -- call ADRs
107020    -- Bug 4922099
107021    --
107022    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107023         (NVL(l_actual_upg_option, 'N') = 'O') OR
107024         (NVL(l_enc_upg_option, 'N') = 'O')
107025       )
107026    THEN
107027    NULL;
107028    --
107029    --
107030    
107031   l_ccid := AcctDerRule_4(
107032            p_application_id           => p_application_id
107033          , p_ae_header_id             => l_ae_header_id 
107034 , p_source_4 => p_source_4
107035          , x_transaction_coa_id       => l_adr_transaction_coa_id
107036          , x_accounting_coa_id        => l_adr_accounting_coa_id
107037          , x_value_type_code          => l_adr_value_type_code
107038          , p_side                     => 'NA'
107039    );
107040 
107041    xla_ae_lines_pkg.set_ccid(
107042     p_code_combination_id          => l_ccid
107043   , p_value_type_code              => l_adr_value_type_code
107044   , p_transaction_coa_id           => l_adr_transaction_coa_id
107045   , p_accounting_coa_id            => l_adr_accounting_coa_id
107046   , p_adr_code                     => 'CST_DEFAULT'
107047   , p_adr_type_code                => 'S'
107048   , p_component_type               => l_component_type
107049   , p_component_code               => l_component_code
107050   , p_component_type_code          => l_component_type_code
107051   , p_component_appl_id            => l_component_appl_id
107052   , p_amb_context_code             => l_amb_context_code
107053   , p_side                         => 'NA'
107054   );
107055 
107056 
107057    --
107058    --
107059    END IF;
107060 
107061        --
107062        -- Update the line information that should be overwritten
107063        --
107064        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
107065                                          p_header_num   => 1);
107066        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
107067 
107068        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
107069 
107070        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
107071           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
107072        END IF;
107073 
107074       --
107075       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
107076       --
107077       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
107078           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
107079       ELSE
107080           ---------------------------------------------------------------------------------------------------
107081           -- 4262811a Switch Sign
107082           ---------------------------------------------------------------------------------------------------
107083           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
107084           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107085                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107086           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107087                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107088           -- 5132302
107089           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
107090                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107091 
107092       END IF;
107093 
107094       -- 4955764
107095       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107096       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
107097 
107098 
107099       XLA_AE_LINES_PKG.ValidateCurrentLine;
107100       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107101 
107102       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107103                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
107104                ,p_balance_type_code => l_balance_type_code);
107105 
107106    END IF;
107107 
107108    -----------------------------------------------------------------------------------------
107109    -- 4262811 Multiperiod Accounting
107110    -----------------------------------------------------------------------------------------
107111      -- No MPA option is assigned.
107112 
107113 
107114 END IF;
107115 END IF;
107116 --
107117 
107118 --
107119 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107120    trace
107121       (p_msg      => 'END of AcctLineType_194'
107122       ,p_level    => C_LEVEL_PROCEDURE
107123       ,p_module   => l_log_module);
107124 END IF;
107125 --
107126 EXCEPTION
107127   WHEN xla_exceptions_pkg.application_exception THEN
107128       RAISE;
107129   WHEN OTHERS THEN
107130        xla_exceptions_pkg.raise_message
107131            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_194');
107132 END AcctLineType_194;
107133 --
107134 
107135 ---------------------------------------
107136 --
107137 -- PRIVATE FUNCTION
107138 --         AcctLineType_195
107139 --
107140 ---------------------------------------
107141 PROCEDURE AcctLineType_195 (
107142   p_application_id        IN NUMBER
107143  ,p_event_id              IN NUMBER
107144  ,p_calculate_acctd_flag  IN VARCHAR2
107145  ,p_calculate_g_l_flag    IN VARCHAR2
107146  ,p_actual_flag           IN OUT VARCHAR2
107147  ,p_balance_type_code     OUT VARCHAR2
107148  ,p_gain_or_loss_ref      OUT VARCHAR2
107149  
107150 --Cost Management Default Account
107151  , p_source_4            IN NUMBER
107152 --DISTRIBUTION_IDENTIFIER
107153  , p_source_11            IN NUMBER
107154 --Distribution Type
107155  , p_source_12            IN VARCHAR2
107156  , p_source_12_meaning    IN VARCHAR2
107157 --Entered Currency Code
107158  , p_source_15            IN VARCHAR2
107159 --Entered Amount
107160  , p_source_18            IN NUMBER
107161 --Currency Conversion Date
107162  , p_source_19            IN DATE
107163 --Currency Conversion Rate
107164  , p_source_20            IN NUMBER
107165 --Currency Conversion Type
107166  , p_source_21            IN VARCHAR2
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                := 'MTL_ACCOUNTING_EVENTS';
107265 l_event_class_code           := 'USER_DEFINE';
107266 l_event_type_code            := 'UMISC_RCPT';
107267 l_line_definition_owner_code := 'S';
107268 l_line_definition_code       := 'USER_RCPT';
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_char_value(7)  := p_source_21;
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_000007_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_SHIP_RECIPIENT_SHIP';
107820 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
107821 l_line_definition_owner_code := 'S';
107822 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
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_000007_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           := 'USER_DEFINE';
108375 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
108376 l_line_definition_owner_code := 'S';
108377 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
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_000007_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           := 'USER_DEFINE';
108929 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
108930 l_line_definition_owner_code := 'S';
108931 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_NO_TP';
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_000007_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           := 'USER_DEFINE';
109483 l_event_type_code            := 'UFOB_RCPT_SENDER_SHIP';
109484 l_line_definition_owner_code := 'S';
109485 l_line_definition_code       := 'USER_FOB_RCPT_SENDER_SHIP';
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_000007_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           := 'USER_DEFINE';
110037 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_TP';
110038 l_line_definition_owner_code := 'S';
110039 l_line_definition_code       := 'USER_FOB_SHIP_SENDER_SHIP_TP';
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_000007_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           := 'WIP_MTL';
110591 l_event_type_code            := 'WIP_MTL_ALL';
110592 l_line_definition_owner_code := 'S';
110593 l_line_definition_code       := 'WIP_MTL';
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_000007_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 --Applied to Application ID
111032  , p_source_6            IN NUMBER
111033 --Applied to Distribution Link Type
111034  , p_source_7            IN VARCHAR2
111035 --Applied to Entity Code
111036  , p_source_8            IN VARCHAR2
111037 --DISTRIBUTION_IDENTIFIER
111038  , p_source_11            IN NUMBER
111039 --Distribution Type
111040  , p_source_12            IN VARCHAR2
111041  , p_source_12_meaning    IN VARCHAR2
111042 --Encumbrance Reversal Amount Entered
111043  , p_source_14            IN NUMBER
111044 --Entered Currency Code
111045  , p_source_15            IN VARCHAR2
111046 --Transaction Encumbrance Reversal Amount
111047  , p_source_16            IN NUMBER
111048 --Entered Amount
111049  , p_source_18            IN NUMBER
111050 --Currency Conversion Date
111051  , p_source_19            IN DATE
111052 --Currency Conversion Rate
111053  , p_source_20            IN NUMBER
111054 --Currency Conversion Type
111055  , p_source_21            IN VARCHAR2
111056 --Accounted Amount
111057  , p_source_22            IN NUMBER
111058 --Accounting Line Type
111059  , p_source_24            IN NUMBER
111060 --Costing Encumbrance Upgrade Option
111061  , p_source_27            IN VARCHAR2
111062 --TXN_PO_DISTRIBUTION_ID
111063  , p_source_28            IN NUMBER
111064 --TXN_PO_HEADER_ID
111065  , p_source_29            IN NUMBER
111066 --Requisition Budget Account
111067  , p_source_30            IN NUMBER
111068 --Requisition Encumbrance Type Identifier
111069  , p_source_31            IN NUMBER
111070 )
111071 IS
111072 
111073 l_component_type              VARCHAR2(80);
111074 l_component_code              VARCHAR2(30);
111075 l_component_type_code         VARCHAR2(1);
111076 l_component_appl_id           INTEGER;
111077 l_amb_context_code            VARCHAR2(30);
111078 l_entity_code                 VARCHAR2(30);
111079 l_event_class_code            VARCHAR2(30);
111080 l_ae_header_id                NUMBER;
111081 l_event_type_code             VARCHAR2(30);
111082 l_line_definition_code        VARCHAR2(30);
111083 l_line_definition_owner_code  VARCHAR2(1);
111084 --
111085 -- adr variables
111086 l_segment                     VARCHAR2(30);
111087 l_ccid                        NUMBER;
111088 l_adr_transaction_coa_id      NUMBER;
111089 l_adr_accounting_coa_id       NUMBER;
111090 l_adr_flexfield_segment_code  VARCHAR2(30);
111091 l_adr_flex_value_set_id       NUMBER;
111092 l_adr_value_type_code         VARCHAR2(30);
111093 l_adr_value_combination_id    NUMBER;
111094 l_adr_value_segment_code      VARCHAR2(30);
111095 
111096 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
111097 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
111098 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
111099 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
111100 
111101 -- 4262811 Variables ------------------------------------------------------------------------------------------
111102 l_entered_amt_idx             NUMBER;
111103 l_accted_amt_idx              NUMBER;
111104 l_acc_rev_flag                VARCHAR2(1);
111105 l_accrual_line_num            NUMBER;
111106 l_tmp_amt                     NUMBER;
111107 l_acc_rev_natural_side_code   VARCHAR2(1);
111108 
111109 l_num_entries                 NUMBER;
111110 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
111111 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
111112 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
111113 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
111114 l_recog_line_1                NUMBER;
111115 l_recog_line_2                NUMBER;
111116 
111117 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
111118 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
111119 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
111120 
111121 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
111122 
111123 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
111124 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
111125 
111126 ---------------------------------------------------------------------------------------------------------------
111127 
111128 
111129 --
111130 -- bulk performance
111131 --
111132 l_balance_type_code           VARCHAR2(1);
111133 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
111134 l_log_module                  VARCHAR2(240);
111135 
111136 --
111137 -- Upgrade strategy
111138 --
111139 l_actual_upg_option           VARCHAR2(1);
111140 l_enc_upg_option           VARCHAR2(1);
111141 
111142 --
111143 BEGIN
111144 --
111145 IF g_log_enabled THEN
111146       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_202';
111147 END IF;
111148 --
111149 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111150 
111151       trace
111152          (p_msg      => 'BEGIN of AcctLineType_202'
111153          ,p_level    => C_LEVEL_PROCEDURE
111154          ,p_module   => l_log_module);
111155 
111156 END IF;
111157 --
111158 l_component_type             := 'AMB_JLT';
111159 l_component_code             := 'OFFSET';
111160 l_component_type_code        := 'S';
111161 l_component_appl_id          :=  707;
111162 l_amb_context_code           := 'DEFAULT';
111163 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
111164 l_event_class_code           := 'FOB_SHIP_RECIPIENT_RCPT';
111165 l_event_type_code            := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
111166 l_line_definition_owner_code := 'S';
111167 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_RCPT';
111168 --
111169 l_balance_type_code          := 'A';
111170 l_segment                     := NULL;
111171 l_ccid                        := NULL;
111172 l_adr_transaction_coa_id      := NULL;
111173 l_adr_accounting_coa_id       := NULL;
111174 l_adr_flexfield_segment_code  := NULL;
111175 l_adr_flex_value_set_id       := NULL;
111176 l_adr_value_type_code         := NULL;
111177 l_adr_value_combination_id    := NULL;
111178 l_adr_value_segment_code      := NULL;
111179 
111180 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
111181 l_bflow_class_code           := '';    -- 4219869 Business Flow
111182 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
111183 l_budgetary_control_flag     := 'N';
111184 
111185 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
111186 l_bflow_applied_to_amt       := NULL; -- 5132302
111187 l_entered_amt_idx            := NULL;          -- 4262811
111188 l_accted_amt_idx             := NULL;          -- 4262811
111189 l_acc_rev_flag               := NULL;          -- 4262811
111190 l_accrual_line_num           := NULL;          -- 4262811
111191 l_tmp_amt                    := NULL;          -- 4262811
111192 --
111193  
111194 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
111195     l_balance_type_code <> 'B' THEN
111196 IF NVL(p_source_24,9E125) =  2
111197  THEN 
111198 
111199    --
111200    XLA_AE_LINES_PKG.SetNewLine;
111201 
111202    p_balance_type_code          := l_balance_type_code;
111203    -- set the flag so later we will know whether the gain loss line needs to be created
111204    
111205    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
111206      p_actual_flag :='A';
111207    END IF;
111208 
111209    --
111210    -- bulk performance
111211    --
111212    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
111213                                       p_header_num   => 0); -- 4262811
111214    --
111215    -- set accounting line options
111216    --
111217    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
111218            p_natural_side_code          => 'D'
111219          , p_gain_or_loss_flag          => 'N'
111220          , p_gl_transfer_mode_code      => 'S'
111221          , p_acct_entry_type_code       => 'A'
111222          , p_switch_side_flag           => 'Y'
111223          , p_merge_duplicate_code       => 'N'
111224          );
111225    --
111226    l_acc_rev_natural_side_code := 'C';  -- 4262811
111227    -- 
111228    --
111229    -- set accounting line type info
111230    --
111231    xla_ae_lines_pkg.SetAcctLineType
111232       (p_component_type             => l_component_type
111233       ,p_event_type_code            => l_event_type_code
111234       ,p_line_definition_owner_code => l_line_definition_owner_code
111235       ,p_line_definition_code       => l_line_definition_code
111236       ,p_accounting_line_code       => l_component_code
111237       ,p_accounting_line_type_code  => l_component_type_code
111238       ,p_accounting_line_appl_id    => l_component_appl_id
111239       ,p_amb_context_code           => l_amb_context_code
111240       ,p_entity_code                => l_entity_code
111241       ,p_event_class_code           => l_event_class_code);
111242    --
111243    -- set accounting class
111244    --
111245    xla_ae_lines_pkg.SetAcctClass(
111246            p_accounting_class_code  => 'OFFSET'
111247          , p_ae_header_id           => l_ae_header_id
111248          );
111249 
111250    --
111251    -- set rounding class
111252    --
111253    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
111254                       'OFFSET';
111255 
111256    --
111257    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
111258    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
111259    --
111260    -- bulk performance
111261    --
111262    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
111263 
111264    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
111265       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
111266 
111267    -- 4955764
111268    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111269       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
111270 
111271    -- 4458381 Public Sector Enh
111272    
111273    --
111274    -- set accounting attributes for the line type
111275    --
111276    l_entered_amt_idx := 17;
111277    l_accted_amt_idx  := 22;
111278    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
111279    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
111280    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
111281    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
111282    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
111283    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
111284    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
111285    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
111286    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
111287    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
111288    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
111289    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
111290    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
111291    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
111292    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
111293    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
111294    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
111295    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
111296    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
111297    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
111298    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
111299    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
111300    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
111301    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
111302    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
111303    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
111304    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
111305    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
111306    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
111307    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
111308    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
111309    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
111310    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
111311    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
111312    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
111313    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
111314    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
111315    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
111316    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
111317    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
111318    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
111319    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
111320    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
111321    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
111322    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
111323    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
111324    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
111325    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
111326    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
111327 
111328    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
111329    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
111330 
111331    ---------------------------------------------------------------------------------------------------------------
111332    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
111333    ---------------------------------------------------------------------------------------------------------------
111334    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
111335 
111336    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111337    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111338 
111339    IF xla_accounting_cache_pkg.GetValueChar
111340          (p_source_code         => 'LEDGER_CATEGORY_CODE'
111341          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
111342    AND l_bflow_method_code = 'PRIOR_ENTRY'
111343 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
111344    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
111345          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
111346        )
111347    THEN
111348          xla_ae_lines_pkg.BflowUpgEntry
111349            (p_business_method_code    => l_bflow_method_code
111350            ,p_business_class_code     => l_bflow_class_code
111351            ,p_balance_type            => l_balance_type_code);
111352    ELSE
111353       NULL;
111354 -- No business flow processing for business flow method of NONE.
111355    END IF;
111356 
111357    --
111358    -- call analytical criteria
111359    --
111360    
111361    --
111362    -- call description
111363    --
111364    -- No description or it is inherited.
111365    --
111366    -- call ADRs
111367    -- Bug 4922099
111368    --
111369    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111370         (NVL(l_actual_upg_option, 'N') = 'O') OR
111371         (NVL(l_enc_upg_option, 'N') = 'O')
111372       )
111373    THEN
111374    NULL;
111375    --
111376    --
111377    
111378   l_ccid := AcctDerRule_4(
111379            p_application_id           => p_application_id
111380          , p_ae_header_id             => l_ae_header_id 
111381 , p_source_4 => p_source_4
111382          , x_transaction_coa_id       => l_adr_transaction_coa_id
111383          , x_accounting_coa_id        => l_adr_accounting_coa_id
111384          , x_value_type_code          => l_adr_value_type_code
111385          , p_side                     => 'NA'
111386    );
111387 
111388    xla_ae_lines_pkg.set_ccid(
111389     p_code_combination_id          => l_ccid
111390   , p_value_type_code              => l_adr_value_type_code
111391   , p_transaction_coa_id           => l_adr_transaction_coa_id
111392   , p_accounting_coa_id            => l_adr_accounting_coa_id
111393   , p_adr_code                     => 'CST_DEFAULT'
111394   , p_adr_type_code                => 'S'
111395   , p_component_type               => l_component_type
111396   , p_component_code               => l_component_code
111397   , p_component_type_code          => l_component_type_code
111398   , p_component_appl_id            => l_component_appl_id
111399   , p_amb_context_code             => l_amb_context_code
111400   , p_side                         => 'NA'
111401   );
111402 
111403 
111404    --
111405    --
111406    END IF;
111407    --
111408    -- Bug 4922099
111409    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
111410           (NVL(l_enc_upg_option, 'N') = 'O')
111411         ) AND
111412         (l_bflow_method_code = 'PRIOR_ENTRY')
111413       )
111414    THEN
111415       IF
111416       --
111417       1 = 2
111418       --
111419       THEN
111420       xla_accounting_err_pkg.build_message
111421                                     (p_appli_s_name            => 'XLA'
111422                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111423                                     ,p_token_1                 => 'LINE_NUMBER'
111424                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
111425                                     ,p_token_2                 => 'LINE_TYPE_NAME'
111426                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
111427                                                                              l_component_type
111428                                                                             ,l_component_code
111429                                                                             ,l_component_type_code
111430                                                                             ,l_component_appl_id
111431                                                                             ,l_amb_context_code
111432                                                                             ,l_entity_code
111433                                                                             ,l_event_class_code
111434                                                                            )
111435                                     ,p_token_3                 => 'OWNER'
111436                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
111437                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
111438                                                                           ,p_lookup_code    => l_component_type_code
111439                                                                          )
111440                                     ,p_token_4                 => 'PRODUCT_NAME'
111441                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
111442                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
111443                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
111444                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
111445                                     ,p_ae_header_id            =>  NULL
111446                                        );
111447 
111448         IF (C_LEVEL_ERROR>= g_log_level) THEN
111449                  trace
111450                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111451                       ,p_level    => C_LEVEL_ERROR
111452                       ,p_module   => l_log_module);
111453         END IF;
111454       END IF;
111455    END IF;
111456    --
111457    --
111458    ------------------------------------------------------------------------------------------------
111459    -- 4219869 Business Flow
111460    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
111461    -- Prior Entry.  Currently, the following code is always generated.
111462    ------------------------------------------------------------------------------------------------
111463    XLA_AE_LINES_PKG.ValidateCurrentLine;
111464 
111465    ------------------------------------------------------------------------------------
111466    -- 4219869 Business Flow
111467    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
111468    ------------------------------------------------------------------------------------
111469    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111470 
111471    ----------------------------------------------------------------------------------
111472    -- 4219869 Business Flow
111473    -- Update journal entry status -- Need to generate this within IF <condition>
111474    ----------------------------------------------------------------------------------
111475    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111476          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
111477          ,p_balance_type_code => l_balance_type_code
111478          );
111479 
111480    -------------------------------------------------------------------------------------------
111481    -- 4262811 - Generate the Accrual Reversal lines
111482    -------------------------------------------------------------------------------------------
111483    BEGIN
111484       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
111485                               (g_array_event(p_event_id).array_value_num('header_index'));
111486       IF l_acc_rev_flag IS NULL THEN
111487          l_acc_rev_flag := 'N';
111488       END IF;
111489    EXCEPTION
111490       WHEN OTHERS THEN
111491          l_acc_rev_flag := 'N';
111492    END;
111493    --
111494    IF (l_acc_rev_flag = 'Y') THEN
111495 
111496        -- 4645092  ------------------------------------------------------------------------------
111497        -- To allow MPA report to determine if it should generate report process
111498        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
111499        ------------------------------------------------------------------------------------------
111500 
111501        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
111502        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
111503    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
111504    -- call ADRs
111505    -- Bug 4922099
111506    --
111507    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111508         (NVL(l_actual_upg_option, 'N') = 'O') OR
111509         (NVL(l_enc_upg_option, 'N') = 'O')
111510       )
111511    THEN
111512    NULL;
111513    --
111514    --
111515    
111516   l_ccid := AcctDerRule_4(
111517            p_application_id           => p_application_id
111518          , p_ae_header_id             => l_ae_header_id 
111519 , p_source_4 => p_source_4
111520          , x_transaction_coa_id       => l_adr_transaction_coa_id
111521          , x_accounting_coa_id        => l_adr_accounting_coa_id
111522          , x_value_type_code          => l_adr_value_type_code
111523          , p_side                     => 'NA'
111524    );
111525 
111526    xla_ae_lines_pkg.set_ccid(
111527     p_code_combination_id          => l_ccid
111528   , p_value_type_code              => l_adr_value_type_code
111529   , p_transaction_coa_id           => l_adr_transaction_coa_id
111530   , p_accounting_coa_id            => l_adr_accounting_coa_id
111531   , p_adr_code                     => 'CST_DEFAULT'
111532   , p_adr_type_code                => 'S'
111533   , p_component_type               => l_component_type
111534   , p_component_code               => l_component_code
111535   , p_component_type_code          => l_component_type_code
111536   , p_component_appl_id            => l_component_appl_id
111537   , p_amb_context_code             => l_amb_context_code
111538   , p_side                         => 'NA'
111539   );
111540 
111541 
111542    --
111543    --
111544    END IF;
111545 
111546        --
111547        -- Update the line information that should be overwritten
111548        --
111549        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
111550                                          p_header_num   => 1);
111551        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
111552 
111553        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
111554 
111555        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
111556           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
111557        END IF;
111558 
111559       --
111560       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
111561       --
111562       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
111563           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
111564       ELSE
111565           ---------------------------------------------------------------------------------------------------
111566           -- 4262811a Switch Sign
111567           ---------------------------------------------------------------------------------------------------
111568           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
111569           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111570                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111571           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111572                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111573           -- 5132302
111574           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
111575                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111576 
111577       END IF;
111578 
111579       -- 4955764
111580       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111581       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
111582 
111583 
111584       XLA_AE_LINES_PKG.ValidateCurrentLine;
111585       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111586 
111587       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111588                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
111589                ,p_balance_type_code => l_balance_type_code);
111590 
111591    END IF;
111592 
111593    -----------------------------------------------------------------------------------------
111594    -- 4262811 Multiperiod Accounting
111595    -----------------------------------------------------------------------------------------
111596      -- No MPA option is assigned.
111597 
111598 
111599 END IF;
111600 END IF;
111601 --
111602 
111603 --
111604 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111605    trace
111606       (p_msg      => 'END of AcctLineType_202'
111607       ,p_level    => C_LEVEL_PROCEDURE
111608       ,p_module   => l_log_module);
111609 END IF;
111610 --
111611 EXCEPTION
111612   WHEN xla_exceptions_pkg.application_exception THEN
111613       RAISE;
111614   WHEN OTHERS THEN
111615        xla_exceptions_pkg.raise_message
111616            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_202');
111617 END AcctLineType_202;
111618 --
111619 
111620 ---------------------------------------
111621 --
111622 -- PRIVATE FUNCTION
111623 --         AcctLineType_203
111624 --
111625 ---------------------------------------
111626 PROCEDURE AcctLineType_203 (
111627   p_application_id        IN NUMBER
111628  ,p_event_id              IN NUMBER
111629  ,p_calculate_acctd_flag  IN VARCHAR2
111630  ,p_calculate_g_l_flag    IN VARCHAR2
111631  ,p_actual_flag           IN OUT VARCHAR2
111632  ,p_balance_type_code     OUT VARCHAR2
111633  ,p_gain_or_loss_ref      OUT VARCHAR2
111634  
111635 --Offset Account for the Write Off
111636  , p_source_3            IN NUMBER
111637 --Distribution Type
111638  , p_source_12            IN VARCHAR2
111639  , p_source_12_meaning    IN VARCHAR2
111640 --Entered Currency Code
111641  , p_source_15            IN VARCHAR2
111642 --Entered Amount
111643  , p_source_18            IN NUMBER
111644 --Currency Conversion Date
111645  , p_source_19            IN DATE
111646 --Currency Conversion Rate
111647  , p_source_20            IN NUMBER
111648 --Currency Conversion Type
111649  , p_source_21            IN VARCHAR2
111650 --Accounted Amount
111651  , p_source_22            IN NUMBER
111652 --Line Number
111653  , p_source_25            IN NUMBER
111654 --WRITE_OFF_ID
111655  , p_source_26            IN NUMBER
111656 )
111657 IS
111658 
111659 l_component_type              VARCHAR2(80);
111660 l_component_code              VARCHAR2(30);
111661 l_component_type_code         VARCHAR2(1);
111662 l_component_appl_id           INTEGER;
111663 l_amb_context_code            VARCHAR2(30);
111664 l_entity_code                 VARCHAR2(30);
111665 l_event_class_code            VARCHAR2(30);
111666 l_ae_header_id                NUMBER;
111667 l_event_type_code             VARCHAR2(30);
111668 l_line_definition_code        VARCHAR2(30);
111669 l_line_definition_owner_code  VARCHAR2(1);
111670 --
111671 -- adr variables
111672 l_segment                     VARCHAR2(30);
111673 l_ccid                        NUMBER;
111674 l_adr_transaction_coa_id      NUMBER;
111675 l_adr_accounting_coa_id       NUMBER;
111676 l_adr_flexfield_segment_code  VARCHAR2(30);
111677 l_adr_flex_value_set_id       NUMBER;
111678 l_adr_value_type_code         VARCHAR2(30);
111679 l_adr_value_combination_id    NUMBER;
111680 l_adr_value_segment_code      VARCHAR2(30);
111681 
111682 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
111683 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
111684 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
111685 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
111686 
111687 -- 4262811 Variables ------------------------------------------------------------------------------------------
111688 l_entered_amt_idx             NUMBER;
111689 l_accted_amt_idx              NUMBER;
111690 l_acc_rev_flag                VARCHAR2(1);
111691 l_accrual_line_num            NUMBER;
111692 l_tmp_amt                     NUMBER;
111693 l_acc_rev_natural_side_code   VARCHAR2(1);
111694 
111695 l_num_entries                 NUMBER;
111696 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
111697 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
111698 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
111699 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
111700 l_recog_line_1                NUMBER;
111701 l_recog_line_2                NUMBER;
111702 
111703 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
111704 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
111705 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
111706 
111707 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
111708 
111709 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
111710 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
111711 
111712 ---------------------------------------------------------------------------------------------------------------
111713 
111714 
111715 --
111716 -- bulk performance
111717 --
111718 l_balance_type_code           VARCHAR2(1);
111719 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
111720 l_log_module                  VARCHAR2(240);
111721 
111722 --
111723 -- Upgrade strategy
111724 --
111725 l_actual_upg_option           VARCHAR2(1);
111726 l_enc_upg_option           VARCHAR2(1);
111727 
111728 --
111729 BEGIN
111730 --
111731 IF g_log_enabled THEN
111732       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_203';
111733 END IF;
111734 --
111735 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111736 
111737       trace
111738          (p_msg      => 'BEGIN of AcctLineType_203'
111739          ,p_level    => C_LEVEL_PROCEDURE
111740          ,p_module   => l_log_module);
111741 
111742 END IF;
111743 --
111744 l_component_type             := 'AMB_JLT';
111745 l_component_code             := 'OFFSET';
111746 l_component_type_code        := 'S';
111747 l_component_appl_id          :=  707;
111748 l_amb_context_code           := 'DEFAULT';
111749 l_entity_code                := 'WO_ACCOUNTING_EVENTS';
111750 l_event_class_code           := 'ACCRUAL_WRITE_OFF';
111751 l_event_type_code            := 'ACCRUAL_WRITE_OFF_ALL';
111752 l_line_definition_owner_code := 'S';
111753 l_line_definition_code       := 'ACCRUAL_WRITE_OFF';
111754 --
111755 l_balance_type_code          := 'A';
111756 l_segment                     := NULL;
111757 l_ccid                        := NULL;
111758 l_adr_transaction_coa_id      := NULL;
111759 l_adr_accounting_coa_id       := NULL;
111760 l_adr_flexfield_segment_code  := NULL;
111761 l_adr_flex_value_set_id       := NULL;
111762 l_adr_value_type_code         := NULL;
111763 l_adr_value_combination_id    := NULL;
111764 l_adr_value_segment_code      := NULL;
111765 
111766 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
111767 l_bflow_class_code           := '';    -- 4219869 Business Flow
111768 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
111769 l_budgetary_control_flag     := 'N';
111770 
111771 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
111772 l_bflow_applied_to_amt       := NULL; -- 5132302
111773 l_entered_amt_idx            := NULL;          -- 4262811
111774 l_accted_amt_idx             := NULL;          -- 4262811
111775 l_acc_rev_flag               := NULL;          -- 4262811
111776 l_accrual_line_num           := NULL;          -- 4262811
111777 l_tmp_amt                    := NULL;          -- 4262811
111778 --
111779  
111780 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
111781     l_balance_type_code <> 'B' THEN
111782 IF NVL(p_source_25,9E125) =  1
111783  THEN 
111784 
111785    --
111786    XLA_AE_LINES_PKG.SetNewLine;
111787 
111788    p_balance_type_code          := l_balance_type_code;
111789    -- set the flag so later we will know whether the gain loss line needs to be created
111790    
111791    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
111792      p_actual_flag :='A';
111793    END IF;
111794 
111795    --
111796    -- bulk performance
111797    --
111798    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
111799                                       p_header_num   => 0); -- 4262811
111800    --
111801    -- set accounting line options
111802    --
111803    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
111804            p_natural_side_code          => 'C'
111805          , p_gain_or_loss_flag          => 'N'
111806          , p_gl_transfer_mode_code      => 'S'
111807          , p_acct_entry_type_code       => 'A'
111808          , p_switch_side_flag           => 'Y'
111809          , p_merge_duplicate_code       => 'N'
111810          );
111811    --
111812    l_acc_rev_natural_side_code := 'D';  -- 4262811
111813    -- 
111814    --
111815    -- set accounting line type info
111816    --
111817    xla_ae_lines_pkg.SetAcctLineType
111818       (p_component_type             => l_component_type
111819       ,p_event_type_code            => l_event_type_code
111820       ,p_line_definition_owner_code => l_line_definition_owner_code
111821       ,p_line_definition_code       => l_line_definition_code
111822       ,p_accounting_line_code       => l_component_code
111823       ,p_accounting_line_type_code  => l_component_type_code
111824       ,p_accounting_line_appl_id    => l_component_appl_id
111825       ,p_amb_context_code           => l_amb_context_code
111826       ,p_entity_code                => l_entity_code
111827       ,p_event_class_code           => l_event_class_code);
111828    --
111829    -- set accounting class
111830    --
111831    xla_ae_lines_pkg.SetAcctClass(
111832            p_accounting_class_code  => 'OFFSET'
111833          , p_ae_header_id           => l_ae_header_id
111834          );
111835 
111836    --
111837    -- set rounding class
111838    --
111839    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
111840                       'OFFSET';
111841 
111842    --
111843    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
111844    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
111845    --
111846    -- bulk performance
111847    --
111848    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
111849 
111850    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
111851       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
111852 
111853    -- 4955764
111854    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111855       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
111856 
111857    -- 4458381 Public Sector Enh
111858    
111859    --
111860    -- set accounting attributes for the line type
111861    --
111862    l_entered_amt_idx := 3;
111863    l_accted_amt_idx  := 8;
111864    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
111865    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
111866    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_26);
111867    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
111868    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
111869    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
111870    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
111871    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
111872    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
111873    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
111874    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
111875    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
111876    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
111877    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
111878    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
111879    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
111880    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
111881 
111882    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
111883    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
111884 
111885    ---------------------------------------------------------------------------------------------------------------
111886    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
111887    ---------------------------------------------------------------------------------------------------------------
111888    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
111889 
111890    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111891    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111892 
111893    IF xla_accounting_cache_pkg.GetValueChar
111894          (p_source_code         => 'LEDGER_CATEGORY_CODE'
111895          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
111896    AND l_bflow_method_code = 'PRIOR_ENTRY'
111897 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
111898    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
111899          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
111900        )
111901    THEN
111902          xla_ae_lines_pkg.BflowUpgEntry
111903            (p_business_method_code    => l_bflow_method_code
111904            ,p_business_class_code     => l_bflow_class_code
111905            ,p_balance_type            => l_balance_type_code);
111906    ELSE
111907       NULL;
111908 -- No business flow processing for business flow method of NONE.
111909    END IF;
111910 
111911    --
111912    -- call analytical criteria
111913    --
111914    
111915    --
111916    -- call description
111917    --
111918    -- No description or it is inherited.
111919    --
111920    -- call ADRs
111921    -- Bug 4922099
111922    --
111923    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111924         (NVL(l_actual_upg_option, 'N') = 'O') OR
111925         (NVL(l_enc_upg_option, 'N') = 'O')
111926       )
111927    THEN
111928    NULL;
111929    --
111930    --
111931    
111932   l_ccid := AcctDerRule_3(
111933            p_application_id           => p_application_id
111934          , p_ae_header_id             => l_ae_header_id 
111935 , p_source_3 => p_source_3
111936          , x_transaction_coa_id       => l_adr_transaction_coa_id
111937          , x_accounting_coa_id        => l_adr_accounting_coa_id
111938          , x_value_type_code          => l_adr_value_type_code
111939          , p_side                     => 'NA'
111940    );
111941 
111942    xla_ae_lines_pkg.set_ccid(
111943     p_code_combination_id          => l_ccid
111944   , p_value_type_code              => l_adr_value_type_code
111945   , p_transaction_coa_id           => l_adr_transaction_coa_id
111946   , p_accounting_coa_id            => l_adr_accounting_coa_id
111947   , p_adr_code                     => 'CST_AWO_OFFSET'
111948   , p_adr_type_code                => 'S'
111949   , p_component_type               => l_component_type
111950   , p_component_code               => l_component_code
111951   , p_component_type_code          => l_component_type_code
111952   , p_component_appl_id            => l_component_appl_id
111953   , p_amb_context_code             => l_amb_context_code
111954   , p_side                         => 'NA'
111955   );
111956 
111957 
111958    --
111959    --
111960    END IF;
111961    --
111962    -- Bug 4922099
111963    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
111964           (NVL(l_enc_upg_option, 'N') = 'O')
111965         ) AND
111966         (l_bflow_method_code = 'PRIOR_ENTRY')
111967       )
111968    THEN
111969       IF
111970       --
111971       1 = 2
111972       --
111973       THEN
111974       xla_accounting_err_pkg.build_message
111975                                     (p_appli_s_name            => 'XLA'
111976                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111977                                     ,p_token_1                 => 'LINE_NUMBER'
111978                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
111979                                     ,p_token_2                 => 'LINE_TYPE_NAME'
111980                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
111981                                                                              l_component_type
111982                                                                             ,l_component_code
111983                                                                             ,l_component_type_code
111984                                                                             ,l_component_appl_id
111985                                                                             ,l_amb_context_code
111986                                                                             ,l_entity_code
111987                                                                             ,l_event_class_code
111988                                                                            )
111989                                     ,p_token_3                 => 'OWNER'
111990                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
111991                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
111992                                                                           ,p_lookup_code    => l_component_type_code
111993                                                                          )
111994                                     ,p_token_4                 => 'PRODUCT_NAME'
111995                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
111996                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
111997                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
111998                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
111999                                     ,p_ae_header_id            =>  NULL
112000                                        );
112001 
112002         IF (C_LEVEL_ERROR>= g_log_level) THEN
112003                  trace
112004                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112005                       ,p_level    => C_LEVEL_ERROR
112006                       ,p_module   => l_log_module);
112007         END IF;
112008       END IF;
112009    END IF;
112010    --
112011    --
112012    ------------------------------------------------------------------------------------------------
112013    -- 4219869 Business Flow
112014    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
112015    -- Prior Entry.  Currently, the following code is always generated.
112016    ------------------------------------------------------------------------------------------------
112017    XLA_AE_LINES_PKG.ValidateCurrentLine;
112018 
112019    ------------------------------------------------------------------------------------
112020    -- 4219869 Business Flow
112021    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
112022    ------------------------------------------------------------------------------------
112023    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112024 
112025    ----------------------------------------------------------------------------------
112026    -- 4219869 Business Flow
112027    -- Update journal entry status -- Need to generate this within IF <condition>
112028    ----------------------------------------------------------------------------------
112029    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112030          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
112031          ,p_balance_type_code => l_balance_type_code
112032          );
112033 
112034    -------------------------------------------------------------------------------------------
112035    -- 4262811 - Generate the Accrual Reversal lines
112036    -------------------------------------------------------------------------------------------
112037    BEGIN
112038       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
112039                               (g_array_event(p_event_id).array_value_num('header_index'));
112040       IF l_acc_rev_flag IS NULL THEN
112041          l_acc_rev_flag := 'N';
112042       END IF;
112043    EXCEPTION
112044       WHEN OTHERS THEN
112045          l_acc_rev_flag := 'N';
112046    END;
112047    --
112048    IF (l_acc_rev_flag = 'Y') THEN
112049 
112050        -- 4645092  ------------------------------------------------------------------------------
112051        -- To allow MPA report to determine if it should generate report process
112052        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
112053        ------------------------------------------------------------------------------------------
112054 
112055        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
112056        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
112057    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
112058    -- call ADRs
112059    -- Bug 4922099
112060    --
112061    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112062         (NVL(l_actual_upg_option, 'N') = 'O') OR
112063         (NVL(l_enc_upg_option, 'N') = 'O')
112064       )
112065    THEN
112066    NULL;
112067    --
112068    --
112069    
112070   l_ccid := AcctDerRule_3(
112071            p_application_id           => p_application_id
112072          , p_ae_header_id             => l_ae_header_id 
112073 , p_source_3 => p_source_3
112074          , x_transaction_coa_id       => l_adr_transaction_coa_id
112075          , x_accounting_coa_id        => l_adr_accounting_coa_id
112076          , x_value_type_code          => l_adr_value_type_code
112077          , p_side                     => 'NA'
112078    );
112079 
112080    xla_ae_lines_pkg.set_ccid(
112081     p_code_combination_id          => l_ccid
112082   , p_value_type_code              => l_adr_value_type_code
112083   , p_transaction_coa_id           => l_adr_transaction_coa_id
112084   , p_accounting_coa_id            => l_adr_accounting_coa_id
112085   , p_adr_code                     => 'CST_AWO_OFFSET'
112086   , p_adr_type_code                => 'S'
112087   , p_component_type               => l_component_type
112088   , p_component_code               => l_component_code
112089   , p_component_type_code          => l_component_type_code
112090   , p_component_appl_id            => l_component_appl_id
112091   , p_amb_context_code             => l_amb_context_code
112092   , p_side                         => 'NA'
112093   );
112094 
112095 
112096    --
112097    --
112098    END IF;
112099 
112100        --
112101        -- Update the line information that should be overwritten
112102        --
112103        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
112104                                          p_header_num   => 1);
112105        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
112106 
112107        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
112108 
112109        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
112110           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
112111        END IF;
112112 
112113       --
112114       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
112115       --
112116       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
112117           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
112118       ELSE
112119           ---------------------------------------------------------------------------------------------------
112120           -- 4262811a Switch Sign
112121           ---------------------------------------------------------------------------------------------------
112122           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
112123           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112124                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112125           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112126                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112127           -- 5132302
112128           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
112129                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112130 
112131       END IF;
112132 
112133       -- 4955764
112134       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112135       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
112136 
112137 
112138       XLA_AE_LINES_PKG.ValidateCurrentLine;
112139       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112140 
112141       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112142                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
112143                ,p_balance_type_code => l_balance_type_code);
112144 
112145    END IF;
112146 
112147    -----------------------------------------------------------------------------------------
112148    -- 4262811 Multiperiod Accounting
112149    -----------------------------------------------------------------------------------------
112150      -- No MPA option is assigned.
112151 
112152 
112153 END IF;
112154 END IF;
112155 --
112156 
112157 --
112158 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112159    trace
112160       (p_msg      => 'END of AcctLineType_203'
112161       ,p_level    => C_LEVEL_PROCEDURE
112162       ,p_module   => l_log_module);
112163 END IF;
112164 --
112165 EXCEPTION
112166   WHEN xla_exceptions_pkg.application_exception THEN
112167       RAISE;
112168   WHEN OTHERS THEN
112169        xla_exceptions_pkg.raise_message
112170            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_203');
112171 END AcctLineType_203;
112172 --
112173 
112174 ---------------------------------------
112175 --
112176 -- PRIVATE FUNCTION
112177 --         AcctLineType_204
112178 --
112179 ---------------------------------------
112180 PROCEDURE AcctLineType_204 (
112181   p_application_id        IN NUMBER
112182  ,p_event_id              IN NUMBER
112183  ,p_calculate_acctd_flag  IN VARCHAR2
112184  ,p_calculate_g_l_flag    IN VARCHAR2
112185  ,p_actual_flag           IN OUT VARCHAR2
112186  ,p_balance_type_code     OUT VARCHAR2
112187  ,p_gain_or_loss_ref      OUT VARCHAR2
112188  
112189 --Cost Management Default Account
112190  , p_source_4            IN NUMBER
112191 --Applied to Application ID
112192  , p_source_6            IN NUMBER
112193 --Applied to Distribution Link Type
112194  , p_source_7            IN VARCHAR2
112195 --Applied to Entity Code
112196  , p_source_8            IN VARCHAR2
112197 --DISTRIBUTION_IDENTIFIER
112198  , p_source_11            IN NUMBER
112199 --Distribution Type
112200  , p_source_12            IN VARCHAR2
112201  , p_source_12_meaning    IN VARCHAR2
112202 --Encumbrance Reversal Amount Entered
112203  , p_source_14            IN NUMBER
112204 --Entered Currency Code
112205  , p_source_15            IN VARCHAR2
112206 --Transaction Encumbrance Reversal Amount
112207  , p_source_16            IN NUMBER
112208 --Entered Amount
112209  , p_source_18            IN NUMBER
112210 --Currency Conversion Date
112211  , p_source_19            IN DATE
112212 --Currency Conversion Rate
112213  , p_source_20            IN NUMBER
112214 --Currency Conversion Type
112215  , p_source_21            IN VARCHAR2
112216 --Accounted Amount
112217  , p_source_22            IN NUMBER
112218 --Accounting Line Type
112219  , p_source_24            IN NUMBER
112220 --Costing Encumbrance Upgrade Option
112221  , p_source_27            IN VARCHAR2
112222 --TXN_PO_DISTRIBUTION_ID
112223  , p_source_28            IN NUMBER
112224 --TXN_PO_HEADER_ID
112225  , p_source_29            IN NUMBER
112226 --Requisition Budget Account
112227  , p_source_30            IN NUMBER
112228 --Requisition Encumbrance Type Identifier
112229  , p_source_31            IN NUMBER
112230 )
112231 IS
112232 
112233 l_component_type              VARCHAR2(80);
112234 l_component_code              VARCHAR2(30);
112235 l_component_type_code         VARCHAR2(1);
112236 l_component_appl_id           INTEGER;
112237 l_amb_context_code            VARCHAR2(30);
112238 l_entity_code                 VARCHAR2(30);
112239 l_event_class_code            VARCHAR2(30);
112240 l_ae_header_id                NUMBER;
112241 l_event_type_code             VARCHAR2(30);
112242 l_line_definition_code        VARCHAR2(30);
112243 l_line_definition_owner_code  VARCHAR2(1);
112244 --
112245 -- adr variables
112246 l_segment                     VARCHAR2(30);
112247 l_ccid                        NUMBER;
112248 l_adr_transaction_coa_id      NUMBER;
112249 l_adr_accounting_coa_id       NUMBER;
112250 l_adr_flexfield_segment_code  VARCHAR2(30);
112251 l_adr_flex_value_set_id       NUMBER;
112252 l_adr_value_type_code         VARCHAR2(30);
112253 l_adr_value_combination_id    NUMBER;
112254 l_adr_value_segment_code      VARCHAR2(30);
112255 
112256 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
112257 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
112258 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
112259 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
112260 
112261 -- 4262811 Variables ------------------------------------------------------------------------------------------
112262 l_entered_amt_idx             NUMBER;
112263 l_accted_amt_idx              NUMBER;
112264 l_acc_rev_flag                VARCHAR2(1);
112265 l_accrual_line_num            NUMBER;
112266 l_tmp_amt                     NUMBER;
112267 l_acc_rev_natural_side_code   VARCHAR2(1);
112268 
112269 l_num_entries                 NUMBER;
112270 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
112271 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
112272 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
112273 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
112274 l_recog_line_1                NUMBER;
112275 l_recog_line_2                NUMBER;
112276 
112277 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
112278 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
112279 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
112280 
112281 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
112282 
112283 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
112284 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
112285 
112286 ---------------------------------------------------------------------------------------------------------------
112287 
112288 
112289 --
112290 -- bulk performance
112291 --
112292 l_balance_type_code           VARCHAR2(1);
112293 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
112294 l_log_module                  VARCHAR2(240);
112295 
112296 --
112297 -- Upgrade strategy
112298 --
112299 l_actual_upg_option           VARCHAR2(1);
112300 l_enc_upg_option           VARCHAR2(1);
112301 
112302 --
112303 BEGIN
112304 --
112305 IF g_log_enabled THEN
112306       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_204';
112307 END IF;
112308 --
112309 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112310 
112311       trace
112312          (p_msg      => 'BEGIN of AcctLineType_204'
112313          ,p_level    => C_LEVEL_PROCEDURE
112314          ,p_module   => l_log_module);
112315 
112316 END IF;
112317 --
112318 l_component_type             := 'AMB_JLT';
112319 l_component_code             := 'OFFSET';
112320 l_component_type_code        := 'S';
112321 l_component_appl_id          :=  707;
112322 l_amb_context_code           := 'DEFAULT';
112323 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
112324 l_event_class_code           := 'DIR_INTERORG_RCPT';
112325 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
112326 l_line_definition_owner_code := 'S';
112327 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
112328 --
112329 l_balance_type_code          := 'A';
112330 l_segment                     := NULL;
112331 l_ccid                        := NULL;
112332 l_adr_transaction_coa_id      := NULL;
112333 l_adr_accounting_coa_id       := NULL;
112334 l_adr_flexfield_segment_code  := NULL;
112335 l_adr_flex_value_set_id       := NULL;
112336 l_adr_value_type_code         := NULL;
112337 l_adr_value_combination_id    := NULL;
112338 l_adr_value_segment_code      := NULL;
112339 
112340 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
112341 l_bflow_class_code           := '';    -- 4219869 Business Flow
112342 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
112343 l_budgetary_control_flag     := 'N';
112344 
112345 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
112346 l_bflow_applied_to_amt       := NULL; -- 5132302
112347 l_entered_amt_idx            := NULL;          -- 4262811
112348 l_accted_amt_idx             := NULL;          -- 4262811
112349 l_acc_rev_flag               := NULL;          -- 4262811
112350 l_accrual_line_num           := NULL;          -- 4262811
112351 l_tmp_amt                    := NULL;          -- 4262811
112352 --
112353  
112354 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
112355     l_balance_type_code <> 'B' THEN
112356 IF NVL(p_source_24,9E125) =  2
112357  THEN 
112358 
112359    --
112360    XLA_AE_LINES_PKG.SetNewLine;
112361 
112362    p_balance_type_code          := l_balance_type_code;
112363    -- set the flag so later we will know whether the gain loss line needs to be created
112364    
112365    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
112366      p_actual_flag :='A';
112367    END IF;
112368 
112369    --
112370    -- bulk performance
112371    --
112372    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
112373                                       p_header_num   => 0); -- 4262811
112374    --
112375    -- set accounting line options
112376    --
112377    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
112378            p_natural_side_code          => 'D'
112379          , p_gain_or_loss_flag          => 'N'
112380          , p_gl_transfer_mode_code      => 'S'
112381          , p_acct_entry_type_code       => 'A'
112382          , p_switch_side_flag           => 'Y'
112383          , p_merge_duplicate_code       => 'N'
112384          );
112385    --
112386    l_acc_rev_natural_side_code := 'C';  -- 4262811
112387    -- 
112388    --
112389    -- set accounting line type info
112390    --
112391    xla_ae_lines_pkg.SetAcctLineType
112392       (p_component_type             => l_component_type
112393       ,p_event_type_code            => l_event_type_code
112394       ,p_line_definition_owner_code => l_line_definition_owner_code
112395       ,p_line_definition_code       => l_line_definition_code
112396       ,p_accounting_line_code       => l_component_code
112397       ,p_accounting_line_type_code  => l_component_type_code
112398       ,p_accounting_line_appl_id    => l_component_appl_id
112399       ,p_amb_context_code           => l_amb_context_code
112400       ,p_entity_code                => l_entity_code
112401       ,p_event_class_code           => l_event_class_code);
112402    --
112403    -- set accounting class
112404    --
112405    xla_ae_lines_pkg.SetAcctClass(
112406            p_accounting_class_code  => 'OFFSET'
112407          , p_ae_header_id           => l_ae_header_id
112408          );
112409 
112410    --
112411    -- set rounding class
112412    --
112413    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
112414                       'OFFSET';
112415 
112416    --
112417    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
112418    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
112419    --
112420    -- bulk performance
112421    --
112422    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
112423 
112424    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
112425       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
112426 
112427    -- 4955764
112428    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112429       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
112430 
112431    -- 4458381 Public Sector Enh
112432    
112433    --
112434    -- set accounting attributes for the line type
112435    --
112436    l_entered_amt_idx := 17;
112437    l_accted_amt_idx  := 22;
112438    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
112439    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
112440    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
112441    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
112442    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
112443    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
112444    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
112445    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
112446    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
112447    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
112448    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
112449    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
112450    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
112451    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
112452    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
112453    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
112454    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
112455    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
112456    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
112457    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
112458    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
112459    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
112460    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
112461    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
112462    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
112463    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
112464    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
112465    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
112466    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
112467    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
112468    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
112469    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
112470    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
112471    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
112472    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
112473    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
112474    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
112475    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
112476    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
112477    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
112478    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
112479    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
112480    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
112481    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
112482    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
112483    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
112484    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
112485    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
112486    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
112487 
112488    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
112489    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
112490 
112491    ---------------------------------------------------------------------------------------------------------------
112492    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
112493    ---------------------------------------------------------------------------------------------------------------
112494    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
112495 
112496    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112497    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112498 
112499    IF xla_accounting_cache_pkg.GetValueChar
112500          (p_source_code         => 'LEDGER_CATEGORY_CODE'
112501          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
112502    AND l_bflow_method_code = 'PRIOR_ENTRY'
112503 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
112504    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
112505          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
112506        )
112507    THEN
112508          xla_ae_lines_pkg.BflowUpgEntry
112509            (p_business_method_code    => l_bflow_method_code
112510            ,p_business_class_code     => l_bflow_class_code
112511            ,p_balance_type            => l_balance_type_code);
112512    ELSE
112513       NULL;
112514 -- No business flow processing for business flow method of NONE.
112515    END IF;
112516 
112517    --
112518    -- call analytical criteria
112519    --
112520    
112521    --
112522    -- call description
112523    --
112524    -- No description or it is inherited.
112525    --
112526    -- call ADRs
112527    -- Bug 4922099
112528    --
112529    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112530         (NVL(l_actual_upg_option, 'N') = 'O') OR
112531         (NVL(l_enc_upg_option, 'N') = 'O')
112532       )
112533    THEN
112534    NULL;
112535    --
112536    --
112537    
112538   l_ccid := AcctDerRule_4(
112539            p_application_id           => p_application_id
112540          , p_ae_header_id             => l_ae_header_id 
112541 , p_source_4 => p_source_4
112542          , x_transaction_coa_id       => l_adr_transaction_coa_id
112543          , x_accounting_coa_id        => l_adr_accounting_coa_id
112544          , x_value_type_code          => l_adr_value_type_code
112545          , p_side                     => 'NA'
112546    );
112547 
112548    xla_ae_lines_pkg.set_ccid(
112549     p_code_combination_id          => l_ccid
112550   , p_value_type_code              => l_adr_value_type_code
112551   , p_transaction_coa_id           => l_adr_transaction_coa_id
112552   , p_accounting_coa_id            => l_adr_accounting_coa_id
112553   , p_adr_code                     => 'CST_DEFAULT'
112554   , p_adr_type_code                => 'S'
112555   , p_component_type               => l_component_type
112556   , p_component_code               => l_component_code
112557   , p_component_type_code          => l_component_type_code
112558   , p_component_appl_id            => l_component_appl_id
112559   , p_amb_context_code             => l_amb_context_code
112560   , p_side                         => 'NA'
112561   );
112562 
112563 
112564    --
112565    --
112566    END IF;
112567    --
112568    -- Bug 4922099
112569    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
112570           (NVL(l_enc_upg_option, 'N') = 'O')
112571         ) AND
112572         (l_bflow_method_code = 'PRIOR_ENTRY')
112573       )
112574    THEN
112575       IF
112576       --
112577       1 = 2
112578       --
112579       THEN
112580       xla_accounting_err_pkg.build_message
112581                                     (p_appli_s_name            => 'XLA'
112582                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112583                                     ,p_token_1                 => 'LINE_NUMBER'
112584                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
112585                                     ,p_token_2                 => 'LINE_TYPE_NAME'
112586                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
112587                                                                              l_component_type
112588                                                                             ,l_component_code
112589                                                                             ,l_component_type_code
112590                                                                             ,l_component_appl_id
112591                                                                             ,l_amb_context_code
112592                                                                             ,l_entity_code
112593                                                                             ,l_event_class_code
112594                                                                            )
112595                                     ,p_token_3                 => 'OWNER'
112596                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
112597                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
112598                                                                           ,p_lookup_code    => l_component_type_code
112599                                                                          )
112600                                     ,p_token_4                 => 'PRODUCT_NAME'
112601                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
112602                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
112603                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
112604                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
112605                                     ,p_ae_header_id            =>  NULL
112606                                        );
112607 
112608         IF (C_LEVEL_ERROR>= g_log_level) THEN
112609                  trace
112610                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112611                       ,p_level    => C_LEVEL_ERROR
112612                       ,p_module   => l_log_module);
112613         END IF;
112614       END IF;
112615    END IF;
112616    --
112617    --
112618    ------------------------------------------------------------------------------------------------
112619    -- 4219869 Business Flow
112620    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
112621    -- Prior Entry.  Currently, the following code is always generated.
112622    ------------------------------------------------------------------------------------------------
112623    XLA_AE_LINES_PKG.ValidateCurrentLine;
112624 
112625    ------------------------------------------------------------------------------------
112626    -- 4219869 Business Flow
112627    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
112628    ------------------------------------------------------------------------------------
112629    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112630 
112631    ----------------------------------------------------------------------------------
112632    -- 4219869 Business Flow
112633    -- Update journal entry status -- Need to generate this within IF <condition>
112634    ----------------------------------------------------------------------------------
112635    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112636          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
112637          ,p_balance_type_code => l_balance_type_code
112638          );
112639 
112640    -------------------------------------------------------------------------------------------
112641    -- 4262811 - Generate the Accrual Reversal lines
112642    -------------------------------------------------------------------------------------------
112643    BEGIN
112644       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
112645                               (g_array_event(p_event_id).array_value_num('header_index'));
112646       IF l_acc_rev_flag IS NULL THEN
112647          l_acc_rev_flag := 'N';
112648       END IF;
112649    EXCEPTION
112650       WHEN OTHERS THEN
112651          l_acc_rev_flag := 'N';
112652    END;
112653    --
112654    IF (l_acc_rev_flag = 'Y') THEN
112655 
112656        -- 4645092  ------------------------------------------------------------------------------
112657        -- To allow MPA report to determine if it should generate report process
112658        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
112659        ------------------------------------------------------------------------------------------
112660 
112661        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
112662        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
112663    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
112664    -- call ADRs
112665    -- Bug 4922099
112666    --
112667    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112668         (NVL(l_actual_upg_option, 'N') = 'O') OR
112669         (NVL(l_enc_upg_option, 'N') = 'O')
112670       )
112671    THEN
112672    NULL;
112673    --
112674    --
112675    
112676   l_ccid := AcctDerRule_4(
112677            p_application_id           => p_application_id
112678          , p_ae_header_id             => l_ae_header_id 
112679 , p_source_4 => p_source_4
112680          , x_transaction_coa_id       => l_adr_transaction_coa_id
112681          , x_accounting_coa_id        => l_adr_accounting_coa_id
112682          , x_value_type_code          => l_adr_value_type_code
112683          , p_side                     => 'NA'
112684    );
112685 
112686    xla_ae_lines_pkg.set_ccid(
112687     p_code_combination_id          => l_ccid
112688   , p_value_type_code              => l_adr_value_type_code
112689   , p_transaction_coa_id           => l_adr_transaction_coa_id
112690   , p_accounting_coa_id            => l_adr_accounting_coa_id
112691   , p_adr_code                     => 'CST_DEFAULT'
112692   , p_adr_type_code                => 'S'
112693   , p_component_type               => l_component_type
112694   , p_component_code               => l_component_code
112695   , p_component_type_code          => l_component_type_code
112696   , p_component_appl_id            => l_component_appl_id
112697   , p_amb_context_code             => l_amb_context_code
112698   , p_side                         => 'NA'
112699   );
112700 
112701 
112702    --
112703    --
112704    END IF;
112705 
112706        --
112707        -- Update the line information that should be overwritten
112708        --
112709        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
112710                                          p_header_num   => 1);
112711        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
112712 
112713        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
112714 
112715        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
112716           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
112717        END IF;
112718 
112719       --
112720       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
112721       --
112722       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
112723           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
112724       ELSE
112725           ---------------------------------------------------------------------------------------------------
112726           -- 4262811a Switch Sign
112727           ---------------------------------------------------------------------------------------------------
112728           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
112729           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112730                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112731           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112732                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112733           -- 5132302
112734           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
112735                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112736 
112737       END IF;
112738 
112739       -- 4955764
112740       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112741       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
112742 
112743 
112744       XLA_AE_LINES_PKG.ValidateCurrentLine;
112745       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112746 
112747       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112748                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
112749                ,p_balance_type_code => l_balance_type_code);
112750 
112751    END IF;
112752 
112753    -----------------------------------------------------------------------------------------
112754    -- 4262811 Multiperiod Accounting
112755    -----------------------------------------------------------------------------------------
112756      -- No MPA option is assigned.
112757 
112758 
112759 END IF;
112760 END IF;
112761 --
112762 
112763 --
112764 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112765    trace
112766       (p_msg      => 'END of AcctLineType_204'
112767       ,p_level    => C_LEVEL_PROCEDURE
112768       ,p_module   => l_log_module);
112769 END IF;
112770 --
112771 EXCEPTION
112772   WHEN xla_exceptions_pkg.application_exception THEN
112773       RAISE;
112774   WHEN OTHERS THEN
112775        xla_exceptions_pkg.raise_message
112776            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_204');
112777 END AcctLineType_204;
112778 --
112779 
112780 ---------------------------------------
112781 --
112782 -- PRIVATE FUNCTION
112783 --         AcctLineType_205
112784 --
112785 ---------------------------------------
112786 PROCEDURE AcctLineType_205 (
112787   p_application_id        IN NUMBER
112788  ,p_event_id              IN NUMBER
112789  ,p_calculate_acctd_flag  IN VARCHAR2
112790  ,p_calculate_g_l_flag    IN VARCHAR2
112791  ,p_actual_flag           IN OUT VARCHAR2
112792  ,p_balance_type_code     OUT VARCHAR2
112793  ,p_gain_or_loss_ref      OUT VARCHAR2
112794  
112795 --Cost Management Default Account
112796  , p_source_4            IN NUMBER
112797 --DISTRIBUTION_IDENTIFIER
112798  , p_source_11            IN NUMBER
112799 --Distribution Type
112800  , p_source_12            IN VARCHAR2
112801  , p_source_12_meaning    IN VARCHAR2
112802 --Entered Currency Code
112803  , p_source_15            IN VARCHAR2
112804 --Entered Amount
112805  , p_source_18            IN NUMBER
112806 --Currency Conversion Date
112807  , p_source_19            IN DATE
112808 --Currency Conversion Rate
112809  , p_source_20            IN NUMBER
112810 --Currency Conversion Type
112811  , p_source_21            IN VARCHAR2
112812 --Accounted Amount
112813  , p_source_22            IN NUMBER
112814 --Accounting Line Type
112815  , p_source_24            IN NUMBER
112816 )
112817 IS
112818 
112819 l_component_type              VARCHAR2(80);
112820 l_component_code              VARCHAR2(30);
112821 l_component_type_code         VARCHAR2(1);
112822 l_component_appl_id           INTEGER;
112823 l_amb_context_code            VARCHAR2(30);
112824 l_entity_code                 VARCHAR2(30);
112825 l_event_class_code            VARCHAR2(30);
112826 l_ae_header_id                NUMBER;
112827 l_event_type_code             VARCHAR2(30);
112828 l_line_definition_code        VARCHAR2(30);
112829 l_line_definition_owner_code  VARCHAR2(1);
112830 --
112831 -- adr variables
112832 l_segment                     VARCHAR2(30);
112833 l_ccid                        NUMBER;
112834 l_adr_transaction_coa_id      NUMBER;
112835 l_adr_accounting_coa_id       NUMBER;
112836 l_adr_flexfield_segment_code  VARCHAR2(30);
112837 l_adr_flex_value_set_id       NUMBER;
112838 l_adr_value_type_code         VARCHAR2(30);
112839 l_adr_value_combination_id    NUMBER;
112840 l_adr_value_segment_code      VARCHAR2(30);
112841 
112842 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
112843 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
112844 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
112845 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
112846 
112847 -- 4262811 Variables ------------------------------------------------------------------------------------------
112848 l_entered_amt_idx             NUMBER;
112849 l_accted_amt_idx              NUMBER;
112850 l_acc_rev_flag                VARCHAR2(1);
112851 l_accrual_line_num            NUMBER;
112852 l_tmp_amt                     NUMBER;
112853 l_acc_rev_natural_side_code   VARCHAR2(1);
112854 
112855 l_num_entries                 NUMBER;
112856 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
112857 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
112858 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
112859 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
112860 l_recog_line_1                NUMBER;
112861 l_recog_line_2                NUMBER;
112862 
112863 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
112864 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
112865 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
112866 
112867 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
112868 
112869 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
112870 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
112871 
112872 ---------------------------------------------------------------------------------------------------------------
112873 
112874 
112875 --
112876 -- bulk performance
112877 --
112878 l_balance_type_code           VARCHAR2(1);
112879 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
112880 l_log_module                  VARCHAR2(240);
112881 
112882 --
112883 -- Upgrade strategy
112884 --
112885 l_actual_upg_option           VARCHAR2(1);
112886 l_enc_upg_option           VARCHAR2(1);
112887 
112888 --
112889 BEGIN
112890 --
112891 IF g_log_enabled THEN
112892       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_205';
112893 END IF;
112894 --
112895 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112896 
112897       trace
112898          (p_msg      => 'BEGIN of AcctLineType_205'
112899          ,p_level    => C_LEVEL_PROCEDURE
112900          ,p_module   => l_log_module);
112901 
112902 END IF;
112903 --
112904 l_component_type             := 'AMB_JLT';
112905 l_component_code             := 'OVERHEAD_ABSORPTION';
112906 l_component_type_code        := 'S';
112907 l_component_appl_id          :=  707;
112908 l_amb_context_code           := 'DEFAULT';
112909 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
112910 l_event_class_code           := 'ABSORPTION';
112911 l_event_type_code            := 'ABSORPTION_ALL';
112912 l_line_definition_owner_code := 'S';
112913 l_line_definition_code       := 'ABSORPTION';
112914 --
112915 l_balance_type_code          := 'A';
112916 l_segment                     := NULL;
112917 l_ccid                        := NULL;
112918 l_adr_transaction_coa_id      := NULL;
112919 l_adr_accounting_coa_id       := NULL;
112920 l_adr_flexfield_segment_code  := NULL;
112921 l_adr_flex_value_set_id       := NULL;
112922 l_adr_value_type_code         := NULL;
112923 l_adr_value_combination_id    := NULL;
112924 l_adr_value_segment_code      := NULL;
112925 
112926 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
112927 l_bflow_class_code           := '';    -- 4219869 Business Flow
112928 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
112929 l_budgetary_control_flag     := 'N';
112930 
112931 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
112932 l_bflow_applied_to_amt       := NULL; -- 5132302
112933 l_entered_amt_idx            := NULL;          -- 4262811
112934 l_accted_amt_idx             := NULL;          -- 4262811
112935 l_acc_rev_flag               := NULL;          -- 4262811
112936 l_accrual_line_num           := NULL;          -- 4262811
112937 l_tmp_amt                    := NULL;          -- 4262811
112938 --
112939  
112940 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
112941     l_balance_type_code <> 'B' THEN
112942 IF NVL(p_source_24,9E125) =  3
112943  THEN 
112944 
112945    --
112946    XLA_AE_LINES_PKG.SetNewLine;
112947 
112948    p_balance_type_code          := l_balance_type_code;
112949    -- set the flag so later we will know whether the gain loss line needs to be created
112950    
112951    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
112952      p_actual_flag :='A';
112953    END IF;
112954 
112955    --
112956    -- bulk performance
112957    --
112958    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
112959                                       p_header_num   => 0); -- 4262811
112960    --
112961    -- set accounting line options
112962    --
112963    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
112964            p_natural_side_code          => 'D'
112965          , p_gain_or_loss_flag          => 'N'
112966          , p_gl_transfer_mode_code      => 'S'
112967          , p_acct_entry_type_code       => 'A'
112968          , p_switch_side_flag           => 'Y'
112969          , p_merge_duplicate_code       => 'N'
112970          );
112971    --
112972    l_acc_rev_natural_side_code := 'C';  -- 4262811
112973    -- 
112974    --
112975    -- set accounting line type info
112976    --
112977    xla_ae_lines_pkg.SetAcctLineType
112978       (p_component_type             => l_component_type
112979       ,p_event_type_code            => l_event_type_code
112980       ,p_line_definition_owner_code => l_line_definition_owner_code
112981       ,p_line_definition_code       => l_line_definition_code
112982       ,p_accounting_line_code       => l_component_code
112983       ,p_accounting_line_type_code  => l_component_type_code
112984       ,p_accounting_line_appl_id    => l_component_appl_id
112985       ,p_amb_context_code           => l_amb_context_code
112986       ,p_entity_code                => l_entity_code
112987       ,p_event_class_code           => l_event_class_code);
112988    --
112989    -- set accounting class
112990    --
112991    xla_ae_lines_pkg.SetAcctClass(
112992            p_accounting_class_code  => 'OVERHEAD_ABSORPTION'
112993          , p_ae_header_id           => l_ae_header_id
112994          );
112995 
112996    --
112997    -- set rounding class
112998    --
112999    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
113000                       'OVERHEAD_ABSORPTION';
113001 
113002    --
113003    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
113004    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
113005    --
113006    -- bulk performance
113007    --
113008    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
113009 
113010    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
113011       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
113012 
113013    -- 4955764
113014    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113015       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
113016 
113017    -- 4458381 Public Sector Enh
113018    
113019    --
113020    -- set accounting attributes for the line type
113021    --
113022    l_entered_amt_idx := 3;
113023    l_accted_amt_idx  := 8;
113024    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
113025    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
113026    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
113027    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
113028    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
113029    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
113030    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
113031    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
113032    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
113033    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
113034    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
113035    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
113036    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
113037    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
113038    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
113039    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
113040    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
113041 
113042    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
113043    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
113044 
113045    ---------------------------------------------------------------------------------------------------------------
113046    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
113047    ---------------------------------------------------------------------------------------------------------------
113048    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
113049 
113050    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113051    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113052 
113053    IF xla_accounting_cache_pkg.GetValueChar
113054          (p_source_code         => 'LEDGER_CATEGORY_CODE'
113055          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
113056    AND l_bflow_method_code = 'PRIOR_ENTRY'
113057 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
113058    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
113059          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
113060        )
113061    THEN
113062          xla_ae_lines_pkg.BflowUpgEntry
113063            (p_business_method_code    => l_bflow_method_code
113064            ,p_business_class_code     => l_bflow_class_code
113065            ,p_balance_type            => l_balance_type_code);
113066    ELSE
113067       NULL;
113068 -- No business flow processing for business flow method of NONE.
113069    END IF;
113070 
113071    --
113072    -- call analytical criteria
113073    --
113074    
113075    --
113076    -- call description
113077    --
113078    -- No description or it is inherited.
113079    --
113080    -- call ADRs
113081    -- Bug 4922099
113082    --
113083    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113084         (NVL(l_actual_upg_option, 'N') = 'O') OR
113085         (NVL(l_enc_upg_option, 'N') = 'O')
113086       )
113087    THEN
113088    NULL;
113089    --
113090    --
113091    
113092   l_ccid := AcctDerRule_4(
113093            p_application_id           => p_application_id
113094          , p_ae_header_id             => l_ae_header_id 
113095 , p_source_4 => p_source_4
113096          , x_transaction_coa_id       => l_adr_transaction_coa_id
113097          , x_accounting_coa_id        => l_adr_accounting_coa_id
113098          , x_value_type_code          => l_adr_value_type_code
113099          , p_side                     => 'NA'
113100    );
113101 
113102    xla_ae_lines_pkg.set_ccid(
113103     p_code_combination_id          => l_ccid
113104   , p_value_type_code              => l_adr_value_type_code
113105   , p_transaction_coa_id           => l_adr_transaction_coa_id
113106   , p_accounting_coa_id            => l_adr_accounting_coa_id
113107   , p_adr_code                     => 'CST_DEFAULT'
113108   , p_adr_type_code                => 'S'
113109   , p_component_type               => l_component_type
113110   , p_component_code               => l_component_code
113111   , p_component_type_code          => l_component_type_code
113112   , p_component_appl_id            => l_component_appl_id
113113   , p_amb_context_code             => l_amb_context_code
113114   , p_side                         => 'NA'
113115   );
113116 
113117 
113118    --
113119    --
113120    END IF;
113121    --
113122    -- Bug 4922099
113123    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
113124           (NVL(l_enc_upg_option, 'N') = 'O')
113125         ) AND
113126         (l_bflow_method_code = 'PRIOR_ENTRY')
113127       )
113128    THEN
113129       IF
113130       --
113131       1 = 2
113132       --
113133       THEN
113134       xla_accounting_err_pkg.build_message
113135                                     (p_appli_s_name            => 'XLA'
113136                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113137                                     ,p_token_1                 => 'LINE_NUMBER'
113138                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
113139                                     ,p_token_2                 => 'LINE_TYPE_NAME'
113140                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
113141                                                                              l_component_type
113142                                                                             ,l_component_code
113143                                                                             ,l_component_type_code
113144                                                                             ,l_component_appl_id
113145                                                                             ,l_amb_context_code
113146                                                                             ,l_entity_code
113147                                                                             ,l_event_class_code
113148                                                                            )
113149                                     ,p_token_3                 => 'OWNER'
113150                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
113151                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
113152                                                                           ,p_lookup_code    => l_component_type_code
113153                                                                          )
113154                                     ,p_token_4                 => 'PRODUCT_NAME'
113155                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
113156                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
113157                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
113158                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
113159                                     ,p_ae_header_id            =>  NULL
113160                                        );
113161 
113162         IF (C_LEVEL_ERROR>= g_log_level) THEN
113163                  trace
113164                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113165                       ,p_level    => C_LEVEL_ERROR
113166                       ,p_module   => l_log_module);
113167         END IF;
113168       END IF;
113169    END IF;
113170    --
113171    --
113172    ------------------------------------------------------------------------------------------------
113173    -- 4219869 Business Flow
113174    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
113175    -- Prior Entry.  Currently, the following code is always generated.
113176    ------------------------------------------------------------------------------------------------
113177    XLA_AE_LINES_PKG.ValidateCurrentLine;
113178 
113179    ------------------------------------------------------------------------------------
113180    -- 4219869 Business Flow
113181    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
113182    ------------------------------------------------------------------------------------
113183    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113184 
113185    ----------------------------------------------------------------------------------
113186    -- 4219869 Business Flow
113187    -- Update journal entry status -- Need to generate this within IF <condition>
113188    ----------------------------------------------------------------------------------
113189    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113190          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
113191          ,p_balance_type_code => l_balance_type_code
113192          );
113193 
113194    -------------------------------------------------------------------------------------------
113195    -- 4262811 - Generate the Accrual Reversal lines
113196    -------------------------------------------------------------------------------------------
113197    BEGIN
113198       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
113199                               (g_array_event(p_event_id).array_value_num('header_index'));
113200       IF l_acc_rev_flag IS NULL THEN
113201          l_acc_rev_flag := 'N';
113202       END IF;
113203    EXCEPTION
113204       WHEN OTHERS THEN
113205          l_acc_rev_flag := 'N';
113206    END;
113207    --
113208    IF (l_acc_rev_flag = 'Y') THEN
113209 
113210        -- 4645092  ------------------------------------------------------------------------------
113211        -- To allow MPA report to determine if it should generate report process
113212        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
113213        ------------------------------------------------------------------------------------------
113214 
113215        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
113216        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
113217    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
113218    -- call ADRs
113219    -- Bug 4922099
113220    --
113221    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113222         (NVL(l_actual_upg_option, 'N') = 'O') OR
113223         (NVL(l_enc_upg_option, 'N') = 'O')
113224       )
113225    THEN
113226    NULL;
113227    --
113228    --
113229    
113230   l_ccid := AcctDerRule_4(
113231            p_application_id           => p_application_id
113232          , p_ae_header_id             => l_ae_header_id 
113233 , p_source_4 => p_source_4
113234          , x_transaction_coa_id       => l_adr_transaction_coa_id
113235          , x_accounting_coa_id        => l_adr_accounting_coa_id
113236          , x_value_type_code          => l_adr_value_type_code
113237          , p_side                     => 'NA'
113238    );
113239 
113240    xla_ae_lines_pkg.set_ccid(
113241     p_code_combination_id          => l_ccid
113242   , p_value_type_code              => l_adr_value_type_code
113243   , p_transaction_coa_id           => l_adr_transaction_coa_id
113244   , p_accounting_coa_id            => l_adr_accounting_coa_id
113245   , p_adr_code                     => 'CST_DEFAULT'
113246   , p_adr_type_code                => 'S'
113247   , p_component_type               => l_component_type
113248   , p_component_code               => l_component_code
113249   , p_component_type_code          => l_component_type_code
113250   , p_component_appl_id            => l_component_appl_id
113251   , p_amb_context_code             => l_amb_context_code
113252   , p_side                         => 'NA'
113253   );
113254 
113255 
113256    --
113257    --
113258    END IF;
113259 
113260        --
113261        -- Update the line information that should be overwritten
113262        --
113263        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
113264                                          p_header_num   => 1);
113265        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
113266 
113267        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
113268 
113269        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
113270           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
113271        END IF;
113272 
113273       --
113274       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
113275       --
113276       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
113277           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
113278       ELSE
113279           ---------------------------------------------------------------------------------------------------
113280           -- 4262811a Switch Sign
113281           ---------------------------------------------------------------------------------------------------
113282           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
113283           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113284                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113285           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113286                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113287           -- 5132302
113288           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
113289                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113290 
113291       END IF;
113292 
113293       -- 4955764
113294       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113295       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
113296 
113297 
113298       XLA_AE_LINES_PKG.ValidateCurrentLine;
113299       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113300 
113301       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113302                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
113303                ,p_balance_type_code => l_balance_type_code);
113304 
113305    END IF;
113306 
113307    -----------------------------------------------------------------------------------------
113308    -- 4262811 Multiperiod Accounting
113309    -----------------------------------------------------------------------------------------
113310      -- No MPA option is assigned.
113311 
113312 
113313 END IF;
113314 END IF;
113315 --
113316 
113317 --
113318 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113319    trace
113320       (p_msg      => 'END of AcctLineType_205'
113321       ,p_level    => C_LEVEL_PROCEDURE
113322       ,p_module   => l_log_module);
113323 END IF;
113324 --
113325 EXCEPTION
113326   WHEN xla_exceptions_pkg.application_exception THEN
113327       RAISE;
113328   WHEN OTHERS THEN
113329        xla_exceptions_pkg.raise_message
113330            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_205');
113331 END AcctLineType_205;
113332 --
113333 
113334 ---------------------------------------
113335 --
113336 -- PRIVATE FUNCTION
113337 --         AcctLineType_206
113338 --
113339 ---------------------------------------
113340 PROCEDURE AcctLineType_206 (
113341   p_application_id        IN NUMBER
113342  ,p_event_id              IN NUMBER
113343  ,p_calculate_acctd_flag  IN VARCHAR2
113344  ,p_calculate_g_l_flag    IN VARCHAR2
113345  ,p_actual_flag           IN OUT VARCHAR2
113346  ,p_balance_type_code     OUT VARCHAR2
113347  ,p_gain_or_loss_ref      OUT VARCHAR2
113348  
113349 --Cost Management Default Account
113350  , p_source_4            IN NUMBER
113351 --DISTRIBUTION_IDENTIFIER
113352  , p_source_11            IN NUMBER
113353 --Distribution Type
113354  , p_source_12            IN VARCHAR2
113355  , p_source_12_meaning    IN VARCHAR2
113356 --Entered Currency Code
113357  , p_source_15            IN VARCHAR2
113358 --Entered Amount
113359  , p_source_18            IN NUMBER
113360 --Currency Conversion Date
113361  , p_source_19            IN DATE
113362 --Currency Conversion Rate
113363  , p_source_20            IN NUMBER
113364 --Accounted Amount
113365  , p_source_22            IN NUMBER
113366 --Accounting Line Type
113367  , p_source_24            IN NUMBER
113368 )
113369 IS
113370 
113371 l_component_type              VARCHAR2(80);
113372 l_component_code              VARCHAR2(30);
113373 l_component_type_code         VARCHAR2(1);
113374 l_component_appl_id           INTEGER;
113375 l_amb_context_code            VARCHAR2(30);
113376 l_entity_code                 VARCHAR2(30);
113377 l_event_class_code            VARCHAR2(30);
113378 l_ae_header_id                NUMBER;
113379 l_event_type_code             VARCHAR2(30);
113380 l_line_definition_code        VARCHAR2(30);
113381 l_line_definition_owner_code  VARCHAR2(1);
113382 --
113383 -- adr variables
113384 l_segment                     VARCHAR2(30);
113385 l_ccid                        NUMBER;
113386 l_adr_transaction_coa_id      NUMBER;
113387 l_adr_accounting_coa_id       NUMBER;
113388 l_adr_flexfield_segment_code  VARCHAR2(30);
113389 l_adr_flex_value_set_id       NUMBER;
113390 l_adr_value_type_code         VARCHAR2(30);
113391 l_adr_value_combination_id    NUMBER;
113392 l_adr_value_segment_code      VARCHAR2(30);
113393 
113394 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
113395 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
113396 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
113397 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
113398 
113399 -- 4262811 Variables ------------------------------------------------------------------------------------------
113400 l_entered_amt_idx             NUMBER;
113401 l_accted_amt_idx              NUMBER;
113402 l_acc_rev_flag                VARCHAR2(1);
113403 l_accrual_line_num            NUMBER;
113404 l_tmp_amt                     NUMBER;
113405 l_acc_rev_natural_side_code   VARCHAR2(1);
113406 
113407 l_num_entries                 NUMBER;
113408 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
113409 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
113410 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
113411 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
113412 l_recog_line_1                NUMBER;
113413 l_recog_line_2                NUMBER;
113414 
113415 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
113416 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
113417 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
113418 
113419 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
113420 
113421 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
113422 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
113423 
113424 ---------------------------------------------------------------------------------------------------------------
113425 
113426 
113427 --
113428 -- bulk performance
113429 --
113430 l_balance_type_code           VARCHAR2(1);
113431 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
113432 l_log_module                  VARCHAR2(240);
113433 
113434 --
113435 -- Upgrade strategy
113436 --
113437 l_actual_upg_option           VARCHAR2(1);
113438 l_enc_upg_option           VARCHAR2(1);
113439 
113440 --
113441 BEGIN
113442 --
113443 IF g_log_enabled THEN
113444       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_206';
113445 END IF;
113446 --
113447 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113448 
113449       trace
113450          (p_msg      => 'BEGIN of AcctLineType_206'
113451          ,p_level    => C_LEVEL_PROCEDURE
113452          ,p_module   => l_log_module);
113453 
113454 END IF;
113455 --
113456 l_component_type             := 'AMB_JLT';
113457 l_component_code             := 'OVERHEAD_ABSORPTION';
113458 l_component_type_code        := 'S';
113459 l_component_appl_id          :=  707;
113460 l_amb_context_code           := 'DEFAULT';
113461 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
113462 l_event_class_code           := 'OSP';
113463 l_event_type_code            := 'OSP_ALL';
113464 l_line_definition_owner_code := 'S';
113465 l_line_definition_code       := 'OUTSIDE_PROCESSING';
113466 --
113467 l_balance_type_code          := 'A';
113468 l_segment                     := NULL;
113469 l_ccid                        := NULL;
113470 l_adr_transaction_coa_id      := NULL;
113471 l_adr_accounting_coa_id       := NULL;
113472 l_adr_flexfield_segment_code  := NULL;
113473 l_adr_flex_value_set_id       := NULL;
113474 l_adr_value_type_code         := NULL;
113475 l_adr_value_combination_id    := NULL;
113476 l_adr_value_segment_code      := NULL;
113477 
113478 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
113479 l_bflow_class_code           := '';    -- 4219869 Business Flow
113480 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
113481 l_budgetary_control_flag     := 'N';
113482 
113483 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
113484 l_bflow_applied_to_amt       := NULL; -- 5132302
113485 l_entered_amt_idx            := NULL;          -- 4262811
113486 l_accted_amt_idx             := NULL;          -- 4262811
113487 l_acc_rev_flag               := NULL;          -- 4262811
113488 l_accrual_line_num           := NULL;          -- 4262811
113489 l_tmp_amt                    := NULL;          -- 4262811
113490 --
113491  
113492 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
113493     l_balance_type_code <> 'B' THEN
113494 IF NVL(p_source_24,9E125) =  3
113495  THEN 
113496 
113497    --
113498    XLA_AE_LINES_PKG.SetNewLine;
113499 
113500    p_balance_type_code          := l_balance_type_code;
113501    -- set the flag so later we will know whether the gain loss line needs to be created
113502    
113503    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
113504      p_actual_flag :='A';
113505    END IF;
113506 
113507    --
113508    -- bulk performance
113509    --
113510    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
113511                                       p_header_num   => 0); -- 4262811
113512    --
113513    -- set accounting line options
113514    --
113515    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
113516            p_natural_side_code          => 'D'
113517          , p_gain_or_loss_flag          => 'N'
113518          , p_gl_transfer_mode_code      => 'S'
113519          , p_acct_entry_type_code       => 'A'
113520          , p_switch_side_flag           => 'Y'
113521          , p_merge_duplicate_code       => 'N'
113522          );
113523    --
113524    l_acc_rev_natural_side_code := 'C';  -- 4262811
113525    -- 
113526    --
113527    -- set accounting line type info
113528    --
113529    xla_ae_lines_pkg.SetAcctLineType
113530       (p_component_type             => l_component_type
113531       ,p_event_type_code            => l_event_type_code
113532       ,p_line_definition_owner_code => l_line_definition_owner_code
113533       ,p_line_definition_code       => l_line_definition_code
113534       ,p_accounting_line_code       => l_component_code
113535       ,p_accounting_line_type_code  => l_component_type_code
113536       ,p_accounting_line_appl_id    => l_component_appl_id
113537       ,p_amb_context_code           => l_amb_context_code
113538       ,p_entity_code                => l_entity_code
113539       ,p_event_class_code           => l_event_class_code);
113540    --
113541    -- set accounting class
113542    --
113543    xla_ae_lines_pkg.SetAcctClass(
113544            p_accounting_class_code  => 'OVERHEAD_ABSORPTION'
113545          , p_ae_header_id           => l_ae_header_id
113546          );
113547 
113548    --
113549    -- set rounding class
113550    --
113551    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
113552                       'OVERHEAD_ABSORPTION';
113553 
113554    --
113555    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
113556    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
113557    --
113558    -- bulk performance
113559    --
113560    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
113561 
113562    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
113563       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
113564 
113565    -- 4955764
113566    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113567       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
113568 
113569    -- 4458381 Public Sector Enh
113570    
113571    --
113572    -- set accounting attributes for the line type
113573    --
113574    l_entered_amt_idx := 3;
113575    l_accted_amt_idx  := 8;
113576    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
113577    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
113578    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
113579    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
113580    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
113581    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
113582    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
113583    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
113584    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
113585    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
113586    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
113587    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
113588    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
113589    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
113590    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
113591    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
113592    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
113593 
113594    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
113595    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
113596 
113597    ---------------------------------------------------------------------------------------------------------------
113598    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
113599    ---------------------------------------------------------------------------------------------------------------
113600    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
113601 
113602    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113603    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113604 
113605    IF xla_accounting_cache_pkg.GetValueChar
113606          (p_source_code         => 'LEDGER_CATEGORY_CODE'
113607          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
113608    AND l_bflow_method_code = 'PRIOR_ENTRY'
113609 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
113610    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
113611          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
113612        )
113613    THEN
113614          xla_ae_lines_pkg.BflowUpgEntry
113615            (p_business_method_code    => l_bflow_method_code
113616            ,p_business_class_code     => l_bflow_class_code
113617            ,p_balance_type            => l_balance_type_code);
113618    ELSE
113619       NULL;
113620 -- No business flow processing for business flow method of NONE.
113621    END IF;
113622 
113623    --
113624    -- call analytical criteria
113625    --
113626    
113627    --
113628    -- call description
113629    --
113630    -- No description or it is inherited.
113631    --
113632    -- call ADRs
113633    -- Bug 4922099
113634    --
113635    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113636         (NVL(l_actual_upg_option, 'N') = 'O') OR
113637         (NVL(l_enc_upg_option, 'N') = 'O')
113638       )
113639    THEN
113640    NULL;
113641    --
113642    --
113643    
113644   l_ccid := AcctDerRule_4(
113645            p_application_id           => p_application_id
113646          , p_ae_header_id             => l_ae_header_id 
113647 , p_source_4 => p_source_4
113648          , x_transaction_coa_id       => l_adr_transaction_coa_id
113649          , x_accounting_coa_id        => l_adr_accounting_coa_id
113650          , x_value_type_code          => l_adr_value_type_code
113651          , p_side                     => 'NA'
113652    );
113653 
113654    xla_ae_lines_pkg.set_ccid(
113655     p_code_combination_id          => l_ccid
113656   , p_value_type_code              => l_adr_value_type_code
113657   , p_transaction_coa_id           => l_adr_transaction_coa_id
113658   , p_accounting_coa_id            => l_adr_accounting_coa_id
113659   , p_adr_code                     => 'CST_DEFAULT'
113660   , p_adr_type_code                => 'S'
113661   , p_component_type               => l_component_type
113662   , p_component_code               => l_component_code
113663   , p_component_type_code          => l_component_type_code
113664   , p_component_appl_id            => l_component_appl_id
113665   , p_amb_context_code             => l_amb_context_code
113666   , p_side                         => 'NA'
113667   );
113668 
113669 
113670    --
113671    --
113672    END IF;
113673    --
113674    -- Bug 4922099
113675    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
113676           (NVL(l_enc_upg_option, 'N') = 'O')
113677         ) AND
113678         (l_bflow_method_code = 'PRIOR_ENTRY')
113679       )
113680    THEN
113681       IF
113682       --
113683       1 = 2
113684       --
113685       THEN
113686       xla_accounting_err_pkg.build_message
113687                                     (p_appli_s_name            => 'XLA'
113688                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113689                                     ,p_token_1                 => 'LINE_NUMBER'
113690                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
113691                                     ,p_token_2                 => 'LINE_TYPE_NAME'
113692                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
113693                                                                              l_component_type
113694                                                                             ,l_component_code
113695                                                                             ,l_component_type_code
113696                                                                             ,l_component_appl_id
113697                                                                             ,l_amb_context_code
113698                                                                             ,l_entity_code
113699                                                                             ,l_event_class_code
113700                                                                            )
113701                                     ,p_token_3                 => 'OWNER'
113702                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
113703                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
113704                                                                           ,p_lookup_code    => l_component_type_code
113705                                                                          )
113706                                     ,p_token_4                 => 'PRODUCT_NAME'
113707                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
113708                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
113709                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
113710                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
113711                                     ,p_ae_header_id            =>  NULL
113712                                        );
113713 
113714         IF (C_LEVEL_ERROR>= g_log_level) THEN
113715                  trace
113716                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113717                       ,p_level    => C_LEVEL_ERROR
113718                       ,p_module   => l_log_module);
113719         END IF;
113720       END IF;
113721    END IF;
113722    --
113723    --
113724    ------------------------------------------------------------------------------------------------
113725    -- 4219869 Business Flow
113726    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
113727    -- Prior Entry.  Currently, the following code is always generated.
113728    ------------------------------------------------------------------------------------------------
113729    XLA_AE_LINES_PKG.ValidateCurrentLine;
113730 
113731    ------------------------------------------------------------------------------------
113732    -- 4219869 Business Flow
113733    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
113734    ------------------------------------------------------------------------------------
113735    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113736 
113737    ----------------------------------------------------------------------------------
113738    -- 4219869 Business Flow
113739    -- Update journal entry status -- Need to generate this within IF <condition>
113740    ----------------------------------------------------------------------------------
113741    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113742          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
113743          ,p_balance_type_code => l_balance_type_code
113744          );
113745 
113746    -------------------------------------------------------------------------------------------
113747    -- 4262811 - Generate the Accrual Reversal lines
113748    -------------------------------------------------------------------------------------------
113749    BEGIN
113750       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
113751                               (g_array_event(p_event_id).array_value_num('header_index'));
113752       IF l_acc_rev_flag IS NULL THEN
113753          l_acc_rev_flag := 'N';
113754       END IF;
113755    EXCEPTION
113756       WHEN OTHERS THEN
113757          l_acc_rev_flag := 'N';
113758    END;
113759    --
113760    IF (l_acc_rev_flag = 'Y') THEN
113761 
113762        -- 4645092  ------------------------------------------------------------------------------
113763        -- To allow MPA report to determine if it should generate report process
113764        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
113765        ------------------------------------------------------------------------------------------
113766 
113767        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
113768        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
113769    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
113770    -- call ADRs
113771    -- Bug 4922099
113772    --
113773    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113774         (NVL(l_actual_upg_option, 'N') = 'O') OR
113775         (NVL(l_enc_upg_option, 'N') = 'O')
113776       )
113777    THEN
113778    NULL;
113779    --
113780    --
113781    
113782   l_ccid := AcctDerRule_4(
113783            p_application_id           => p_application_id
113784          , p_ae_header_id             => l_ae_header_id 
113785 , p_source_4 => p_source_4
113786          , x_transaction_coa_id       => l_adr_transaction_coa_id
113787          , x_accounting_coa_id        => l_adr_accounting_coa_id
113788          , x_value_type_code          => l_adr_value_type_code
113789          , p_side                     => 'NA'
113790    );
113791 
113792    xla_ae_lines_pkg.set_ccid(
113793     p_code_combination_id          => l_ccid
113794   , p_value_type_code              => l_adr_value_type_code
113795   , p_transaction_coa_id           => l_adr_transaction_coa_id
113796   , p_accounting_coa_id            => l_adr_accounting_coa_id
113797   , p_adr_code                     => 'CST_DEFAULT'
113798   , p_adr_type_code                => 'S'
113799   , p_component_type               => l_component_type
113800   , p_component_code               => l_component_code
113801   , p_component_type_code          => l_component_type_code
113802   , p_component_appl_id            => l_component_appl_id
113803   , p_amb_context_code             => l_amb_context_code
113804   , p_side                         => 'NA'
113805   );
113806 
113807 
113808    --
113809    --
113810    END IF;
113811 
113812        --
113813        -- Update the line information that should be overwritten
113814        --
113815        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
113816                                          p_header_num   => 1);
113817        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
113818 
113819        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
113820 
113821        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
113822           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
113823        END IF;
113824 
113825       --
113826       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
113827       --
113828       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
113829           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
113830       ELSE
113831           ---------------------------------------------------------------------------------------------------
113832           -- 4262811a Switch Sign
113833           ---------------------------------------------------------------------------------------------------
113834           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
113835           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113836                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113837           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113838                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113839           -- 5132302
113840           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
113841                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113842 
113843       END IF;
113844 
113845       -- 4955764
113846       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113847       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
113848 
113849 
113850       XLA_AE_LINES_PKG.ValidateCurrentLine;
113851       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113852 
113853       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113854                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
113855                ,p_balance_type_code => l_balance_type_code);
113856 
113857    END IF;
113858 
113859    -----------------------------------------------------------------------------------------
113860    -- 4262811 Multiperiod Accounting
113861    -----------------------------------------------------------------------------------------
113862      -- No MPA option is assigned.
113863 
113864 
113865 END IF;
113866 END IF;
113867 --
113868 
113869 --
113870 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113871    trace
113872       (p_msg      => 'END of AcctLineType_206'
113873       ,p_level    => C_LEVEL_PROCEDURE
113874       ,p_module   => l_log_module);
113875 END IF;
113876 --
113877 EXCEPTION
113878   WHEN xla_exceptions_pkg.application_exception THEN
113879       RAISE;
113880   WHEN OTHERS THEN
113881        xla_exceptions_pkg.raise_message
113882            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_206');
113883 END AcctLineType_206;
113884 --
113885 
113886 ---------------------------------------
113887 --
113888 -- PRIVATE FUNCTION
113889 --         AcctLineType_207
113890 --
113891 ---------------------------------------
113892 PROCEDURE AcctLineType_207 (
113893   p_application_id        IN NUMBER
113894  ,p_event_id              IN NUMBER
113895  ,p_calculate_acctd_flag  IN VARCHAR2
113896  ,p_calculate_g_l_flag    IN VARCHAR2
113897  ,p_actual_flag           IN OUT VARCHAR2
113898  ,p_balance_type_code     OUT VARCHAR2
113899  ,p_gain_or_loss_ref      OUT VARCHAR2
113900  
113901 --Cost Management Default Account
113902  , p_source_4            IN NUMBER
113903 --DISTRIBUTION_IDENTIFIER
113904  , p_source_11            IN NUMBER
113905 --Distribution Type
113906  , p_source_12            IN VARCHAR2
113907  , p_source_12_meaning    IN VARCHAR2
113908 --Entered Currency Code
113909  , p_source_15            IN VARCHAR2
113910 --Entered Amount
113911  , p_source_18            IN NUMBER
113912 --Currency Conversion Date
113913  , p_source_19            IN DATE
113914 --Currency Conversion Rate
113915  , p_source_20            IN NUMBER
113916 --Currency Conversion Type
113917  , p_source_21            IN VARCHAR2
113918 --Accounted Amount
113919  , p_source_22            IN NUMBER
113920 --Accounting Line Type
113921  , p_source_24            IN NUMBER
113922 )
113923 IS
113924 
113925 l_component_type              VARCHAR2(80);
113926 l_component_code              VARCHAR2(30);
113927 l_component_type_code         VARCHAR2(1);
113928 l_component_appl_id           INTEGER;
113929 l_amb_context_code            VARCHAR2(30);
113930 l_entity_code                 VARCHAR2(30);
113931 l_event_class_code            VARCHAR2(30);
113932 l_ae_header_id                NUMBER;
113933 l_event_type_code             VARCHAR2(30);
113934 l_line_definition_code        VARCHAR2(30);
113935 l_line_definition_owner_code  VARCHAR2(1);
113936 --
113937 -- adr variables
113938 l_segment                     VARCHAR2(30);
113939 l_ccid                        NUMBER;
113940 l_adr_transaction_coa_id      NUMBER;
113941 l_adr_accounting_coa_id       NUMBER;
113942 l_adr_flexfield_segment_code  VARCHAR2(30);
113943 l_adr_flex_value_set_id       NUMBER;
113944 l_adr_value_type_code         VARCHAR2(30);
113945 l_adr_value_combination_id    NUMBER;
113946 l_adr_value_segment_code      VARCHAR2(30);
113947 
113948 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
113949 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
113950 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
113951 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
113952 
113953 -- 4262811 Variables ------------------------------------------------------------------------------------------
113954 l_entered_amt_idx             NUMBER;
113955 l_accted_amt_idx              NUMBER;
113956 l_acc_rev_flag                VARCHAR2(1);
113957 l_accrual_line_num            NUMBER;
113958 l_tmp_amt                     NUMBER;
113959 l_acc_rev_natural_side_code   VARCHAR2(1);
113960 
113961 l_num_entries                 NUMBER;
113962 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
113963 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
113964 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
113965 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
113966 l_recog_line_1                NUMBER;
113967 l_recog_line_2                NUMBER;
113968 
113969 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
113970 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
113971 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
113972 
113973 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
113974 
113975 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
113976 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
113977 
113978 ---------------------------------------------------------------------------------------------------------------
113979 
113980 
113981 --
113982 -- bulk performance
113983 --
113984 l_balance_type_code           VARCHAR2(1);
113985 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
113986 l_log_module                  VARCHAR2(240);
113987 
113988 --
113989 -- Upgrade strategy
113990 --
113991 l_actual_upg_option           VARCHAR2(1);
113992 l_enc_upg_option           VARCHAR2(1);
113993 
113994 --
113995 BEGIN
113996 --
113997 IF g_log_enabled THEN
113998       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_207';
113999 END IF;
114000 --
114001 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114002 
114003       trace
114004          (p_msg      => 'BEGIN of AcctLineType_207'
114005          ,p_level    => C_LEVEL_PROCEDURE
114006          ,p_module   => l_log_module);
114007 
114008 END IF;
114009 --
114010 l_component_type             := 'AMB_JLT';
114011 l_component_code             := 'PROFIT_IN_INVENTORY';
114012 l_component_type_code        := 'S';
114013 l_component_appl_id          :=  707;
114014 l_amb_context_code           := 'DEFAULT';
114015 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
114016 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
114017 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
114018 l_line_definition_owner_code := 'S';
114019 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
114020 --
114021 l_balance_type_code          := 'A';
114022 l_segment                     := NULL;
114023 l_ccid                        := NULL;
114024 l_adr_transaction_coa_id      := NULL;
114025 l_adr_accounting_coa_id       := NULL;
114026 l_adr_flexfield_segment_code  := NULL;
114027 l_adr_flex_value_set_id       := NULL;
114028 l_adr_value_type_code         := NULL;
114029 l_adr_value_combination_id    := NULL;
114030 l_adr_value_segment_code      := NULL;
114031 
114032 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
114033 l_bflow_class_code           := '';    -- 4219869 Business Flow
114034 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
114035 l_budgetary_control_flag     := 'N';
114036 
114037 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
114038 l_bflow_applied_to_amt       := NULL; -- 5132302
114039 l_entered_amt_idx            := NULL;          -- 4262811
114040 l_accted_amt_idx             := NULL;          -- 4262811
114041 l_acc_rev_flag               := NULL;          -- 4262811
114042 l_accrual_line_num           := NULL;          -- 4262811
114043 l_tmp_amt                    := NULL;          -- 4262811
114044 --
114045  
114046 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
114047     l_balance_type_code <> 'B' THEN
114048 IF NVL(p_source_24,9E125) =  30
114049  THEN 
114050 
114051    --
114052    XLA_AE_LINES_PKG.SetNewLine;
114053 
114054    p_balance_type_code          := l_balance_type_code;
114055    -- set the flag so later we will know whether the gain loss line needs to be created
114056    
114057    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
114058      p_actual_flag :='A';
114059    END IF;
114060 
114061    --
114062    -- bulk performance
114063    --
114064    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
114065                                       p_header_num   => 0); -- 4262811
114066    --
114067    -- set accounting line options
114068    --
114069    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
114070            p_natural_side_code          => 'D'
114071          , p_gain_or_loss_flag          => 'N'
114072          , p_gl_transfer_mode_code      => 'S'
114073          , p_acct_entry_type_code       => 'A'
114074          , p_switch_side_flag           => 'Y'
114075          , p_merge_duplicate_code       => 'N'
114076          );
114077    --
114078    l_acc_rev_natural_side_code := 'C';  -- 4262811
114079    -- 
114080    --
114081    -- set accounting line type info
114082    --
114083    xla_ae_lines_pkg.SetAcctLineType
114084       (p_component_type             => l_component_type
114085       ,p_event_type_code            => l_event_type_code
114086       ,p_line_definition_owner_code => l_line_definition_owner_code
114087       ,p_line_definition_code       => l_line_definition_code
114088       ,p_accounting_line_code       => l_component_code
114089       ,p_accounting_line_type_code  => l_component_type_code
114090       ,p_accounting_line_appl_id    => l_component_appl_id
114091       ,p_amb_context_code           => l_amb_context_code
114092       ,p_entity_code                => l_entity_code
114093       ,p_event_class_code           => l_event_class_code);
114094    --
114095    -- set accounting class
114096    --
114097    xla_ae_lines_pkg.SetAcctClass(
114098            p_accounting_class_code  => 'PROFIT_IN_INVENTORY'
114099          , p_ae_header_id           => l_ae_header_id
114100          );
114101 
114102    --
114103    -- set rounding class
114104    --
114105    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
114106                       'PROFIT_IN_INVENTORY';
114107 
114108    --
114109    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
114110    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
114111    --
114112    -- bulk performance
114113    --
114114    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
114115 
114116    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
114117       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
114118 
114119    -- 4955764
114120    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114121       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
114122 
114123    -- 4458381 Public Sector Enh
114124    
114125    --
114126    -- set accounting attributes for the line type
114127    --
114128    l_entered_amt_idx := 3;
114129    l_accted_amt_idx  := 8;
114130    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
114131    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
114132    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
114133    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
114134    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
114135    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
114136    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
114137    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
114138    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
114139    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
114140    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
114141    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
114142    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
114143    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
114144    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
114145    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
114146    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
114147 
114148    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
114149    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
114150 
114151    ---------------------------------------------------------------------------------------------------------------
114152    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
114153    ---------------------------------------------------------------------------------------------------------------
114154    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
114155 
114156    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114157    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114158 
114159    IF xla_accounting_cache_pkg.GetValueChar
114160          (p_source_code         => 'LEDGER_CATEGORY_CODE'
114161          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
114162    AND l_bflow_method_code = 'PRIOR_ENTRY'
114163 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
114164    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
114165          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
114166        )
114167    THEN
114168          xla_ae_lines_pkg.BflowUpgEntry
114169            (p_business_method_code    => l_bflow_method_code
114170            ,p_business_class_code     => l_bflow_class_code
114171            ,p_balance_type            => l_balance_type_code);
114172    ELSE
114173       NULL;
114174 -- No business flow processing for business flow method of NONE.
114175    END IF;
114176 
114177    --
114178    -- call analytical criteria
114179    --
114180    
114181    --
114182    -- call description
114183    --
114184    -- No description or it is inherited.
114185    --
114186    -- call ADRs
114187    -- Bug 4922099
114188    --
114189    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114190         (NVL(l_actual_upg_option, 'N') = 'O') OR
114191         (NVL(l_enc_upg_option, 'N') = 'O')
114192       )
114193    THEN
114194    NULL;
114195    --
114196    --
114197    
114198   l_ccid := AcctDerRule_4(
114199            p_application_id           => p_application_id
114200          , p_ae_header_id             => l_ae_header_id 
114201 , p_source_4 => p_source_4
114202          , x_transaction_coa_id       => l_adr_transaction_coa_id
114203          , x_accounting_coa_id        => l_adr_accounting_coa_id
114204          , x_value_type_code          => l_adr_value_type_code
114205          , p_side                     => 'NA'
114206    );
114207 
114208    xla_ae_lines_pkg.set_ccid(
114209     p_code_combination_id          => l_ccid
114210   , p_value_type_code              => l_adr_value_type_code
114211   , p_transaction_coa_id           => l_adr_transaction_coa_id
114212   , p_accounting_coa_id            => l_adr_accounting_coa_id
114213   , p_adr_code                     => 'CST_DEFAULT'
114214   , p_adr_type_code                => 'S'
114215   , p_component_type               => l_component_type
114216   , p_component_code               => l_component_code
114217   , p_component_type_code          => l_component_type_code
114218   , p_component_appl_id            => l_component_appl_id
114219   , p_amb_context_code             => l_amb_context_code
114220   , p_side                         => 'NA'
114221   );
114222 
114223 
114224    --
114225    --
114226    END IF;
114227    --
114228    -- Bug 4922099
114229    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
114230           (NVL(l_enc_upg_option, 'N') = 'O')
114231         ) AND
114232         (l_bflow_method_code = 'PRIOR_ENTRY')
114233       )
114234    THEN
114235       IF
114236       --
114237       1 = 2
114238       --
114239       THEN
114240       xla_accounting_err_pkg.build_message
114241                                     (p_appli_s_name            => 'XLA'
114242                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114243                                     ,p_token_1                 => 'LINE_NUMBER'
114244                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
114245                                     ,p_token_2                 => 'LINE_TYPE_NAME'
114246                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
114247                                                                              l_component_type
114248                                                                             ,l_component_code
114249                                                                             ,l_component_type_code
114250                                                                             ,l_component_appl_id
114251                                                                             ,l_amb_context_code
114252                                                                             ,l_entity_code
114253                                                                             ,l_event_class_code
114254                                                                            )
114255                                     ,p_token_3                 => 'OWNER'
114256                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
114257                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
114258                                                                           ,p_lookup_code    => l_component_type_code
114259                                                                          )
114260                                     ,p_token_4                 => 'PRODUCT_NAME'
114261                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
114262                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
114263                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
114264                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
114265                                     ,p_ae_header_id            =>  NULL
114266                                        );
114267 
114268         IF (C_LEVEL_ERROR>= g_log_level) THEN
114269                  trace
114270                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114271                       ,p_level    => C_LEVEL_ERROR
114272                       ,p_module   => l_log_module);
114273         END IF;
114274       END IF;
114275    END IF;
114276    --
114277    --
114278    ------------------------------------------------------------------------------------------------
114279    -- 4219869 Business Flow
114280    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
114281    -- Prior Entry.  Currently, the following code is always generated.
114282    ------------------------------------------------------------------------------------------------
114283    XLA_AE_LINES_PKG.ValidateCurrentLine;
114284 
114285    ------------------------------------------------------------------------------------
114286    -- 4219869 Business Flow
114287    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
114288    ------------------------------------------------------------------------------------
114289    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114290 
114291    ----------------------------------------------------------------------------------
114292    -- 4219869 Business Flow
114293    -- Update journal entry status -- Need to generate this within IF <condition>
114294    ----------------------------------------------------------------------------------
114295    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114296          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
114297          ,p_balance_type_code => l_balance_type_code
114298          );
114299 
114300    -------------------------------------------------------------------------------------------
114301    -- 4262811 - Generate the Accrual Reversal lines
114302    -------------------------------------------------------------------------------------------
114303    BEGIN
114304       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
114305                               (g_array_event(p_event_id).array_value_num('header_index'));
114306       IF l_acc_rev_flag IS NULL THEN
114307          l_acc_rev_flag := 'N';
114308       END IF;
114309    EXCEPTION
114310       WHEN OTHERS THEN
114311          l_acc_rev_flag := 'N';
114312    END;
114313    --
114314    IF (l_acc_rev_flag = 'Y') THEN
114315 
114316        -- 4645092  ------------------------------------------------------------------------------
114317        -- To allow MPA report to determine if it should generate report process
114318        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
114319        ------------------------------------------------------------------------------------------
114320 
114321        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
114322        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
114323    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
114324    -- call ADRs
114325    -- Bug 4922099
114326    --
114327    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114328         (NVL(l_actual_upg_option, 'N') = 'O') OR
114329         (NVL(l_enc_upg_option, 'N') = 'O')
114330       )
114331    THEN
114332    NULL;
114333    --
114334    --
114335    
114336   l_ccid := AcctDerRule_4(
114337            p_application_id           => p_application_id
114338          , p_ae_header_id             => l_ae_header_id 
114339 , p_source_4 => p_source_4
114340          , x_transaction_coa_id       => l_adr_transaction_coa_id
114341          , x_accounting_coa_id        => l_adr_accounting_coa_id
114342          , x_value_type_code          => l_adr_value_type_code
114343          , p_side                     => 'NA'
114344    );
114345 
114346    xla_ae_lines_pkg.set_ccid(
114347     p_code_combination_id          => l_ccid
114348   , p_value_type_code              => l_adr_value_type_code
114349   , p_transaction_coa_id           => l_adr_transaction_coa_id
114350   , p_accounting_coa_id            => l_adr_accounting_coa_id
114351   , p_adr_code                     => 'CST_DEFAULT'
114352   , p_adr_type_code                => 'S'
114353   , p_component_type               => l_component_type
114354   , p_component_code               => l_component_code
114355   , p_component_type_code          => l_component_type_code
114356   , p_component_appl_id            => l_component_appl_id
114357   , p_amb_context_code             => l_amb_context_code
114358   , p_side                         => 'NA'
114359   );
114360 
114361 
114362    --
114363    --
114364    END IF;
114365 
114366        --
114367        -- Update the line information that should be overwritten
114368        --
114369        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
114370                                          p_header_num   => 1);
114371        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
114372 
114373        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
114374 
114375        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
114376           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
114377        END IF;
114378 
114379       --
114380       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
114381       --
114382       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
114383           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
114384       ELSE
114385           ---------------------------------------------------------------------------------------------------
114386           -- 4262811a Switch Sign
114387           ---------------------------------------------------------------------------------------------------
114388           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
114389           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114390                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114391           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114392                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114393           -- 5132302
114394           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
114395                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114396 
114397       END IF;
114398 
114399       -- 4955764
114400       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114401       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
114402 
114403 
114404       XLA_AE_LINES_PKG.ValidateCurrentLine;
114405       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114406 
114407       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114408                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
114409                ,p_balance_type_code => l_balance_type_code);
114410 
114411    END IF;
114412 
114413    -----------------------------------------------------------------------------------------
114414    -- 4262811 Multiperiod Accounting
114415    -----------------------------------------------------------------------------------------
114416      -- No MPA option is assigned.
114417 
114418 
114419 END IF;
114420 END IF;
114421 --
114422 
114423 --
114424 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114425    trace
114426       (p_msg      => 'END of AcctLineType_207'
114427       ,p_level    => C_LEVEL_PROCEDURE
114428       ,p_module   => l_log_module);
114429 END IF;
114430 --
114431 EXCEPTION
114432   WHEN xla_exceptions_pkg.application_exception THEN
114433       RAISE;
114434   WHEN OTHERS THEN
114435        xla_exceptions_pkg.raise_message
114436            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_207');
114437 END AcctLineType_207;
114438 --
114439 
114440 ---------------------------------------
114441 --
114442 -- PRIVATE FUNCTION
114443 --         AcctLineType_208
114444 --
114445 ---------------------------------------
114446 PROCEDURE AcctLineType_208 (
114447   p_application_id        IN NUMBER
114448  ,p_event_id              IN NUMBER
114449  ,p_calculate_acctd_flag  IN VARCHAR2
114450  ,p_calculate_g_l_flag    IN VARCHAR2
114451  ,p_actual_flag           IN OUT VARCHAR2
114452  ,p_balance_type_code     OUT VARCHAR2
114453  ,p_gain_or_loss_ref      OUT VARCHAR2
114454  
114455 --Cost Management Default Account
114456  , p_source_4            IN NUMBER
114457 --DISTRIBUTION_IDENTIFIER
114458  , p_source_11            IN NUMBER
114459 --Distribution Type
114460  , p_source_12            IN VARCHAR2
114461  , p_source_12_meaning    IN VARCHAR2
114462 --Entered Currency Code
114463  , p_source_15            IN VARCHAR2
114464 --Entered Amount
114465  , p_source_18            IN NUMBER
114466 --Currency Conversion Date
114467  , p_source_19            IN DATE
114468 --Currency Conversion Rate
114469  , p_source_20            IN NUMBER
114470 --Currency Conversion Type
114471  , p_source_21            IN VARCHAR2
114472 --Accounted Amount
114473  , p_source_22            IN NUMBER
114474 --Accounting Line Type
114475  , p_source_24            IN NUMBER
114476 )
114477 IS
114478 
114479 l_component_type              VARCHAR2(80);
114480 l_component_code              VARCHAR2(30);
114481 l_component_type_code         VARCHAR2(1);
114482 l_component_appl_id           INTEGER;
114483 l_amb_context_code            VARCHAR2(30);
114484 l_entity_code                 VARCHAR2(30);
114485 l_event_class_code            VARCHAR2(30);
114486 l_ae_header_id                NUMBER;
114487 l_event_type_code             VARCHAR2(30);
114488 l_line_definition_code        VARCHAR2(30);
114489 l_line_definition_owner_code  VARCHAR2(1);
114490 --
114491 -- adr variables
114492 l_segment                     VARCHAR2(30);
114493 l_ccid                        NUMBER;
114494 l_adr_transaction_coa_id      NUMBER;
114495 l_adr_accounting_coa_id       NUMBER;
114496 l_adr_flexfield_segment_code  VARCHAR2(30);
114497 l_adr_flex_value_set_id       NUMBER;
114498 l_adr_value_type_code         VARCHAR2(30);
114499 l_adr_value_combination_id    NUMBER;
114500 l_adr_value_segment_code      VARCHAR2(30);
114501 
114502 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
114503 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
114504 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
114505 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
114506 
114507 -- 4262811 Variables ------------------------------------------------------------------------------------------
114508 l_entered_amt_idx             NUMBER;
114509 l_accted_amt_idx              NUMBER;
114510 l_acc_rev_flag                VARCHAR2(1);
114511 l_accrual_line_num            NUMBER;
114512 l_tmp_amt                     NUMBER;
114513 l_acc_rev_natural_side_code   VARCHAR2(1);
114514 
114515 l_num_entries                 NUMBER;
114516 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
114517 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
114518 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
114519 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
114520 l_recog_line_1                NUMBER;
114521 l_recog_line_2                NUMBER;
114522 
114523 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
114524 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
114525 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
114526 
114527 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
114528 
114529 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
114530 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
114531 
114532 ---------------------------------------------------------------------------------------------------------------
114533 
114534 
114535 --
114536 -- bulk performance
114537 --
114538 l_balance_type_code           VARCHAR2(1);
114539 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
114540 l_log_module                  VARCHAR2(240);
114541 
114542 --
114543 -- Upgrade strategy
114544 --
114545 l_actual_upg_option           VARCHAR2(1);
114546 l_enc_upg_option           VARCHAR2(1);
114547 
114548 --
114549 BEGIN
114550 --
114551 IF g_log_enabled THEN
114552       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_208';
114553 END IF;
114554 --
114555 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114556 
114557       trace
114558          (p_msg      => 'BEGIN of AcctLineType_208'
114559          ,p_level    => C_LEVEL_PROCEDURE
114560          ,p_module   => l_log_module);
114561 
114562 END IF;
114563 --
114564 l_component_type             := 'AMB_JLT';
114565 l_component_code             := 'PROFIT_IN_INVENTORY';
114566 l_component_type_code        := 'S';
114567 l_component_appl_id          :=  707;
114568 l_amb_context_code           := 'DEFAULT';
114569 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
114570 l_event_class_code           := 'USER_DEFINE';
114571 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
114572 l_line_definition_owner_code := 'S';
114573 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
114574 --
114575 l_balance_type_code          := 'A';
114576 l_segment                     := NULL;
114577 l_ccid                        := NULL;
114578 l_adr_transaction_coa_id      := NULL;
114579 l_adr_accounting_coa_id       := NULL;
114580 l_adr_flexfield_segment_code  := NULL;
114581 l_adr_flex_value_set_id       := NULL;
114582 l_adr_value_type_code         := NULL;
114583 l_adr_value_combination_id    := NULL;
114584 l_adr_value_segment_code      := NULL;
114585 
114586 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
114587 l_bflow_class_code           := '';    -- 4219869 Business Flow
114588 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
114589 l_budgetary_control_flag     := 'N';
114590 
114591 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
114592 l_bflow_applied_to_amt       := NULL; -- 5132302
114593 l_entered_amt_idx            := NULL;          -- 4262811
114594 l_accted_amt_idx             := NULL;          -- 4262811
114595 l_acc_rev_flag               := NULL;          -- 4262811
114596 l_accrual_line_num           := NULL;          -- 4262811
114597 l_tmp_amt                    := NULL;          -- 4262811
114598 --
114599  
114600 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
114601     l_balance_type_code <> 'B' THEN
114602 IF NVL(p_source_24,9E125) =  30
114603  THEN 
114604 
114605    --
114606    XLA_AE_LINES_PKG.SetNewLine;
114607 
114608    p_balance_type_code          := l_balance_type_code;
114609    -- set the flag so later we will know whether the gain loss line needs to be created
114610    
114611    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
114612      p_actual_flag :='A';
114613    END IF;
114614 
114615    --
114616    -- bulk performance
114617    --
114618    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
114619                                       p_header_num   => 0); -- 4262811
114620    --
114621    -- set accounting line options
114622    --
114623    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
114624            p_natural_side_code          => 'D'
114625          , p_gain_or_loss_flag          => 'N'
114626          , p_gl_transfer_mode_code      => 'S'
114627          , p_acct_entry_type_code       => 'A'
114628          , p_switch_side_flag           => 'Y'
114629          , p_merge_duplicate_code       => 'N'
114630          );
114631    --
114632    l_acc_rev_natural_side_code := 'C';  -- 4262811
114633    -- 
114634    --
114635    -- set accounting line type info
114636    --
114637    xla_ae_lines_pkg.SetAcctLineType
114638       (p_component_type             => l_component_type
114639       ,p_event_type_code            => l_event_type_code
114640       ,p_line_definition_owner_code => l_line_definition_owner_code
114641       ,p_line_definition_code       => l_line_definition_code
114642       ,p_accounting_line_code       => l_component_code
114643       ,p_accounting_line_type_code  => l_component_type_code
114644       ,p_accounting_line_appl_id    => l_component_appl_id
114645       ,p_amb_context_code           => l_amb_context_code
114646       ,p_entity_code                => l_entity_code
114647       ,p_event_class_code           => l_event_class_code);
114648    --
114649    -- set accounting class
114650    --
114651    xla_ae_lines_pkg.SetAcctClass(
114652            p_accounting_class_code  => 'PROFIT_IN_INVENTORY'
114653          , p_ae_header_id           => l_ae_header_id
114654          );
114655 
114656    --
114657    -- set rounding class
114658    --
114659    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
114660                       'PROFIT_IN_INVENTORY';
114661 
114662    --
114663    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
114664    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
114665    --
114666    -- bulk performance
114667    --
114668    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
114669 
114670    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
114671       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
114672 
114673    -- 4955764
114674    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114675       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
114676 
114677    -- 4458381 Public Sector Enh
114678    
114679    --
114680    -- set accounting attributes for the line type
114681    --
114682    l_entered_amt_idx := 3;
114683    l_accted_amt_idx  := 8;
114684    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
114685    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
114686    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
114687    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
114688    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
114689    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
114690    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
114691    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
114692    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
114693    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
114694    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
114695    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
114696    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
114697    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
114698    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
114699    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
114700    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
114701 
114702    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
114703    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
114704 
114705    ---------------------------------------------------------------------------------------------------------------
114706    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
114707    ---------------------------------------------------------------------------------------------------------------
114708    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
114709 
114710    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114711    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114712 
114713    IF xla_accounting_cache_pkg.GetValueChar
114714          (p_source_code         => 'LEDGER_CATEGORY_CODE'
114715          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
114716    AND l_bflow_method_code = 'PRIOR_ENTRY'
114717 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
114718    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
114719          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
114720        )
114721    THEN
114722          xla_ae_lines_pkg.BflowUpgEntry
114723            (p_business_method_code    => l_bflow_method_code
114724            ,p_business_class_code     => l_bflow_class_code
114725            ,p_balance_type            => l_balance_type_code);
114726    ELSE
114727       NULL;
114728 -- No business flow processing for business flow method of NONE.
114729    END IF;
114730 
114731    --
114732    -- call analytical criteria
114733    --
114734    
114735    --
114736    -- call description
114737    --
114738    -- No description or it is inherited.
114739    --
114740    -- call ADRs
114741    -- Bug 4922099
114742    --
114743    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114744         (NVL(l_actual_upg_option, 'N') = 'O') OR
114745         (NVL(l_enc_upg_option, 'N') = 'O')
114746       )
114747    THEN
114748    NULL;
114749    --
114750    --
114751    
114752   l_ccid := AcctDerRule_4(
114753            p_application_id           => p_application_id
114754          , p_ae_header_id             => l_ae_header_id 
114755 , p_source_4 => p_source_4
114756          , x_transaction_coa_id       => l_adr_transaction_coa_id
114757          , x_accounting_coa_id        => l_adr_accounting_coa_id
114758          , x_value_type_code          => l_adr_value_type_code
114759          , p_side                     => 'NA'
114760    );
114761 
114762    xla_ae_lines_pkg.set_ccid(
114763     p_code_combination_id          => l_ccid
114764   , p_value_type_code              => l_adr_value_type_code
114765   , p_transaction_coa_id           => l_adr_transaction_coa_id
114766   , p_accounting_coa_id            => l_adr_accounting_coa_id
114767   , p_adr_code                     => 'CST_DEFAULT'
114768   , p_adr_type_code                => 'S'
114769   , p_component_type               => l_component_type
114770   , p_component_code               => l_component_code
114771   , p_component_type_code          => l_component_type_code
114772   , p_component_appl_id            => l_component_appl_id
114773   , p_amb_context_code             => l_amb_context_code
114774   , p_side                         => 'NA'
114775   );
114776 
114777 
114778    --
114779    --
114780    END IF;
114781    --
114782    -- Bug 4922099
114783    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
114784           (NVL(l_enc_upg_option, 'N') = 'O')
114785         ) AND
114786         (l_bflow_method_code = 'PRIOR_ENTRY')
114787       )
114788    THEN
114789       IF
114790       --
114791       1 = 2
114792       --
114793       THEN
114794       xla_accounting_err_pkg.build_message
114795                                     (p_appli_s_name            => 'XLA'
114796                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114797                                     ,p_token_1                 => 'LINE_NUMBER'
114798                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
114799                                     ,p_token_2                 => 'LINE_TYPE_NAME'
114800                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
114801                                                                              l_component_type
114802                                                                             ,l_component_code
114803                                                                             ,l_component_type_code
114804                                                                             ,l_component_appl_id
114805                                                                             ,l_amb_context_code
114806                                                                             ,l_entity_code
114807                                                                             ,l_event_class_code
114808                                                                            )
114809                                     ,p_token_3                 => 'OWNER'
114810                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
114811                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
114812                                                                           ,p_lookup_code    => l_component_type_code
114813                                                                          )
114814                                     ,p_token_4                 => 'PRODUCT_NAME'
114815                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
114816                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
114817                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
114818                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
114819                                     ,p_ae_header_id            =>  NULL
114820                                        );
114821 
114822         IF (C_LEVEL_ERROR>= g_log_level) THEN
114823                  trace
114824                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114825                       ,p_level    => C_LEVEL_ERROR
114826                       ,p_module   => l_log_module);
114827         END IF;
114828       END IF;
114829    END IF;
114830    --
114831    --
114832    ------------------------------------------------------------------------------------------------
114833    -- 4219869 Business Flow
114834    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
114835    -- Prior Entry.  Currently, the following code is always generated.
114836    ------------------------------------------------------------------------------------------------
114837    XLA_AE_LINES_PKG.ValidateCurrentLine;
114838 
114839    ------------------------------------------------------------------------------------
114840    -- 4219869 Business Flow
114841    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
114842    ------------------------------------------------------------------------------------
114843    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114844 
114845    ----------------------------------------------------------------------------------
114846    -- 4219869 Business Flow
114847    -- Update journal entry status -- Need to generate this within IF <condition>
114848    ----------------------------------------------------------------------------------
114849    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114850          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
114851          ,p_balance_type_code => l_balance_type_code
114852          );
114853 
114854    -------------------------------------------------------------------------------------------
114855    -- 4262811 - Generate the Accrual Reversal lines
114856    -------------------------------------------------------------------------------------------
114857    BEGIN
114858       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
114859                               (g_array_event(p_event_id).array_value_num('header_index'));
114860       IF l_acc_rev_flag IS NULL THEN
114861          l_acc_rev_flag := 'N';
114862       END IF;
114863    EXCEPTION
114864       WHEN OTHERS THEN
114865          l_acc_rev_flag := 'N';
114866    END;
114867    --
114868    IF (l_acc_rev_flag = 'Y') THEN
114869 
114870        -- 4645092  ------------------------------------------------------------------------------
114871        -- To allow MPA report to determine if it should generate report process
114872        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
114873        ------------------------------------------------------------------------------------------
114874 
114875        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
114876        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
114877    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
114878    -- call ADRs
114879    -- Bug 4922099
114880    --
114881    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114882         (NVL(l_actual_upg_option, 'N') = 'O') OR
114883         (NVL(l_enc_upg_option, 'N') = 'O')
114884       )
114885    THEN
114886    NULL;
114887    --
114888    --
114889    
114890   l_ccid := AcctDerRule_4(
114891            p_application_id           => p_application_id
114892          , p_ae_header_id             => l_ae_header_id 
114893 , p_source_4 => p_source_4
114894          , x_transaction_coa_id       => l_adr_transaction_coa_id
114895          , x_accounting_coa_id        => l_adr_accounting_coa_id
114896          , x_value_type_code          => l_adr_value_type_code
114897          , p_side                     => 'NA'
114898    );
114899 
114900    xla_ae_lines_pkg.set_ccid(
114901     p_code_combination_id          => l_ccid
114902   , p_value_type_code              => l_adr_value_type_code
114903   , p_transaction_coa_id           => l_adr_transaction_coa_id
114904   , p_accounting_coa_id            => l_adr_accounting_coa_id
114905   , p_adr_code                     => 'CST_DEFAULT'
114906   , p_adr_type_code                => 'S'
114907   , p_component_type               => l_component_type
114908   , p_component_code               => l_component_code
114909   , p_component_type_code          => l_component_type_code
114910   , p_component_appl_id            => l_component_appl_id
114911   , p_amb_context_code             => l_amb_context_code
114912   , p_side                         => 'NA'
114913   );
114914 
114915 
114916    --
114917    --
114918    END IF;
114919 
114920        --
114921        -- Update the line information that should be overwritten
114922        --
114923        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
114924                                          p_header_num   => 1);
114925        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
114926 
114927        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
114928 
114929        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
114930           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
114931        END IF;
114932 
114933       --
114934       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
114935       --
114936       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
114937           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
114938       ELSE
114939           ---------------------------------------------------------------------------------------------------
114940           -- 4262811a Switch Sign
114941           ---------------------------------------------------------------------------------------------------
114942           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
114943           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114944                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114945           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114946                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114947           -- 5132302
114948           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
114949                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114950 
114951       END IF;
114952 
114953       -- 4955764
114954       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114955       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
114956 
114957 
114958       XLA_AE_LINES_PKG.ValidateCurrentLine;
114959       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114960 
114961       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114962                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
114963                ,p_balance_type_code => l_balance_type_code);
114964 
114965    END IF;
114966 
114967    -----------------------------------------------------------------------------------------
114968    -- 4262811 Multiperiod Accounting
114969    -----------------------------------------------------------------------------------------
114970      -- No MPA option is assigned.
114971 
114972 
114973 END IF;
114974 END IF;
114975 --
114976 
114977 --
114978 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114979    trace
114980       (p_msg      => 'END of AcctLineType_208'
114981       ,p_level    => C_LEVEL_PROCEDURE
114982       ,p_module   => l_log_module);
114983 END IF;
114984 --
114985 EXCEPTION
114986   WHEN xla_exceptions_pkg.application_exception THEN
114987       RAISE;
114988   WHEN OTHERS THEN
114989        xla_exceptions_pkg.raise_message
114990            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_208');
114991 END AcctLineType_208;
114992 --
114993 
114994 ---------------------------------------
114995 --
114996 -- PRIVATE FUNCTION
114997 --         AcctLineType_209
114998 --
114999 ---------------------------------------
115000 PROCEDURE AcctLineType_209 (
115001   p_application_id        IN NUMBER
115002  ,p_event_id              IN NUMBER
115003  ,p_calculate_acctd_flag  IN VARCHAR2
115004  ,p_calculate_g_l_flag    IN VARCHAR2
115005  ,p_actual_flag           IN OUT VARCHAR2
115006  ,p_balance_type_code     OUT VARCHAR2
115007  ,p_gain_or_loss_ref      OUT VARCHAR2
115008  
115009 --Cost Management Default Account
115010  , p_source_4            IN NUMBER
115011 --Applied to Application ID
115012  , p_source_6            IN NUMBER
115013 --Applied to Distribution Link Type
115014  , p_source_7            IN VARCHAR2
115015 --Applied to Entity Code
115016  , p_source_8            IN VARCHAR2
115017 --DISTRIBUTION_IDENTIFIER
115018  , p_source_11            IN NUMBER
115019 --Distribution Type
115020  , p_source_12            IN VARCHAR2
115021  , p_source_12_meaning    IN VARCHAR2
115022 --Encumbrance Reversal Amount Entered
115023  , p_source_14            IN NUMBER
115024 --Entered Currency Code
115025  , p_source_15            IN VARCHAR2
115026 --Transaction Encumbrance Reversal Amount
115027  , p_source_16            IN NUMBER
115028 --Entered Amount
115029  , p_source_18            IN NUMBER
115030 --Currency Conversion Date
115031  , p_source_19            IN DATE
115032 --Currency Conversion Rate
115033  , p_source_20            IN NUMBER
115034 --Currency Conversion Type
115035  , p_source_21            IN VARCHAR2
115036 --Accounted Amount
115037  , p_source_22            IN NUMBER
115038 --Accounting Line Type
115039  , p_source_24            IN NUMBER
115040 --Costing Encumbrance Upgrade Option
115041  , p_source_27            IN VARCHAR2
115042 --TXN_PO_DISTRIBUTION_ID
115043  , p_source_28            IN NUMBER
115044 --TXN_PO_HEADER_ID
115045  , p_source_29            IN NUMBER
115046 --Requisition Budget Account
115047  , p_source_30            IN NUMBER
115048 --Requisition Encumbrance Type Identifier
115049  , p_source_31            IN NUMBER
115050 )
115051 IS
115052 
115053 l_component_type              VARCHAR2(80);
115054 l_component_code              VARCHAR2(30);
115055 l_component_type_code         VARCHAR2(1);
115056 l_component_appl_id           INTEGER;
115057 l_amb_context_code            VARCHAR2(30);
115058 l_entity_code                 VARCHAR2(30);
115059 l_event_class_code            VARCHAR2(30);
115060 l_ae_header_id                NUMBER;
115061 l_event_type_code             VARCHAR2(30);
115062 l_line_definition_code        VARCHAR2(30);
115063 l_line_definition_owner_code  VARCHAR2(1);
115064 --
115065 -- adr variables
115066 l_segment                     VARCHAR2(30);
115067 l_ccid                        NUMBER;
115068 l_adr_transaction_coa_id      NUMBER;
115069 l_adr_accounting_coa_id       NUMBER;
115070 l_adr_flexfield_segment_code  VARCHAR2(30);
115071 l_adr_flex_value_set_id       NUMBER;
115072 l_adr_value_type_code         VARCHAR2(30);
115073 l_adr_value_combination_id    NUMBER;
115074 l_adr_value_segment_code      VARCHAR2(30);
115075 
115076 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
115077 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
115078 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
115079 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
115080 
115081 -- 4262811 Variables ------------------------------------------------------------------------------------------
115082 l_entered_amt_idx             NUMBER;
115083 l_accted_amt_idx              NUMBER;
115084 l_acc_rev_flag                VARCHAR2(1);
115085 l_accrual_line_num            NUMBER;
115086 l_tmp_amt                     NUMBER;
115087 l_acc_rev_natural_side_code   VARCHAR2(1);
115088 
115089 l_num_entries                 NUMBER;
115090 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
115091 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
115092 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
115093 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
115094 l_recog_line_1                NUMBER;
115095 l_recog_line_2                NUMBER;
115096 
115097 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
115098 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
115099 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
115100 
115101 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
115102 
115103 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
115104 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
115105 
115106 ---------------------------------------------------------------------------------------------------------------
115107 
115108 
115109 --
115110 -- bulk performance
115111 --
115112 l_balance_type_code           VARCHAR2(1);
115113 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
115114 l_log_module                  VARCHAR2(240);
115115 
115116 --
115117 -- Upgrade strategy
115118 --
115119 l_actual_upg_option           VARCHAR2(1);
115120 l_enc_upg_option           VARCHAR2(1);
115121 
115122 --
115123 BEGIN
115124 --
115125 IF g_log_enabled THEN
115126       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_209';
115127 END IF;
115128 --
115129 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115130 
115131       trace
115132          (p_msg      => 'BEGIN of AcctLineType_209'
115133          ,p_level    => C_LEVEL_PROCEDURE
115134          ,p_module   => l_log_module);
115135 
115136 END IF;
115137 --
115138 l_component_type             := 'AMB_JLT';
115139 l_component_code             := 'PROFIT_IN_INVENTORY';
115140 l_component_type_code        := 'S';
115141 l_component_appl_id          :=  707;
115142 l_amb_context_code           := 'DEFAULT';
115143 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
115144 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
115145 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
115146 l_line_definition_owner_code := 'S';
115147 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT';
115148 --
115149 l_balance_type_code          := 'A';
115150 l_segment                     := NULL;
115151 l_ccid                        := NULL;
115152 l_adr_transaction_coa_id      := NULL;
115153 l_adr_accounting_coa_id       := NULL;
115154 l_adr_flexfield_segment_code  := NULL;
115155 l_adr_flex_value_set_id       := NULL;
115156 l_adr_value_type_code         := NULL;
115157 l_adr_value_combination_id    := NULL;
115158 l_adr_value_segment_code      := NULL;
115159 
115160 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
115161 l_bflow_class_code           := '';    -- 4219869 Business Flow
115162 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
115163 l_budgetary_control_flag     := 'N';
115164 
115165 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
115166 l_bflow_applied_to_amt       := NULL; -- 5132302
115167 l_entered_amt_idx            := NULL;          -- 4262811
115168 l_accted_amt_idx             := NULL;          -- 4262811
115169 l_acc_rev_flag               := NULL;          -- 4262811
115170 l_accrual_line_num           := NULL;          -- 4262811
115171 l_tmp_amt                    := NULL;          -- 4262811
115172 --
115173  
115174 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
115175     l_balance_type_code <> 'B' THEN
115176 IF NVL(p_source_24,9E125) =  30
115177  THEN 
115178 
115179    --
115180    XLA_AE_LINES_PKG.SetNewLine;
115181 
115182    p_balance_type_code          := l_balance_type_code;
115183    -- set the flag so later we will know whether the gain loss line needs to be created
115184    
115185    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
115186      p_actual_flag :='A';
115187    END IF;
115188 
115189    --
115190    -- bulk performance
115191    --
115192    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
115193                                       p_header_num   => 0); -- 4262811
115194    --
115195    -- set accounting line options
115196    --
115197    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
115198            p_natural_side_code          => 'D'
115199          , p_gain_or_loss_flag          => 'N'
115200          , p_gl_transfer_mode_code      => 'S'
115201          , p_acct_entry_type_code       => 'A'
115202          , p_switch_side_flag           => 'Y'
115203          , p_merge_duplicate_code       => 'N'
115204          );
115205    --
115206    l_acc_rev_natural_side_code := 'C';  -- 4262811
115207    -- 
115208    --
115209    -- set accounting line type info
115210    --
115211    xla_ae_lines_pkg.SetAcctLineType
115212       (p_component_type             => l_component_type
115213       ,p_event_type_code            => l_event_type_code
115214       ,p_line_definition_owner_code => l_line_definition_owner_code
115215       ,p_line_definition_code       => l_line_definition_code
115216       ,p_accounting_line_code       => l_component_code
115217       ,p_accounting_line_type_code  => l_component_type_code
115218       ,p_accounting_line_appl_id    => l_component_appl_id
115219       ,p_amb_context_code           => l_amb_context_code
115220       ,p_entity_code                => l_entity_code
115221       ,p_event_class_code           => l_event_class_code);
115222    --
115223    -- set accounting class
115224    --
115225    xla_ae_lines_pkg.SetAcctClass(
115226            p_accounting_class_code  => 'PROFIT_IN_INVENTORY'
115227          , p_ae_header_id           => l_ae_header_id
115228          );
115229 
115230    --
115231    -- set rounding class
115232    --
115233    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
115234                       'PROFIT_IN_INVENTORY';
115235 
115236    --
115237    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
115238    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
115239    --
115240    -- bulk performance
115241    --
115242    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
115243 
115244    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
115245       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
115246 
115247    -- 4955764
115248    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115249       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
115250 
115251    -- 4458381 Public Sector Enh
115252    
115253    --
115254    -- set accounting attributes for the line type
115255    --
115256    l_entered_amt_idx := 17;
115257    l_accted_amt_idx  := 22;
115258    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
115259    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
115260    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
115261    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
115262    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
115263    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
115264    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
115265    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
115266    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
115267    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
115268    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
115269    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
115270    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
115271    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
115272    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
115273    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
115274    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
115275    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
115276    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
115277    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
115278    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
115279    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
115280    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
115281    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
115282    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
115283    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
115284    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
115285    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
115286    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
115287    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
115288    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
115289    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
115290    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
115291    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
115292    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
115293    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
115294    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
115295    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
115296    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
115297    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
115298    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
115299    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
115300    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
115301    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
115302    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
115303    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
115304    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
115305    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
115306    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
115307 
115308    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
115309    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
115310 
115311    ---------------------------------------------------------------------------------------------------------------
115312    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
115313    ---------------------------------------------------------------------------------------------------------------
115314    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
115315 
115316    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115317    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115318 
115319    IF xla_accounting_cache_pkg.GetValueChar
115320          (p_source_code         => 'LEDGER_CATEGORY_CODE'
115321          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
115322    AND l_bflow_method_code = 'PRIOR_ENTRY'
115323 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
115324    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
115325          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
115326        )
115327    THEN
115328          xla_ae_lines_pkg.BflowUpgEntry
115329            (p_business_method_code    => l_bflow_method_code
115330            ,p_business_class_code     => l_bflow_class_code
115331            ,p_balance_type            => l_balance_type_code);
115332    ELSE
115333       NULL;
115334 -- No business flow processing for business flow method of NONE.
115335    END IF;
115336 
115337    --
115338    -- call analytical criteria
115339    --
115340    
115341    --
115342    -- call description
115343    --
115344    -- No description or it is inherited.
115345    --
115346    -- call ADRs
115347    -- Bug 4922099
115348    --
115349    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115350         (NVL(l_actual_upg_option, 'N') = 'O') OR
115351         (NVL(l_enc_upg_option, 'N') = 'O')
115352       )
115353    THEN
115354    NULL;
115355    --
115356    --
115357    
115358   l_ccid := AcctDerRule_4(
115359            p_application_id           => p_application_id
115360          , p_ae_header_id             => l_ae_header_id 
115361 , p_source_4 => p_source_4
115362          , x_transaction_coa_id       => l_adr_transaction_coa_id
115363          , x_accounting_coa_id        => l_adr_accounting_coa_id
115364          , x_value_type_code          => l_adr_value_type_code
115365          , p_side                     => 'NA'
115366    );
115367 
115368    xla_ae_lines_pkg.set_ccid(
115369     p_code_combination_id          => l_ccid
115370   , p_value_type_code              => l_adr_value_type_code
115371   , p_transaction_coa_id           => l_adr_transaction_coa_id
115372   , p_accounting_coa_id            => l_adr_accounting_coa_id
115373   , p_adr_code                     => 'CST_DEFAULT'
115374   , p_adr_type_code                => 'S'
115375   , p_component_type               => l_component_type
115376   , p_component_code               => l_component_code
115377   , p_component_type_code          => l_component_type_code
115378   , p_component_appl_id            => l_component_appl_id
115379   , p_amb_context_code             => l_amb_context_code
115380   , p_side                         => 'NA'
115381   );
115382 
115383 
115384    --
115385    --
115386    END IF;
115387    --
115388    -- Bug 4922099
115389    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
115390           (NVL(l_enc_upg_option, 'N') = 'O')
115391         ) AND
115392         (l_bflow_method_code = 'PRIOR_ENTRY')
115393       )
115394    THEN
115395       IF
115396       --
115397       1 = 2
115398       --
115399       THEN
115400       xla_accounting_err_pkg.build_message
115401                                     (p_appli_s_name            => 'XLA'
115402                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115403                                     ,p_token_1                 => 'LINE_NUMBER'
115404                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
115405                                     ,p_token_2                 => 'LINE_TYPE_NAME'
115406                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
115407                                                                              l_component_type
115408                                                                             ,l_component_code
115409                                                                             ,l_component_type_code
115410                                                                             ,l_component_appl_id
115411                                                                             ,l_amb_context_code
115412                                                                             ,l_entity_code
115413                                                                             ,l_event_class_code
115414                                                                            )
115415                                     ,p_token_3                 => 'OWNER'
115416                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
115417                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
115418                                                                           ,p_lookup_code    => l_component_type_code
115419                                                                          )
115420                                     ,p_token_4                 => 'PRODUCT_NAME'
115421                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
115422                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
115423                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
115424                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
115425                                     ,p_ae_header_id            =>  NULL
115426                                        );
115427 
115428         IF (C_LEVEL_ERROR>= g_log_level) THEN
115429                  trace
115430                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115431                       ,p_level    => C_LEVEL_ERROR
115432                       ,p_module   => l_log_module);
115433         END IF;
115434       END IF;
115435    END IF;
115436    --
115437    --
115438    ------------------------------------------------------------------------------------------------
115439    -- 4219869 Business Flow
115440    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
115441    -- Prior Entry.  Currently, the following code is always generated.
115442    ------------------------------------------------------------------------------------------------
115443    XLA_AE_LINES_PKG.ValidateCurrentLine;
115444 
115445    ------------------------------------------------------------------------------------
115446    -- 4219869 Business Flow
115447    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
115448    ------------------------------------------------------------------------------------
115449    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115450 
115451    ----------------------------------------------------------------------------------
115452    -- 4219869 Business Flow
115453    -- Update journal entry status -- Need to generate this within IF <condition>
115454    ----------------------------------------------------------------------------------
115455    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115456          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
115457          ,p_balance_type_code => l_balance_type_code
115458          );
115459 
115460    -------------------------------------------------------------------------------------------
115461    -- 4262811 - Generate the Accrual Reversal lines
115462    -------------------------------------------------------------------------------------------
115463    BEGIN
115464       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
115465                               (g_array_event(p_event_id).array_value_num('header_index'));
115466       IF l_acc_rev_flag IS NULL THEN
115467          l_acc_rev_flag := 'N';
115468       END IF;
115469    EXCEPTION
115470       WHEN OTHERS THEN
115471          l_acc_rev_flag := 'N';
115472    END;
115473    --
115474    IF (l_acc_rev_flag = 'Y') THEN
115475 
115476        -- 4645092  ------------------------------------------------------------------------------
115477        -- To allow MPA report to determine if it should generate report process
115478        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
115479        ------------------------------------------------------------------------------------------
115480 
115481        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
115482        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
115483    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
115484    -- call ADRs
115485    -- Bug 4922099
115486    --
115487    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115488         (NVL(l_actual_upg_option, 'N') = 'O') OR
115489         (NVL(l_enc_upg_option, 'N') = 'O')
115490       )
115491    THEN
115492    NULL;
115493    --
115494    --
115495    
115496   l_ccid := AcctDerRule_4(
115497            p_application_id           => p_application_id
115498          , p_ae_header_id             => l_ae_header_id 
115499 , p_source_4 => p_source_4
115500          , x_transaction_coa_id       => l_adr_transaction_coa_id
115501          , x_accounting_coa_id        => l_adr_accounting_coa_id
115502          , x_value_type_code          => l_adr_value_type_code
115503          , p_side                     => 'NA'
115504    );
115505 
115506    xla_ae_lines_pkg.set_ccid(
115507     p_code_combination_id          => l_ccid
115508   , p_value_type_code              => l_adr_value_type_code
115509   , p_transaction_coa_id           => l_adr_transaction_coa_id
115510   , p_accounting_coa_id            => l_adr_accounting_coa_id
115511   , p_adr_code                     => 'CST_DEFAULT'
115512   , p_adr_type_code                => 'S'
115513   , p_component_type               => l_component_type
115514   , p_component_code               => l_component_code
115515   , p_component_type_code          => l_component_type_code
115516   , p_component_appl_id            => l_component_appl_id
115517   , p_amb_context_code             => l_amb_context_code
115518   , p_side                         => 'NA'
115519   );
115520 
115521 
115522    --
115523    --
115524    END IF;
115525 
115526        --
115527        -- Update the line information that should be overwritten
115528        --
115529        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
115530                                          p_header_num   => 1);
115531        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
115532 
115533        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
115534 
115535        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
115536           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
115537        END IF;
115538 
115539       --
115540       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
115541       --
115542       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
115543           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
115544       ELSE
115545           ---------------------------------------------------------------------------------------------------
115546           -- 4262811a Switch Sign
115547           ---------------------------------------------------------------------------------------------------
115548           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
115549           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
115550                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115551           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
115552                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115553           -- 5132302
115554           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
115555                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115556 
115557       END IF;
115558 
115559       -- 4955764
115560       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115561       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
115562 
115563 
115564       XLA_AE_LINES_PKG.ValidateCurrentLine;
115565       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115566 
115567       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115568                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
115569                ,p_balance_type_code => l_balance_type_code);
115570 
115571    END IF;
115572 
115573    -----------------------------------------------------------------------------------------
115574    -- 4262811 Multiperiod Accounting
115575    -----------------------------------------------------------------------------------------
115576      -- No MPA option is assigned.
115577 
115578 
115579 END IF;
115580 END IF;
115581 --
115582 
115583 --
115584 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115585    trace
115586       (p_msg      => 'END of AcctLineType_209'
115587       ,p_level    => C_LEVEL_PROCEDURE
115588       ,p_module   => l_log_module);
115589 END IF;
115590 --
115591 EXCEPTION
115592   WHEN xla_exceptions_pkg.application_exception THEN
115593       RAISE;
115594   WHEN OTHERS THEN
115595        xla_exceptions_pkg.raise_message
115596            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_209');
115597 END AcctLineType_209;
115598 --
115599 
115600 ---------------------------------------
115601 --
115602 -- PRIVATE FUNCTION
115603 --         AcctLineType_210
115604 --
115605 ---------------------------------------
115606 PROCEDURE AcctLineType_210 (
115607   p_application_id        IN NUMBER
115608  ,p_event_id              IN NUMBER
115609  ,p_calculate_acctd_flag  IN VARCHAR2
115610  ,p_calculate_g_l_flag    IN VARCHAR2
115611  ,p_actual_flag           IN OUT VARCHAR2
115612  ,p_balance_type_code     OUT VARCHAR2
115613  ,p_gain_or_loss_ref      OUT VARCHAR2
115614  
115615 --Cost Management Default Account
115616  , p_source_4            IN NUMBER
115617 --DISTRIBUTION_IDENTIFIER
115618  , p_source_11            IN NUMBER
115619 --Distribution Type
115620  , p_source_12            IN VARCHAR2
115621  , p_source_12_meaning    IN VARCHAR2
115622 --Entered Currency Code
115623  , p_source_15            IN VARCHAR2
115624 --Entered Amount
115625  , p_source_18            IN NUMBER
115626 --Currency Conversion Date
115627  , p_source_19            IN DATE
115628 --Currency Conversion Rate
115629  , p_source_20            IN NUMBER
115630 --Currency Conversion Type
115631  , p_source_21            IN VARCHAR2
115632 --Accounted Amount
115633  , p_source_22            IN NUMBER
115634 --Accounting Line Type
115635  , p_source_24            IN NUMBER
115636 )
115637 IS
115638 
115639 l_component_type              VARCHAR2(80);
115640 l_component_code              VARCHAR2(30);
115641 l_component_type_code         VARCHAR2(1);
115642 l_component_appl_id           INTEGER;
115643 l_amb_context_code            VARCHAR2(30);
115644 l_entity_code                 VARCHAR2(30);
115645 l_event_class_code            VARCHAR2(30);
115646 l_ae_header_id                NUMBER;
115647 l_event_type_code             VARCHAR2(30);
115648 l_line_definition_code        VARCHAR2(30);
115649 l_line_definition_owner_code  VARCHAR2(1);
115650 --
115651 -- adr variables
115652 l_segment                     VARCHAR2(30);
115653 l_ccid                        NUMBER;
115654 l_adr_transaction_coa_id      NUMBER;
115655 l_adr_accounting_coa_id       NUMBER;
115656 l_adr_flexfield_segment_code  VARCHAR2(30);
115657 l_adr_flex_value_set_id       NUMBER;
115658 l_adr_value_type_code         VARCHAR2(30);
115659 l_adr_value_combination_id    NUMBER;
115660 l_adr_value_segment_code      VARCHAR2(30);
115661 
115662 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
115663 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
115664 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
115665 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
115666 
115667 -- 4262811 Variables ------------------------------------------------------------------------------------------
115668 l_entered_amt_idx             NUMBER;
115669 l_accted_amt_idx              NUMBER;
115670 l_acc_rev_flag                VARCHAR2(1);
115671 l_accrual_line_num            NUMBER;
115672 l_tmp_amt                     NUMBER;
115673 l_acc_rev_natural_side_code   VARCHAR2(1);
115674 
115675 l_num_entries                 NUMBER;
115676 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
115677 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
115678 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
115679 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
115680 l_recog_line_1                NUMBER;
115681 l_recog_line_2                NUMBER;
115682 
115683 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
115684 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
115685 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
115686 
115687 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
115688 
115689 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
115690 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
115691 
115692 ---------------------------------------------------------------------------------------------------------------
115693 
115694 
115695 --
115696 -- bulk performance
115697 --
115698 l_balance_type_code           VARCHAR2(1);
115699 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
115700 l_log_module                  VARCHAR2(240);
115701 
115702 --
115703 -- Upgrade strategy
115704 --
115705 l_actual_upg_option           VARCHAR2(1);
115706 l_enc_upg_option           VARCHAR2(1);
115707 
115708 --
115709 BEGIN
115710 --
115711 IF g_log_enabled THEN
115712       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_210';
115713 END IF;
115714 --
115715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115716 
115717       trace
115718          (p_msg      => 'BEGIN of AcctLineType_210'
115719          ,p_level    => C_LEVEL_PROCEDURE
115720          ,p_module   => l_log_module);
115721 
115722 END IF;
115723 --
115724 l_component_type             := 'AMB_JLT';
115725 l_component_code             := 'PROFIT_IN_INVENTORY';
115726 l_component_type_code        := 'S';
115727 l_component_appl_id          :=  707;
115728 l_amb_context_code           := 'DEFAULT';
115729 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
115730 l_event_class_code           := 'USER_DEFINE';
115731 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
115732 l_line_definition_owner_code := 'S';
115733 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
115734 --
115735 l_balance_type_code          := 'A';
115736 l_segment                     := NULL;
115737 l_ccid                        := NULL;
115738 l_adr_transaction_coa_id      := NULL;
115739 l_adr_accounting_coa_id       := NULL;
115740 l_adr_flexfield_segment_code  := NULL;
115741 l_adr_flex_value_set_id       := NULL;
115742 l_adr_value_type_code         := NULL;
115743 l_adr_value_combination_id    := NULL;
115744 l_adr_value_segment_code      := NULL;
115745 
115746 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
115747 l_bflow_class_code           := '';    -- 4219869 Business Flow
115748 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
115749 l_budgetary_control_flag     := 'N';
115750 
115751 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
115752 l_bflow_applied_to_amt       := NULL; -- 5132302
115753 l_entered_amt_idx            := NULL;          -- 4262811
115754 l_accted_amt_idx             := NULL;          -- 4262811
115755 l_acc_rev_flag               := NULL;          -- 4262811
115756 l_accrual_line_num           := NULL;          -- 4262811
115757 l_tmp_amt                    := NULL;          -- 4262811
115758 --
115759  
115760 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
115761     l_balance_type_code <> 'B' THEN
115762 IF NVL(p_source_24,9E125) =  30
115763  THEN 
115764 
115765    --
115766    XLA_AE_LINES_PKG.SetNewLine;
115767 
115768    p_balance_type_code          := l_balance_type_code;
115769    -- set the flag so later we will know whether the gain loss line needs to be created
115770    
115771    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
115772      p_actual_flag :='A';
115773    END IF;
115774 
115775    --
115776    -- bulk performance
115777    --
115778    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
115779                                       p_header_num   => 0); -- 4262811
115780    --
115781    -- set accounting line options
115782    --
115783    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
115784            p_natural_side_code          => 'D'
115785          , p_gain_or_loss_flag          => 'N'
115786          , p_gl_transfer_mode_code      => 'S'
115787          , p_acct_entry_type_code       => 'A'
115788          , p_switch_side_flag           => 'Y'
115789          , p_merge_duplicate_code       => 'N'
115790          );
115791    --
115792    l_acc_rev_natural_side_code := 'C';  -- 4262811
115793    -- 
115794    --
115795    -- set accounting line type info
115796    --
115797    xla_ae_lines_pkg.SetAcctLineType
115798       (p_component_type             => l_component_type
115799       ,p_event_type_code            => l_event_type_code
115800       ,p_line_definition_owner_code => l_line_definition_owner_code
115801       ,p_line_definition_code       => l_line_definition_code
115802       ,p_accounting_line_code       => l_component_code
115803       ,p_accounting_line_type_code  => l_component_type_code
115804       ,p_accounting_line_appl_id    => l_component_appl_id
115805       ,p_amb_context_code           => l_amb_context_code
115806       ,p_entity_code                => l_entity_code
115807       ,p_event_class_code           => l_event_class_code);
115808    --
115809    -- set accounting class
115810    --
115811    xla_ae_lines_pkg.SetAcctClass(
115812            p_accounting_class_code  => 'PROFIT_IN_INVENTORY'
115813          , p_ae_header_id           => l_ae_header_id
115814          );
115815 
115816    --
115817    -- set rounding class
115818    --
115819    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
115820                       'PROFIT_IN_INVENTORY';
115821 
115822    --
115823    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
115824    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
115825    --
115826    -- bulk performance
115827    --
115828    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
115829 
115830    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
115831       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
115832 
115833    -- 4955764
115834    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115835       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
115836 
115837    -- 4458381 Public Sector Enh
115838    
115839    --
115840    -- set accounting attributes for the line type
115841    --
115842    l_entered_amt_idx := 3;
115843    l_accted_amt_idx  := 8;
115844    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
115845    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
115846    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
115847    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
115848    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
115849    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
115850    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
115851    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
115852    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
115853    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
115854    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
115855    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
115856    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
115857    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
115858    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
115859    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
115860    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
115861 
115862    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
115863    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
115864 
115865    ---------------------------------------------------------------------------------------------------------------
115866    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
115867    ---------------------------------------------------------------------------------------------------------------
115868    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
115869 
115870    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115871    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115872 
115873    IF xla_accounting_cache_pkg.GetValueChar
115874          (p_source_code         => 'LEDGER_CATEGORY_CODE'
115875          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
115876    AND l_bflow_method_code = 'PRIOR_ENTRY'
115877 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
115878    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
115879          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
115880        )
115881    THEN
115882          xla_ae_lines_pkg.BflowUpgEntry
115883            (p_business_method_code    => l_bflow_method_code
115884            ,p_business_class_code     => l_bflow_class_code
115885            ,p_balance_type            => l_balance_type_code);
115886    ELSE
115887       NULL;
115888 -- No business flow processing for business flow method of NONE.
115889    END IF;
115890 
115891    --
115892    -- call analytical criteria
115893    --
115894    
115895    --
115896    -- call description
115897    --
115898    -- No description or it is inherited.
115899    --
115900    -- call ADRs
115901    -- Bug 4922099
115902    --
115903    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115904         (NVL(l_actual_upg_option, 'N') = 'O') OR
115905         (NVL(l_enc_upg_option, 'N') = 'O')
115906       )
115907    THEN
115908    NULL;
115909    --
115910    --
115911    
115912   l_ccid := AcctDerRule_4(
115913            p_application_id           => p_application_id
115914          , p_ae_header_id             => l_ae_header_id 
115915 , p_source_4 => p_source_4
115916          , x_transaction_coa_id       => l_adr_transaction_coa_id
115917          , x_accounting_coa_id        => l_adr_accounting_coa_id
115918          , x_value_type_code          => l_adr_value_type_code
115919          , p_side                     => 'NA'
115920    );
115921 
115922    xla_ae_lines_pkg.set_ccid(
115923     p_code_combination_id          => l_ccid
115924   , p_value_type_code              => l_adr_value_type_code
115925   , p_transaction_coa_id           => l_adr_transaction_coa_id
115926   , p_accounting_coa_id            => l_adr_accounting_coa_id
115927   , p_adr_code                     => 'CST_DEFAULT'
115928   , p_adr_type_code                => 'S'
115929   , p_component_type               => l_component_type
115930   , p_component_code               => l_component_code
115931   , p_component_type_code          => l_component_type_code
115932   , p_component_appl_id            => l_component_appl_id
115933   , p_amb_context_code             => l_amb_context_code
115934   , p_side                         => 'NA'
115935   );
115936 
115937 
115938    --
115939    --
115940    END IF;
115941    --
115942    -- Bug 4922099
115943    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
115944           (NVL(l_enc_upg_option, 'N') = 'O')
115945         ) AND
115946         (l_bflow_method_code = 'PRIOR_ENTRY')
115947       )
115948    THEN
115949       IF
115950       --
115951       1 = 2
115952       --
115953       THEN
115954       xla_accounting_err_pkg.build_message
115955                                     (p_appli_s_name            => 'XLA'
115956                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115957                                     ,p_token_1                 => 'LINE_NUMBER'
115958                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
115959                                     ,p_token_2                 => 'LINE_TYPE_NAME'
115960                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
115961                                                                              l_component_type
115962                                                                             ,l_component_code
115963                                                                             ,l_component_type_code
115964                                                                             ,l_component_appl_id
115965                                                                             ,l_amb_context_code
115966                                                                             ,l_entity_code
115967                                                                             ,l_event_class_code
115968                                                                            )
115969                                     ,p_token_3                 => 'OWNER'
115970                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
115971                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
115972                                                                           ,p_lookup_code    => l_component_type_code
115973                                                                          )
115974                                     ,p_token_4                 => 'PRODUCT_NAME'
115975                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
115976                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
115977                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
115978                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
115979                                     ,p_ae_header_id            =>  NULL
115980                                        );
115981 
115982         IF (C_LEVEL_ERROR>= g_log_level) THEN
115983                  trace
115984                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115985                       ,p_level    => C_LEVEL_ERROR
115986                       ,p_module   => l_log_module);
115987         END IF;
115988       END IF;
115989    END IF;
115990    --
115991    --
115992    ------------------------------------------------------------------------------------------------
115993    -- 4219869 Business Flow
115994    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
115995    -- Prior Entry.  Currently, the following code is always generated.
115996    ------------------------------------------------------------------------------------------------
115997    XLA_AE_LINES_PKG.ValidateCurrentLine;
115998 
115999    ------------------------------------------------------------------------------------
116000    -- 4219869 Business Flow
116001    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
116002    ------------------------------------------------------------------------------------
116003    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116004 
116005    ----------------------------------------------------------------------------------
116006    -- 4219869 Business Flow
116007    -- Update journal entry status -- Need to generate this within IF <condition>
116008    ----------------------------------------------------------------------------------
116009    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116010          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
116011          ,p_balance_type_code => l_balance_type_code
116012          );
116013 
116014    -------------------------------------------------------------------------------------------
116015    -- 4262811 - Generate the Accrual Reversal lines
116016    -------------------------------------------------------------------------------------------
116017    BEGIN
116018       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
116019                               (g_array_event(p_event_id).array_value_num('header_index'));
116020       IF l_acc_rev_flag IS NULL THEN
116021          l_acc_rev_flag := 'N';
116022       END IF;
116023    EXCEPTION
116024       WHEN OTHERS THEN
116025          l_acc_rev_flag := 'N';
116026    END;
116027    --
116028    IF (l_acc_rev_flag = 'Y') THEN
116029 
116030        -- 4645092  ------------------------------------------------------------------------------
116031        -- To allow MPA report to determine if it should generate report process
116032        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
116033        ------------------------------------------------------------------------------------------
116034 
116035        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
116036        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
116037    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
116038    -- call ADRs
116039    -- Bug 4922099
116040    --
116041    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116042         (NVL(l_actual_upg_option, 'N') = 'O') OR
116043         (NVL(l_enc_upg_option, 'N') = 'O')
116044       )
116045    THEN
116046    NULL;
116047    --
116048    --
116049    
116050   l_ccid := AcctDerRule_4(
116051            p_application_id           => p_application_id
116052          , p_ae_header_id             => l_ae_header_id 
116053 , p_source_4 => p_source_4
116054          , x_transaction_coa_id       => l_adr_transaction_coa_id
116055          , x_accounting_coa_id        => l_adr_accounting_coa_id
116056          , x_value_type_code          => l_adr_value_type_code
116057          , p_side                     => 'NA'
116058    );
116059 
116060    xla_ae_lines_pkg.set_ccid(
116061     p_code_combination_id          => l_ccid
116062   , p_value_type_code              => l_adr_value_type_code
116063   , p_transaction_coa_id           => l_adr_transaction_coa_id
116064   , p_accounting_coa_id            => l_adr_accounting_coa_id
116065   , p_adr_code                     => 'CST_DEFAULT'
116066   , p_adr_type_code                => 'S'
116067   , p_component_type               => l_component_type
116068   , p_component_code               => l_component_code
116069   , p_component_type_code          => l_component_type_code
116070   , p_component_appl_id            => l_component_appl_id
116071   , p_amb_context_code             => l_amb_context_code
116072   , p_side                         => 'NA'
116073   );
116074 
116075 
116076    --
116077    --
116078    END IF;
116079 
116080        --
116081        -- Update the line information that should be overwritten
116082        --
116083        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
116084                                          p_header_num   => 1);
116085        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
116086 
116087        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
116088 
116089        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
116090           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
116091        END IF;
116092 
116093       --
116094       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
116095       --
116096       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
116097           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
116098       ELSE
116099           ---------------------------------------------------------------------------------------------------
116100           -- 4262811a Switch Sign
116101           ---------------------------------------------------------------------------------------------------
116102           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
116103           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116104                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116105           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116106                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116107           -- 5132302
116108           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
116109                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116110 
116111       END IF;
116112 
116113       -- 4955764
116114       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116115       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
116116 
116117 
116118       XLA_AE_LINES_PKG.ValidateCurrentLine;
116119       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116120 
116121       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116122                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
116123                ,p_balance_type_code => l_balance_type_code);
116124 
116125    END IF;
116126 
116127    -----------------------------------------------------------------------------------------
116128    -- 4262811 Multiperiod Accounting
116129    -----------------------------------------------------------------------------------------
116130      -- No MPA option is assigned.
116131 
116132 
116133 END IF;
116134 END IF;
116135 --
116136 
116137 --
116138 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116139    trace
116140       (p_msg      => 'END of AcctLineType_210'
116141       ,p_level    => C_LEVEL_PROCEDURE
116142       ,p_module   => l_log_module);
116143 END IF;
116144 --
116145 EXCEPTION
116146   WHEN xla_exceptions_pkg.application_exception THEN
116147       RAISE;
116148   WHEN OTHERS THEN
116149        xla_exceptions_pkg.raise_message
116150            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_210');
116151 END AcctLineType_210;
116152 --
116153 
116154 ---------------------------------------
116155 --
116156 -- PRIVATE FUNCTION
116157 --         AcctLineType_211
116158 --
116159 ---------------------------------------
116160 PROCEDURE AcctLineType_211 (
116161   p_application_id        IN NUMBER
116162  ,p_event_id              IN NUMBER
116163  ,p_calculate_acctd_flag  IN VARCHAR2
116164  ,p_calculate_g_l_flag    IN VARCHAR2
116165  ,p_actual_flag           IN OUT VARCHAR2
116166  ,p_balance_type_code     OUT VARCHAR2
116167  ,p_gain_or_loss_ref      OUT VARCHAR2
116168  
116169 --Cost Management Default Account
116170  , p_source_4            IN NUMBER
116171 --DISTRIBUTION_IDENTIFIER
116172  , p_source_11            IN NUMBER
116173 --Distribution Type
116174  , p_source_12            IN VARCHAR2
116175  , p_source_12_meaning    IN VARCHAR2
116176 --Entered Currency Code
116177  , p_source_15            IN VARCHAR2
116178 --Entered Amount
116179  , p_source_18            IN NUMBER
116180 --Currency Conversion Date
116181  , p_source_19            IN DATE
116182 --Currency Conversion Rate
116183  , p_source_20            IN NUMBER
116184 --Currency Conversion Type
116185  , p_source_21            IN VARCHAR2
116186 --Accounted Amount
116187  , p_source_22            IN NUMBER
116188 --Accounting Line Type
116189  , p_source_24            IN NUMBER
116190 )
116191 IS
116192 
116193 l_component_type              VARCHAR2(80);
116194 l_component_code              VARCHAR2(30);
116195 l_component_type_code         VARCHAR2(1);
116196 l_component_appl_id           INTEGER;
116197 l_amb_context_code            VARCHAR2(30);
116198 l_entity_code                 VARCHAR2(30);
116199 l_event_class_code            VARCHAR2(30);
116200 l_ae_header_id                NUMBER;
116201 l_event_type_code             VARCHAR2(30);
116202 l_line_definition_code        VARCHAR2(30);
116203 l_line_definition_owner_code  VARCHAR2(1);
116204 --
116205 -- adr variables
116206 l_segment                     VARCHAR2(30);
116207 l_ccid                        NUMBER;
116208 l_adr_transaction_coa_id      NUMBER;
116209 l_adr_accounting_coa_id       NUMBER;
116210 l_adr_flexfield_segment_code  VARCHAR2(30);
116211 l_adr_flex_value_set_id       NUMBER;
116212 l_adr_value_type_code         VARCHAR2(30);
116213 l_adr_value_combination_id    NUMBER;
116214 l_adr_value_segment_code      VARCHAR2(30);
116215 
116216 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
116217 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
116218 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
116219 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
116220 
116221 -- 4262811 Variables ------------------------------------------------------------------------------------------
116222 l_entered_amt_idx             NUMBER;
116223 l_accted_amt_idx              NUMBER;
116224 l_acc_rev_flag                VARCHAR2(1);
116225 l_accrual_line_num            NUMBER;
116226 l_tmp_amt                     NUMBER;
116227 l_acc_rev_natural_side_code   VARCHAR2(1);
116228 
116229 l_num_entries                 NUMBER;
116230 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
116231 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
116232 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
116233 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
116234 l_recog_line_1                NUMBER;
116235 l_recog_line_2                NUMBER;
116236 
116237 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
116238 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
116239 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
116240 
116241 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
116242 
116243 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
116244 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
116245 
116246 ---------------------------------------------------------------------------------------------------------------
116247 
116248 
116249 --
116250 -- bulk performance
116251 --
116252 l_balance_type_code           VARCHAR2(1);
116253 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
116254 l_log_module                  VARCHAR2(240);
116255 
116256 --
116257 -- Upgrade strategy
116258 --
116259 l_actual_upg_option           VARCHAR2(1);
116260 l_enc_upg_option           VARCHAR2(1);
116261 
116262 --
116263 BEGIN
116264 --
116265 IF g_log_enabled THEN
116266       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_211';
116267 END IF;
116268 --
116269 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116270 
116271       trace
116272          (p_msg      => 'BEGIN of AcctLineType_211'
116273          ,p_level    => C_LEVEL_PROCEDURE
116274          ,p_module   => l_log_module);
116275 
116276 END IF;
116277 --
116278 l_component_type             := 'AMB_JLT';
116279 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
116280 l_component_type_code        := 'S';
116281 l_component_appl_id          :=  707;
116282 l_amb_context_code           := 'DEFAULT';
116283 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
116284 l_event_class_code           := 'CON_INV_OWNR_TXFR';
116285 l_event_type_code            := 'CON_INV_OWNR_TXFR_ALL';
116286 l_line_definition_owner_code := 'S';
116287 l_line_definition_code       := 'CON_INV_OWNR_TXFR';
116288 --
116289 l_balance_type_code          := 'A';
116290 l_segment                     := NULL;
116291 l_ccid                        := NULL;
116292 l_adr_transaction_coa_id      := NULL;
116293 l_adr_accounting_coa_id       := NULL;
116294 l_adr_flexfield_segment_code  := NULL;
116295 l_adr_flex_value_set_id       := NULL;
116296 l_adr_value_type_code         := NULL;
116297 l_adr_value_combination_id    := NULL;
116298 l_adr_value_segment_code      := NULL;
116299 
116300 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
116301 l_bflow_class_code           := '';    -- 4219869 Business Flow
116302 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
116303 l_budgetary_control_flag     := 'N';
116304 
116305 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
116306 l_bflow_applied_to_amt       := NULL; -- 5132302
116307 l_entered_amt_idx            := NULL;          -- 4262811
116308 l_accted_amt_idx             := NULL;          -- 4262811
116309 l_acc_rev_flag               := NULL;          -- 4262811
116310 l_accrual_line_num           := NULL;          -- 4262811
116311 l_tmp_amt                    := NULL;          -- 4262811
116312 --
116313  
116314 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
116315     l_balance_type_code <> 'B' THEN
116316 IF NVL(p_source_24,9E125) =  6
116317  THEN 
116318 
116319    --
116320    XLA_AE_LINES_PKG.SetNewLine;
116321 
116322    p_balance_type_code          := l_balance_type_code;
116323    -- set the flag so later we will know whether the gain loss line needs to be created
116324    
116325    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
116326      p_actual_flag :='A';
116327    END IF;
116328 
116329    --
116330    -- bulk performance
116331    --
116332    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
116333                                       p_header_num   => 0); -- 4262811
116334    --
116335    -- set accounting line options
116336    --
116337    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
116338            p_natural_side_code          => 'D'
116339          , p_gain_or_loss_flag          => 'N'
116340          , p_gl_transfer_mode_code      => 'S'
116341          , p_acct_entry_type_code       => 'A'
116342          , p_switch_side_flag           => 'Y'
116343          , p_merge_duplicate_code       => 'N'
116344          );
116345    --
116346    l_acc_rev_natural_side_code := 'C';  -- 4262811
116347    -- 
116348    --
116349    -- set accounting line type info
116350    --
116351    xla_ae_lines_pkg.SetAcctLineType
116352       (p_component_type             => l_component_type
116353       ,p_event_type_code            => l_event_type_code
116354       ,p_line_definition_owner_code => l_line_definition_owner_code
116355       ,p_line_definition_code       => l_line_definition_code
116356       ,p_accounting_line_code       => l_component_code
116357       ,p_accounting_line_type_code  => l_component_type_code
116358       ,p_accounting_line_appl_id    => l_component_appl_id
116359       ,p_amb_context_code           => l_amb_context_code
116360       ,p_entity_code                => l_entity_code
116361       ,p_event_class_code           => l_event_class_code);
116362    --
116363    -- set accounting class
116364    --
116365    xla_ae_lines_pkg.SetAcctClass(
116366            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
116367          , p_ae_header_id           => l_ae_header_id
116368          );
116369 
116370    --
116371    -- set rounding class
116372    --
116373    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
116374                       'PURCHASE_PRICE_VARIANCE';
116375 
116376    --
116377    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
116378    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
116379    --
116380    -- bulk performance
116381    --
116382    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
116383 
116384    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
116385       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
116386 
116387    -- 4955764
116388    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116389       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
116390 
116391    -- 4458381 Public Sector Enh
116392    
116393    --
116394    -- set accounting attributes for the line type
116395    --
116396    l_entered_amt_idx := 3;
116397    l_accted_amt_idx  := 8;
116398    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
116399    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
116400    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
116401    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
116402    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
116403    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
116404    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
116405    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
116406    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
116407    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
116408    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
116409    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
116410    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
116411    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
116412    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
116413    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
116414    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
116415 
116416    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
116417    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
116418 
116419    ---------------------------------------------------------------------------------------------------------------
116420    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
116421    ---------------------------------------------------------------------------------------------------------------
116422    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
116423 
116424    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116425    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116426 
116427    IF xla_accounting_cache_pkg.GetValueChar
116428          (p_source_code         => 'LEDGER_CATEGORY_CODE'
116429          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
116430    AND l_bflow_method_code = 'PRIOR_ENTRY'
116431 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
116432    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
116433          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
116434        )
116435    THEN
116436          xla_ae_lines_pkg.BflowUpgEntry
116437            (p_business_method_code    => l_bflow_method_code
116438            ,p_business_class_code     => l_bflow_class_code
116439            ,p_balance_type            => l_balance_type_code);
116440    ELSE
116441       NULL;
116442 -- No business flow processing for business flow method of NONE.
116443    END IF;
116444 
116445    --
116446    -- call analytical criteria
116447    --
116448    
116449    --
116450    -- call description
116451    --
116452    -- No description or it is inherited.
116453    --
116454    -- call ADRs
116455    -- Bug 4922099
116456    --
116457    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116458         (NVL(l_actual_upg_option, 'N') = 'O') OR
116459         (NVL(l_enc_upg_option, 'N') = 'O')
116460       )
116461    THEN
116462    NULL;
116463    --
116464    --
116465    
116466   l_ccid := AcctDerRule_4(
116467            p_application_id           => p_application_id
116468          , p_ae_header_id             => l_ae_header_id 
116469 , p_source_4 => p_source_4
116470          , x_transaction_coa_id       => l_adr_transaction_coa_id
116471          , x_accounting_coa_id        => l_adr_accounting_coa_id
116472          , x_value_type_code          => l_adr_value_type_code
116473          , p_side                     => 'NA'
116474    );
116475 
116476    xla_ae_lines_pkg.set_ccid(
116477     p_code_combination_id          => l_ccid
116478   , p_value_type_code              => l_adr_value_type_code
116479   , p_transaction_coa_id           => l_adr_transaction_coa_id
116480   , p_accounting_coa_id            => l_adr_accounting_coa_id
116481   , p_adr_code                     => 'CST_DEFAULT'
116482   , p_adr_type_code                => 'S'
116483   , p_component_type               => l_component_type
116484   , p_component_code               => l_component_code
116485   , p_component_type_code          => l_component_type_code
116486   , p_component_appl_id            => l_component_appl_id
116487   , p_amb_context_code             => l_amb_context_code
116488   , p_side                         => 'NA'
116489   );
116490 
116491 
116492    --
116493    --
116494    END IF;
116495    --
116496    -- Bug 4922099
116497    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
116498           (NVL(l_enc_upg_option, 'N') = 'O')
116499         ) AND
116500         (l_bflow_method_code = 'PRIOR_ENTRY')
116501       )
116502    THEN
116503       IF
116504       --
116505       1 = 2
116506       --
116507       THEN
116508       xla_accounting_err_pkg.build_message
116509                                     (p_appli_s_name            => 'XLA'
116510                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
116511                                     ,p_token_1                 => 'LINE_NUMBER'
116512                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
116513                                     ,p_token_2                 => 'LINE_TYPE_NAME'
116514                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
116515                                                                              l_component_type
116516                                                                             ,l_component_code
116517                                                                             ,l_component_type_code
116518                                                                             ,l_component_appl_id
116519                                                                             ,l_amb_context_code
116520                                                                             ,l_entity_code
116521                                                                             ,l_event_class_code
116522                                                                            )
116523                                     ,p_token_3                 => 'OWNER'
116524                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
116525                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
116526                                                                           ,p_lookup_code    => l_component_type_code
116527                                                                          )
116528                                     ,p_token_4                 => 'PRODUCT_NAME'
116529                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
116530                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
116531                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
116532                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
116533                                     ,p_ae_header_id            =>  NULL
116534                                        );
116535 
116536         IF (C_LEVEL_ERROR>= g_log_level) THEN
116537                  trace
116538                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
116539                       ,p_level    => C_LEVEL_ERROR
116540                       ,p_module   => l_log_module);
116541         END IF;
116542       END IF;
116543    END IF;
116544    --
116545    --
116546    ------------------------------------------------------------------------------------------------
116547    -- 4219869 Business Flow
116548    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
116549    -- Prior Entry.  Currently, the following code is always generated.
116550    ------------------------------------------------------------------------------------------------
116551    XLA_AE_LINES_PKG.ValidateCurrentLine;
116552 
116553    ------------------------------------------------------------------------------------
116554    -- 4219869 Business Flow
116555    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
116556    ------------------------------------------------------------------------------------
116557    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116558 
116559    ----------------------------------------------------------------------------------
116560    -- 4219869 Business Flow
116561    -- Update journal entry status -- Need to generate this within IF <condition>
116562    ----------------------------------------------------------------------------------
116563    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116564          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
116565          ,p_balance_type_code => l_balance_type_code
116566          );
116567 
116568    -------------------------------------------------------------------------------------------
116569    -- 4262811 - Generate the Accrual Reversal lines
116570    -------------------------------------------------------------------------------------------
116571    BEGIN
116572       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
116573                               (g_array_event(p_event_id).array_value_num('header_index'));
116574       IF l_acc_rev_flag IS NULL THEN
116575          l_acc_rev_flag := 'N';
116576       END IF;
116577    EXCEPTION
116578       WHEN OTHERS THEN
116579          l_acc_rev_flag := 'N';
116580    END;
116581    --
116582    IF (l_acc_rev_flag = 'Y') THEN
116583 
116584        -- 4645092  ------------------------------------------------------------------------------
116585        -- To allow MPA report to determine if it should generate report process
116586        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
116587        ------------------------------------------------------------------------------------------
116588 
116589        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
116590        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
116591    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
116592    -- call ADRs
116593    -- Bug 4922099
116594    --
116595    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116596         (NVL(l_actual_upg_option, 'N') = 'O') OR
116597         (NVL(l_enc_upg_option, 'N') = 'O')
116598       )
116599    THEN
116600    NULL;
116601    --
116602    --
116603    
116604   l_ccid := AcctDerRule_4(
116605            p_application_id           => p_application_id
116606          , p_ae_header_id             => l_ae_header_id 
116607 , p_source_4 => p_source_4
116608          , x_transaction_coa_id       => l_adr_transaction_coa_id
116609          , x_accounting_coa_id        => l_adr_accounting_coa_id
116610          , x_value_type_code          => l_adr_value_type_code
116611          , p_side                     => 'NA'
116612    );
116613 
116614    xla_ae_lines_pkg.set_ccid(
116615     p_code_combination_id          => l_ccid
116616   , p_value_type_code              => l_adr_value_type_code
116617   , p_transaction_coa_id           => l_adr_transaction_coa_id
116618   , p_accounting_coa_id            => l_adr_accounting_coa_id
116619   , p_adr_code                     => 'CST_DEFAULT'
116620   , p_adr_type_code                => 'S'
116621   , p_component_type               => l_component_type
116622   , p_component_code               => l_component_code
116623   , p_component_type_code          => l_component_type_code
116624   , p_component_appl_id            => l_component_appl_id
116625   , p_amb_context_code             => l_amb_context_code
116626   , p_side                         => 'NA'
116627   );
116628 
116629 
116630    --
116631    --
116632    END IF;
116633 
116634        --
116635        -- Update the line information that should be overwritten
116636        --
116637        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
116638                                          p_header_num   => 1);
116639        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
116640 
116641        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
116642 
116643        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
116644           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
116645        END IF;
116646 
116647       --
116648       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
116649       --
116650       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
116651           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
116652       ELSE
116653           ---------------------------------------------------------------------------------------------------
116654           -- 4262811a Switch Sign
116655           ---------------------------------------------------------------------------------------------------
116656           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
116657           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116658                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116659           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116660                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116661           -- 5132302
116662           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
116663                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116664 
116665       END IF;
116666 
116667       -- 4955764
116668       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116669       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
116670 
116671 
116672       XLA_AE_LINES_PKG.ValidateCurrentLine;
116673       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116674 
116675       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116676                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
116677                ,p_balance_type_code => l_balance_type_code);
116678 
116679    END IF;
116680 
116681    -----------------------------------------------------------------------------------------
116682    -- 4262811 Multiperiod Accounting
116683    -----------------------------------------------------------------------------------------
116684      -- No MPA option is assigned.
116685 
116686 
116687 END IF;
116688 END IF;
116689 --
116690 
116691 --
116692 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116693    trace
116694       (p_msg      => 'END of AcctLineType_211'
116695       ,p_level    => C_LEVEL_PROCEDURE
116696       ,p_module   => l_log_module);
116697 END IF;
116698 --
116699 EXCEPTION
116700   WHEN xla_exceptions_pkg.application_exception THEN
116701       RAISE;
116702   WHEN OTHERS THEN
116703        xla_exceptions_pkg.raise_message
116704            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_211');
116705 END AcctLineType_211;
116706 --
116707 
116708 ---------------------------------------
116709 --
116710 -- PRIVATE FUNCTION
116711 --         AcctLineType_212
116712 --
116713 ---------------------------------------
116714 PROCEDURE AcctLineType_212 (
116715   p_application_id        IN NUMBER
116716  ,p_event_id              IN NUMBER
116717  ,p_calculate_acctd_flag  IN VARCHAR2
116718  ,p_calculate_g_l_flag    IN VARCHAR2
116719  ,p_actual_flag           IN OUT VARCHAR2
116720  ,p_balance_type_code     OUT VARCHAR2
116721  ,p_gain_or_loss_ref      OUT VARCHAR2
116722  
116723 --Cost Management Default Account
116724  , p_source_4            IN NUMBER
116725 --DISTRIBUTION_IDENTIFIER
116726  , p_source_11            IN NUMBER
116727 --Distribution Type
116728  , p_source_12            IN VARCHAR2
116729  , p_source_12_meaning    IN VARCHAR2
116730 --Entered Currency Code
116731  , p_source_15            IN VARCHAR2
116732 --Entered Amount
116733  , p_source_18            IN NUMBER
116734 --Currency Conversion Date
116735  , p_source_19            IN DATE
116736 --Currency Conversion Rate
116737  , p_source_20            IN NUMBER
116738 --Currency Conversion Type
116739  , p_source_21            IN VARCHAR2
116740 --Accounted Amount
116741  , p_source_22            IN NUMBER
116742 --Accounting Line Type
116743  , p_source_24            IN NUMBER
116744 )
116745 IS
116746 
116747 l_component_type              VARCHAR2(80);
116748 l_component_code              VARCHAR2(30);
116749 l_component_type_code         VARCHAR2(1);
116750 l_component_appl_id           INTEGER;
116751 l_amb_context_code            VARCHAR2(30);
116752 l_entity_code                 VARCHAR2(30);
116753 l_event_class_code            VARCHAR2(30);
116754 l_ae_header_id                NUMBER;
116755 l_event_type_code             VARCHAR2(30);
116756 l_line_definition_code        VARCHAR2(30);
116757 l_line_definition_owner_code  VARCHAR2(1);
116758 --
116759 -- adr variables
116760 l_segment                     VARCHAR2(30);
116761 l_ccid                        NUMBER;
116762 l_adr_transaction_coa_id      NUMBER;
116763 l_adr_accounting_coa_id       NUMBER;
116764 l_adr_flexfield_segment_code  VARCHAR2(30);
116765 l_adr_flex_value_set_id       NUMBER;
116766 l_adr_value_type_code         VARCHAR2(30);
116767 l_adr_value_combination_id    NUMBER;
116768 l_adr_value_segment_code      VARCHAR2(30);
116769 
116770 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
116771 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
116772 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
116773 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
116774 
116775 -- 4262811 Variables ------------------------------------------------------------------------------------------
116776 l_entered_amt_idx             NUMBER;
116777 l_accted_amt_idx              NUMBER;
116778 l_acc_rev_flag                VARCHAR2(1);
116779 l_accrual_line_num            NUMBER;
116780 l_tmp_amt                     NUMBER;
116781 l_acc_rev_natural_side_code   VARCHAR2(1);
116782 
116783 l_num_entries                 NUMBER;
116784 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
116785 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
116786 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
116787 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
116788 l_recog_line_1                NUMBER;
116789 l_recog_line_2                NUMBER;
116790 
116791 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
116792 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
116793 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
116794 
116795 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
116796 
116797 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
116798 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
116799 
116800 ---------------------------------------------------------------------------------------------------------------
116801 
116802 
116803 --
116804 -- bulk performance
116805 --
116806 l_balance_type_code           VARCHAR2(1);
116807 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
116808 l_log_module                  VARCHAR2(240);
116809 
116810 --
116811 -- Upgrade strategy
116812 --
116813 l_actual_upg_option           VARCHAR2(1);
116814 l_enc_upg_option           VARCHAR2(1);
116815 
116816 --
116817 BEGIN
116818 --
116819 IF g_log_enabled THEN
116820       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_212';
116821 END IF;
116822 --
116823 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116824 
116825       trace
116826          (p_msg      => 'BEGIN of AcctLineType_212'
116827          ,p_level    => C_LEVEL_PROCEDURE
116828          ,p_module   => l_log_module);
116829 
116830 END IF;
116831 --
116832 l_component_type             := 'AMB_JLT';
116833 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
116834 l_component_type_code        := 'S';
116835 l_component_appl_id          :=  707;
116836 l_amb_context_code           := 'DEFAULT';
116837 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
116838 l_event_class_code           := 'USER_DEFINE';
116839 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
116840 l_line_definition_owner_code := 'S';
116841 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_TP';
116842 --
116843 l_balance_type_code          := 'A';
116844 l_segment                     := NULL;
116845 l_ccid                        := NULL;
116846 l_adr_transaction_coa_id      := NULL;
116847 l_adr_accounting_coa_id       := NULL;
116848 l_adr_flexfield_segment_code  := NULL;
116849 l_adr_flex_value_set_id       := NULL;
116850 l_adr_value_type_code         := NULL;
116851 l_adr_value_combination_id    := NULL;
116852 l_adr_value_segment_code      := NULL;
116853 
116854 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
116855 l_bflow_class_code           := '';    -- 4219869 Business Flow
116856 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
116857 l_budgetary_control_flag     := 'N';
116858 
116859 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
116860 l_bflow_applied_to_amt       := NULL; -- 5132302
116861 l_entered_amt_idx            := NULL;          -- 4262811
116862 l_accted_amt_idx             := NULL;          -- 4262811
116863 l_acc_rev_flag               := NULL;          -- 4262811
116864 l_accrual_line_num           := NULL;          -- 4262811
116865 l_tmp_amt                    := NULL;          -- 4262811
116866 --
116867  
116868 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
116869     l_balance_type_code <> 'B' THEN
116870 IF NVL(p_source_24,9E125) =  6
116871  THEN 
116872 
116873    --
116874    XLA_AE_LINES_PKG.SetNewLine;
116875 
116876    p_balance_type_code          := l_balance_type_code;
116877    -- set the flag so later we will know whether the gain loss line needs to be created
116878    
116879    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
116880      p_actual_flag :='A';
116881    END IF;
116882 
116883    --
116884    -- bulk performance
116885    --
116886    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
116887                                       p_header_num   => 0); -- 4262811
116888    --
116889    -- set accounting line options
116890    --
116891    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
116892            p_natural_side_code          => 'D'
116893          , p_gain_or_loss_flag          => 'N'
116894          , p_gl_transfer_mode_code      => 'S'
116895          , p_acct_entry_type_code       => 'A'
116896          , p_switch_side_flag           => 'Y'
116897          , p_merge_duplicate_code       => 'N'
116898          );
116899    --
116900    l_acc_rev_natural_side_code := 'C';  -- 4262811
116901    -- 
116902    --
116903    -- set accounting line type info
116904    --
116905    xla_ae_lines_pkg.SetAcctLineType
116906       (p_component_type             => l_component_type
116907       ,p_event_type_code            => l_event_type_code
116908       ,p_line_definition_owner_code => l_line_definition_owner_code
116909       ,p_line_definition_code       => l_line_definition_code
116910       ,p_accounting_line_code       => l_component_code
116911       ,p_accounting_line_type_code  => l_component_type_code
116912       ,p_accounting_line_appl_id    => l_component_appl_id
116913       ,p_amb_context_code           => l_amb_context_code
116914       ,p_entity_code                => l_entity_code
116915       ,p_event_class_code           => l_event_class_code);
116916    --
116917    -- set accounting class
116918    --
116919    xla_ae_lines_pkg.SetAcctClass(
116920            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
116921          , p_ae_header_id           => l_ae_header_id
116922          );
116923 
116924    --
116925    -- set rounding class
116926    --
116927    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
116928                       'PURCHASE_PRICE_VARIANCE';
116929 
116930    --
116931    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
116932    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
116933    --
116934    -- bulk performance
116935    --
116936    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
116937 
116938    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
116939       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
116940 
116941    -- 4955764
116942    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116943       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
116944 
116945    -- 4458381 Public Sector Enh
116946    
116947    --
116948    -- set accounting attributes for the line type
116949    --
116950    l_entered_amt_idx := 3;
116951    l_accted_amt_idx  := 8;
116952    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
116953    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
116954    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
116955    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
116956    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
116957    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
116958    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
116959    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
116960    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
116961    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
116962    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
116963    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
116964    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
116965    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
116966    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
116967    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
116968    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
116969 
116970    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
116971    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
116972 
116973    ---------------------------------------------------------------------------------------------------------------
116974    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
116975    ---------------------------------------------------------------------------------------------------------------
116976    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
116977 
116978    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116979    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116980 
116981    IF xla_accounting_cache_pkg.GetValueChar
116982          (p_source_code         => 'LEDGER_CATEGORY_CODE'
116983          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
116984    AND l_bflow_method_code = 'PRIOR_ENTRY'
116985 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
116986    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
116987          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
116988        )
116989    THEN
116990          xla_ae_lines_pkg.BflowUpgEntry
116991            (p_business_method_code    => l_bflow_method_code
116992            ,p_business_class_code     => l_bflow_class_code
116993            ,p_balance_type            => l_balance_type_code);
116994    ELSE
116995       NULL;
116996 -- No business flow processing for business flow method of NONE.
116997    END IF;
116998 
116999    --
117000    -- call analytical criteria
117001    --
117002    
117003    --
117004    -- call description
117005    --
117006    -- No description or it is inherited.
117007    --
117008    -- call ADRs
117009    -- Bug 4922099
117010    --
117011    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117012         (NVL(l_actual_upg_option, 'N') = 'O') OR
117013         (NVL(l_enc_upg_option, 'N') = 'O')
117014       )
117015    THEN
117016    NULL;
117017    --
117018    --
117019    
117020   l_ccid := AcctDerRule_4(
117021            p_application_id           => p_application_id
117022          , p_ae_header_id             => l_ae_header_id 
117023 , p_source_4 => p_source_4
117024          , x_transaction_coa_id       => l_adr_transaction_coa_id
117025          , x_accounting_coa_id        => l_adr_accounting_coa_id
117026          , x_value_type_code          => l_adr_value_type_code
117027          , p_side                     => 'NA'
117028    );
117029 
117030    xla_ae_lines_pkg.set_ccid(
117031     p_code_combination_id          => l_ccid
117032   , p_value_type_code              => l_adr_value_type_code
117033   , p_transaction_coa_id           => l_adr_transaction_coa_id
117034   , p_accounting_coa_id            => l_adr_accounting_coa_id
117035   , p_adr_code                     => 'CST_DEFAULT'
117036   , p_adr_type_code                => 'S'
117037   , p_component_type               => l_component_type
117038   , p_component_code               => l_component_code
117039   , p_component_type_code          => l_component_type_code
117040   , p_component_appl_id            => l_component_appl_id
117041   , p_amb_context_code             => l_amb_context_code
117042   , p_side                         => 'NA'
117043   );
117044 
117045 
117046    --
117047    --
117048    END IF;
117049    --
117050    -- Bug 4922099
117051    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
117052           (NVL(l_enc_upg_option, 'N') = 'O')
117053         ) AND
117054         (l_bflow_method_code = 'PRIOR_ENTRY')
117055       )
117056    THEN
117057       IF
117058       --
117059       1 = 2
117060       --
117061       THEN
117062       xla_accounting_err_pkg.build_message
117063                                     (p_appli_s_name            => 'XLA'
117064                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117065                                     ,p_token_1                 => 'LINE_NUMBER'
117066                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
117067                                     ,p_token_2                 => 'LINE_TYPE_NAME'
117068                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
117069                                                                              l_component_type
117070                                                                             ,l_component_code
117071                                                                             ,l_component_type_code
117072                                                                             ,l_component_appl_id
117073                                                                             ,l_amb_context_code
117074                                                                             ,l_entity_code
117075                                                                             ,l_event_class_code
117076                                                                            )
117077                                     ,p_token_3                 => 'OWNER'
117078                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
117079                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
117080                                                                           ,p_lookup_code    => l_component_type_code
117081                                                                          )
117082                                     ,p_token_4                 => 'PRODUCT_NAME'
117083                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
117084                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
117085                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
117086                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
117087                                     ,p_ae_header_id            =>  NULL
117088                                        );
117089 
117090         IF (C_LEVEL_ERROR>= g_log_level) THEN
117091                  trace
117092                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117093                       ,p_level    => C_LEVEL_ERROR
117094                       ,p_module   => l_log_module);
117095         END IF;
117096       END IF;
117097    END IF;
117098    --
117099    --
117100    ------------------------------------------------------------------------------------------------
117101    -- 4219869 Business Flow
117102    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
117103    -- Prior Entry.  Currently, the following code is always generated.
117104    ------------------------------------------------------------------------------------------------
117105    XLA_AE_LINES_PKG.ValidateCurrentLine;
117106 
117107    ------------------------------------------------------------------------------------
117108    -- 4219869 Business Flow
117109    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
117110    ------------------------------------------------------------------------------------
117111    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117112 
117113    ----------------------------------------------------------------------------------
117114    -- 4219869 Business Flow
117115    -- Update journal entry status -- Need to generate this within IF <condition>
117116    ----------------------------------------------------------------------------------
117117    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117118          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
117119          ,p_balance_type_code => l_balance_type_code
117120          );
117121 
117122    -------------------------------------------------------------------------------------------
117123    -- 4262811 - Generate the Accrual Reversal lines
117124    -------------------------------------------------------------------------------------------
117125    BEGIN
117126       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
117127                               (g_array_event(p_event_id).array_value_num('header_index'));
117128       IF l_acc_rev_flag IS NULL THEN
117129          l_acc_rev_flag := 'N';
117130       END IF;
117131    EXCEPTION
117132       WHEN OTHERS THEN
117133          l_acc_rev_flag := 'N';
117134    END;
117135    --
117136    IF (l_acc_rev_flag = 'Y') THEN
117137 
117138        -- 4645092  ------------------------------------------------------------------------------
117139        -- To allow MPA report to determine if it should generate report process
117140        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
117141        ------------------------------------------------------------------------------------------
117142 
117143        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
117144        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
117145    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
117146    -- call ADRs
117147    -- Bug 4922099
117148    --
117149    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117150         (NVL(l_actual_upg_option, 'N') = 'O') OR
117151         (NVL(l_enc_upg_option, 'N') = 'O')
117152       )
117153    THEN
117154    NULL;
117155    --
117156    --
117157    
117158   l_ccid := AcctDerRule_4(
117159            p_application_id           => p_application_id
117160          , p_ae_header_id             => l_ae_header_id 
117161 , p_source_4 => p_source_4
117162          , x_transaction_coa_id       => l_adr_transaction_coa_id
117163          , x_accounting_coa_id        => l_adr_accounting_coa_id
117164          , x_value_type_code          => l_adr_value_type_code
117165          , p_side                     => 'NA'
117166    );
117167 
117168    xla_ae_lines_pkg.set_ccid(
117169     p_code_combination_id          => l_ccid
117170   , p_value_type_code              => l_adr_value_type_code
117171   , p_transaction_coa_id           => l_adr_transaction_coa_id
117172   , p_accounting_coa_id            => l_adr_accounting_coa_id
117173   , p_adr_code                     => 'CST_DEFAULT'
117174   , p_adr_type_code                => 'S'
117175   , p_component_type               => l_component_type
117176   , p_component_code               => l_component_code
117177   , p_component_type_code          => l_component_type_code
117178   , p_component_appl_id            => l_component_appl_id
117179   , p_amb_context_code             => l_amb_context_code
117180   , p_side                         => 'NA'
117181   );
117182 
117183 
117184    --
117185    --
117186    END IF;
117187 
117188        --
117189        -- Update the line information that should be overwritten
117190        --
117191        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
117192                                          p_header_num   => 1);
117193        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
117194 
117195        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
117196 
117197        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
117198           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
117199        END IF;
117200 
117201       --
117202       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
117203       --
117204       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
117205           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
117206       ELSE
117207           ---------------------------------------------------------------------------------------------------
117208           -- 4262811a Switch Sign
117209           ---------------------------------------------------------------------------------------------------
117210           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
117211           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117212                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117213           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117214                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117215           -- 5132302
117216           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
117217                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117218 
117219       END IF;
117220 
117221       -- 4955764
117222       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117223       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
117224 
117225 
117226       XLA_AE_LINES_PKG.ValidateCurrentLine;
117227       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117228 
117229       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117230                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
117231                ,p_balance_type_code => l_balance_type_code);
117232 
117233    END IF;
117234 
117235    -----------------------------------------------------------------------------------------
117236    -- 4262811 Multiperiod Accounting
117237    -----------------------------------------------------------------------------------------
117238      -- No MPA option is assigned.
117239 
117240 
117241 END IF;
117242 END IF;
117243 --
117244 
117245 --
117246 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117247    trace
117248       (p_msg      => 'END of AcctLineType_212'
117249       ,p_level    => C_LEVEL_PROCEDURE
117250       ,p_module   => l_log_module);
117251 END IF;
117252 --
117253 EXCEPTION
117254   WHEN xla_exceptions_pkg.application_exception THEN
117255       RAISE;
117256   WHEN OTHERS THEN
117257        xla_exceptions_pkg.raise_message
117258            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_212');
117259 END AcctLineType_212;
117260 --
117261 
117262 ---------------------------------------
117263 --
117264 -- PRIVATE FUNCTION
117265 --         AcctLineType_213
117266 --
117267 ---------------------------------------
117268 PROCEDURE AcctLineType_213 (
117269   p_application_id        IN NUMBER
117270  ,p_event_id              IN NUMBER
117271  ,p_calculate_acctd_flag  IN VARCHAR2
117272  ,p_calculate_g_l_flag    IN VARCHAR2
117273  ,p_actual_flag           IN OUT VARCHAR2
117274  ,p_balance_type_code     OUT VARCHAR2
117275  ,p_gain_or_loss_ref      OUT VARCHAR2
117276  
117277 --Cost Management Default Account
117278  , p_source_4            IN NUMBER
117279 --DISTRIBUTION_IDENTIFIER
117280  , p_source_11            IN NUMBER
117281 --Distribution Type
117282  , p_source_12            IN VARCHAR2
117283  , p_source_12_meaning    IN VARCHAR2
117284 --Entered Currency Code
117285  , p_source_15            IN VARCHAR2
117286 --Entered Amount
117287  , p_source_18            IN NUMBER
117288 --Currency Conversion Date
117289  , p_source_19            IN DATE
117290 --Currency Conversion Rate
117291  , p_source_20            IN NUMBER
117292 --Currency Conversion Type
117293  , p_source_21            IN VARCHAR2
117294 --Accounted Amount
117295  , p_source_22            IN NUMBER
117296 --Accounting Line Type
117297  , p_source_24            IN NUMBER
117298 )
117299 IS
117300 
117301 l_component_type              VARCHAR2(80);
117302 l_component_code              VARCHAR2(30);
117303 l_component_type_code         VARCHAR2(1);
117304 l_component_appl_id           INTEGER;
117305 l_amb_context_code            VARCHAR2(30);
117306 l_entity_code                 VARCHAR2(30);
117307 l_event_class_code            VARCHAR2(30);
117308 l_ae_header_id                NUMBER;
117309 l_event_type_code             VARCHAR2(30);
117310 l_line_definition_code        VARCHAR2(30);
117311 l_line_definition_owner_code  VARCHAR2(1);
117312 --
117313 -- adr variables
117314 l_segment                     VARCHAR2(30);
117315 l_ccid                        NUMBER;
117316 l_adr_transaction_coa_id      NUMBER;
117317 l_adr_accounting_coa_id       NUMBER;
117318 l_adr_flexfield_segment_code  VARCHAR2(30);
117319 l_adr_flex_value_set_id       NUMBER;
117320 l_adr_value_type_code         VARCHAR2(30);
117321 l_adr_value_combination_id    NUMBER;
117322 l_adr_value_segment_code      VARCHAR2(30);
117323 
117324 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
117325 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
117326 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
117327 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
117328 
117329 -- 4262811 Variables ------------------------------------------------------------------------------------------
117330 l_entered_amt_idx             NUMBER;
117331 l_accted_amt_idx              NUMBER;
117332 l_acc_rev_flag                VARCHAR2(1);
117333 l_accrual_line_num            NUMBER;
117334 l_tmp_amt                     NUMBER;
117335 l_acc_rev_natural_side_code   VARCHAR2(1);
117336 
117337 l_num_entries                 NUMBER;
117338 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
117339 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
117340 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
117341 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
117342 l_recog_line_1                NUMBER;
117343 l_recog_line_2                NUMBER;
117344 
117345 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
117346 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
117347 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
117348 
117349 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
117350 
117351 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
117352 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
117353 
117354 ---------------------------------------------------------------------------------------------------------------
117355 
117356 
117357 --
117358 -- bulk performance
117359 --
117360 l_balance_type_code           VARCHAR2(1);
117361 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
117362 l_log_module                  VARCHAR2(240);
117363 
117364 --
117365 -- Upgrade strategy
117366 --
117367 l_actual_upg_option           VARCHAR2(1);
117368 l_enc_upg_option           VARCHAR2(1);
117369 
117370 --
117371 BEGIN
117372 --
117373 IF g_log_enabled THEN
117374       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_213';
117375 END IF;
117376 --
117377 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117378 
117379       trace
117380          (p_msg      => 'BEGIN of AcctLineType_213'
117381          ,p_level    => C_LEVEL_PROCEDURE
117382          ,p_module   => l_log_module);
117383 
117384 END IF;
117385 --
117386 l_component_type             := 'AMB_JLT';
117387 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
117388 l_component_type_code        := 'S';
117389 l_component_appl_id          :=  707;
117390 l_amb_context_code           := 'DEFAULT';
117391 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
117392 l_event_class_code           := 'USER_DEFINE';
117393 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
117394 l_line_definition_owner_code := 'S';
117395 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_TP';
117396 --
117397 l_balance_type_code          := 'A';
117398 l_segment                     := NULL;
117399 l_ccid                        := NULL;
117400 l_adr_transaction_coa_id      := NULL;
117401 l_adr_accounting_coa_id       := NULL;
117402 l_adr_flexfield_segment_code  := NULL;
117403 l_adr_flex_value_set_id       := NULL;
117404 l_adr_value_type_code         := NULL;
117405 l_adr_value_combination_id    := NULL;
117406 l_adr_value_segment_code      := NULL;
117407 
117408 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
117409 l_bflow_class_code           := '';    -- 4219869 Business Flow
117410 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
117411 l_budgetary_control_flag     := 'N';
117412 
117413 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
117414 l_bflow_applied_to_amt       := NULL; -- 5132302
117415 l_entered_amt_idx            := NULL;          -- 4262811
117416 l_accted_amt_idx             := NULL;          -- 4262811
117417 l_acc_rev_flag               := NULL;          -- 4262811
117418 l_accrual_line_num           := NULL;          -- 4262811
117419 l_tmp_amt                    := NULL;          -- 4262811
117420 --
117421  
117422 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
117423     l_balance_type_code <> 'B' THEN
117424 IF NVL(p_source_24,9E125) =  6
117425  THEN 
117426 
117427    --
117428    XLA_AE_LINES_PKG.SetNewLine;
117429 
117430    p_balance_type_code          := l_balance_type_code;
117431    -- set the flag so later we will know whether the gain loss line needs to be created
117432    
117433    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
117434      p_actual_flag :='A';
117435    END IF;
117436 
117437    --
117438    -- bulk performance
117439    --
117440    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
117441                                       p_header_num   => 0); -- 4262811
117442    --
117443    -- set accounting line options
117444    --
117445    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
117446            p_natural_side_code          => 'D'
117447          , p_gain_or_loss_flag          => 'N'
117448          , p_gl_transfer_mode_code      => 'S'
117449          , p_acct_entry_type_code       => 'A'
117450          , p_switch_side_flag           => 'Y'
117451          , p_merge_duplicate_code       => 'N'
117452          );
117453    --
117454    l_acc_rev_natural_side_code := 'C';  -- 4262811
117455    -- 
117456    --
117457    -- set accounting line type info
117458    --
117459    xla_ae_lines_pkg.SetAcctLineType
117460       (p_component_type             => l_component_type
117461       ,p_event_type_code            => l_event_type_code
117462       ,p_line_definition_owner_code => l_line_definition_owner_code
117463       ,p_line_definition_code       => l_line_definition_code
117464       ,p_accounting_line_code       => l_component_code
117465       ,p_accounting_line_type_code  => l_component_type_code
117466       ,p_accounting_line_appl_id    => l_component_appl_id
117467       ,p_amb_context_code           => l_amb_context_code
117468       ,p_entity_code                => l_entity_code
117469       ,p_event_class_code           => l_event_class_code);
117470    --
117471    -- set accounting class
117472    --
117473    xla_ae_lines_pkg.SetAcctClass(
117474            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
117475          , p_ae_header_id           => l_ae_header_id
117476          );
117477 
117478    --
117479    -- set rounding class
117480    --
117481    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
117482                       'PURCHASE_PRICE_VARIANCE';
117483 
117484    --
117485    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
117486    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
117487    --
117488    -- bulk performance
117489    --
117490    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
117491 
117492    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
117493       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
117494 
117495    -- 4955764
117496    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117497       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
117498 
117499    -- 4458381 Public Sector Enh
117500    
117501    --
117502    -- set accounting attributes for the line type
117503    --
117504    l_entered_amt_idx := 3;
117505    l_accted_amt_idx  := 8;
117506    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
117507    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
117508    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
117509    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
117510    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
117511    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
117512    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
117513    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
117514    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
117515    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
117516    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
117517    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
117518    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
117519    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
117520    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
117521    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
117522    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
117523 
117524    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
117525    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
117526 
117527    ---------------------------------------------------------------------------------------------------------------
117528    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
117529    ---------------------------------------------------------------------------------------------------------------
117530    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
117531 
117532    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
117533    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
117534 
117535    IF xla_accounting_cache_pkg.GetValueChar
117536          (p_source_code         => 'LEDGER_CATEGORY_CODE'
117537          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
117538    AND l_bflow_method_code = 'PRIOR_ENTRY'
117539 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
117540    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
117541          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
117542        )
117543    THEN
117544          xla_ae_lines_pkg.BflowUpgEntry
117545            (p_business_method_code    => l_bflow_method_code
117546            ,p_business_class_code     => l_bflow_class_code
117547            ,p_balance_type            => l_balance_type_code);
117548    ELSE
117549       NULL;
117550 -- No business flow processing for business flow method of NONE.
117551    END IF;
117552 
117553    --
117554    -- call analytical criteria
117555    --
117556    
117557    --
117558    -- call description
117559    --
117560    -- No description or it is inherited.
117561    --
117562    -- call ADRs
117563    -- Bug 4922099
117564    --
117565    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117566         (NVL(l_actual_upg_option, 'N') = 'O') OR
117567         (NVL(l_enc_upg_option, 'N') = 'O')
117568       )
117569    THEN
117570    NULL;
117571    --
117572    --
117573    
117574   l_ccid := AcctDerRule_4(
117575            p_application_id           => p_application_id
117576          , p_ae_header_id             => l_ae_header_id 
117577 , p_source_4 => p_source_4
117578          , x_transaction_coa_id       => l_adr_transaction_coa_id
117579          , x_accounting_coa_id        => l_adr_accounting_coa_id
117580          , x_value_type_code          => l_adr_value_type_code
117581          , p_side                     => 'NA'
117582    );
117583 
117584    xla_ae_lines_pkg.set_ccid(
117585     p_code_combination_id          => l_ccid
117586   , p_value_type_code              => l_adr_value_type_code
117587   , p_transaction_coa_id           => l_adr_transaction_coa_id
117588   , p_accounting_coa_id            => l_adr_accounting_coa_id
117589   , p_adr_code                     => 'CST_DEFAULT'
117590   , p_adr_type_code                => 'S'
117591   , p_component_type               => l_component_type
117592   , p_component_code               => l_component_code
117593   , p_component_type_code          => l_component_type_code
117594   , p_component_appl_id            => l_component_appl_id
117595   , p_amb_context_code             => l_amb_context_code
117596   , p_side                         => 'NA'
117597   );
117598 
117599 
117600    --
117601    --
117602    END IF;
117603    --
117604    -- Bug 4922099
117605    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
117606           (NVL(l_enc_upg_option, 'N') = 'O')
117607         ) AND
117608         (l_bflow_method_code = 'PRIOR_ENTRY')
117609       )
117610    THEN
117611       IF
117612       --
117613       1 = 2
117614       --
117615       THEN
117616       xla_accounting_err_pkg.build_message
117617                                     (p_appli_s_name            => 'XLA'
117618                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117619                                     ,p_token_1                 => 'LINE_NUMBER'
117620                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
117621                                     ,p_token_2                 => 'LINE_TYPE_NAME'
117622                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
117623                                                                              l_component_type
117624                                                                             ,l_component_code
117625                                                                             ,l_component_type_code
117626                                                                             ,l_component_appl_id
117627                                                                             ,l_amb_context_code
117628                                                                             ,l_entity_code
117629                                                                             ,l_event_class_code
117630                                                                            )
117631                                     ,p_token_3                 => 'OWNER'
117632                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
117633                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
117634                                                                           ,p_lookup_code    => l_component_type_code
117635                                                                          )
117636                                     ,p_token_4                 => 'PRODUCT_NAME'
117637                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
117638                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
117639                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
117640                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
117641                                     ,p_ae_header_id            =>  NULL
117642                                        );
117643 
117644         IF (C_LEVEL_ERROR>= g_log_level) THEN
117645                  trace
117646                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117647                       ,p_level    => C_LEVEL_ERROR
117648                       ,p_module   => l_log_module);
117649         END IF;
117650       END IF;
117651    END IF;
117652    --
117653    --
117654    ------------------------------------------------------------------------------------------------
117655    -- 4219869 Business Flow
117656    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
117657    -- Prior Entry.  Currently, the following code is always generated.
117658    ------------------------------------------------------------------------------------------------
117659    XLA_AE_LINES_PKG.ValidateCurrentLine;
117660 
117661    ------------------------------------------------------------------------------------
117662    -- 4219869 Business Flow
117663    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
117664    ------------------------------------------------------------------------------------
117665    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117666 
117667    ----------------------------------------------------------------------------------
117668    -- 4219869 Business Flow
117669    -- Update journal entry status -- Need to generate this within IF <condition>
117670    ----------------------------------------------------------------------------------
117671    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117672          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
117673          ,p_balance_type_code => l_balance_type_code
117674          );
117675 
117676    -------------------------------------------------------------------------------------------
117677    -- 4262811 - Generate the Accrual Reversal lines
117678    -------------------------------------------------------------------------------------------
117679    BEGIN
117680       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
117681                               (g_array_event(p_event_id).array_value_num('header_index'));
117682       IF l_acc_rev_flag IS NULL THEN
117683          l_acc_rev_flag := 'N';
117684       END IF;
117685    EXCEPTION
117686       WHEN OTHERS THEN
117687          l_acc_rev_flag := 'N';
117688    END;
117689    --
117690    IF (l_acc_rev_flag = 'Y') THEN
117691 
117692        -- 4645092  ------------------------------------------------------------------------------
117693        -- To allow MPA report to determine if it should generate report process
117694        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
117695        ------------------------------------------------------------------------------------------
117696 
117697        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
117698        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
117699    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
117700    -- call ADRs
117701    -- Bug 4922099
117702    --
117703    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117704         (NVL(l_actual_upg_option, 'N') = 'O') OR
117705         (NVL(l_enc_upg_option, 'N') = 'O')
117706       )
117707    THEN
117708    NULL;
117709    --
117710    --
117711    
117712   l_ccid := AcctDerRule_4(
117713            p_application_id           => p_application_id
117714          , p_ae_header_id             => l_ae_header_id 
117715 , p_source_4 => p_source_4
117716          , x_transaction_coa_id       => l_adr_transaction_coa_id
117717          , x_accounting_coa_id        => l_adr_accounting_coa_id
117718          , x_value_type_code          => l_adr_value_type_code
117719          , p_side                     => 'NA'
117720    );
117721 
117722    xla_ae_lines_pkg.set_ccid(
117723     p_code_combination_id          => l_ccid
117724   , p_value_type_code              => l_adr_value_type_code
117725   , p_transaction_coa_id           => l_adr_transaction_coa_id
117726   , p_accounting_coa_id            => l_adr_accounting_coa_id
117727   , p_adr_code                     => 'CST_DEFAULT'
117728   , p_adr_type_code                => 'S'
117729   , p_component_type               => l_component_type
117730   , p_component_code               => l_component_code
117731   , p_component_type_code          => l_component_type_code
117732   , p_component_appl_id            => l_component_appl_id
117733   , p_amb_context_code             => l_amb_context_code
117734   , p_side                         => 'NA'
117735   );
117736 
117737 
117738    --
117739    --
117740    END IF;
117741 
117742        --
117743        -- Update the line information that should be overwritten
117744        --
117745        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
117746                                          p_header_num   => 1);
117747        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
117748 
117749        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
117750 
117751        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
117752           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
117753        END IF;
117754 
117755       --
117756       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
117757       --
117758       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
117759           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
117760       ELSE
117761           ---------------------------------------------------------------------------------------------------
117762           -- 4262811a Switch Sign
117763           ---------------------------------------------------------------------------------------------------
117764           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
117765           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117766                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117767           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117768                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117769           -- 5132302
117770           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
117771                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117772 
117773       END IF;
117774 
117775       -- 4955764
117776       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117777       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
117778 
117779 
117780       XLA_AE_LINES_PKG.ValidateCurrentLine;
117781       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117782 
117783       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117784                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
117785                ,p_balance_type_code => l_balance_type_code);
117786 
117787    END IF;
117788 
117789    -----------------------------------------------------------------------------------------
117790    -- 4262811 Multiperiod Accounting
117791    -----------------------------------------------------------------------------------------
117792      -- No MPA option is assigned.
117793 
117794 
117795 END IF;
117796 END IF;
117797 --
117798 
117799 --
117800 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117801    trace
117802       (p_msg      => 'END of AcctLineType_213'
117803       ,p_level    => C_LEVEL_PROCEDURE
117804       ,p_module   => l_log_module);
117805 END IF;
117806 --
117807 EXCEPTION
117808   WHEN xla_exceptions_pkg.application_exception THEN
117809       RAISE;
117810   WHEN OTHERS THEN
117811        xla_exceptions_pkg.raise_message
117812            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_213');
117813 END AcctLineType_213;
117814 --
117815 
117816 ---------------------------------------
117817 --
117818 -- PRIVATE FUNCTION
117819 --         AcctLineType_214
117820 --
117821 ---------------------------------------
117822 PROCEDURE AcctLineType_214 (
117823   p_application_id        IN NUMBER
117824  ,p_event_id              IN NUMBER
117825  ,p_calculate_acctd_flag  IN VARCHAR2
117826  ,p_calculate_g_l_flag    IN VARCHAR2
117827  ,p_actual_flag           IN OUT VARCHAR2
117828  ,p_balance_type_code     OUT VARCHAR2
117829  ,p_gain_or_loss_ref      OUT VARCHAR2
117830  
117831 --Cost Management Default Account
117832  , p_source_4            IN NUMBER
117833 --DISTRIBUTION_IDENTIFIER
117834  , p_source_11            IN NUMBER
117835 --Distribution Type
117836  , p_source_12            IN VARCHAR2
117837  , p_source_12_meaning    IN VARCHAR2
117838 --Entered Currency Code
117839  , p_source_15            IN VARCHAR2
117840 --Entered Amount
117841  , p_source_18            IN NUMBER
117842 --Currency Conversion Date
117843  , p_source_19            IN DATE
117844 --Currency Conversion Rate
117845  , p_source_20            IN NUMBER
117846 --Accounted Amount
117847  , p_source_22            IN NUMBER
117848 --Accounting Line Type
117849  , p_source_24            IN NUMBER
117850 )
117851 IS
117852 
117853 l_component_type              VARCHAR2(80);
117854 l_component_code              VARCHAR2(30);
117855 l_component_type_code         VARCHAR2(1);
117856 l_component_appl_id           INTEGER;
117857 l_amb_context_code            VARCHAR2(30);
117858 l_entity_code                 VARCHAR2(30);
117859 l_event_class_code            VARCHAR2(30);
117860 l_ae_header_id                NUMBER;
117861 l_event_type_code             VARCHAR2(30);
117862 l_line_definition_code        VARCHAR2(30);
117863 l_line_definition_owner_code  VARCHAR2(1);
117864 --
117865 -- adr variables
117866 l_segment                     VARCHAR2(30);
117867 l_ccid                        NUMBER;
117868 l_adr_transaction_coa_id      NUMBER;
117869 l_adr_accounting_coa_id       NUMBER;
117870 l_adr_flexfield_segment_code  VARCHAR2(30);
117871 l_adr_flex_value_set_id       NUMBER;
117872 l_adr_value_type_code         VARCHAR2(30);
117873 l_adr_value_combination_id    NUMBER;
117874 l_adr_value_segment_code      VARCHAR2(30);
117875 
117876 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
117877 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
117878 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
117879 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
117880 
117881 -- 4262811 Variables ------------------------------------------------------------------------------------------
117882 l_entered_amt_idx             NUMBER;
117883 l_accted_amt_idx              NUMBER;
117884 l_acc_rev_flag                VARCHAR2(1);
117885 l_accrual_line_num            NUMBER;
117886 l_tmp_amt                     NUMBER;
117887 l_acc_rev_natural_side_code   VARCHAR2(1);
117888 
117889 l_num_entries                 NUMBER;
117890 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
117891 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
117892 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
117893 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
117894 l_recog_line_1                NUMBER;
117895 l_recog_line_2                NUMBER;
117896 
117897 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
117898 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
117899 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
117900 
117901 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
117902 
117903 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
117904 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
117905 
117906 ---------------------------------------------------------------------------------------------------------------
117907 
117908 
117909 --
117910 -- bulk performance
117911 --
117912 l_balance_type_code           VARCHAR2(1);
117913 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
117914 l_log_module                  VARCHAR2(240);
117915 
117916 --
117917 -- Upgrade strategy
117918 --
117919 l_actual_upg_option           VARCHAR2(1);
117920 l_enc_upg_option           VARCHAR2(1);
117921 
117922 --
117923 BEGIN
117924 --
117925 IF g_log_enabled THEN
117926       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_214';
117927 END IF;
117928 --
117929 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117930 
117931       trace
117932          (p_msg      => 'BEGIN of AcctLineType_214'
117933          ,p_level    => C_LEVEL_PROCEDURE
117934          ,p_module   => l_log_module);
117935 
117936 END IF;
117937 --
117938 l_component_type             := 'AMB_JLT';
117939 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
117940 l_component_type_code        := 'S';
117941 l_component_appl_id          :=  707;
117942 l_amb_context_code           := 'DEFAULT';
117943 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
117944 l_event_class_code           := 'OSP';
117945 l_event_type_code            := 'OSP_ALL';
117946 l_line_definition_owner_code := 'S';
117947 l_line_definition_code       := 'OUTSIDE_PROCESSING';
117948 --
117949 l_balance_type_code          := 'A';
117950 l_segment                     := NULL;
117951 l_ccid                        := NULL;
117952 l_adr_transaction_coa_id      := NULL;
117953 l_adr_accounting_coa_id       := NULL;
117954 l_adr_flexfield_segment_code  := NULL;
117955 l_adr_flex_value_set_id       := NULL;
117956 l_adr_value_type_code         := NULL;
117957 l_adr_value_combination_id    := NULL;
117958 l_adr_value_segment_code      := NULL;
117959 
117960 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
117961 l_bflow_class_code           := '';    -- 4219869 Business Flow
117962 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
117963 l_budgetary_control_flag     := 'N';
117964 
117965 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
117966 l_bflow_applied_to_amt       := NULL; -- 5132302
117967 l_entered_amt_idx            := NULL;          -- 4262811
117968 l_accted_amt_idx             := NULL;          -- 4262811
117969 l_acc_rev_flag               := NULL;          -- 4262811
117970 l_accrual_line_num           := NULL;          -- 4262811
117971 l_tmp_amt                    := NULL;          -- 4262811
117972 --
117973  
117974 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
117975     l_balance_type_code <> 'B' THEN
117976 IF NVL(p_source_24,9E125) =  6
117977  THEN 
117978 
117979    --
117980    XLA_AE_LINES_PKG.SetNewLine;
117981 
117982    p_balance_type_code          := l_balance_type_code;
117983    -- set the flag so later we will know whether the gain loss line needs to be created
117984    
117985    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
117986      p_actual_flag :='A';
117987    END IF;
117988 
117989    --
117990    -- bulk performance
117991    --
117992    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
117993                                       p_header_num   => 0); -- 4262811
117994    --
117995    -- set accounting line options
117996    --
117997    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
117998            p_natural_side_code          => 'D'
117999          , p_gain_or_loss_flag          => 'N'
118000          , p_gl_transfer_mode_code      => 'S'
118001          , p_acct_entry_type_code       => 'A'
118002          , p_switch_side_flag           => 'Y'
118003          , p_merge_duplicate_code       => 'N'
118004          );
118005    --
118006    l_acc_rev_natural_side_code := 'C';  -- 4262811
118007    -- 
118008    --
118009    -- set accounting line type info
118010    --
118011    xla_ae_lines_pkg.SetAcctLineType
118012       (p_component_type             => l_component_type
118013       ,p_event_type_code            => l_event_type_code
118014       ,p_line_definition_owner_code => l_line_definition_owner_code
118015       ,p_line_definition_code       => l_line_definition_code
118016       ,p_accounting_line_code       => l_component_code
118017       ,p_accounting_line_type_code  => l_component_type_code
118018       ,p_accounting_line_appl_id    => l_component_appl_id
118019       ,p_amb_context_code           => l_amb_context_code
118020       ,p_entity_code                => l_entity_code
118021       ,p_event_class_code           => l_event_class_code);
118022    --
118023    -- set accounting class
118024    --
118025    xla_ae_lines_pkg.SetAcctClass(
118026            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
118027          , p_ae_header_id           => l_ae_header_id
118028          );
118029 
118030    --
118031    -- set rounding class
118032    --
118033    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
118034                       'PURCHASE_PRICE_VARIANCE';
118035 
118036    --
118037    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
118038    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
118039    --
118040    -- bulk performance
118041    --
118042    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
118043 
118044    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
118045       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
118046 
118047    -- 4955764
118048    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118049       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
118050 
118051    -- 4458381 Public Sector Enh
118052    
118053    --
118054    -- set accounting attributes for the line type
118055    --
118056    l_entered_amt_idx := 3;
118057    l_accted_amt_idx  := 8;
118058    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
118059    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
118060    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
118061    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
118062    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
118063    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
118064    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
118065    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
118066    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
118067    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
118068    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
118069    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
118070    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
118071    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
118072    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
118073    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
118074    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
118075 
118076    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
118077    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
118078 
118079    ---------------------------------------------------------------------------------------------------------------
118080    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
118081    ---------------------------------------------------------------------------------------------------------------
118082    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
118083 
118084    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118085    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118086 
118087    IF xla_accounting_cache_pkg.GetValueChar
118088          (p_source_code         => 'LEDGER_CATEGORY_CODE'
118089          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
118090    AND l_bflow_method_code = 'PRIOR_ENTRY'
118091 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
118092    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
118093          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
118094        )
118095    THEN
118096          xla_ae_lines_pkg.BflowUpgEntry
118097            (p_business_method_code    => l_bflow_method_code
118098            ,p_business_class_code     => l_bflow_class_code
118099            ,p_balance_type            => l_balance_type_code);
118100    ELSE
118101       NULL;
118102 -- No business flow processing for business flow method of NONE.
118103    END IF;
118104 
118105    --
118106    -- call analytical criteria
118107    --
118108    
118109    --
118110    -- call description
118111    --
118112    -- No description or it is inherited.
118113    --
118114    -- call ADRs
118115    -- Bug 4922099
118116    --
118117    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118118         (NVL(l_actual_upg_option, 'N') = 'O') OR
118119         (NVL(l_enc_upg_option, 'N') = 'O')
118120       )
118121    THEN
118122    NULL;
118123    --
118124    --
118125    
118126   l_ccid := AcctDerRule_4(
118127            p_application_id           => p_application_id
118128          , p_ae_header_id             => l_ae_header_id 
118129 , p_source_4 => p_source_4
118130          , x_transaction_coa_id       => l_adr_transaction_coa_id
118131          , x_accounting_coa_id        => l_adr_accounting_coa_id
118132          , x_value_type_code          => l_adr_value_type_code
118133          , p_side                     => 'NA'
118134    );
118135 
118136    xla_ae_lines_pkg.set_ccid(
118137     p_code_combination_id          => l_ccid
118138   , p_value_type_code              => l_adr_value_type_code
118139   , p_transaction_coa_id           => l_adr_transaction_coa_id
118140   , p_accounting_coa_id            => l_adr_accounting_coa_id
118141   , p_adr_code                     => 'CST_DEFAULT'
118142   , p_adr_type_code                => 'S'
118143   , p_component_type               => l_component_type
118144   , p_component_code               => l_component_code
118145   , p_component_type_code          => l_component_type_code
118146   , p_component_appl_id            => l_component_appl_id
118147   , p_amb_context_code             => l_amb_context_code
118148   , p_side                         => 'NA'
118149   );
118150 
118151 
118152    --
118153    --
118154    END IF;
118155    --
118156    -- Bug 4922099
118157    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
118158           (NVL(l_enc_upg_option, 'N') = 'O')
118159         ) AND
118160         (l_bflow_method_code = 'PRIOR_ENTRY')
118161       )
118162    THEN
118163       IF
118164       --
118165       1 = 2
118166       --
118167       THEN
118168       xla_accounting_err_pkg.build_message
118169                                     (p_appli_s_name            => 'XLA'
118170                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118171                                     ,p_token_1                 => 'LINE_NUMBER'
118172                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
118173                                     ,p_token_2                 => 'LINE_TYPE_NAME'
118174                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
118175                                                                              l_component_type
118176                                                                             ,l_component_code
118177                                                                             ,l_component_type_code
118178                                                                             ,l_component_appl_id
118179                                                                             ,l_amb_context_code
118180                                                                             ,l_entity_code
118181                                                                             ,l_event_class_code
118182                                                                            )
118183                                     ,p_token_3                 => 'OWNER'
118184                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
118185                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
118186                                                                           ,p_lookup_code    => l_component_type_code
118187                                                                          )
118188                                     ,p_token_4                 => 'PRODUCT_NAME'
118189                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
118190                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
118191                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
118192                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
118193                                     ,p_ae_header_id            =>  NULL
118194                                        );
118195 
118196         IF (C_LEVEL_ERROR>= g_log_level) THEN
118197                  trace
118198                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118199                       ,p_level    => C_LEVEL_ERROR
118200                       ,p_module   => l_log_module);
118201         END IF;
118202       END IF;
118203    END IF;
118204    --
118205    --
118206    ------------------------------------------------------------------------------------------------
118207    -- 4219869 Business Flow
118208    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
118209    -- Prior Entry.  Currently, the following code is always generated.
118210    ------------------------------------------------------------------------------------------------
118211    XLA_AE_LINES_PKG.ValidateCurrentLine;
118212 
118213    ------------------------------------------------------------------------------------
118214    -- 4219869 Business Flow
118215    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
118216    ------------------------------------------------------------------------------------
118217    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118218 
118219    ----------------------------------------------------------------------------------
118220    -- 4219869 Business Flow
118221    -- Update journal entry status -- Need to generate this within IF <condition>
118222    ----------------------------------------------------------------------------------
118223    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118224          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
118225          ,p_balance_type_code => l_balance_type_code
118226          );
118227 
118228    -------------------------------------------------------------------------------------------
118229    -- 4262811 - Generate the Accrual Reversal lines
118230    -------------------------------------------------------------------------------------------
118231    BEGIN
118232       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
118233                               (g_array_event(p_event_id).array_value_num('header_index'));
118234       IF l_acc_rev_flag IS NULL THEN
118235          l_acc_rev_flag := 'N';
118236       END IF;
118237    EXCEPTION
118238       WHEN OTHERS THEN
118239          l_acc_rev_flag := 'N';
118240    END;
118241    --
118242    IF (l_acc_rev_flag = 'Y') THEN
118243 
118244        -- 4645092  ------------------------------------------------------------------------------
118245        -- To allow MPA report to determine if it should generate report process
118246        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
118247        ------------------------------------------------------------------------------------------
118248 
118249        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
118250        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
118251    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
118252    -- call ADRs
118253    -- Bug 4922099
118254    --
118255    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118256         (NVL(l_actual_upg_option, 'N') = 'O') OR
118257         (NVL(l_enc_upg_option, 'N') = 'O')
118258       )
118259    THEN
118260    NULL;
118261    --
118262    --
118263    
118264   l_ccid := AcctDerRule_4(
118265            p_application_id           => p_application_id
118266          , p_ae_header_id             => l_ae_header_id 
118267 , p_source_4 => p_source_4
118268          , x_transaction_coa_id       => l_adr_transaction_coa_id
118269          , x_accounting_coa_id        => l_adr_accounting_coa_id
118270          , x_value_type_code          => l_adr_value_type_code
118271          , p_side                     => 'NA'
118272    );
118273 
118274    xla_ae_lines_pkg.set_ccid(
118275     p_code_combination_id          => l_ccid
118276   , p_value_type_code              => l_adr_value_type_code
118277   , p_transaction_coa_id           => l_adr_transaction_coa_id
118278   , p_accounting_coa_id            => l_adr_accounting_coa_id
118279   , p_adr_code                     => 'CST_DEFAULT'
118280   , p_adr_type_code                => 'S'
118281   , p_component_type               => l_component_type
118282   , p_component_code               => l_component_code
118283   , p_component_type_code          => l_component_type_code
118284   , p_component_appl_id            => l_component_appl_id
118285   , p_amb_context_code             => l_amb_context_code
118286   , p_side                         => 'NA'
118287   );
118288 
118289 
118290    --
118291    --
118292    END IF;
118293 
118294        --
118295        -- Update the line information that should be overwritten
118296        --
118297        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
118298                                          p_header_num   => 1);
118299        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
118300 
118301        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
118302 
118303        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
118304           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
118305        END IF;
118306 
118307       --
118308       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
118309       --
118310       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
118311           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
118312       ELSE
118313           ---------------------------------------------------------------------------------------------------
118314           -- 4262811a Switch Sign
118315           ---------------------------------------------------------------------------------------------------
118316           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
118317           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118318                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118319           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118320                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118321           -- 5132302
118322           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
118323                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118324 
118325       END IF;
118326 
118327       -- 4955764
118328       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118329       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
118330 
118331 
118332       XLA_AE_LINES_PKG.ValidateCurrentLine;
118333       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118334 
118335       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118336                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
118337                ,p_balance_type_code => l_balance_type_code);
118338 
118339    END IF;
118340 
118341    -----------------------------------------------------------------------------------------
118342    -- 4262811 Multiperiod Accounting
118343    -----------------------------------------------------------------------------------------
118344      -- No MPA option is assigned.
118345 
118346 
118347 END IF;
118348 END IF;
118349 --
118350 
118351 --
118352 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118353    trace
118354       (p_msg      => 'END of AcctLineType_214'
118355       ,p_level    => C_LEVEL_PROCEDURE
118356       ,p_module   => l_log_module);
118357 END IF;
118358 --
118359 EXCEPTION
118360   WHEN xla_exceptions_pkg.application_exception THEN
118361       RAISE;
118362   WHEN OTHERS THEN
118363        xla_exceptions_pkg.raise_message
118364            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_214');
118365 END AcctLineType_214;
118366 --
118367 
118368 ---------------------------------------
118369 --
118370 -- PRIVATE FUNCTION
118371 --         AcctLineType_215
118372 --
118373 ---------------------------------------
118374 PROCEDURE AcctLineType_215 (
118375   p_application_id        IN NUMBER
118376  ,p_event_id              IN NUMBER
118377  ,p_calculate_acctd_flag  IN VARCHAR2
118378  ,p_calculate_g_l_flag    IN VARCHAR2
118379  ,p_actual_flag           IN OUT VARCHAR2
118380  ,p_balance_type_code     OUT VARCHAR2
118381  ,p_gain_or_loss_ref      OUT VARCHAR2
118382  
118383 --Cost Management Default Account
118384  , p_source_4            IN NUMBER
118385 --DISTRIBUTION_IDENTIFIER
118386  , p_source_11            IN NUMBER
118387 --Distribution Type
118388  , p_source_12            IN VARCHAR2
118389  , p_source_12_meaning    IN VARCHAR2
118390 --Entered Currency Code
118391  , p_source_15            IN VARCHAR2
118392 --Entered Amount
118393  , p_source_18            IN NUMBER
118394 --Currency Conversion Date
118395  , p_source_19            IN DATE
118396 --Currency Conversion Rate
118397  , p_source_20            IN NUMBER
118398 --Currency Conversion Type
118399  , p_source_21            IN VARCHAR2
118400 --Accounted Amount
118401  , p_source_22            IN NUMBER
118402 --Accounting Line Type
118403  , p_source_24            IN NUMBER
118404 )
118405 IS
118406 
118407 l_component_type              VARCHAR2(80);
118408 l_component_code              VARCHAR2(30);
118409 l_component_type_code         VARCHAR2(1);
118410 l_component_appl_id           INTEGER;
118411 l_amb_context_code            VARCHAR2(30);
118412 l_entity_code                 VARCHAR2(30);
118413 l_event_class_code            VARCHAR2(30);
118414 l_ae_header_id                NUMBER;
118415 l_event_type_code             VARCHAR2(30);
118416 l_line_definition_code        VARCHAR2(30);
118417 l_line_definition_owner_code  VARCHAR2(1);
118418 --
118419 -- adr variables
118420 l_segment                     VARCHAR2(30);
118421 l_ccid                        NUMBER;
118422 l_adr_transaction_coa_id      NUMBER;
118423 l_adr_accounting_coa_id       NUMBER;
118424 l_adr_flexfield_segment_code  VARCHAR2(30);
118425 l_adr_flex_value_set_id       NUMBER;
118426 l_adr_value_type_code         VARCHAR2(30);
118427 l_adr_value_combination_id    NUMBER;
118428 l_adr_value_segment_code      VARCHAR2(30);
118429 
118430 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
118431 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
118432 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
118433 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
118434 
118435 -- 4262811 Variables ------------------------------------------------------------------------------------------
118436 l_entered_amt_idx             NUMBER;
118437 l_accted_amt_idx              NUMBER;
118438 l_acc_rev_flag                VARCHAR2(1);
118439 l_accrual_line_num            NUMBER;
118440 l_tmp_amt                     NUMBER;
118441 l_acc_rev_natural_side_code   VARCHAR2(1);
118442 
118443 l_num_entries                 NUMBER;
118444 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
118445 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
118446 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
118447 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
118448 l_recog_line_1                NUMBER;
118449 l_recog_line_2                NUMBER;
118450 
118451 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
118452 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
118453 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
118454 
118455 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
118456 
118457 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
118458 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
118459 
118460 ---------------------------------------------------------------------------------------------------------------
118461 
118462 
118463 --
118464 -- bulk performance
118465 --
118466 l_balance_type_code           VARCHAR2(1);
118467 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
118468 l_log_module                  VARCHAR2(240);
118469 
118470 --
118471 -- Upgrade strategy
118472 --
118473 l_actual_upg_option           VARCHAR2(1);
118474 l_enc_upg_option           VARCHAR2(1);
118475 
118476 --
118477 BEGIN
118478 --
118479 IF g_log_enabled THEN
118480       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_215';
118481 END IF;
118482 --
118483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118484 
118485       trace
118486          (p_msg      => 'BEGIN of AcctLineType_215'
118487          ,p_level    => C_LEVEL_PROCEDURE
118488          ,p_module   => l_log_module);
118489 
118490 END IF;
118491 --
118492 l_component_type             := 'AMB_JLT';
118493 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
118494 l_component_type_code        := 'S';
118495 l_component_appl_id          :=  707;
118496 l_amb_context_code           := 'DEFAULT';
118497 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
118498 l_event_class_code           := 'USER_DEFINE';
118499 l_event_type_code            := 'UDIR_INTERORG_RCPT';
118500 l_line_definition_owner_code := 'S';
118501 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT';
118502 --
118503 l_balance_type_code          := 'A';
118504 l_segment                     := NULL;
118505 l_ccid                        := NULL;
118506 l_adr_transaction_coa_id      := NULL;
118507 l_adr_accounting_coa_id       := NULL;
118508 l_adr_flexfield_segment_code  := NULL;
118509 l_adr_flex_value_set_id       := NULL;
118510 l_adr_value_type_code         := NULL;
118511 l_adr_value_combination_id    := NULL;
118512 l_adr_value_segment_code      := NULL;
118513 
118514 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
118515 l_bflow_class_code           := '';    -- 4219869 Business Flow
118516 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
118517 l_budgetary_control_flag     := 'N';
118518 
118519 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
118520 l_bflow_applied_to_amt       := NULL; -- 5132302
118521 l_entered_amt_idx            := NULL;          -- 4262811
118522 l_accted_amt_idx             := NULL;          -- 4262811
118523 l_acc_rev_flag               := NULL;          -- 4262811
118524 l_accrual_line_num           := NULL;          -- 4262811
118525 l_tmp_amt                    := NULL;          -- 4262811
118526 --
118527  
118528 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
118529     l_balance_type_code <> 'B' THEN
118530 IF NVL(p_source_24,9E125) =  6
118531  THEN 
118532 
118533    --
118534    XLA_AE_LINES_PKG.SetNewLine;
118535 
118536    p_balance_type_code          := l_balance_type_code;
118537    -- set the flag so later we will know whether the gain loss line needs to be created
118538    
118539    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
118540      p_actual_flag :='A';
118541    END IF;
118542 
118543    --
118544    -- bulk performance
118545    --
118546    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
118547                                       p_header_num   => 0); -- 4262811
118548    --
118549    -- set accounting line options
118550    --
118551    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
118552            p_natural_side_code          => 'D'
118553          , p_gain_or_loss_flag          => 'N'
118554          , p_gl_transfer_mode_code      => 'S'
118555          , p_acct_entry_type_code       => 'A'
118556          , p_switch_side_flag           => 'Y'
118557          , p_merge_duplicate_code       => 'N'
118558          );
118559    --
118560    l_acc_rev_natural_side_code := 'C';  -- 4262811
118561    -- 
118562    --
118563    -- set accounting line type info
118564    --
118565    xla_ae_lines_pkg.SetAcctLineType
118566       (p_component_type             => l_component_type
118567       ,p_event_type_code            => l_event_type_code
118568       ,p_line_definition_owner_code => l_line_definition_owner_code
118569       ,p_line_definition_code       => l_line_definition_code
118570       ,p_accounting_line_code       => l_component_code
118571       ,p_accounting_line_type_code  => l_component_type_code
118572       ,p_accounting_line_appl_id    => l_component_appl_id
118573       ,p_amb_context_code           => l_amb_context_code
118574       ,p_entity_code                => l_entity_code
118575       ,p_event_class_code           => l_event_class_code);
118576    --
118577    -- set accounting class
118578    --
118579    xla_ae_lines_pkg.SetAcctClass(
118580            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
118581          , p_ae_header_id           => l_ae_header_id
118582          );
118583 
118584    --
118585    -- set rounding class
118586    --
118587    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
118588                       'PURCHASE_PRICE_VARIANCE';
118589 
118590    --
118591    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
118592    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
118593    --
118594    -- bulk performance
118595    --
118596    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
118597 
118598    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
118599       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
118600 
118601    -- 4955764
118602    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118603       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
118604 
118605    -- 4458381 Public Sector Enh
118606    
118607    --
118608    -- set accounting attributes for the line type
118609    --
118610    l_entered_amt_idx := 3;
118611    l_accted_amt_idx  := 8;
118612    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
118613    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
118614    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
118615    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
118616    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
118617    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
118618    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
118619    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
118620    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
118621    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
118622    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
118623    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
118624    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
118625    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
118626    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
118627    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
118628    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
118629 
118630    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
118631    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
118632 
118633    ---------------------------------------------------------------------------------------------------------------
118634    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
118635    ---------------------------------------------------------------------------------------------------------------
118636    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
118637 
118638    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118639    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118640 
118641    IF xla_accounting_cache_pkg.GetValueChar
118642          (p_source_code         => 'LEDGER_CATEGORY_CODE'
118643          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
118644    AND l_bflow_method_code = 'PRIOR_ENTRY'
118645 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
118646    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
118647          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
118648        )
118649    THEN
118650          xla_ae_lines_pkg.BflowUpgEntry
118651            (p_business_method_code    => l_bflow_method_code
118652            ,p_business_class_code     => l_bflow_class_code
118653            ,p_balance_type            => l_balance_type_code);
118654    ELSE
118655       NULL;
118656 -- No business flow processing for business flow method of NONE.
118657    END IF;
118658 
118659    --
118660    -- call analytical criteria
118661    --
118662    
118663    --
118664    -- call description
118665    --
118666    -- No description or it is inherited.
118667    --
118668    -- call ADRs
118669    -- Bug 4922099
118670    --
118671    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118672         (NVL(l_actual_upg_option, 'N') = 'O') OR
118673         (NVL(l_enc_upg_option, 'N') = 'O')
118674       )
118675    THEN
118676    NULL;
118677    --
118678    --
118679    
118680   l_ccid := AcctDerRule_4(
118681            p_application_id           => p_application_id
118682          , p_ae_header_id             => l_ae_header_id 
118683 , p_source_4 => p_source_4
118684          , x_transaction_coa_id       => l_adr_transaction_coa_id
118685          , x_accounting_coa_id        => l_adr_accounting_coa_id
118686          , x_value_type_code          => l_adr_value_type_code
118687          , p_side                     => 'NA'
118688    );
118689 
118690    xla_ae_lines_pkg.set_ccid(
118691     p_code_combination_id          => l_ccid
118692   , p_value_type_code              => l_adr_value_type_code
118693   , p_transaction_coa_id           => l_adr_transaction_coa_id
118694   , p_accounting_coa_id            => l_adr_accounting_coa_id
118695   , p_adr_code                     => 'CST_DEFAULT'
118696   , p_adr_type_code                => 'S'
118697   , p_component_type               => l_component_type
118698   , p_component_code               => l_component_code
118699   , p_component_type_code          => l_component_type_code
118700   , p_component_appl_id            => l_component_appl_id
118701   , p_amb_context_code             => l_amb_context_code
118702   , p_side                         => 'NA'
118703   );
118704 
118705 
118706    --
118707    --
118708    END IF;
118709    --
118710    -- Bug 4922099
118711    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
118712           (NVL(l_enc_upg_option, 'N') = 'O')
118713         ) AND
118714         (l_bflow_method_code = 'PRIOR_ENTRY')
118715       )
118716    THEN
118717       IF
118718       --
118719       1 = 2
118720       --
118721       THEN
118722       xla_accounting_err_pkg.build_message
118723                                     (p_appli_s_name            => 'XLA'
118724                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118725                                     ,p_token_1                 => 'LINE_NUMBER'
118726                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
118727                                     ,p_token_2                 => 'LINE_TYPE_NAME'
118728                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
118729                                                                              l_component_type
118730                                                                             ,l_component_code
118731                                                                             ,l_component_type_code
118732                                                                             ,l_component_appl_id
118733                                                                             ,l_amb_context_code
118734                                                                             ,l_entity_code
118735                                                                             ,l_event_class_code
118736                                                                            )
118737                                     ,p_token_3                 => 'OWNER'
118738                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
118739                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
118740                                                                           ,p_lookup_code    => l_component_type_code
118741                                                                          )
118742                                     ,p_token_4                 => 'PRODUCT_NAME'
118743                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
118744                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
118745                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
118746                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
118747                                     ,p_ae_header_id            =>  NULL
118748                                        );
118749 
118750         IF (C_LEVEL_ERROR>= g_log_level) THEN
118751                  trace
118752                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118753                       ,p_level    => C_LEVEL_ERROR
118754                       ,p_module   => l_log_module);
118755         END IF;
118756       END IF;
118757    END IF;
118758    --
118759    --
118760    ------------------------------------------------------------------------------------------------
118761    -- 4219869 Business Flow
118762    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
118763    -- Prior Entry.  Currently, the following code is always generated.
118764    ------------------------------------------------------------------------------------------------
118765    XLA_AE_LINES_PKG.ValidateCurrentLine;
118766 
118767    ------------------------------------------------------------------------------------
118768    -- 4219869 Business Flow
118769    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
118770    ------------------------------------------------------------------------------------
118771    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118772 
118773    ----------------------------------------------------------------------------------
118774    -- 4219869 Business Flow
118775    -- Update journal entry status -- Need to generate this within IF <condition>
118776    ----------------------------------------------------------------------------------
118777    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118778          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
118779          ,p_balance_type_code => l_balance_type_code
118780          );
118781 
118782    -------------------------------------------------------------------------------------------
118783    -- 4262811 - Generate the Accrual Reversal lines
118784    -------------------------------------------------------------------------------------------
118785    BEGIN
118786       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
118787                               (g_array_event(p_event_id).array_value_num('header_index'));
118788       IF l_acc_rev_flag IS NULL THEN
118789          l_acc_rev_flag := 'N';
118790       END IF;
118791    EXCEPTION
118792       WHEN OTHERS THEN
118793          l_acc_rev_flag := 'N';
118794    END;
118795    --
118796    IF (l_acc_rev_flag = 'Y') THEN
118797 
118798        -- 4645092  ------------------------------------------------------------------------------
118799        -- To allow MPA report to determine if it should generate report process
118800        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
118801        ------------------------------------------------------------------------------------------
118802 
118803        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
118804        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
118805    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
118806    -- call ADRs
118807    -- Bug 4922099
118808    --
118809    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118810         (NVL(l_actual_upg_option, 'N') = 'O') OR
118811         (NVL(l_enc_upg_option, 'N') = 'O')
118812       )
118813    THEN
118814    NULL;
118815    --
118816    --
118817    
118818   l_ccid := AcctDerRule_4(
118819            p_application_id           => p_application_id
118820          , p_ae_header_id             => l_ae_header_id 
118821 , p_source_4 => p_source_4
118822          , x_transaction_coa_id       => l_adr_transaction_coa_id
118823          , x_accounting_coa_id        => l_adr_accounting_coa_id
118824          , x_value_type_code          => l_adr_value_type_code
118825          , p_side                     => 'NA'
118826    );
118827 
118828    xla_ae_lines_pkg.set_ccid(
118829     p_code_combination_id          => l_ccid
118830   , p_value_type_code              => l_adr_value_type_code
118831   , p_transaction_coa_id           => l_adr_transaction_coa_id
118832   , p_accounting_coa_id            => l_adr_accounting_coa_id
118833   , p_adr_code                     => 'CST_DEFAULT'
118834   , p_adr_type_code                => 'S'
118835   , p_component_type               => l_component_type
118836   , p_component_code               => l_component_code
118837   , p_component_type_code          => l_component_type_code
118838   , p_component_appl_id            => l_component_appl_id
118839   , p_amb_context_code             => l_amb_context_code
118840   , p_side                         => 'NA'
118841   );
118842 
118843 
118844    --
118845    --
118846    END IF;
118847 
118848        --
118849        -- Update the line information that should be overwritten
118850        --
118851        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
118852                                          p_header_num   => 1);
118853        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
118854 
118855        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
118856 
118857        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
118858           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
118859        END IF;
118860 
118861       --
118862       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
118863       --
118864       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
118865           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
118866       ELSE
118867           ---------------------------------------------------------------------------------------------------
118868           -- 4262811a Switch Sign
118869           ---------------------------------------------------------------------------------------------------
118870           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
118871           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118872                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118873           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118874                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118875           -- 5132302
118876           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
118877                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118878 
118879       END IF;
118880 
118881       -- 4955764
118882       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118883       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
118884 
118885 
118886       XLA_AE_LINES_PKG.ValidateCurrentLine;
118887       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118888 
118889       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118890                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
118891                ,p_balance_type_code => l_balance_type_code);
118892 
118893    END IF;
118894 
118895    -----------------------------------------------------------------------------------------
118896    -- 4262811 Multiperiod Accounting
118897    -----------------------------------------------------------------------------------------
118898      -- No MPA option is assigned.
118899 
118900 
118901 END IF;
118902 END IF;
118903 --
118904 
118905 --
118906 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118907    trace
118908       (p_msg      => 'END of AcctLineType_215'
118909       ,p_level    => C_LEVEL_PROCEDURE
118910       ,p_module   => l_log_module);
118911 END IF;
118912 --
118913 EXCEPTION
118914   WHEN xla_exceptions_pkg.application_exception THEN
118915       RAISE;
118916   WHEN OTHERS THEN
118917        xla_exceptions_pkg.raise_message
118918            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_215');
118919 END AcctLineType_215;
118920 --
118921 
118922 ---------------------------------------
118923 --
118924 -- PRIVATE FUNCTION
118925 --         AcctLineType_216
118926 --
118927 ---------------------------------------
118928 PROCEDURE AcctLineType_216 (
118929   p_application_id        IN NUMBER
118930  ,p_event_id              IN NUMBER
118931  ,p_calculate_acctd_flag  IN VARCHAR2
118932  ,p_calculate_g_l_flag    IN VARCHAR2
118933  ,p_actual_flag           IN OUT VARCHAR2
118934  ,p_balance_type_code     OUT VARCHAR2
118935  ,p_gain_or_loss_ref      OUT VARCHAR2
118936  
118937 --Cost Management Default Account
118938  , p_source_4            IN NUMBER
118939 --Applied to Application ID
118940  , p_source_6            IN NUMBER
118941 --Applied to Distribution Link Type
118942  , p_source_7            IN VARCHAR2
118943 --Applied to Entity Code
118944  , p_source_8            IN VARCHAR2
118945 --DISTRIBUTION_IDENTIFIER
118946  , p_source_11            IN NUMBER
118947 --Distribution Type
118948  , p_source_12            IN VARCHAR2
118949  , p_source_12_meaning    IN VARCHAR2
118950 --Encumbrance Reversal Amount Entered
118951  , p_source_14            IN NUMBER
118952 --Entered Currency Code
118953  , p_source_15            IN VARCHAR2
118954 --Transaction Encumbrance Reversal Amount
118955  , p_source_16            IN NUMBER
118956 --Entered Amount
118957  , p_source_18            IN NUMBER
118958 --Currency Conversion Date
118959  , p_source_19            IN DATE
118960 --Currency Conversion Rate
118961  , p_source_20            IN NUMBER
118962 --Currency Conversion Type
118963  , p_source_21            IN VARCHAR2
118964 --Accounted Amount
118965  , p_source_22            IN NUMBER
118966 --Accounting Line Type
118967  , p_source_24            IN NUMBER
118968 --Costing Encumbrance Upgrade Option
118969  , p_source_27            IN VARCHAR2
118970 --TXN_PO_DISTRIBUTION_ID
118971  , p_source_28            IN NUMBER
118972 --TXN_PO_HEADER_ID
118973  , p_source_29            IN NUMBER
118974 --Requisition Budget Account
118975  , p_source_30            IN NUMBER
118976 --Requisition Encumbrance Type Identifier
118977  , p_source_31            IN NUMBER
118978 )
118979 IS
118980 
118981 l_component_type              VARCHAR2(80);
118982 l_component_code              VARCHAR2(30);
118983 l_component_type_code         VARCHAR2(1);
118984 l_component_appl_id           INTEGER;
118985 l_amb_context_code            VARCHAR2(30);
118986 l_entity_code                 VARCHAR2(30);
118987 l_event_class_code            VARCHAR2(30);
118988 l_ae_header_id                NUMBER;
118989 l_event_type_code             VARCHAR2(30);
118990 l_line_definition_code        VARCHAR2(30);
118991 l_line_definition_owner_code  VARCHAR2(1);
118992 --
118993 -- adr variables
118994 l_segment                     VARCHAR2(30);
118995 l_ccid                        NUMBER;
118996 l_adr_transaction_coa_id      NUMBER;
118997 l_adr_accounting_coa_id       NUMBER;
118998 l_adr_flexfield_segment_code  VARCHAR2(30);
118999 l_adr_flex_value_set_id       NUMBER;
119000 l_adr_value_type_code         VARCHAR2(30);
119001 l_adr_value_combination_id    NUMBER;
119002 l_adr_value_segment_code      VARCHAR2(30);
119003 
119004 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
119005 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
119006 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
119007 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
119008 
119009 -- 4262811 Variables ------------------------------------------------------------------------------------------
119010 l_entered_amt_idx             NUMBER;
119011 l_accted_amt_idx              NUMBER;
119012 l_acc_rev_flag                VARCHAR2(1);
119013 l_accrual_line_num            NUMBER;
119014 l_tmp_amt                     NUMBER;
119015 l_acc_rev_natural_side_code   VARCHAR2(1);
119016 
119017 l_num_entries                 NUMBER;
119018 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
119019 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
119020 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
119021 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
119022 l_recog_line_1                NUMBER;
119023 l_recog_line_2                NUMBER;
119024 
119025 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
119026 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
119027 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
119028 
119029 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
119030 
119031 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
119032 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
119033 
119034 ---------------------------------------------------------------------------------------------------------------
119035 
119036 
119037 --
119038 -- bulk performance
119039 --
119040 l_balance_type_code           VARCHAR2(1);
119041 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
119042 l_log_module                  VARCHAR2(240);
119043 
119044 --
119045 -- Upgrade strategy
119046 --
119047 l_actual_upg_option           VARCHAR2(1);
119048 l_enc_upg_option           VARCHAR2(1);
119049 
119050 --
119051 BEGIN
119052 --
119053 IF g_log_enabled THEN
119054       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_216';
119055 END IF;
119056 --
119057 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119058 
119059       trace
119060          (p_msg      => 'BEGIN of AcctLineType_216'
119061          ,p_level    => C_LEVEL_PROCEDURE
119062          ,p_module   => l_log_module);
119063 
119064 END IF;
119065 --
119066 l_component_type             := 'AMB_JLT';
119067 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
119068 l_component_type_code        := 'S';
119069 l_component_appl_id          :=  707;
119070 l_amb_context_code           := 'DEFAULT';
119071 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
119072 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
119073 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
119074 l_line_definition_owner_code := 'S';
119075 l_line_definition_code       := 'FOB_RCPT_RECIPIENT_RCPT';
119076 --
119077 l_balance_type_code          := 'A';
119078 l_segment                     := NULL;
119079 l_ccid                        := NULL;
119080 l_adr_transaction_coa_id      := NULL;
119081 l_adr_accounting_coa_id       := NULL;
119082 l_adr_flexfield_segment_code  := NULL;
119083 l_adr_flex_value_set_id       := NULL;
119084 l_adr_value_type_code         := NULL;
119085 l_adr_value_combination_id    := NULL;
119086 l_adr_value_segment_code      := NULL;
119087 
119088 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
119089 l_bflow_class_code           := '';    -- 4219869 Business Flow
119090 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
119091 l_budgetary_control_flag     := 'N';
119092 
119093 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
119094 l_bflow_applied_to_amt       := NULL; -- 5132302
119095 l_entered_amt_idx            := NULL;          -- 4262811
119096 l_accted_amt_idx             := NULL;          -- 4262811
119097 l_acc_rev_flag               := NULL;          -- 4262811
119098 l_accrual_line_num           := NULL;          -- 4262811
119099 l_tmp_amt                    := NULL;          -- 4262811
119100 --
119101  
119102 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
119103     l_balance_type_code <> 'B' THEN
119104 IF NVL(p_source_24,9E125) =  6
119105  THEN 
119106 
119107    --
119108    XLA_AE_LINES_PKG.SetNewLine;
119109 
119110    p_balance_type_code          := l_balance_type_code;
119111    -- set the flag so later we will know whether the gain loss line needs to be created
119112    
119113    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
119114      p_actual_flag :='A';
119115    END IF;
119116 
119117    --
119118    -- bulk performance
119119    --
119120    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
119121                                       p_header_num   => 0); -- 4262811
119122    --
119123    -- set accounting line options
119124    --
119125    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
119126            p_natural_side_code          => 'D'
119127          , p_gain_or_loss_flag          => 'N'
119128          , p_gl_transfer_mode_code      => 'S'
119129          , p_acct_entry_type_code       => 'A'
119130          , p_switch_side_flag           => 'Y'
119131          , p_merge_duplicate_code       => 'N'
119132          );
119133    --
119134    l_acc_rev_natural_side_code := 'C';  -- 4262811
119135    -- 
119136    --
119137    -- set accounting line type info
119138    --
119139    xla_ae_lines_pkg.SetAcctLineType
119140       (p_component_type             => l_component_type
119141       ,p_event_type_code            => l_event_type_code
119142       ,p_line_definition_owner_code => l_line_definition_owner_code
119143       ,p_line_definition_code       => l_line_definition_code
119144       ,p_accounting_line_code       => l_component_code
119145       ,p_accounting_line_type_code  => l_component_type_code
119146       ,p_accounting_line_appl_id    => l_component_appl_id
119147       ,p_amb_context_code           => l_amb_context_code
119148       ,p_entity_code                => l_entity_code
119149       ,p_event_class_code           => l_event_class_code);
119150    --
119151    -- set accounting class
119152    --
119153    xla_ae_lines_pkg.SetAcctClass(
119154            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
119155          , p_ae_header_id           => l_ae_header_id
119156          );
119157 
119158    --
119159    -- set rounding class
119160    --
119161    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
119162                       'PURCHASE_PRICE_VARIANCE';
119163 
119164    --
119165    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
119166    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
119167    --
119168    -- bulk performance
119169    --
119170    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
119171 
119172    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
119173       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
119174 
119175    -- 4955764
119176    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119177       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
119178 
119179    -- 4458381 Public Sector Enh
119180    
119181    --
119182    -- set accounting attributes for the line type
119183    --
119184    l_entered_amt_idx := 17;
119185    l_accted_amt_idx  := 22;
119186    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
119187    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
119188    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
119189    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
119190    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
119191    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
119192    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
119193    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
119194    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
119195    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
119196    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
119197    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
119198    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
119199    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
119200    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
119201    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
119202    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
119203    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
119204    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
119205    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
119206    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
119207    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
119208    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
119209    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
119210    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
119211    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
119212    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
119213    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
119214    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
119215    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
119216    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
119217    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
119218    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
119219    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
119220    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
119221    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
119222    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
119223    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
119224    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
119225    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
119226    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
119227    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
119228    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
119229    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
119230    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
119231    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
119232    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
119233    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
119234    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
119235 
119236    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
119237    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
119238 
119239    ---------------------------------------------------------------------------------------------------------------
119240    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
119241    ---------------------------------------------------------------------------------------------------------------
119242    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
119243 
119244    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119245    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119246 
119247    IF xla_accounting_cache_pkg.GetValueChar
119248          (p_source_code         => 'LEDGER_CATEGORY_CODE'
119249          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
119250    AND l_bflow_method_code = 'PRIOR_ENTRY'
119251 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
119252    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
119253          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
119254        )
119255    THEN
119256          xla_ae_lines_pkg.BflowUpgEntry
119257            (p_business_method_code    => l_bflow_method_code
119258            ,p_business_class_code     => l_bflow_class_code
119259            ,p_balance_type            => l_balance_type_code);
119260    ELSE
119261       NULL;
119262 -- No business flow processing for business flow method of NONE.
119263    END IF;
119264 
119265    --
119266    -- call analytical criteria
119267    --
119268    
119269    --
119270    -- call description
119271    --
119272    -- No description or it is inherited.
119273    --
119274    -- call ADRs
119275    -- Bug 4922099
119276    --
119277    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119278         (NVL(l_actual_upg_option, 'N') = 'O') OR
119279         (NVL(l_enc_upg_option, 'N') = 'O')
119280       )
119281    THEN
119282    NULL;
119283    --
119284    --
119285    
119286   l_ccid := AcctDerRule_4(
119287            p_application_id           => p_application_id
119288          , p_ae_header_id             => l_ae_header_id 
119289 , p_source_4 => p_source_4
119290          , x_transaction_coa_id       => l_adr_transaction_coa_id
119291          , x_accounting_coa_id        => l_adr_accounting_coa_id
119292          , x_value_type_code          => l_adr_value_type_code
119293          , p_side                     => 'NA'
119294    );
119295 
119296    xla_ae_lines_pkg.set_ccid(
119297     p_code_combination_id          => l_ccid
119298   , p_value_type_code              => l_adr_value_type_code
119299   , p_transaction_coa_id           => l_adr_transaction_coa_id
119300   , p_accounting_coa_id            => l_adr_accounting_coa_id
119301   , p_adr_code                     => 'CST_DEFAULT'
119302   , p_adr_type_code                => 'S'
119303   , p_component_type               => l_component_type
119304   , p_component_code               => l_component_code
119305   , p_component_type_code          => l_component_type_code
119306   , p_component_appl_id            => l_component_appl_id
119307   , p_amb_context_code             => l_amb_context_code
119308   , p_side                         => 'NA'
119309   );
119310 
119311 
119312    --
119313    --
119314    END IF;
119315    --
119316    -- Bug 4922099
119317    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
119318           (NVL(l_enc_upg_option, 'N') = 'O')
119319         ) AND
119320         (l_bflow_method_code = 'PRIOR_ENTRY')
119321       )
119322    THEN
119323       IF
119324       --
119325       1 = 2
119326       --
119327       THEN
119328       xla_accounting_err_pkg.build_message
119329                                     (p_appli_s_name            => 'XLA'
119330                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119331                                     ,p_token_1                 => 'LINE_NUMBER'
119332                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
119333                                     ,p_token_2                 => 'LINE_TYPE_NAME'
119334                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
119335                                                                              l_component_type
119336                                                                             ,l_component_code
119337                                                                             ,l_component_type_code
119338                                                                             ,l_component_appl_id
119339                                                                             ,l_amb_context_code
119340                                                                             ,l_entity_code
119341                                                                             ,l_event_class_code
119342                                                                            )
119343                                     ,p_token_3                 => 'OWNER'
119344                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
119345                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
119346                                                                           ,p_lookup_code    => l_component_type_code
119347                                                                          )
119348                                     ,p_token_4                 => 'PRODUCT_NAME'
119349                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
119350                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
119351                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
119352                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
119353                                     ,p_ae_header_id            =>  NULL
119354                                        );
119355 
119356         IF (C_LEVEL_ERROR>= g_log_level) THEN
119357                  trace
119358                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119359                       ,p_level    => C_LEVEL_ERROR
119360                       ,p_module   => l_log_module);
119361         END IF;
119362       END IF;
119363    END IF;
119364    --
119365    --
119366    ------------------------------------------------------------------------------------------------
119367    -- 4219869 Business Flow
119368    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
119369    -- Prior Entry.  Currently, the following code is always generated.
119370    ------------------------------------------------------------------------------------------------
119371    XLA_AE_LINES_PKG.ValidateCurrentLine;
119372 
119373    ------------------------------------------------------------------------------------
119374    -- 4219869 Business Flow
119375    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
119376    ------------------------------------------------------------------------------------
119377    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119378 
119379    ----------------------------------------------------------------------------------
119380    -- 4219869 Business Flow
119381    -- Update journal entry status -- Need to generate this within IF <condition>
119382    ----------------------------------------------------------------------------------
119383    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119384          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
119385          ,p_balance_type_code => l_balance_type_code
119386          );
119387 
119388    -------------------------------------------------------------------------------------------
119389    -- 4262811 - Generate the Accrual Reversal lines
119390    -------------------------------------------------------------------------------------------
119391    BEGIN
119392       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
119393                               (g_array_event(p_event_id).array_value_num('header_index'));
119394       IF l_acc_rev_flag IS NULL THEN
119395          l_acc_rev_flag := 'N';
119396       END IF;
119397    EXCEPTION
119398       WHEN OTHERS THEN
119399          l_acc_rev_flag := 'N';
119400    END;
119401    --
119402    IF (l_acc_rev_flag = 'Y') THEN
119403 
119404        -- 4645092  ------------------------------------------------------------------------------
119405        -- To allow MPA report to determine if it should generate report process
119406        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
119407        ------------------------------------------------------------------------------------------
119408 
119409        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
119410        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
119411    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
119412    -- call ADRs
119413    -- Bug 4922099
119414    --
119415    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119416         (NVL(l_actual_upg_option, 'N') = 'O') OR
119417         (NVL(l_enc_upg_option, 'N') = 'O')
119418       )
119419    THEN
119420    NULL;
119421    --
119422    --
119423    
119424   l_ccid := AcctDerRule_4(
119425            p_application_id           => p_application_id
119426          , p_ae_header_id             => l_ae_header_id 
119427 , p_source_4 => p_source_4
119428          , x_transaction_coa_id       => l_adr_transaction_coa_id
119429          , x_accounting_coa_id        => l_adr_accounting_coa_id
119430          , x_value_type_code          => l_adr_value_type_code
119431          , p_side                     => 'NA'
119432    );
119433 
119434    xla_ae_lines_pkg.set_ccid(
119435     p_code_combination_id          => l_ccid
119436   , p_value_type_code              => l_adr_value_type_code
119437   , p_transaction_coa_id           => l_adr_transaction_coa_id
119438   , p_accounting_coa_id            => l_adr_accounting_coa_id
119439   , p_adr_code                     => 'CST_DEFAULT'
119440   , p_adr_type_code                => 'S'
119441   , p_component_type               => l_component_type
119442   , p_component_code               => l_component_code
119443   , p_component_type_code          => l_component_type_code
119444   , p_component_appl_id            => l_component_appl_id
119445   , p_amb_context_code             => l_amb_context_code
119446   , p_side                         => 'NA'
119447   );
119448 
119449 
119450    --
119451    --
119452    END IF;
119453 
119454        --
119455        -- Update the line information that should be overwritten
119456        --
119457        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
119458                                          p_header_num   => 1);
119459        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
119460 
119461        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
119462 
119463        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
119464           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
119465        END IF;
119466 
119467       --
119468       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
119469       --
119470       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
119471           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
119472       ELSE
119473           ---------------------------------------------------------------------------------------------------
119474           -- 4262811a Switch Sign
119475           ---------------------------------------------------------------------------------------------------
119476           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
119477           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119478                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119479           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119480                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119481           -- 5132302
119482           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
119483                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119484 
119485       END IF;
119486 
119487       -- 4955764
119488       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119489       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
119490 
119491 
119492       XLA_AE_LINES_PKG.ValidateCurrentLine;
119493       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119494 
119495       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119496                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
119497                ,p_balance_type_code => l_balance_type_code);
119498 
119499    END IF;
119500 
119501    -----------------------------------------------------------------------------------------
119502    -- 4262811 Multiperiod Accounting
119503    -----------------------------------------------------------------------------------------
119504      -- No MPA option is assigned.
119505 
119506 
119507 END IF;
119508 END IF;
119509 --
119510 
119511 --
119512 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119513    trace
119514       (p_msg      => 'END of AcctLineType_216'
119515       ,p_level    => C_LEVEL_PROCEDURE
119516       ,p_module   => l_log_module);
119517 END IF;
119518 --
119519 EXCEPTION
119520   WHEN xla_exceptions_pkg.application_exception THEN
119521       RAISE;
119522   WHEN OTHERS THEN
119523        xla_exceptions_pkg.raise_message
119524            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_216');
119525 END AcctLineType_216;
119526 --
119527 
119528 ---------------------------------------
119529 --
119530 -- PRIVATE FUNCTION
119531 --         AcctLineType_217
119532 --
119533 ---------------------------------------
119534 PROCEDURE AcctLineType_217 (
119535   p_application_id        IN NUMBER
119536  ,p_event_id              IN NUMBER
119537  ,p_calculate_acctd_flag  IN VARCHAR2
119538  ,p_calculate_g_l_flag    IN VARCHAR2
119539  ,p_actual_flag           IN OUT VARCHAR2
119540  ,p_balance_type_code     OUT VARCHAR2
119541  ,p_gain_or_loss_ref      OUT VARCHAR2
119542  
119543 --Cost Management Default Account
119544  , p_source_4            IN NUMBER
119545 --DISTRIBUTION_IDENTIFIER
119546  , p_source_11            IN NUMBER
119547 --Distribution Type
119548  , p_source_12            IN VARCHAR2
119549  , p_source_12_meaning    IN VARCHAR2
119550 --Entered Currency Code
119551  , p_source_15            IN VARCHAR2
119552 --Entered Amount
119553  , p_source_18            IN NUMBER
119554 --Currency Conversion Date
119555  , p_source_19            IN DATE
119556 --Currency Conversion Rate
119557  , p_source_20            IN NUMBER
119558 --Currency Conversion Type
119559  , p_source_21            IN VARCHAR2
119560 --Accounted Amount
119561  , p_source_22            IN NUMBER
119562 --Accounting Line Type
119563  , p_source_24            IN NUMBER
119564 )
119565 IS
119566 
119567 l_component_type              VARCHAR2(80);
119568 l_component_code              VARCHAR2(30);
119569 l_component_type_code         VARCHAR2(1);
119570 l_component_appl_id           INTEGER;
119571 l_amb_context_code            VARCHAR2(30);
119572 l_entity_code                 VARCHAR2(30);
119573 l_event_class_code            VARCHAR2(30);
119574 l_ae_header_id                NUMBER;
119575 l_event_type_code             VARCHAR2(30);
119576 l_line_definition_code        VARCHAR2(30);
119577 l_line_definition_owner_code  VARCHAR2(1);
119578 --
119579 -- adr variables
119580 l_segment                     VARCHAR2(30);
119581 l_ccid                        NUMBER;
119582 l_adr_transaction_coa_id      NUMBER;
119583 l_adr_accounting_coa_id       NUMBER;
119584 l_adr_flexfield_segment_code  VARCHAR2(30);
119585 l_adr_flex_value_set_id       NUMBER;
119586 l_adr_value_type_code         VARCHAR2(30);
119587 l_adr_value_combination_id    NUMBER;
119588 l_adr_value_segment_code      VARCHAR2(30);
119589 
119590 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
119591 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
119592 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
119593 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
119594 
119595 -- 4262811 Variables ------------------------------------------------------------------------------------------
119596 l_entered_amt_idx             NUMBER;
119597 l_accted_amt_idx              NUMBER;
119598 l_acc_rev_flag                VARCHAR2(1);
119599 l_accrual_line_num            NUMBER;
119600 l_tmp_amt                     NUMBER;
119601 l_acc_rev_natural_side_code   VARCHAR2(1);
119602 
119603 l_num_entries                 NUMBER;
119604 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
119605 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
119606 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
119607 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
119608 l_recog_line_1                NUMBER;
119609 l_recog_line_2                NUMBER;
119610 
119611 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
119612 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
119613 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
119614 
119615 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
119616 
119617 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
119618 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
119619 
119620 ---------------------------------------------------------------------------------------------------------------
119621 
119622 
119623 --
119624 -- bulk performance
119625 --
119626 l_balance_type_code           VARCHAR2(1);
119627 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
119628 l_log_module                  VARCHAR2(240);
119629 
119630 --
119631 -- Upgrade strategy
119632 --
119633 l_actual_upg_option           VARCHAR2(1);
119634 l_enc_upg_option           VARCHAR2(1);
119635 
119636 --
119637 BEGIN
119638 --
119639 IF g_log_enabled THEN
119640       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_217';
119641 END IF;
119642 --
119643 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119644 
119645       trace
119646          (p_msg      => 'BEGIN of AcctLineType_217'
119647          ,p_level    => C_LEVEL_PROCEDURE
119648          ,p_module   => l_log_module);
119649 
119650 END IF;
119651 --
119652 l_component_type             := 'AMB_JLT';
119653 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
119654 l_component_type_code        := 'S';
119655 l_component_appl_id          :=  707;
119656 l_amb_context_code           := 'DEFAULT';
119657 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
119658 l_event_class_code           := 'USER_DEFINE';
119659 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
119660 l_line_definition_owner_code := 'S';
119661 l_line_definition_code       := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
119662 --
119663 l_balance_type_code          := 'A';
119664 l_segment                     := NULL;
119665 l_ccid                        := NULL;
119666 l_adr_transaction_coa_id      := NULL;
119667 l_adr_accounting_coa_id       := NULL;
119668 l_adr_flexfield_segment_code  := NULL;
119669 l_adr_flex_value_set_id       := NULL;
119670 l_adr_value_type_code         := NULL;
119671 l_adr_value_combination_id    := NULL;
119672 l_adr_value_segment_code      := NULL;
119673 
119674 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
119675 l_bflow_class_code           := '';    -- 4219869 Business Flow
119676 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
119677 l_budgetary_control_flag     := 'N';
119678 
119679 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
119680 l_bflow_applied_to_amt       := NULL; -- 5132302
119681 l_entered_amt_idx            := NULL;          -- 4262811
119682 l_accted_amt_idx             := NULL;          -- 4262811
119683 l_acc_rev_flag               := NULL;          -- 4262811
119684 l_accrual_line_num           := NULL;          -- 4262811
119685 l_tmp_amt                    := NULL;          -- 4262811
119686 --
119687  
119688 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
119689     l_balance_type_code <> 'B' THEN
119690 IF NVL(p_source_24,9E125) =  6
119691  THEN 
119692 
119693    --
119694    XLA_AE_LINES_PKG.SetNewLine;
119695 
119696    p_balance_type_code          := l_balance_type_code;
119697    -- set the flag so later we will know whether the gain loss line needs to be created
119698    
119699    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
119700      p_actual_flag :='A';
119701    END IF;
119702 
119703    --
119704    -- bulk performance
119705    --
119706    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
119707                                       p_header_num   => 0); -- 4262811
119708    --
119709    -- set accounting line options
119710    --
119711    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
119712            p_natural_side_code          => 'D'
119713          , p_gain_or_loss_flag          => 'N'
119714          , p_gl_transfer_mode_code      => 'S'
119715          , p_acct_entry_type_code       => 'A'
119716          , p_switch_side_flag           => 'Y'
119717          , p_merge_duplicate_code       => 'N'
119718          );
119719    --
119720    l_acc_rev_natural_side_code := 'C';  -- 4262811
119721    -- 
119722    --
119723    -- set accounting line type info
119724    --
119725    xla_ae_lines_pkg.SetAcctLineType
119726       (p_component_type             => l_component_type
119727       ,p_event_type_code            => l_event_type_code
119728       ,p_line_definition_owner_code => l_line_definition_owner_code
119729       ,p_line_definition_code       => l_line_definition_code
119730       ,p_accounting_line_code       => l_component_code
119731       ,p_accounting_line_type_code  => l_component_type_code
119732       ,p_accounting_line_appl_id    => l_component_appl_id
119733       ,p_amb_context_code           => l_amb_context_code
119734       ,p_entity_code                => l_entity_code
119735       ,p_event_class_code           => l_event_class_code);
119736    --
119737    -- set accounting class
119738    --
119739    xla_ae_lines_pkg.SetAcctClass(
119740            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
119741          , p_ae_header_id           => l_ae_header_id
119742          );
119743 
119744    --
119745    -- set rounding class
119746    --
119747    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
119748                       'PURCHASE_PRICE_VARIANCE';
119749 
119750    --
119751    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
119752    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
119753    --
119754    -- bulk performance
119755    --
119756    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
119757 
119758    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
119759       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
119760 
119761    -- 4955764
119762    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119763       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
119764 
119765    -- 4458381 Public Sector Enh
119766    
119767    --
119768    -- set accounting attributes for the line type
119769    --
119770    l_entered_amt_idx := 3;
119771    l_accted_amt_idx  := 8;
119772    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
119773    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
119774    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
119775    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
119776    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
119777    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
119778    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
119779    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
119780    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
119781    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
119782    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
119783    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
119784    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
119785    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
119786    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
119787    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
119788    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
119789 
119790    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
119791    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
119792 
119793    ---------------------------------------------------------------------------------------------------------------
119794    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
119795    ---------------------------------------------------------------------------------------------------------------
119796    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
119797 
119798    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119799    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119800 
119801    IF xla_accounting_cache_pkg.GetValueChar
119802          (p_source_code         => 'LEDGER_CATEGORY_CODE'
119803          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
119804    AND l_bflow_method_code = 'PRIOR_ENTRY'
119805 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
119806    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
119807          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
119808        )
119809    THEN
119810          xla_ae_lines_pkg.BflowUpgEntry
119811            (p_business_method_code    => l_bflow_method_code
119812            ,p_business_class_code     => l_bflow_class_code
119813            ,p_balance_type            => l_balance_type_code);
119814    ELSE
119815       NULL;
119816 -- No business flow processing for business flow method of NONE.
119817    END IF;
119818 
119819    --
119820    -- call analytical criteria
119821    --
119822    
119823    --
119824    -- call description
119825    --
119826    -- No description or it is inherited.
119827    --
119828    -- call ADRs
119829    -- Bug 4922099
119830    --
119831    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119832         (NVL(l_actual_upg_option, 'N') = 'O') OR
119833         (NVL(l_enc_upg_option, 'N') = 'O')
119834       )
119835    THEN
119836    NULL;
119837    --
119838    --
119839    
119840   l_ccid := AcctDerRule_4(
119841            p_application_id           => p_application_id
119842          , p_ae_header_id             => l_ae_header_id 
119843 , p_source_4 => p_source_4
119844          , x_transaction_coa_id       => l_adr_transaction_coa_id
119845          , x_accounting_coa_id        => l_adr_accounting_coa_id
119846          , x_value_type_code          => l_adr_value_type_code
119847          , p_side                     => 'NA'
119848    );
119849 
119850    xla_ae_lines_pkg.set_ccid(
119851     p_code_combination_id          => l_ccid
119852   , p_value_type_code              => l_adr_value_type_code
119853   , p_transaction_coa_id           => l_adr_transaction_coa_id
119854   , p_accounting_coa_id            => l_adr_accounting_coa_id
119855   , p_adr_code                     => 'CST_DEFAULT'
119856   , p_adr_type_code                => 'S'
119857   , p_component_type               => l_component_type
119858   , p_component_code               => l_component_code
119859   , p_component_type_code          => l_component_type_code
119860   , p_component_appl_id            => l_component_appl_id
119861   , p_amb_context_code             => l_amb_context_code
119862   , p_side                         => 'NA'
119863   );
119864 
119865 
119866    --
119867    --
119868    END IF;
119869    --
119870    -- Bug 4922099
119871    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
119872           (NVL(l_enc_upg_option, 'N') = 'O')
119873         ) AND
119874         (l_bflow_method_code = 'PRIOR_ENTRY')
119875       )
119876    THEN
119877       IF
119878       --
119879       1 = 2
119880       --
119881       THEN
119882       xla_accounting_err_pkg.build_message
119883                                     (p_appli_s_name            => 'XLA'
119884                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119885                                     ,p_token_1                 => 'LINE_NUMBER'
119886                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
119887                                     ,p_token_2                 => 'LINE_TYPE_NAME'
119888                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
119889                                                                              l_component_type
119890                                                                             ,l_component_code
119891                                                                             ,l_component_type_code
119892                                                                             ,l_component_appl_id
119893                                                                             ,l_amb_context_code
119894                                                                             ,l_entity_code
119895                                                                             ,l_event_class_code
119896                                                                            )
119897                                     ,p_token_3                 => 'OWNER'
119898                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
119899                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
119900                                                                           ,p_lookup_code    => l_component_type_code
119901                                                                          )
119902                                     ,p_token_4                 => 'PRODUCT_NAME'
119903                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
119904                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
119905                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
119906                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
119907                                     ,p_ae_header_id            =>  NULL
119908                                        );
119909 
119910         IF (C_LEVEL_ERROR>= g_log_level) THEN
119911                  trace
119912                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119913                       ,p_level    => C_LEVEL_ERROR
119914                       ,p_module   => l_log_module);
119915         END IF;
119916       END IF;
119917    END IF;
119918    --
119919    --
119920    ------------------------------------------------------------------------------------------------
119921    -- 4219869 Business Flow
119922    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
119923    -- Prior Entry.  Currently, the following code is always generated.
119924    ------------------------------------------------------------------------------------------------
119925    XLA_AE_LINES_PKG.ValidateCurrentLine;
119926 
119927    ------------------------------------------------------------------------------------
119928    -- 4219869 Business Flow
119929    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
119930    ------------------------------------------------------------------------------------
119931    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119932 
119933    ----------------------------------------------------------------------------------
119934    -- 4219869 Business Flow
119935    -- Update journal entry status -- Need to generate this within IF <condition>
119936    ----------------------------------------------------------------------------------
119937    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119938          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
119939          ,p_balance_type_code => l_balance_type_code
119940          );
119941 
119942    -------------------------------------------------------------------------------------------
119943    -- 4262811 - Generate the Accrual Reversal lines
119944    -------------------------------------------------------------------------------------------
119945    BEGIN
119946       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
119947                               (g_array_event(p_event_id).array_value_num('header_index'));
119948       IF l_acc_rev_flag IS NULL THEN
119949          l_acc_rev_flag := 'N';
119950       END IF;
119951    EXCEPTION
119952       WHEN OTHERS THEN
119953          l_acc_rev_flag := 'N';
119954    END;
119955    --
119956    IF (l_acc_rev_flag = 'Y') THEN
119957 
119958        -- 4645092  ------------------------------------------------------------------------------
119959        -- To allow MPA report to determine if it should generate report process
119960        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
119961        ------------------------------------------------------------------------------------------
119962 
119963        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
119964        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
119965    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
119966    -- call ADRs
119967    -- Bug 4922099
119968    --
119969    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119970         (NVL(l_actual_upg_option, 'N') = 'O') OR
119971         (NVL(l_enc_upg_option, 'N') = 'O')
119972       )
119973    THEN
119974    NULL;
119975    --
119976    --
119977    
119978   l_ccid := AcctDerRule_4(
119979            p_application_id           => p_application_id
119980          , p_ae_header_id             => l_ae_header_id 
119981 , p_source_4 => p_source_4
119982          , x_transaction_coa_id       => l_adr_transaction_coa_id
119983          , x_accounting_coa_id        => l_adr_accounting_coa_id
119984          , x_value_type_code          => l_adr_value_type_code
119985          , p_side                     => 'NA'
119986    );
119987 
119988    xla_ae_lines_pkg.set_ccid(
119989     p_code_combination_id          => l_ccid
119990   , p_value_type_code              => l_adr_value_type_code
119991   , p_transaction_coa_id           => l_adr_transaction_coa_id
119992   , p_accounting_coa_id            => l_adr_accounting_coa_id
119993   , p_adr_code                     => 'CST_DEFAULT'
119994   , p_adr_type_code                => 'S'
119995   , p_component_type               => l_component_type
119996   , p_component_code               => l_component_code
119997   , p_component_type_code          => l_component_type_code
119998   , p_component_appl_id            => l_component_appl_id
119999   , p_amb_context_code             => l_amb_context_code
120000   , p_side                         => 'NA'
120001   );
120002 
120003 
120004    --
120005    --
120006    END IF;
120007 
120008        --
120009        -- Update the line information that should be overwritten
120010        --
120011        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
120012                                          p_header_num   => 1);
120013        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
120014 
120015        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
120016 
120017        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
120018           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
120019        END IF;
120020 
120021       --
120022       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
120023       --
120024       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
120025           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
120026       ELSE
120027           ---------------------------------------------------------------------------------------------------
120028           -- 4262811a Switch Sign
120029           ---------------------------------------------------------------------------------------------------
120030           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
120031           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
120032                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120033           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
120034                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120035           -- 5132302
120036           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
120037                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120038 
120039       END IF;
120040 
120041       -- 4955764
120042       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
120043       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
120044 
120045 
120046       XLA_AE_LINES_PKG.ValidateCurrentLine;
120047       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
120048 
120049       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
120050                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
120051                ,p_balance_type_code => l_balance_type_code);
120052 
120053    END IF;
120054 
120055    -----------------------------------------------------------------------------------------
120056    -- 4262811 Multiperiod Accounting
120057    -----------------------------------------------------------------------------------------
120058      -- No MPA option is assigned.
120059 
120060 
120061 END IF;
120062 END IF;
120063 --
120064 
120065 --
120066 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120067    trace
120068       (p_msg      => 'END of AcctLineType_217'
120069       ,p_level    => C_LEVEL_PROCEDURE
120070       ,p_module   => l_log_module);
120071 END IF;
120072 --
120073 EXCEPTION
120074   WHEN xla_exceptions_pkg.application_exception THEN
120075       RAISE;
120076   WHEN OTHERS THEN
120077        xla_exceptions_pkg.raise_message
120078            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_217');
120079 END AcctLineType_217;
120080 --
120081 
120082 ---------------------------------------
120083 --
120084 -- PRIVATE FUNCTION
120085 --         AcctLineType_218
120086 --
120087 ---------------------------------------
120088 PROCEDURE AcctLineType_218 (
120089   p_application_id        IN NUMBER
120090  ,p_event_id              IN NUMBER
120091  ,p_calculate_acctd_flag  IN VARCHAR2
120092  ,p_calculate_g_l_flag    IN VARCHAR2
120093  ,p_actual_flag           IN OUT VARCHAR2
120094  ,p_balance_type_code     OUT VARCHAR2
120095  ,p_gain_or_loss_ref      OUT VARCHAR2
120096  
120097 --Cost Management Default Account
120098  , p_source_4            IN NUMBER
120099 --DISTRIBUTION_IDENTIFIER
120100  , p_source_11            IN NUMBER
120101 --Distribution Type
120102  , p_source_12            IN VARCHAR2
120103  , p_source_12_meaning    IN VARCHAR2
120104 --Entered Currency Code
120105  , p_source_15            IN VARCHAR2
120106 --Entered Amount
120107  , p_source_18            IN NUMBER
120108 --Currency Conversion Date
120109  , p_source_19            IN DATE
120110 --Currency Conversion Rate
120111  , p_source_20            IN NUMBER
120112 --Currency Conversion Type
120113  , p_source_21            IN VARCHAR2
120114 --Accounted Amount
120115  , p_source_22            IN NUMBER
120116 --Accounting Line Type
120117  , p_source_24            IN NUMBER
120118 )
120119 IS
120120 
120121 l_component_type              VARCHAR2(80);
120122 l_component_code              VARCHAR2(30);
120123 l_component_type_code         VARCHAR2(1);
120124 l_component_appl_id           INTEGER;
120125 l_amb_context_code            VARCHAR2(30);
120126 l_entity_code                 VARCHAR2(30);
120127 l_event_class_code            VARCHAR2(30);
120128 l_ae_header_id                NUMBER;
120129 l_event_type_code             VARCHAR2(30);
120130 l_line_definition_code        VARCHAR2(30);
120131 l_line_definition_owner_code  VARCHAR2(1);
120132 --
120133 -- adr variables
120134 l_segment                     VARCHAR2(30);
120135 l_ccid                        NUMBER;
120136 l_adr_transaction_coa_id      NUMBER;
120137 l_adr_accounting_coa_id       NUMBER;
120138 l_adr_flexfield_segment_code  VARCHAR2(30);
120139 l_adr_flex_value_set_id       NUMBER;
120140 l_adr_value_type_code         VARCHAR2(30);
120141 l_adr_value_combination_id    NUMBER;
120142 l_adr_value_segment_code      VARCHAR2(30);
120143 
120144 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
120145 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
120146 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
120147 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
120148 
120149 -- 4262811 Variables ------------------------------------------------------------------------------------------
120150 l_entered_amt_idx             NUMBER;
120151 l_accted_amt_idx              NUMBER;
120152 l_acc_rev_flag                VARCHAR2(1);
120153 l_accrual_line_num            NUMBER;
120154 l_tmp_amt                     NUMBER;
120155 l_acc_rev_natural_side_code   VARCHAR2(1);
120156 
120157 l_num_entries                 NUMBER;
120158 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
120159 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
120160 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
120161 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
120162 l_recog_line_1                NUMBER;
120163 l_recog_line_2                NUMBER;
120164 
120165 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
120166 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
120167 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
120168 
120169 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
120170 
120171 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
120172 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
120173 
120174 ---------------------------------------------------------------------------------------------------------------
120175 
120176 
120177 --
120178 -- bulk performance
120179 --
120180 l_balance_type_code           VARCHAR2(1);
120181 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
120182 l_log_module                  VARCHAR2(240);
120183 
120184 --
120185 -- Upgrade strategy
120186 --
120187 l_actual_upg_option           VARCHAR2(1);
120188 l_enc_upg_option           VARCHAR2(1);
120189 
120190 --
120191 BEGIN
120192 --
120193 IF g_log_enabled THEN
120194       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_218';
120195 END IF;
120196 --
120197 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120198 
120199       trace
120200          (p_msg      => 'BEGIN of AcctLineType_218'
120201          ,p_level    => C_LEVEL_PROCEDURE
120202          ,p_module   => l_log_module);
120203 
120204 END IF;
120205 --
120206 l_component_type             := 'AMB_JLT';
120207 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
120208 l_component_type_code        := 'S';
120209 l_component_appl_id          :=  707;
120210 l_amb_context_code           := 'DEFAULT';
120211 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
120212 l_event_class_code           := 'DIR_INTERORG_SHIP';
120213 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
120214 l_line_definition_owner_code := 'S';
120215 l_line_definition_code       := 'DIRECT_INTERORG_SHIP';
120216 --
120217 l_balance_type_code          := 'A';
120218 l_segment                     := NULL;
120219 l_ccid                        := NULL;
120220 l_adr_transaction_coa_id      := NULL;
120221 l_adr_accounting_coa_id       := NULL;
120222 l_adr_flexfield_segment_code  := NULL;
120223 l_adr_flex_value_set_id       := NULL;
120224 l_adr_value_type_code         := NULL;
120225 l_adr_value_combination_id    := NULL;
120226 l_adr_value_segment_code      := NULL;
120227 
120228 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
120229 l_bflow_class_code           := '';    -- 4219869 Business Flow
120230 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
120231 l_budgetary_control_flag     := 'N';
120232 
120233 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
120234 l_bflow_applied_to_amt       := NULL; -- 5132302
120235 l_entered_amt_idx            := NULL;          -- 4262811
120236 l_accted_amt_idx             := NULL;          -- 4262811
120237 l_acc_rev_flag               := NULL;          -- 4262811
120238 l_accrual_line_num           := NULL;          -- 4262811
120239 l_tmp_amt                    := NULL;          -- 4262811
120240 --
120241  
120242 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
120243     l_balance_type_code <> 'B' THEN
120244 IF NVL(p_source_24,9E125) =  6
120245  THEN 
120246 
120247    --
120248    XLA_AE_LINES_PKG.SetNewLine;
120249 
120250    p_balance_type_code          := l_balance_type_code;
120251    -- set the flag so later we will know whether the gain loss line needs to be created
120252    
120253    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
120254      p_actual_flag :='A';
120255    END IF;
120256 
120257    --
120258    -- bulk performance
120259    --
120260    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
120261                                       p_header_num   => 0); -- 4262811
120262    --
120263    -- set accounting line options
120264    --
120265    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
120266            p_natural_side_code          => 'D'
120267          , p_gain_or_loss_flag          => 'N'
120268          , p_gl_transfer_mode_code      => 'S'
120269          , p_acct_entry_type_code       => 'A'
120270          , p_switch_side_flag           => 'Y'
120271          , p_merge_duplicate_code       => 'N'
120272          );
120273    --
120274    l_acc_rev_natural_side_code := 'C';  -- 4262811
120275    -- 
120276    --
120277    -- set accounting line type info
120278    --
120279    xla_ae_lines_pkg.SetAcctLineType
120280       (p_component_type             => l_component_type
120281       ,p_event_type_code            => l_event_type_code
120282       ,p_line_definition_owner_code => l_line_definition_owner_code
120283       ,p_line_definition_code       => l_line_definition_code
120284       ,p_accounting_line_code       => l_component_code
120285       ,p_accounting_line_type_code  => l_component_type_code
120286       ,p_accounting_line_appl_id    => l_component_appl_id
120287       ,p_amb_context_code           => l_amb_context_code
120288       ,p_entity_code                => l_entity_code
120289       ,p_event_class_code           => l_event_class_code);
120290    --
120291    -- set accounting class
120292    --
120293    xla_ae_lines_pkg.SetAcctClass(
120294            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
120295          , p_ae_header_id           => l_ae_header_id
120296          );
120297 
120298    --
120299    -- set rounding class
120300    --
120301    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
120302                       'PURCHASE_PRICE_VARIANCE';
120303 
120304    --
120305    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
120306    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
120307    --
120308    -- bulk performance
120309    --
120310    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
120311 
120312    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
120313       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
120314 
120315    -- 4955764
120316    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
120317       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
120318 
120319    -- 4458381 Public Sector Enh
120320    
120321    --
120322    -- set accounting attributes for the line type
120323    --
120324    l_entered_amt_idx := 3;
120325    l_accted_amt_idx  := 8;
120326    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
120327    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
120328    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
120329    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
120330    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
120331    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
120332    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
120333    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
120334    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
120335    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
120336    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
120337    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
120338    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
120339    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
120340    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
120341    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
120342    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
120343 
120344    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
120345    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
120346 
120347    ---------------------------------------------------------------------------------------------------------------
120348    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
120349    ---------------------------------------------------------------------------------------------------------------
120350    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
120351 
120352    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120353    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120354 
120355    IF xla_accounting_cache_pkg.GetValueChar
120356          (p_source_code         => 'LEDGER_CATEGORY_CODE'
120357          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
120358    AND l_bflow_method_code = 'PRIOR_ENTRY'
120359 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
120360    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
120361          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
120362        )
120363    THEN
120364          xla_ae_lines_pkg.BflowUpgEntry
120365            (p_business_method_code    => l_bflow_method_code
120366            ,p_business_class_code     => l_bflow_class_code
120367            ,p_balance_type            => l_balance_type_code);
120368    ELSE
120369       NULL;
120370 -- No business flow processing for business flow method of NONE.
120371    END IF;
120372 
120373    --
120374    -- call analytical criteria
120375    --
120376    
120377    --
120378    -- call description
120379    --
120380    -- No description or it is inherited.
120381    --
120382    -- call ADRs
120383    -- Bug 4922099
120384    --
120385    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
120386         (NVL(l_actual_upg_option, 'N') = 'O') OR
120387         (NVL(l_enc_upg_option, 'N') = 'O')
120388       )
120389    THEN
120390    NULL;
120391    --
120392    --
120393    
120394   l_ccid := AcctDerRule_4(
120395            p_application_id           => p_application_id
120396          , p_ae_header_id             => l_ae_header_id 
120397 , p_source_4 => p_source_4
120398          , x_transaction_coa_id       => l_adr_transaction_coa_id
120399          , x_accounting_coa_id        => l_adr_accounting_coa_id
120400          , x_value_type_code          => l_adr_value_type_code
120401          , p_side                     => 'NA'
120402    );
120403 
120404    xla_ae_lines_pkg.set_ccid(
120405     p_code_combination_id          => l_ccid
120406   , p_value_type_code              => l_adr_value_type_code
120407   , p_transaction_coa_id           => l_adr_transaction_coa_id
120408   , p_accounting_coa_id            => l_adr_accounting_coa_id
120409   , p_adr_code                     => 'CST_DEFAULT'
120410   , p_adr_type_code                => 'S'
120411   , p_component_type               => l_component_type
120412   , p_component_code               => l_component_code
120413   , p_component_type_code          => l_component_type_code
120414   , p_component_appl_id            => l_component_appl_id
120415   , p_amb_context_code             => l_amb_context_code
120416   , p_side                         => 'NA'
120417   );
120418 
120419 
120420    --
120421    --
120422    END IF;
120423    --
120424    -- Bug 4922099
120425    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
120426           (NVL(l_enc_upg_option, 'N') = 'O')
120427         ) AND
120428         (l_bflow_method_code = 'PRIOR_ENTRY')
120429       )
120430    THEN
120431       IF
120432       --
120433       1 = 2
120434       --
120435       THEN
120436       xla_accounting_err_pkg.build_message
120437                                     (p_appli_s_name            => 'XLA'
120438                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120439                                     ,p_token_1                 => 'LINE_NUMBER'
120440                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
120441                                     ,p_token_2                 => 'LINE_TYPE_NAME'
120442                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
120443                                                                              l_component_type
120444                                                                             ,l_component_code
120445                                                                             ,l_component_type_code
120446                                                                             ,l_component_appl_id
120447                                                                             ,l_amb_context_code
120448                                                                             ,l_entity_code
120449                                                                             ,l_event_class_code
120450                                                                            )
120451                                     ,p_token_3                 => 'OWNER'
120452                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
120453                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
120454                                                                           ,p_lookup_code    => l_component_type_code
120455                                                                          )
120456                                     ,p_token_4                 => 'PRODUCT_NAME'
120457                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
120458                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
120459                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
120460                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
120461                                     ,p_ae_header_id            =>  NULL
120462                                        );
120463 
120464         IF (C_LEVEL_ERROR>= g_log_level) THEN
120465                  trace
120466                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120467                       ,p_level    => C_LEVEL_ERROR
120468                       ,p_module   => l_log_module);
120469         END IF;
120470       END IF;
120471    END IF;
120472    --
120473    --
120474    ------------------------------------------------------------------------------------------------
120475    -- 4219869 Business Flow
120476    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
120477    -- Prior Entry.  Currently, the following code is always generated.
120478    ------------------------------------------------------------------------------------------------
120479    XLA_AE_LINES_PKG.ValidateCurrentLine;
120480 
120481    ------------------------------------------------------------------------------------
120482    -- 4219869 Business Flow
120483    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
120484    ------------------------------------------------------------------------------------
120485    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
120486 
120487    ----------------------------------------------------------------------------------
120488    -- 4219869 Business Flow
120489    -- Update journal entry status -- Need to generate this within IF <condition>
120490    ----------------------------------------------------------------------------------
120491    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
120492          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
120493          ,p_balance_type_code => l_balance_type_code
120494          );
120495 
120496    -------------------------------------------------------------------------------------------
120497    -- 4262811 - Generate the Accrual Reversal lines
120498    -------------------------------------------------------------------------------------------
120499    BEGIN
120500       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
120501                               (g_array_event(p_event_id).array_value_num('header_index'));
120502       IF l_acc_rev_flag IS NULL THEN
120503          l_acc_rev_flag := 'N';
120504       END IF;
120505    EXCEPTION
120506       WHEN OTHERS THEN
120507          l_acc_rev_flag := 'N';
120508    END;
120509    --
120510    IF (l_acc_rev_flag = 'Y') THEN
120511 
120512        -- 4645092  ------------------------------------------------------------------------------
120513        -- To allow MPA report to determine if it should generate report process
120514        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
120515        ------------------------------------------------------------------------------------------
120516 
120517        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
120518        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
120519    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
120520    -- call ADRs
120521    -- Bug 4922099
120522    --
120523    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
120524         (NVL(l_actual_upg_option, 'N') = 'O') OR
120525         (NVL(l_enc_upg_option, 'N') = 'O')
120526       )
120527    THEN
120528    NULL;
120529    --
120530    --
120531    
120532   l_ccid := AcctDerRule_4(
120533            p_application_id           => p_application_id
120534          , p_ae_header_id             => l_ae_header_id 
120535 , p_source_4 => p_source_4
120536          , x_transaction_coa_id       => l_adr_transaction_coa_id
120537          , x_accounting_coa_id        => l_adr_accounting_coa_id
120538          , x_value_type_code          => l_adr_value_type_code
120539          , p_side                     => 'NA'
120540    );
120541 
120542    xla_ae_lines_pkg.set_ccid(
120543     p_code_combination_id          => l_ccid
120544   , p_value_type_code              => l_adr_value_type_code
120545   , p_transaction_coa_id           => l_adr_transaction_coa_id
120546   , p_accounting_coa_id            => l_adr_accounting_coa_id
120547   , p_adr_code                     => 'CST_DEFAULT'
120548   , p_adr_type_code                => 'S'
120549   , p_component_type               => l_component_type
120550   , p_component_code               => l_component_code
120551   , p_component_type_code          => l_component_type_code
120552   , p_component_appl_id            => l_component_appl_id
120553   , p_amb_context_code             => l_amb_context_code
120554   , p_side                         => 'NA'
120555   );
120556 
120557 
120558    --
120559    --
120560    END IF;
120561 
120562        --
120563        -- Update the line information that should be overwritten
120564        --
120565        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
120566                                          p_header_num   => 1);
120567        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
120568 
120569        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
120570 
120571        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
120572           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
120573        END IF;
120574 
120575       --
120576       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
120577       --
120578       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
120579           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
120580       ELSE
120581           ---------------------------------------------------------------------------------------------------
120582           -- 4262811a Switch Sign
120583           ---------------------------------------------------------------------------------------------------
120584           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
120585           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
120586                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120587           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
120588                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120589           -- 5132302
120590           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
120591                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120592 
120593       END IF;
120594 
120595       -- 4955764
120596       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
120597       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
120598 
120599 
120600       XLA_AE_LINES_PKG.ValidateCurrentLine;
120601       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
120602 
120603       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
120604                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
120605                ,p_balance_type_code => l_balance_type_code);
120606 
120607    END IF;
120608 
120609    -----------------------------------------------------------------------------------------
120610    -- 4262811 Multiperiod Accounting
120611    -----------------------------------------------------------------------------------------
120612      -- No MPA option is assigned.
120613 
120614 
120615 END IF;
120616 END IF;
120617 --
120618 
120619 --
120620 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120621    trace
120622       (p_msg      => 'END of AcctLineType_218'
120623       ,p_level    => C_LEVEL_PROCEDURE
120624       ,p_module   => l_log_module);
120625 END IF;
120626 --
120627 EXCEPTION
120628   WHEN xla_exceptions_pkg.application_exception THEN
120629       RAISE;
120630   WHEN OTHERS THEN
120631        xla_exceptions_pkg.raise_message
120632            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_218');
120633 END AcctLineType_218;
120634 --
120635 
120636 ---------------------------------------
120637 --
120638 -- PRIVATE FUNCTION
120639 --         AcctLineType_219
120640 --
120641 ---------------------------------------
120642 PROCEDURE AcctLineType_219 (
120643   p_application_id        IN NUMBER
120644  ,p_event_id              IN NUMBER
120645  ,p_calculate_acctd_flag  IN VARCHAR2
120646  ,p_calculate_g_l_flag    IN VARCHAR2
120647  ,p_actual_flag           IN OUT VARCHAR2
120648  ,p_balance_type_code     OUT VARCHAR2
120649  ,p_gain_or_loss_ref      OUT VARCHAR2
120650  
120651 --Cost Management Default Account
120652  , p_source_4            IN NUMBER
120653 --DISTRIBUTION_IDENTIFIER
120654  , p_source_11            IN NUMBER
120655 --Distribution Type
120656  , p_source_12            IN VARCHAR2
120657  , p_source_12_meaning    IN VARCHAR2
120658 --Entered Currency Code
120659  , p_source_15            IN VARCHAR2
120660 --Entered Amount
120661  , p_source_18            IN NUMBER
120662 --Currency Conversion Date
120663  , p_source_19            IN DATE
120664 --Currency Conversion Rate
120665  , p_source_20            IN NUMBER
120666 --Currency Conversion Type
120667  , p_source_21            IN VARCHAR2
120668 --Accounted Amount
120669  , p_source_22            IN NUMBER
120670 --Accounting Line Type
120671  , p_source_24            IN NUMBER
120672 )
120673 IS
120674 
120675 l_component_type              VARCHAR2(80);
120676 l_component_code              VARCHAR2(30);
120677 l_component_type_code         VARCHAR2(1);
120678 l_component_appl_id           INTEGER;
120679 l_amb_context_code            VARCHAR2(30);
120680 l_entity_code                 VARCHAR2(30);
120681 l_event_class_code            VARCHAR2(30);
120682 l_ae_header_id                NUMBER;
120683 l_event_type_code             VARCHAR2(30);
120684 l_line_definition_code        VARCHAR2(30);
120685 l_line_definition_owner_code  VARCHAR2(1);
120686 --
120687 -- adr variables
120688 l_segment                     VARCHAR2(30);
120689 l_ccid                        NUMBER;
120690 l_adr_transaction_coa_id      NUMBER;
120691 l_adr_accounting_coa_id       NUMBER;
120692 l_adr_flexfield_segment_code  VARCHAR2(30);
120693 l_adr_flex_value_set_id       NUMBER;
120694 l_adr_value_type_code         VARCHAR2(30);
120695 l_adr_value_combination_id    NUMBER;
120696 l_adr_value_segment_code      VARCHAR2(30);
120697 
120698 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
120699 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
120700 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
120701 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
120702 
120703 -- 4262811 Variables ------------------------------------------------------------------------------------------
120704 l_entered_amt_idx             NUMBER;
120705 l_accted_amt_idx              NUMBER;
120706 l_acc_rev_flag                VARCHAR2(1);
120707 l_accrual_line_num            NUMBER;
120708 l_tmp_amt                     NUMBER;
120709 l_acc_rev_natural_side_code   VARCHAR2(1);
120710 
120711 l_num_entries                 NUMBER;
120712 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
120713 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
120714 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
120715 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
120716 l_recog_line_1                NUMBER;
120717 l_recog_line_2                NUMBER;
120718 
120719 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
120720 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
120721 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
120722 
120723 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
120724 
120725 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
120726 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
120727 
120728 ---------------------------------------------------------------------------------------------------------------
120729 
120730 
120731 --
120732 -- bulk performance
120733 --
120734 l_balance_type_code           VARCHAR2(1);
120735 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
120736 l_log_module                  VARCHAR2(240);
120737 
120738 --
120739 -- Upgrade strategy
120740 --
120741 l_actual_upg_option           VARCHAR2(1);
120742 l_enc_upg_option           VARCHAR2(1);
120743 
120744 --
120745 BEGIN
120746 --
120747 IF g_log_enabled THEN
120748       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_219';
120749 END IF;
120750 --
120751 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120752 
120753       trace
120754          (p_msg      => 'BEGIN of AcctLineType_219'
120755          ,p_level    => C_LEVEL_PROCEDURE
120756          ,p_module   => l_log_module);
120757 
120758 END IF;
120759 --
120760 l_component_type             := 'AMB_JLT';
120761 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
120762 l_component_type_code        := 'S';
120763 l_component_appl_id          :=  707;
120764 l_amb_context_code           := 'DEFAULT';
120765 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
120766 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
120767 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
120768 l_line_definition_owner_code := 'S';
120769 l_line_definition_code       := 'FOB_SHIP_RECIPIENT_SHIP';
120770 --
120771 l_balance_type_code          := 'A';
120772 l_segment                     := NULL;
120773 l_ccid                        := NULL;
120774 l_adr_transaction_coa_id      := NULL;
120775 l_adr_accounting_coa_id       := NULL;
120776 l_adr_flexfield_segment_code  := NULL;
120777 l_adr_flex_value_set_id       := NULL;
120778 l_adr_value_type_code         := NULL;
120779 l_adr_value_combination_id    := NULL;
120780 l_adr_value_segment_code      := NULL;
120781 
120782 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
120783 l_bflow_class_code           := '';    -- 4219869 Business Flow
120784 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
120785 l_budgetary_control_flag     := 'N';
120786 
120787 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
120788 l_bflow_applied_to_amt       := NULL; -- 5132302
120789 l_entered_amt_idx            := NULL;          -- 4262811
120790 l_accted_amt_idx             := NULL;          -- 4262811
120791 l_acc_rev_flag               := NULL;          -- 4262811
120792 l_accrual_line_num           := NULL;          -- 4262811
120793 l_tmp_amt                    := NULL;          -- 4262811
120794 --
120795  
120796 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
120797     l_balance_type_code <> 'B' THEN
120798 IF NVL(p_source_24,9E125) =  6
120799  THEN 
120800 
120801    --
120802    XLA_AE_LINES_PKG.SetNewLine;
120803 
120804    p_balance_type_code          := l_balance_type_code;
120805    -- set the flag so later we will know whether the gain loss line needs to be created
120806    
120807    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
120808      p_actual_flag :='A';
120809    END IF;
120810 
120811    --
120812    -- bulk performance
120813    --
120814    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
120815                                       p_header_num   => 0); -- 4262811
120816    --
120817    -- set accounting line options
120818    --
120819    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
120820            p_natural_side_code          => 'D'
120821          , p_gain_or_loss_flag          => 'N'
120822          , p_gl_transfer_mode_code      => 'S'
120823          , p_acct_entry_type_code       => 'A'
120824          , p_switch_side_flag           => 'Y'
120825          , p_merge_duplicate_code       => 'N'
120826          );
120827    --
120828    l_acc_rev_natural_side_code := 'C';  -- 4262811
120829    -- 
120830    --
120831    -- set accounting line type info
120832    --
120833    xla_ae_lines_pkg.SetAcctLineType
120834       (p_component_type             => l_component_type
120835       ,p_event_type_code            => l_event_type_code
120836       ,p_line_definition_owner_code => l_line_definition_owner_code
120837       ,p_line_definition_code       => l_line_definition_code
120838       ,p_accounting_line_code       => l_component_code
120839       ,p_accounting_line_type_code  => l_component_type_code
120840       ,p_accounting_line_appl_id    => l_component_appl_id
120841       ,p_amb_context_code           => l_amb_context_code
120842       ,p_entity_code                => l_entity_code
120843       ,p_event_class_code           => l_event_class_code);
120844    --
120845    -- set accounting class
120846    --
120847    xla_ae_lines_pkg.SetAcctClass(
120848            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
120849          , p_ae_header_id           => l_ae_header_id
120850          );
120851 
120852    --
120853    -- set rounding class
120854    --
120855    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
120856                       'PURCHASE_PRICE_VARIANCE';
120857 
120858    --
120859    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
120860    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
120861    --
120862    -- bulk performance
120863    --
120864    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
120865 
120866    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
120867       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
120868 
120869    -- 4955764
120870    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
120871       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
120872 
120873    -- 4458381 Public Sector Enh
120874    
120875    --
120876    -- set accounting attributes for the line type
120877    --
120878    l_entered_amt_idx := 3;
120879    l_accted_amt_idx  := 8;
120880    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
120881    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
120882    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
120883    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
120884    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
120885    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
120886    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
120887    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
120888    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
120889    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
120890    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
120891    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
120892    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
120893    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
120894    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
120895    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
120896    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
120897 
120898    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
120899    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
120900 
120901    ---------------------------------------------------------------------------------------------------------------
120902    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
120903    ---------------------------------------------------------------------------------------------------------------
120904    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
120905 
120906    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120907    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120908 
120909    IF xla_accounting_cache_pkg.GetValueChar
120910          (p_source_code         => 'LEDGER_CATEGORY_CODE'
120911          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
120912    AND l_bflow_method_code = 'PRIOR_ENTRY'
120913 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
120914    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
120915          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
120916        )
120917    THEN
120918          xla_ae_lines_pkg.BflowUpgEntry
120919            (p_business_method_code    => l_bflow_method_code
120920            ,p_business_class_code     => l_bflow_class_code
120921            ,p_balance_type            => l_balance_type_code);
120922    ELSE
120923       NULL;
120924 -- No business flow processing for business flow method of NONE.
120925    END IF;
120926 
120927    --
120928    -- call analytical criteria
120929    --
120930    
120931    --
120932    -- call description
120933    --
120934    -- No description or it is inherited.
120935    --
120936    -- call ADRs
120937    -- Bug 4922099
120938    --
120939    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
120940         (NVL(l_actual_upg_option, 'N') = 'O') OR
120941         (NVL(l_enc_upg_option, 'N') = 'O')
120942       )
120943    THEN
120944    NULL;
120945    --
120946    --
120947    
120948   l_ccid := AcctDerRule_4(
120949            p_application_id           => p_application_id
120950          , p_ae_header_id             => l_ae_header_id 
120951 , p_source_4 => p_source_4
120952          , x_transaction_coa_id       => l_adr_transaction_coa_id
120953          , x_accounting_coa_id        => l_adr_accounting_coa_id
120954          , x_value_type_code          => l_adr_value_type_code
120955          , p_side                     => 'NA'
120956    );
120957 
120958    xla_ae_lines_pkg.set_ccid(
120959     p_code_combination_id          => l_ccid
120960   , p_value_type_code              => l_adr_value_type_code
120961   , p_transaction_coa_id           => l_adr_transaction_coa_id
120962   , p_accounting_coa_id            => l_adr_accounting_coa_id
120963   , p_adr_code                     => 'CST_DEFAULT'
120964   , p_adr_type_code                => 'S'
120965   , p_component_type               => l_component_type
120966   , p_component_code               => l_component_code
120967   , p_component_type_code          => l_component_type_code
120968   , p_component_appl_id            => l_component_appl_id
120969   , p_amb_context_code             => l_amb_context_code
120970   , p_side                         => 'NA'
120971   );
120972 
120973 
120974    --
120975    --
120976    END IF;
120977    --
120978    -- Bug 4922099
120979    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
120980           (NVL(l_enc_upg_option, 'N') = 'O')
120981         ) AND
120982         (l_bflow_method_code = 'PRIOR_ENTRY')
120983       )
120984    THEN
120985       IF
120986       --
120987       1 = 2
120988       --
120989       THEN
120990       xla_accounting_err_pkg.build_message
120991                                     (p_appli_s_name            => 'XLA'
120992                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120993                                     ,p_token_1                 => 'LINE_NUMBER'
120994                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
120995                                     ,p_token_2                 => 'LINE_TYPE_NAME'
120996                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
120997                                                                              l_component_type
120998                                                                             ,l_component_code
120999                                                                             ,l_component_type_code
121000                                                                             ,l_component_appl_id
121001                                                                             ,l_amb_context_code
121002                                                                             ,l_entity_code
121003                                                                             ,l_event_class_code
121004                                                                            )
121005                                     ,p_token_3                 => 'OWNER'
121006                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
121007                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
121008                                                                           ,p_lookup_code    => l_component_type_code
121009                                                                          )
121010                                     ,p_token_4                 => 'PRODUCT_NAME'
121011                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
121012                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
121013                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
121014                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
121015                                     ,p_ae_header_id            =>  NULL
121016                                        );
121017 
121018         IF (C_LEVEL_ERROR>= g_log_level) THEN
121019                  trace
121020                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
121021                       ,p_level    => C_LEVEL_ERROR
121022                       ,p_module   => l_log_module);
121023         END IF;
121024       END IF;
121025    END IF;
121026    --
121027    --
121028    ------------------------------------------------------------------------------------------------
121029    -- 4219869 Business Flow
121030    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
121031    -- Prior Entry.  Currently, the following code is always generated.
121032    ------------------------------------------------------------------------------------------------
121033    XLA_AE_LINES_PKG.ValidateCurrentLine;
121034 
121035    ------------------------------------------------------------------------------------
121036    -- 4219869 Business Flow
121037    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
121038    ------------------------------------------------------------------------------------
121039    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
121040 
121041    ----------------------------------------------------------------------------------
121042    -- 4219869 Business Flow
121043    -- Update journal entry status -- Need to generate this within IF <condition>
121044    ----------------------------------------------------------------------------------
121045    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
121046          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
121047          ,p_balance_type_code => l_balance_type_code
121048          );
121049 
121050    -------------------------------------------------------------------------------------------
121051    -- 4262811 - Generate the Accrual Reversal lines
121052    -------------------------------------------------------------------------------------------
121053    BEGIN
121054       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
121055                               (g_array_event(p_event_id).array_value_num('header_index'));
121056       IF l_acc_rev_flag IS NULL THEN
121057          l_acc_rev_flag := 'N';
121058       END IF;
121059    EXCEPTION
121060       WHEN OTHERS THEN
121061          l_acc_rev_flag := 'N';
121062    END;
121063    --
121064    IF (l_acc_rev_flag = 'Y') THEN
121065 
121066        -- 4645092  ------------------------------------------------------------------------------
121067        -- To allow MPA report to determine if it should generate report process
121068        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
121069        ------------------------------------------------------------------------------------------
121070 
121071        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
121072        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
121073    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
121074    -- call ADRs
121075    -- Bug 4922099
121076    --
121077    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
121078         (NVL(l_actual_upg_option, 'N') = 'O') OR
121079         (NVL(l_enc_upg_option, 'N') = 'O')
121080       )
121081    THEN
121082    NULL;
121083    --
121084    --
121085    
121086   l_ccid := AcctDerRule_4(
121087            p_application_id           => p_application_id
121088          , p_ae_header_id             => l_ae_header_id 
121089 , p_source_4 => p_source_4
121090          , x_transaction_coa_id       => l_adr_transaction_coa_id
121091          , x_accounting_coa_id        => l_adr_accounting_coa_id
121092          , x_value_type_code          => l_adr_value_type_code
121093          , p_side                     => 'NA'
121094    );
121095 
121096    xla_ae_lines_pkg.set_ccid(
121097     p_code_combination_id          => l_ccid
121098   , p_value_type_code              => l_adr_value_type_code
121099   , p_transaction_coa_id           => l_adr_transaction_coa_id
121100   , p_accounting_coa_id            => l_adr_accounting_coa_id
121101   , p_adr_code                     => 'CST_DEFAULT'
121102   , p_adr_type_code                => 'S'
121103   , p_component_type               => l_component_type
121104   , p_component_code               => l_component_code
121105   , p_component_type_code          => l_component_type_code
121106   , p_component_appl_id            => l_component_appl_id
121107   , p_amb_context_code             => l_amb_context_code
121108   , p_side                         => 'NA'
121109   );
121110 
121111 
121112    --
121113    --
121114    END IF;
121115 
121116        --
121117        -- Update the line information that should be overwritten
121118        --
121119        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
121120                                          p_header_num   => 1);
121121        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
121122 
121123        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
121124 
121125        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
121126           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
121127        END IF;
121128 
121129       --
121130       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
121131       --
121132       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
121133           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
121134       ELSE
121135           ---------------------------------------------------------------------------------------------------
121136           -- 4262811a Switch Sign
121137           ---------------------------------------------------------------------------------------------------
121138           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
121139           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121140                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121141           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121142                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121143           -- 5132302
121144           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
121145                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121146 
121147       END IF;
121148 
121149       -- 4955764
121150       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121151       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
121152 
121153 
121154       XLA_AE_LINES_PKG.ValidateCurrentLine;
121155       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
121156 
121157       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
121158                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
121159                ,p_balance_type_code => l_balance_type_code);
121160 
121161    END IF;
121162 
121163    -----------------------------------------------------------------------------------------
121164    -- 4262811 Multiperiod Accounting
121165    -----------------------------------------------------------------------------------------
121166      -- No MPA option is assigned.
121167 
121168 
121169 END IF;
121170 END IF;
121171 --
121172 
121173 --
121174 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121175    trace
121176       (p_msg      => 'END of AcctLineType_219'
121177       ,p_level    => C_LEVEL_PROCEDURE
121178       ,p_module   => l_log_module);
121179 END IF;
121180 --
121181 EXCEPTION
121182   WHEN xla_exceptions_pkg.application_exception THEN
121183       RAISE;
121184   WHEN OTHERS THEN
121185        xla_exceptions_pkg.raise_message
121186            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_219');
121187 END AcctLineType_219;
121188 --
121189 
121190 ---------------------------------------
121191 --
121192 -- PRIVATE FUNCTION
121193 --         AcctLineType_220
121194 --
121195 ---------------------------------------
121196 PROCEDURE AcctLineType_220 (
121197   p_application_id        IN NUMBER
121198  ,p_event_id              IN NUMBER
121199  ,p_calculate_acctd_flag  IN VARCHAR2
121200  ,p_calculate_g_l_flag    IN VARCHAR2
121201  ,p_actual_flag           IN OUT VARCHAR2
121202  ,p_balance_type_code     OUT VARCHAR2
121203  ,p_gain_or_loss_ref      OUT VARCHAR2
121204  
121205 --Cost Management Default Account
121206  , p_source_4            IN NUMBER
121207 --DISTRIBUTION_IDENTIFIER
121208  , p_source_11            IN NUMBER
121209 --Distribution Type
121210  , p_source_12            IN VARCHAR2
121211  , p_source_12_meaning    IN VARCHAR2
121212 --Entered Currency Code
121213  , p_source_15            IN VARCHAR2
121214 --Entered Amount
121215  , p_source_18            IN NUMBER
121216 --Currency Conversion Date
121217  , p_source_19            IN DATE
121218 --Currency Conversion Rate
121219  , p_source_20            IN NUMBER
121220 --Currency Conversion Type
121221  , p_source_21            IN VARCHAR2
121222 --Accounted Amount
121223  , p_source_22            IN NUMBER
121224 --Accounting Line Type
121225  , p_source_24            IN NUMBER
121226 )
121227 IS
121228 
121229 l_component_type              VARCHAR2(80);
121230 l_component_code              VARCHAR2(30);
121231 l_component_type_code         VARCHAR2(1);
121232 l_component_appl_id           INTEGER;
121233 l_amb_context_code            VARCHAR2(30);
121234 l_entity_code                 VARCHAR2(30);
121235 l_event_class_code            VARCHAR2(30);
121236 l_ae_header_id                NUMBER;
121237 l_event_type_code             VARCHAR2(30);
121238 l_line_definition_code        VARCHAR2(30);
121239 l_line_definition_owner_code  VARCHAR2(1);
121240 --
121241 -- adr variables
121242 l_segment                     VARCHAR2(30);
121243 l_ccid                        NUMBER;
121244 l_adr_transaction_coa_id      NUMBER;
121245 l_adr_accounting_coa_id       NUMBER;
121246 l_adr_flexfield_segment_code  VARCHAR2(30);
121247 l_adr_flex_value_set_id       NUMBER;
121248 l_adr_value_type_code         VARCHAR2(30);
121249 l_adr_value_combination_id    NUMBER;
121250 l_adr_value_segment_code      VARCHAR2(30);
121251 
121252 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
121253 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
121254 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
121255 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
121256 
121257 -- 4262811 Variables ------------------------------------------------------------------------------------------
121258 l_entered_amt_idx             NUMBER;
121259 l_accted_amt_idx              NUMBER;
121260 l_acc_rev_flag                VARCHAR2(1);
121261 l_accrual_line_num            NUMBER;
121262 l_tmp_amt                     NUMBER;
121263 l_acc_rev_natural_side_code   VARCHAR2(1);
121264 
121265 l_num_entries                 NUMBER;
121266 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
121267 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
121268 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
121269 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
121270 l_recog_line_1                NUMBER;
121271 l_recog_line_2                NUMBER;
121272 
121273 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
121274 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
121275 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
121276 
121277 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
121278 
121279 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
121280 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
121281 
121282 ---------------------------------------------------------------------------------------------------------------
121283 
121284 
121285 --
121286 -- bulk performance
121287 --
121288 l_balance_type_code           VARCHAR2(1);
121289 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
121290 l_log_module                  VARCHAR2(240);
121291 
121292 --
121293 -- Upgrade strategy
121294 --
121295 l_actual_upg_option           VARCHAR2(1);
121296 l_enc_upg_option           VARCHAR2(1);
121297 
121298 --
121299 BEGIN
121300 --
121301 IF g_log_enabled THEN
121302       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_220';
121303 END IF;
121304 --
121305 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121306 
121307       trace
121308          (p_msg      => 'BEGIN of AcctLineType_220'
121309          ,p_level    => C_LEVEL_PROCEDURE
121310          ,p_module   => l_log_module);
121311 
121312 END IF;
121313 --
121314 l_component_type             := 'AMB_JLT';
121315 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
121316 l_component_type_code        := 'S';
121317 l_component_appl_id          :=  707;
121318 l_amb_context_code           := 'DEFAULT';
121319 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
121320 l_event_class_code           := 'USER_DEFINE';
121321 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
121322 l_line_definition_owner_code := 'S';
121323 l_line_definition_code       := 'USER_DIR_INTERORG_RCPT_NO_TP';
121324 --
121325 l_balance_type_code          := 'A';
121326 l_segment                     := NULL;
121327 l_ccid                        := NULL;
121328 l_adr_transaction_coa_id      := NULL;
121329 l_adr_accounting_coa_id       := NULL;
121330 l_adr_flexfield_segment_code  := NULL;
121331 l_adr_flex_value_set_id       := NULL;
121332 l_adr_value_type_code         := NULL;
121333 l_adr_value_combination_id    := NULL;
121334 l_adr_value_segment_code      := NULL;
121335 
121336 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
121337 l_bflow_class_code           := '';    -- 4219869 Business Flow
121338 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
121339 l_budgetary_control_flag     := 'N';
121340 
121341 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
121342 l_bflow_applied_to_amt       := NULL; -- 5132302
121343 l_entered_amt_idx            := NULL;          -- 4262811
121344 l_accted_amt_idx             := NULL;          -- 4262811
121345 l_acc_rev_flag               := NULL;          -- 4262811
121346 l_accrual_line_num           := NULL;          -- 4262811
121347 l_tmp_amt                    := NULL;          -- 4262811
121348 --
121349  
121350 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
121351     l_balance_type_code <> 'B' THEN
121352 IF NVL(p_source_24,9E125) =  6
121353  THEN 
121354 
121355    --
121356    XLA_AE_LINES_PKG.SetNewLine;
121357 
121358    p_balance_type_code          := l_balance_type_code;
121359    -- set the flag so later we will know whether the gain loss line needs to be created
121360    
121361    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
121362      p_actual_flag :='A';
121363    END IF;
121364 
121365    --
121366    -- bulk performance
121367    --
121368    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
121369                                       p_header_num   => 0); -- 4262811
121370    --
121371    -- set accounting line options
121372    --
121373    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
121374            p_natural_side_code          => 'D'
121375          , p_gain_or_loss_flag          => 'N'
121376          , p_gl_transfer_mode_code      => 'S'
121377          , p_acct_entry_type_code       => 'A'
121378          , p_switch_side_flag           => 'Y'
121379          , p_merge_duplicate_code       => 'N'
121380          );
121381    --
121382    l_acc_rev_natural_side_code := 'C';  -- 4262811
121383    -- 
121384    --
121385    -- set accounting line type info
121386    --
121387    xla_ae_lines_pkg.SetAcctLineType
121388       (p_component_type             => l_component_type
121389       ,p_event_type_code            => l_event_type_code
121390       ,p_line_definition_owner_code => l_line_definition_owner_code
121391       ,p_line_definition_code       => l_line_definition_code
121392       ,p_accounting_line_code       => l_component_code
121393       ,p_accounting_line_type_code  => l_component_type_code
121394       ,p_accounting_line_appl_id    => l_component_appl_id
121395       ,p_amb_context_code           => l_amb_context_code
121396       ,p_entity_code                => l_entity_code
121397       ,p_event_class_code           => l_event_class_code);
121398    --
121399    -- set accounting class
121400    --
121401    xla_ae_lines_pkg.SetAcctClass(
121402            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
121403          , p_ae_header_id           => l_ae_header_id
121404          );
121405 
121406    --
121407    -- set rounding class
121408    --
121409    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
121410                       'PURCHASE_PRICE_VARIANCE';
121411 
121412    --
121413    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
121414    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
121415    --
121416    -- bulk performance
121417    --
121418    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
121419 
121420    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
121421       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
121422 
121423    -- 4955764
121424    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121425       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
121426 
121427    -- 4458381 Public Sector Enh
121428    
121429    --
121430    -- set accounting attributes for the line type
121431    --
121432    l_entered_amt_idx := 3;
121433    l_accted_amt_idx  := 8;
121434    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
121435    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
121436    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
121437    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
121438    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
121439    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
121440    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
121441    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
121442    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
121443    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
121444    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
121445    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
121446    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
121447    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
121448    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
121449    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
121450    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
121451 
121452    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
121453    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
121454 
121455    ---------------------------------------------------------------------------------------------------------------
121456    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
121457    ---------------------------------------------------------------------------------------------------------------
121458    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
121459 
121460    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
121461    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
121462 
121463    IF xla_accounting_cache_pkg.GetValueChar
121464          (p_source_code         => 'LEDGER_CATEGORY_CODE'
121465          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
121466    AND l_bflow_method_code = 'PRIOR_ENTRY'
121467 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
121468    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
121469          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
121470        )
121471    THEN
121472          xla_ae_lines_pkg.BflowUpgEntry
121473            (p_business_method_code    => l_bflow_method_code
121474            ,p_business_class_code     => l_bflow_class_code
121475            ,p_balance_type            => l_balance_type_code);
121476    ELSE
121477       NULL;
121478 -- No business flow processing for business flow method of NONE.
121479    END IF;
121480 
121481    --
121482    -- call analytical criteria
121483    --
121484    
121485    --
121486    -- call description
121487    --
121488    -- No description or it is inherited.
121489    --
121490    -- call ADRs
121491    -- Bug 4922099
121492    --
121493    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
121494         (NVL(l_actual_upg_option, 'N') = 'O') OR
121495         (NVL(l_enc_upg_option, 'N') = 'O')
121496       )
121497    THEN
121498    NULL;
121499    --
121500    --
121501    
121502   l_ccid := AcctDerRule_4(
121503            p_application_id           => p_application_id
121504          , p_ae_header_id             => l_ae_header_id 
121505 , p_source_4 => p_source_4
121506          , x_transaction_coa_id       => l_adr_transaction_coa_id
121507          , x_accounting_coa_id        => l_adr_accounting_coa_id
121508          , x_value_type_code          => l_adr_value_type_code
121509          , p_side                     => 'NA'
121510    );
121511 
121512    xla_ae_lines_pkg.set_ccid(
121513     p_code_combination_id          => l_ccid
121514   , p_value_type_code              => l_adr_value_type_code
121515   , p_transaction_coa_id           => l_adr_transaction_coa_id
121516   , p_accounting_coa_id            => l_adr_accounting_coa_id
121517   , p_adr_code                     => 'CST_DEFAULT'
121518   , p_adr_type_code                => 'S'
121519   , p_component_type               => l_component_type
121520   , p_component_code               => l_component_code
121521   , p_component_type_code          => l_component_type_code
121522   , p_component_appl_id            => l_component_appl_id
121523   , p_amb_context_code             => l_amb_context_code
121524   , p_side                         => 'NA'
121525   );
121526 
121527 
121528    --
121529    --
121530    END IF;
121531    --
121532    -- Bug 4922099
121533    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
121534           (NVL(l_enc_upg_option, 'N') = 'O')
121535         ) AND
121536         (l_bflow_method_code = 'PRIOR_ENTRY')
121537       )
121538    THEN
121539       IF
121540       --
121541       1 = 2
121542       --
121543       THEN
121544       xla_accounting_err_pkg.build_message
121545                                     (p_appli_s_name            => 'XLA'
121546                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
121547                                     ,p_token_1                 => 'LINE_NUMBER'
121548                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
121549                                     ,p_token_2                 => 'LINE_TYPE_NAME'
121550                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
121551                                                                              l_component_type
121552                                                                             ,l_component_code
121553                                                                             ,l_component_type_code
121554                                                                             ,l_component_appl_id
121555                                                                             ,l_amb_context_code
121556                                                                             ,l_entity_code
121557                                                                             ,l_event_class_code
121558                                                                            )
121559                                     ,p_token_3                 => 'OWNER'
121560                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
121561                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
121562                                                                           ,p_lookup_code    => l_component_type_code
121563                                                                          )
121564                                     ,p_token_4                 => 'PRODUCT_NAME'
121565                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
121566                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
121567                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
121568                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
121569                                     ,p_ae_header_id            =>  NULL
121570                                        );
121571 
121572         IF (C_LEVEL_ERROR>= g_log_level) THEN
121573                  trace
121574                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
121575                       ,p_level    => C_LEVEL_ERROR
121576                       ,p_module   => l_log_module);
121577         END IF;
121578       END IF;
121579    END IF;
121580    --
121581    --
121582    ------------------------------------------------------------------------------------------------
121583    -- 4219869 Business Flow
121584    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
121585    -- Prior Entry.  Currently, the following code is always generated.
121586    ------------------------------------------------------------------------------------------------
121587    XLA_AE_LINES_PKG.ValidateCurrentLine;
121588 
121589    ------------------------------------------------------------------------------------
121590    -- 4219869 Business Flow
121591    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
121592    ------------------------------------------------------------------------------------
121593    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
121594 
121595    ----------------------------------------------------------------------------------
121596    -- 4219869 Business Flow
121597    -- Update journal entry status -- Need to generate this within IF <condition>
121598    ----------------------------------------------------------------------------------
121599    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
121600          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
121601          ,p_balance_type_code => l_balance_type_code
121602          );
121603 
121604    -------------------------------------------------------------------------------------------
121605    -- 4262811 - Generate the Accrual Reversal lines
121606    -------------------------------------------------------------------------------------------
121607    BEGIN
121608       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
121609                               (g_array_event(p_event_id).array_value_num('header_index'));
121610       IF l_acc_rev_flag IS NULL THEN
121611          l_acc_rev_flag := 'N';
121612       END IF;
121613    EXCEPTION
121614       WHEN OTHERS THEN
121615          l_acc_rev_flag := 'N';
121616    END;
121617    --
121618    IF (l_acc_rev_flag = 'Y') THEN
121619 
121620        -- 4645092  ------------------------------------------------------------------------------
121621        -- To allow MPA report to determine if it should generate report process
121622        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
121623        ------------------------------------------------------------------------------------------
121624 
121625        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
121626        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
121627    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
121628    -- call ADRs
121629    -- Bug 4922099
121630    --
121631    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
121632         (NVL(l_actual_upg_option, 'N') = 'O') OR
121633         (NVL(l_enc_upg_option, 'N') = 'O')
121634       )
121635    THEN
121636    NULL;
121637    --
121638    --
121639    
121640   l_ccid := AcctDerRule_4(
121641            p_application_id           => p_application_id
121642          , p_ae_header_id             => l_ae_header_id 
121643 , p_source_4 => p_source_4
121644          , x_transaction_coa_id       => l_adr_transaction_coa_id
121645          , x_accounting_coa_id        => l_adr_accounting_coa_id
121646          , x_value_type_code          => l_adr_value_type_code
121647          , p_side                     => 'NA'
121648    );
121649 
121650    xla_ae_lines_pkg.set_ccid(
121651     p_code_combination_id          => l_ccid
121652   , p_value_type_code              => l_adr_value_type_code
121653   , p_transaction_coa_id           => l_adr_transaction_coa_id
121654   , p_accounting_coa_id            => l_adr_accounting_coa_id
121655   , p_adr_code                     => 'CST_DEFAULT'
121656   , p_adr_type_code                => 'S'
121657   , p_component_type               => l_component_type
121658   , p_component_code               => l_component_code
121659   , p_component_type_code          => l_component_type_code
121660   , p_component_appl_id            => l_component_appl_id
121661   , p_amb_context_code             => l_amb_context_code
121662   , p_side                         => 'NA'
121663   );
121664 
121665 
121666    --
121667    --
121668    END IF;
121669 
121670        --
121671        -- Update the line information that should be overwritten
121672        --
121673        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
121674                                          p_header_num   => 1);
121675        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
121676 
121677        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
121678 
121679        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
121680           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
121681        END IF;
121682 
121683       --
121684       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
121685       --
121686       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
121687           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
121688       ELSE
121689           ---------------------------------------------------------------------------------------------------
121690           -- 4262811a Switch Sign
121691           ---------------------------------------------------------------------------------------------------
121692           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
121693           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121694                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121695           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121696                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121697           -- 5132302
121698           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
121699                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121700 
121701       END IF;
121702 
121703       -- 4955764
121704       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121705       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
121706 
121707 
121708       XLA_AE_LINES_PKG.ValidateCurrentLine;
121709       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
121710 
121711       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
121712                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
121713                ,p_balance_type_code => l_balance_type_code);
121714 
121715    END IF;
121716 
121717    -----------------------------------------------------------------------------------------
121718    -- 4262811 Multiperiod Accounting
121719    -----------------------------------------------------------------------------------------
121720      -- No MPA option is assigned.
121721 
121722 
121723 END IF;
121724 END IF;
121725 --
121726 
121727 --
121728 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121729    trace
121730       (p_msg      => 'END of AcctLineType_220'
121731       ,p_level    => C_LEVEL_PROCEDURE
121732       ,p_module   => l_log_module);
121733 END IF;
121734 --
121735 EXCEPTION
121736   WHEN xla_exceptions_pkg.application_exception THEN
121737       RAISE;
121738   WHEN OTHERS THEN
121739        xla_exceptions_pkg.raise_message
121740            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_220');
121741 END AcctLineType_220;
121742 --
121743 
121744 ---------------------------------------
121745 --
121746 -- PRIVATE FUNCTION
121747 --         AcctLineType_221
121748 --
121749 ---------------------------------------
121750 PROCEDURE AcctLineType_221 (
121751   p_application_id        IN NUMBER
121752  ,p_event_id              IN NUMBER
121753  ,p_calculate_acctd_flag  IN VARCHAR2
121754  ,p_calculate_g_l_flag    IN VARCHAR2
121755  ,p_actual_flag           IN OUT VARCHAR2
121756  ,p_balance_type_code     OUT VARCHAR2
121757  ,p_gain_or_loss_ref      OUT VARCHAR2
121758  
121759 --Cost Management Default Account
121760  , p_source_4            IN NUMBER
121761 --DISTRIBUTION_IDENTIFIER
121762  , p_source_11            IN NUMBER
121763 --Distribution Type
121764  , p_source_12            IN VARCHAR2
121765  , p_source_12_meaning    IN VARCHAR2
121766 --Entered Currency Code
121767  , p_source_15            IN VARCHAR2
121768 --Entered Amount
121769  , p_source_18            IN NUMBER
121770 --Currency Conversion Date
121771  , p_source_19            IN DATE
121772 --Currency Conversion Rate
121773  , p_source_20            IN NUMBER
121774 --Currency Conversion Type
121775  , p_source_21            IN VARCHAR2
121776 --Accounted Amount
121777  , p_source_22            IN NUMBER
121778 --Accounting Line Type
121779  , p_source_24            IN NUMBER
121780 )
121781 IS
121782 
121783 l_component_type              VARCHAR2(80);
121784 l_component_code              VARCHAR2(30);
121785 l_component_type_code         VARCHAR2(1);
121786 l_component_appl_id           INTEGER;
121787 l_amb_context_code            VARCHAR2(30);
121788 l_entity_code                 VARCHAR2(30);
121789 l_event_class_code            VARCHAR2(30);
121790 l_ae_header_id                NUMBER;
121791 l_event_type_code             VARCHAR2(30);
121792 l_line_definition_code        VARCHAR2(30);
121793 l_line_definition_owner_code  VARCHAR2(1);
121794 --
121795 -- adr variables
121796 l_segment                     VARCHAR2(30);
121797 l_ccid                        NUMBER;
121798 l_adr_transaction_coa_id      NUMBER;
121799 l_adr_accounting_coa_id       NUMBER;
121800 l_adr_flexfield_segment_code  VARCHAR2(30);
121801 l_adr_flex_value_set_id       NUMBER;
121802 l_adr_value_type_code         VARCHAR2(30);
121803 l_adr_value_combination_id    NUMBER;
121804 l_adr_value_segment_code      VARCHAR2(30);
121805 
121806 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
121807 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
121808 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
121809 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
121810 
121811 -- 4262811 Variables ------------------------------------------------------------------------------------------
121812 l_entered_amt_idx             NUMBER;
121813 l_accted_amt_idx              NUMBER;
121814 l_acc_rev_flag                VARCHAR2(1);
121815 l_accrual_line_num            NUMBER;
121816 l_tmp_amt                     NUMBER;
121817 l_acc_rev_natural_side_code   VARCHAR2(1);
121818 
121819 l_num_entries                 NUMBER;
121820 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
121821 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
121822 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
121823 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
121824 l_recog_line_1                NUMBER;
121825 l_recog_line_2                NUMBER;
121826 
121827 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
121828 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
121829 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
121830 
121831 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
121832 
121833 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
121834 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
121835 
121836 ---------------------------------------------------------------------------------------------------------------
121837 
121838 
121839 --
121840 -- bulk performance
121841 --
121842 l_balance_type_code           VARCHAR2(1);
121843 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
121844 l_log_module                  VARCHAR2(240);
121845 
121846 --
121847 -- Upgrade strategy
121848 --
121849 l_actual_upg_option           VARCHAR2(1);
121850 l_enc_upg_option           VARCHAR2(1);
121851 
121852 --
121853 BEGIN
121854 --
121855 IF g_log_enabled THEN
121856       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_221';
121857 END IF;
121858 --
121859 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121860 
121861       trace
121862          (p_msg      => 'BEGIN of AcctLineType_221'
121863          ,p_level    => C_LEVEL_PROCEDURE
121864          ,p_module   => l_log_module);
121865 
121866 END IF;
121867 --
121868 l_component_type             := 'AMB_JLT';
121869 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
121870 l_component_type_code        := 'S';
121871 l_component_appl_id          :=  707;
121872 l_amb_context_code           := 'DEFAULT';
121873 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
121874 l_event_class_code           := 'USER_DEFINE';
121875 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
121876 l_line_definition_owner_code := 'S';
121877 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_NO_TP';
121878 --
121879 l_balance_type_code          := 'A';
121880 l_segment                     := NULL;
121881 l_ccid                        := NULL;
121882 l_adr_transaction_coa_id      := NULL;
121883 l_adr_accounting_coa_id       := NULL;
121884 l_adr_flexfield_segment_code  := NULL;
121885 l_adr_flex_value_set_id       := NULL;
121886 l_adr_value_type_code         := NULL;
121887 l_adr_value_combination_id    := NULL;
121888 l_adr_value_segment_code      := NULL;
121889 
121890 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
121891 l_bflow_class_code           := '';    -- 4219869 Business Flow
121892 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
121893 l_budgetary_control_flag     := 'N';
121894 
121895 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
121896 l_bflow_applied_to_amt       := NULL; -- 5132302
121897 l_entered_amt_idx            := NULL;          -- 4262811
121898 l_accted_amt_idx             := NULL;          -- 4262811
121899 l_acc_rev_flag               := NULL;          -- 4262811
121900 l_accrual_line_num           := NULL;          -- 4262811
121901 l_tmp_amt                    := NULL;          -- 4262811
121902 --
121903  
121904 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
121905     l_balance_type_code <> 'B' THEN
121906 IF NVL(p_source_24,9E125) =  6
121907  THEN 
121908 
121909    --
121910    XLA_AE_LINES_PKG.SetNewLine;
121911 
121912    p_balance_type_code          := l_balance_type_code;
121913    -- set the flag so later we will know whether the gain loss line needs to be created
121914    
121915    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
121916      p_actual_flag :='A';
121917    END IF;
121918 
121919    --
121920    -- bulk performance
121921    --
121922    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
121923                                       p_header_num   => 0); -- 4262811
121924    --
121925    -- set accounting line options
121926    --
121927    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
121928            p_natural_side_code          => 'D'
121929          , p_gain_or_loss_flag          => 'N'
121930          , p_gl_transfer_mode_code      => 'S'
121931          , p_acct_entry_type_code       => 'A'
121932          , p_switch_side_flag           => 'Y'
121933          , p_merge_duplicate_code       => 'N'
121934          );
121935    --
121936    l_acc_rev_natural_side_code := 'C';  -- 4262811
121937    -- 
121938    --
121939    -- set accounting line type info
121940    --
121941    xla_ae_lines_pkg.SetAcctLineType
121942       (p_component_type             => l_component_type
121943       ,p_event_type_code            => l_event_type_code
121944       ,p_line_definition_owner_code => l_line_definition_owner_code
121945       ,p_line_definition_code       => l_line_definition_code
121946       ,p_accounting_line_code       => l_component_code
121947       ,p_accounting_line_type_code  => l_component_type_code
121948       ,p_accounting_line_appl_id    => l_component_appl_id
121949       ,p_amb_context_code           => l_amb_context_code
121950       ,p_entity_code                => l_entity_code
121951       ,p_event_class_code           => l_event_class_code);
121952    --
121953    -- set accounting class
121954    --
121955    xla_ae_lines_pkg.SetAcctClass(
121956            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
121957          , p_ae_header_id           => l_ae_header_id
121958          );
121959 
121960    --
121961    -- set rounding class
121962    --
121963    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
121964                       'PURCHASE_PRICE_VARIANCE';
121965 
121966    --
121967    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
121968    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
121969    --
121970    -- bulk performance
121971    --
121972    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
121973 
121974    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
121975       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
121976 
121977    -- 4955764
121978    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121979       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
121980 
121981    -- 4458381 Public Sector Enh
121982    
121983    --
121984    -- set accounting attributes for the line type
121985    --
121986    l_entered_amt_idx := 3;
121987    l_accted_amt_idx  := 8;
121988    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
121989    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
121990    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
121991    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
121992    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
121993    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
121994    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
121995    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
121996    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
121997    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
121998    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
121999    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
122000    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
122001    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
122002    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
122003    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
122004    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
122005 
122006    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
122007    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
122008 
122009    ---------------------------------------------------------------------------------------------------------------
122010    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
122011    ---------------------------------------------------------------------------------------------------------------
122012    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
122013 
122014    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
122015    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
122016 
122017    IF xla_accounting_cache_pkg.GetValueChar
122018          (p_source_code         => 'LEDGER_CATEGORY_CODE'
122019          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
122020    AND l_bflow_method_code = 'PRIOR_ENTRY'
122021 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
122022    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
122023          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
122024        )
122025    THEN
122026          xla_ae_lines_pkg.BflowUpgEntry
122027            (p_business_method_code    => l_bflow_method_code
122028            ,p_business_class_code     => l_bflow_class_code
122029            ,p_balance_type            => l_balance_type_code);
122030    ELSE
122031       NULL;
122032 -- No business flow processing for business flow method of NONE.
122033    END IF;
122034 
122035    --
122036    -- call analytical criteria
122037    --
122038    
122039    --
122040    -- call description
122041    --
122042    -- No description or it is inherited.
122043    --
122044    -- call ADRs
122045    -- Bug 4922099
122046    --
122047    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122048         (NVL(l_actual_upg_option, 'N') = 'O') OR
122049         (NVL(l_enc_upg_option, 'N') = 'O')
122050       )
122051    THEN
122052    NULL;
122053    --
122054    --
122055    
122056   l_ccid := AcctDerRule_4(
122057            p_application_id           => p_application_id
122058          , p_ae_header_id             => l_ae_header_id 
122059 , p_source_4 => p_source_4
122060          , x_transaction_coa_id       => l_adr_transaction_coa_id
122061          , x_accounting_coa_id        => l_adr_accounting_coa_id
122062          , x_value_type_code          => l_adr_value_type_code
122063          , p_side                     => 'NA'
122064    );
122065 
122066    xla_ae_lines_pkg.set_ccid(
122067     p_code_combination_id          => l_ccid
122068   , p_value_type_code              => l_adr_value_type_code
122069   , p_transaction_coa_id           => l_adr_transaction_coa_id
122070   , p_accounting_coa_id            => l_adr_accounting_coa_id
122071   , p_adr_code                     => 'CST_DEFAULT'
122072   , p_adr_type_code                => 'S'
122073   , p_component_type               => l_component_type
122074   , p_component_code               => l_component_code
122075   , p_component_type_code          => l_component_type_code
122076   , p_component_appl_id            => l_component_appl_id
122077   , p_amb_context_code             => l_amb_context_code
122078   , p_side                         => 'NA'
122079   );
122080 
122081 
122082    --
122083    --
122084    END IF;
122085    --
122086    -- Bug 4922099
122087    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
122088           (NVL(l_enc_upg_option, 'N') = 'O')
122089         ) AND
122090         (l_bflow_method_code = 'PRIOR_ENTRY')
122091       )
122092    THEN
122093       IF
122094       --
122095       1 = 2
122096       --
122097       THEN
122098       xla_accounting_err_pkg.build_message
122099                                     (p_appli_s_name            => 'XLA'
122100                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122101                                     ,p_token_1                 => 'LINE_NUMBER'
122102                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
122103                                     ,p_token_2                 => 'LINE_TYPE_NAME'
122104                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
122105                                                                              l_component_type
122106                                                                             ,l_component_code
122107                                                                             ,l_component_type_code
122108                                                                             ,l_component_appl_id
122109                                                                             ,l_amb_context_code
122110                                                                             ,l_entity_code
122111                                                                             ,l_event_class_code
122112                                                                            )
122113                                     ,p_token_3                 => 'OWNER'
122114                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
122115                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
122116                                                                           ,p_lookup_code    => l_component_type_code
122117                                                                          )
122118                                     ,p_token_4                 => 'PRODUCT_NAME'
122119                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
122120                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
122121                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
122122                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
122123                                     ,p_ae_header_id            =>  NULL
122124                                        );
122125 
122126         IF (C_LEVEL_ERROR>= g_log_level) THEN
122127                  trace
122128                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122129                       ,p_level    => C_LEVEL_ERROR
122130                       ,p_module   => l_log_module);
122131         END IF;
122132       END IF;
122133    END IF;
122134    --
122135    --
122136    ------------------------------------------------------------------------------------------------
122137    -- 4219869 Business Flow
122138    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
122139    -- Prior Entry.  Currently, the following code is always generated.
122140    ------------------------------------------------------------------------------------------------
122141    XLA_AE_LINES_PKG.ValidateCurrentLine;
122142 
122143    ------------------------------------------------------------------------------------
122144    -- 4219869 Business Flow
122145    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
122146    ------------------------------------------------------------------------------------
122147    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122148 
122149    ----------------------------------------------------------------------------------
122150    -- 4219869 Business Flow
122151    -- Update journal entry status -- Need to generate this within IF <condition>
122152    ----------------------------------------------------------------------------------
122153    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122154          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
122155          ,p_balance_type_code => l_balance_type_code
122156          );
122157 
122158    -------------------------------------------------------------------------------------------
122159    -- 4262811 - Generate the Accrual Reversal lines
122160    -------------------------------------------------------------------------------------------
122161    BEGIN
122162       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
122163                               (g_array_event(p_event_id).array_value_num('header_index'));
122164       IF l_acc_rev_flag IS NULL THEN
122165          l_acc_rev_flag := 'N';
122166       END IF;
122167    EXCEPTION
122168       WHEN OTHERS THEN
122169          l_acc_rev_flag := 'N';
122170    END;
122171    --
122172    IF (l_acc_rev_flag = 'Y') THEN
122173 
122174        -- 4645092  ------------------------------------------------------------------------------
122175        -- To allow MPA report to determine if it should generate report process
122176        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
122177        ------------------------------------------------------------------------------------------
122178 
122179        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
122180        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
122181    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
122182    -- call ADRs
122183    -- Bug 4922099
122184    --
122185    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122186         (NVL(l_actual_upg_option, 'N') = 'O') OR
122187         (NVL(l_enc_upg_option, 'N') = 'O')
122188       )
122189    THEN
122190    NULL;
122191    --
122192    --
122193    
122194   l_ccid := AcctDerRule_4(
122195            p_application_id           => p_application_id
122196          , p_ae_header_id             => l_ae_header_id 
122197 , p_source_4 => p_source_4
122198          , x_transaction_coa_id       => l_adr_transaction_coa_id
122199          , x_accounting_coa_id        => l_adr_accounting_coa_id
122200          , x_value_type_code          => l_adr_value_type_code
122201          , p_side                     => 'NA'
122202    );
122203 
122204    xla_ae_lines_pkg.set_ccid(
122205     p_code_combination_id          => l_ccid
122206   , p_value_type_code              => l_adr_value_type_code
122207   , p_transaction_coa_id           => l_adr_transaction_coa_id
122208   , p_accounting_coa_id            => l_adr_accounting_coa_id
122209   , p_adr_code                     => 'CST_DEFAULT'
122210   , p_adr_type_code                => 'S'
122211   , p_component_type               => l_component_type
122212   , p_component_code               => l_component_code
122213   , p_component_type_code          => l_component_type_code
122214   , p_component_appl_id            => l_component_appl_id
122215   , p_amb_context_code             => l_amb_context_code
122216   , p_side                         => 'NA'
122217   );
122218 
122219 
122220    --
122221    --
122222    END IF;
122223 
122224        --
122225        -- Update the line information that should be overwritten
122226        --
122227        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
122228                                          p_header_num   => 1);
122229        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
122230 
122231        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
122232 
122233        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
122234           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
122235        END IF;
122236 
122237       --
122238       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
122239       --
122240       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
122241           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
122242       ELSE
122243           ---------------------------------------------------------------------------------------------------
122244           -- 4262811a Switch Sign
122245           ---------------------------------------------------------------------------------------------------
122246           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
122247           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122248                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122249           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122250                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122251           -- 5132302
122252           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
122253                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122254 
122255       END IF;
122256 
122257       -- 4955764
122258       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
122259       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
122260 
122261 
122262       XLA_AE_LINES_PKG.ValidateCurrentLine;
122263       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122264 
122265       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122266                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
122267                ,p_balance_type_code => l_balance_type_code);
122268 
122269    END IF;
122270 
122271    -----------------------------------------------------------------------------------------
122272    -- 4262811 Multiperiod Accounting
122273    -----------------------------------------------------------------------------------------
122274      -- No MPA option is assigned.
122275 
122276 
122277 END IF;
122278 END IF;
122279 --
122280 
122281 --
122282 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122283    trace
122284       (p_msg      => 'END of AcctLineType_221'
122285       ,p_level    => C_LEVEL_PROCEDURE
122286       ,p_module   => l_log_module);
122287 END IF;
122288 --
122289 EXCEPTION
122290   WHEN xla_exceptions_pkg.application_exception THEN
122291       RAISE;
122292   WHEN OTHERS THEN
122293        xla_exceptions_pkg.raise_message
122294            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_221');
122295 END AcctLineType_221;
122296 --
122297 
122298 ---------------------------------------
122299 --
122300 -- PRIVATE FUNCTION
122301 --         AcctLineType_222
122302 --
122303 ---------------------------------------
122304 PROCEDURE AcctLineType_222 (
122305   p_application_id        IN NUMBER
122306  ,p_event_id              IN NUMBER
122307  ,p_calculate_acctd_flag  IN VARCHAR2
122308  ,p_calculate_g_l_flag    IN VARCHAR2
122309  ,p_actual_flag           IN OUT VARCHAR2
122310  ,p_balance_type_code     OUT VARCHAR2
122311  ,p_gain_or_loss_ref      OUT VARCHAR2
122312  
122313 --Cost Management Default Account
122314  , p_source_4            IN NUMBER
122315 --DISTRIBUTION_IDENTIFIER
122316  , p_source_11            IN NUMBER
122317 --Distribution Type
122318  , p_source_12            IN VARCHAR2
122319  , p_source_12_meaning    IN VARCHAR2
122320 --Entered Currency Code
122321  , p_source_15            IN VARCHAR2
122322 --Entered Amount
122323  , p_source_18            IN NUMBER
122324 --Currency Conversion Date
122325  , p_source_19            IN DATE
122326 --Currency Conversion Rate
122327  , p_source_20            IN NUMBER
122328 --Currency Conversion Type
122329  , p_source_21            IN VARCHAR2
122330 --Accounted Amount
122331  , p_source_22            IN NUMBER
122332 --Accounting Line Type
122333  , p_source_24            IN NUMBER
122334 )
122335 IS
122336 
122337 l_component_type              VARCHAR2(80);
122338 l_component_code              VARCHAR2(30);
122339 l_component_type_code         VARCHAR2(1);
122340 l_component_appl_id           INTEGER;
122341 l_amb_context_code            VARCHAR2(30);
122342 l_entity_code                 VARCHAR2(30);
122343 l_event_class_code            VARCHAR2(30);
122344 l_ae_header_id                NUMBER;
122345 l_event_type_code             VARCHAR2(30);
122346 l_line_definition_code        VARCHAR2(30);
122347 l_line_definition_owner_code  VARCHAR2(1);
122348 --
122349 -- adr variables
122350 l_segment                     VARCHAR2(30);
122351 l_ccid                        NUMBER;
122352 l_adr_transaction_coa_id      NUMBER;
122353 l_adr_accounting_coa_id       NUMBER;
122354 l_adr_flexfield_segment_code  VARCHAR2(30);
122355 l_adr_flex_value_set_id       NUMBER;
122356 l_adr_value_type_code         VARCHAR2(30);
122357 l_adr_value_combination_id    NUMBER;
122358 l_adr_value_segment_code      VARCHAR2(30);
122359 
122360 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
122361 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
122362 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
122363 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
122364 
122365 -- 4262811 Variables ------------------------------------------------------------------------------------------
122366 l_entered_amt_idx             NUMBER;
122367 l_accted_amt_idx              NUMBER;
122368 l_acc_rev_flag                VARCHAR2(1);
122369 l_accrual_line_num            NUMBER;
122370 l_tmp_amt                     NUMBER;
122371 l_acc_rev_natural_side_code   VARCHAR2(1);
122372 
122373 l_num_entries                 NUMBER;
122374 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
122375 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
122376 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
122377 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
122378 l_recog_line_1                NUMBER;
122379 l_recog_line_2                NUMBER;
122380 
122381 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
122382 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
122383 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
122384 
122385 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
122386 
122387 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
122388 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
122389 
122390 ---------------------------------------------------------------------------------------------------------------
122391 
122392 
122393 --
122394 -- bulk performance
122395 --
122396 l_balance_type_code           VARCHAR2(1);
122397 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
122398 l_log_module                  VARCHAR2(240);
122399 
122400 --
122401 -- Upgrade strategy
122402 --
122403 l_actual_upg_option           VARCHAR2(1);
122404 l_enc_upg_option           VARCHAR2(1);
122405 
122406 --
122407 BEGIN
122408 --
122409 IF g_log_enabled THEN
122410       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_222';
122411 END IF;
122412 --
122413 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122414 
122415       trace
122416          (p_msg      => 'BEGIN of AcctLineType_222'
122417          ,p_level    => C_LEVEL_PROCEDURE
122418          ,p_module   => l_log_module);
122419 
122420 END IF;
122421 --
122422 l_component_type             := 'AMB_JLT';
122423 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
122424 l_component_type_code        := 'S';
122425 l_component_appl_id          :=  707;
122426 l_amb_context_code           := 'DEFAULT';
122427 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
122428 l_event_class_code           := 'USER_DEFINE';
122429 l_event_type_code            := 'UDIR_INTERORG_SHIP';
122430 l_line_definition_owner_code := 'S';
122431 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP';
122432 --
122433 l_balance_type_code          := 'A';
122434 l_segment                     := NULL;
122435 l_ccid                        := NULL;
122436 l_adr_transaction_coa_id      := NULL;
122437 l_adr_accounting_coa_id       := NULL;
122438 l_adr_flexfield_segment_code  := NULL;
122439 l_adr_flex_value_set_id       := NULL;
122440 l_adr_value_type_code         := NULL;
122441 l_adr_value_combination_id    := NULL;
122442 l_adr_value_segment_code      := NULL;
122443 
122444 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
122445 l_bflow_class_code           := '';    -- 4219869 Business Flow
122446 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
122447 l_budgetary_control_flag     := 'N';
122448 
122449 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
122450 l_bflow_applied_to_amt       := NULL; -- 5132302
122451 l_entered_amt_idx            := NULL;          -- 4262811
122452 l_accted_amt_idx             := NULL;          -- 4262811
122453 l_acc_rev_flag               := NULL;          -- 4262811
122454 l_accrual_line_num           := NULL;          -- 4262811
122455 l_tmp_amt                    := NULL;          -- 4262811
122456 --
122457  
122458 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
122459     l_balance_type_code <> 'B' THEN
122460 IF NVL(p_source_24,9E125) =  6
122461  THEN 
122462 
122463    --
122464    XLA_AE_LINES_PKG.SetNewLine;
122465 
122466    p_balance_type_code          := l_balance_type_code;
122467    -- set the flag so later we will know whether the gain loss line needs to be created
122468    
122469    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
122470      p_actual_flag :='A';
122471    END IF;
122472 
122473    --
122474    -- bulk performance
122475    --
122476    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
122477                                       p_header_num   => 0); -- 4262811
122478    --
122479    -- set accounting line options
122480    --
122481    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
122482            p_natural_side_code          => 'D'
122483          , p_gain_or_loss_flag          => 'N'
122484          , p_gl_transfer_mode_code      => 'S'
122485          , p_acct_entry_type_code       => 'A'
122486          , p_switch_side_flag           => 'Y'
122487          , p_merge_duplicate_code       => 'N'
122488          );
122489    --
122490    l_acc_rev_natural_side_code := 'C';  -- 4262811
122491    -- 
122492    --
122493    -- set accounting line type info
122494    --
122495    xla_ae_lines_pkg.SetAcctLineType
122496       (p_component_type             => l_component_type
122497       ,p_event_type_code            => l_event_type_code
122498       ,p_line_definition_owner_code => l_line_definition_owner_code
122499       ,p_line_definition_code       => l_line_definition_code
122500       ,p_accounting_line_code       => l_component_code
122501       ,p_accounting_line_type_code  => l_component_type_code
122502       ,p_accounting_line_appl_id    => l_component_appl_id
122503       ,p_amb_context_code           => l_amb_context_code
122504       ,p_entity_code                => l_entity_code
122505       ,p_event_class_code           => l_event_class_code);
122506    --
122507    -- set accounting class
122508    --
122509    xla_ae_lines_pkg.SetAcctClass(
122510            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
122511          , p_ae_header_id           => l_ae_header_id
122512          );
122513 
122514    --
122515    -- set rounding class
122516    --
122517    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
122518                       'PURCHASE_PRICE_VARIANCE';
122519 
122520    --
122521    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
122522    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
122523    --
122524    -- bulk performance
122525    --
122526    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
122527 
122528    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
122529       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
122530 
122531    -- 4955764
122532    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
122533       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
122534 
122535    -- 4458381 Public Sector Enh
122536    
122537    --
122538    -- set accounting attributes for the line type
122539    --
122540    l_entered_amt_idx := 3;
122541    l_accted_amt_idx  := 8;
122542    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
122543    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
122544    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
122545    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
122546    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
122547    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
122548    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
122549    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
122550    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
122551    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
122552    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
122553    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
122554    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
122555    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
122556    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
122557    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
122558    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
122559 
122560    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
122561    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
122562 
122563    ---------------------------------------------------------------------------------------------------------------
122564    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
122565    ---------------------------------------------------------------------------------------------------------------
122566    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
122567 
122568    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
122569    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
122570 
122571    IF xla_accounting_cache_pkg.GetValueChar
122572          (p_source_code         => 'LEDGER_CATEGORY_CODE'
122573          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
122574    AND l_bflow_method_code = 'PRIOR_ENTRY'
122575 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
122576    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
122577          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
122578        )
122579    THEN
122580          xla_ae_lines_pkg.BflowUpgEntry
122581            (p_business_method_code    => l_bflow_method_code
122582            ,p_business_class_code     => l_bflow_class_code
122583            ,p_balance_type            => l_balance_type_code);
122584    ELSE
122585       NULL;
122586 -- No business flow processing for business flow method of NONE.
122587    END IF;
122588 
122589    --
122590    -- call analytical criteria
122591    --
122592    
122593    --
122594    -- call description
122595    --
122596    -- No description or it is inherited.
122597    --
122598    -- call ADRs
122599    -- Bug 4922099
122600    --
122601    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122602         (NVL(l_actual_upg_option, 'N') = 'O') OR
122603         (NVL(l_enc_upg_option, 'N') = 'O')
122604       )
122605    THEN
122606    NULL;
122607    --
122608    --
122609    
122610   l_ccid := AcctDerRule_4(
122611            p_application_id           => p_application_id
122612          , p_ae_header_id             => l_ae_header_id 
122613 , p_source_4 => p_source_4
122614          , x_transaction_coa_id       => l_adr_transaction_coa_id
122615          , x_accounting_coa_id        => l_adr_accounting_coa_id
122616          , x_value_type_code          => l_adr_value_type_code
122617          , p_side                     => 'NA'
122618    );
122619 
122620    xla_ae_lines_pkg.set_ccid(
122621     p_code_combination_id          => l_ccid
122622   , p_value_type_code              => l_adr_value_type_code
122623   , p_transaction_coa_id           => l_adr_transaction_coa_id
122624   , p_accounting_coa_id            => l_adr_accounting_coa_id
122625   , p_adr_code                     => 'CST_DEFAULT'
122626   , p_adr_type_code                => 'S'
122627   , p_component_type               => l_component_type
122628   , p_component_code               => l_component_code
122629   , p_component_type_code          => l_component_type_code
122630   , p_component_appl_id            => l_component_appl_id
122631   , p_amb_context_code             => l_amb_context_code
122632   , p_side                         => 'NA'
122633   );
122634 
122635 
122636    --
122637    --
122638    END IF;
122639    --
122640    -- Bug 4922099
122641    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
122642           (NVL(l_enc_upg_option, 'N') = 'O')
122643         ) AND
122644         (l_bflow_method_code = 'PRIOR_ENTRY')
122645       )
122646    THEN
122647       IF
122648       --
122649       1 = 2
122650       --
122651       THEN
122652       xla_accounting_err_pkg.build_message
122653                                     (p_appli_s_name            => 'XLA'
122654                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122655                                     ,p_token_1                 => 'LINE_NUMBER'
122656                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
122657                                     ,p_token_2                 => 'LINE_TYPE_NAME'
122658                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
122659                                                                              l_component_type
122660                                                                             ,l_component_code
122661                                                                             ,l_component_type_code
122662                                                                             ,l_component_appl_id
122663                                                                             ,l_amb_context_code
122664                                                                             ,l_entity_code
122665                                                                             ,l_event_class_code
122666                                                                            )
122667                                     ,p_token_3                 => 'OWNER'
122668                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
122669                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
122670                                                                           ,p_lookup_code    => l_component_type_code
122671                                                                          )
122672                                     ,p_token_4                 => 'PRODUCT_NAME'
122673                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
122674                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
122675                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
122676                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
122677                                     ,p_ae_header_id            =>  NULL
122678                                        );
122679 
122680         IF (C_LEVEL_ERROR>= g_log_level) THEN
122681                  trace
122682                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122683                       ,p_level    => C_LEVEL_ERROR
122684                       ,p_module   => l_log_module);
122685         END IF;
122686       END IF;
122687    END IF;
122688    --
122689    --
122690    ------------------------------------------------------------------------------------------------
122691    -- 4219869 Business Flow
122692    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
122693    -- Prior Entry.  Currently, the following code is always generated.
122694    ------------------------------------------------------------------------------------------------
122695    XLA_AE_LINES_PKG.ValidateCurrentLine;
122696 
122697    ------------------------------------------------------------------------------------
122698    -- 4219869 Business Flow
122699    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
122700    ------------------------------------------------------------------------------------
122701    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122702 
122703    ----------------------------------------------------------------------------------
122704    -- 4219869 Business Flow
122705    -- Update journal entry status -- Need to generate this within IF <condition>
122706    ----------------------------------------------------------------------------------
122707    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122708          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
122709          ,p_balance_type_code => l_balance_type_code
122710          );
122711 
122712    -------------------------------------------------------------------------------------------
122713    -- 4262811 - Generate the Accrual Reversal lines
122714    -------------------------------------------------------------------------------------------
122715    BEGIN
122716       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
122717                               (g_array_event(p_event_id).array_value_num('header_index'));
122718       IF l_acc_rev_flag IS NULL THEN
122719          l_acc_rev_flag := 'N';
122720       END IF;
122721    EXCEPTION
122722       WHEN OTHERS THEN
122723          l_acc_rev_flag := 'N';
122724    END;
122725    --
122726    IF (l_acc_rev_flag = 'Y') THEN
122727 
122728        -- 4645092  ------------------------------------------------------------------------------
122729        -- To allow MPA report to determine if it should generate report process
122730        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
122731        ------------------------------------------------------------------------------------------
122732 
122733        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
122734        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
122735    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
122736    -- call ADRs
122737    -- Bug 4922099
122738    --
122739    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122740         (NVL(l_actual_upg_option, 'N') = 'O') OR
122741         (NVL(l_enc_upg_option, 'N') = 'O')
122742       )
122743    THEN
122744    NULL;
122745    --
122746    --
122747    
122748   l_ccid := AcctDerRule_4(
122749            p_application_id           => p_application_id
122750          , p_ae_header_id             => l_ae_header_id 
122751 , p_source_4 => p_source_4
122752          , x_transaction_coa_id       => l_adr_transaction_coa_id
122753          , x_accounting_coa_id        => l_adr_accounting_coa_id
122754          , x_value_type_code          => l_adr_value_type_code
122755          , p_side                     => 'NA'
122756    );
122757 
122758    xla_ae_lines_pkg.set_ccid(
122759     p_code_combination_id          => l_ccid
122760   , p_value_type_code              => l_adr_value_type_code
122761   , p_transaction_coa_id           => l_adr_transaction_coa_id
122762   , p_accounting_coa_id            => l_adr_accounting_coa_id
122763   , p_adr_code                     => 'CST_DEFAULT'
122764   , p_adr_type_code                => 'S'
122765   , p_component_type               => l_component_type
122766   , p_component_code               => l_component_code
122767   , p_component_type_code          => l_component_type_code
122768   , p_component_appl_id            => l_component_appl_id
122769   , p_amb_context_code             => l_amb_context_code
122770   , p_side                         => 'NA'
122771   );
122772 
122773 
122774    --
122775    --
122776    END IF;
122777 
122778        --
122779        -- Update the line information that should be overwritten
122780        --
122781        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
122782                                          p_header_num   => 1);
122783        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
122784 
122785        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
122786 
122787        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
122788           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
122789        END IF;
122790 
122791       --
122792       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
122793       --
122794       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
122795           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
122796       ELSE
122797           ---------------------------------------------------------------------------------------------------
122798           -- 4262811a Switch Sign
122799           ---------------------------------------------------------------------------------------------------
122800           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
122801           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122802                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122803           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122804                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122805           -- 5132302
122806           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
122807                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122808 
122809       END IF;
122810 
122811       -- 4955764
122812       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
122813       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
122814 
122815 
122816       XLA_AE_LINES_PKG.ValidateCurrentLine;
122817       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122818 
122819       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122820                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
122821                ,p_balance_type_code => l_balance_type_code);
122822 
122823    END IF;
122824 
122825    -----------------------------------------------------------------------------------------
122826    -- 4262811 Multiperiod Accounting
122827    -----------------------------------------------------------------------------------------
122828      -- No MPA option is assigned.
122829 
122830 
122831 END IF;
122832 END IF;
122833 --
122834 
122835 --
122836 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122837    trace
122838       (p_msg      => 'END of AcctLineType_222'
122839       ,p_level    => C_LEVEL_PROCEDURE
122840       ,p_module   => l_log_module);
122841 END IF;
122842 --
122843 EXCEPTION
122844   WHEN xla_exceptions_pkg.application_exception THEN
122845       RAISE;
122846   WHEN OTHERS THEN
122847        xla_exceptions_pkg.raise_message
122848            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_222');
122849 END AcctLineType_222;
122850 --
122851 
122852 ---------------------------------------
122853 --
122854 -- PRIVATE FUNCTION
122855 --         AcctLineType_223
122856 --
122857 ---------------------------------------
122858 PROCEDURE AcctLineType_223 (
122859   p_application_id        IN NUMBER
122860  ,p_event_id              IN NUMBER
122861  ,p_calculate_acctd_flag  IN VARCHAR2
122862  ,p_calculate_g_l_flag    IN VARCHAR2
122863  ,p_actual_flag           IN OUT VARCHAR2
122864  ,p_balance_type_code     OUT VARCHAR2
122865  ,p_gain_or_loss_ref      OUT VARCHAR2
122866  
122867 --Cost Management Default Account
122868  , p_source_4            IN NUMBER
122869 --Applied to Application ID
122870  , p_source_6            IN NUMBER
122871 --Applied to Distribution Link Type
122872  , p_source_7            IN VARCHAR2
122873 --Applied to Entity Code
122874  , p_source_8            IN VARCHAR2
122875 --DISTRIBUTION_IDENTIFIER
122876  , p_source_11            IN NUMBER
122877 --Distribution Type
122878  , p_source_12            IN VARCHAR2
122879  , p_source_12_meaning    IN VARCHAR2
122880 --Encumbrance Reversal Amount Entered
122881  , p_source_14            IN NUMBER
122882 --Entered Currency Code
122883  , p_source_15            IN VARCHAR2
122884 --Transaction Encumbrance Reversal Amount
122885  , p_source_16            IN NUMBER
122886 --Entered Amount
122887  , p_source_18            IN NUMBER
122888 --Currency Conversion Date
122889  , p_source_19            IN DATE
122890 --Currency Conversion Rate
122891  , p_source_20            IN NUMBER
122892 --Currency Conversion Type
122893  , p_source_21            IN VARCHAR2
122894 --Accounted Amount
122895  , p_source_22            IN NUMBER
122896 --Accounting Line Type
122897  , p_source_24            IN NUMBER
122898 --Costing Encumbrance Upgrade Option
122899  , p_source_27            IN VARCHAR2
122900 --TXN_PO_DISTRIBUTION_ID
122901  , p_source_28            IN NUMBER
122902 --TXN_PO_HEADER_ID
122903  , p_source_29            IN NUMBER
122904 --Requisition Budget Account
122905  , p_source_30            IN NUMBER
122906 --Requisition Encumbrance Type Identifier
122907  , p_source_31            IN NUMBER
122908 )
122909 IS
122910 
122911 l_component_type              VARCHAR2(80);
122912 l_component_code              VARCHAR2(30);
122913 l_component_type_code         VARCHAR2(1);
122914 l_component_appl_id           INTEGER;
122915 l_amb_context_code            VARCHAR2(30);
122916 l_entity_code                 VARCHAR2(30);
122917 l_event_class_code            VARCHAR2(30);
122918 l_ae_header_id                NUMBER;
122919 l_event_type_code             VARCHAR2(30);
122920 l_line_definition_code        VARCHAR2(30);
122921 l_line_definition_owner_code  VARCHAR2(1);
122922 --
122923 -- adr variables
122924 l_segment                     VARCHAR2(30);
122925 l_ccid                        NUMBER;
122926 l_adr_transaction_coa_id      NUMBER;
122927 l_adr_accounting_coa_id       NUMBER;
122928 l_adr_flexfield_segment_code  VARCHAR2(30);
122929 l_adr_flex_value_set_id       NUMBER;
122930 l_adr_value_type_code         VARCHAR2(30);
122931 l_adr_value_combination_id    NUMBER;
122932 l_adr_value_segment_code      VARCHAR2(30);
122933 
122934 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
122935 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
122936 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
122937 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
122938 
122939 -- 4262811 Variables ------------------------------------------------------------------------------------------
122940 l_entered_amt_idx             NUMBER;
122941 l_accted_amt_idx              NUMBER;
122942 l_acc_rev_flag                VARCHAR2(1);
122943 l_accrual_line_num            NUMBER;
122944 l_tmp_amt                     NUMBER;
122945 l_acc_rev_natural_side_code   VARCHAR2(1);
122946 
122947 l_num_entries                 NUMBER;
122948 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
122949 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
122950 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
122951 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
122952 l_recog_line_1                NUMBER;
122953 l_recog_line_2                NUMBER;
122954 
122955 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
122956 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
122957 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
122958 
122959 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
122960 
122961 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
122962 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
122963 
122964 ---------------------------------------------------------------------------------------------------------------
122965 
122966 
122967 --
122968 -- bulk performance
122969 --
122970 l_balance_type_code           VARCHAR2(1);
122971 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
122972 l_log_module                  VARCHAR2(240);
122973 
122974 --
122975 -- Upgrade strategy
122976 --
122977 l_actual_upg_option           VARCHAR2(1);
122978 l_enc_upg_option           VARCHAR2(1);
122979 
122980 --
122981 BEGIN
122982 --
122983 IF g_log_enabled THEN
122984       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_223';
122985 END IF;
122986 --
122987 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122988 
122989       trace
122990          (p_msg      => 'BEGIN of AcctLineType_223'
122991          ,p_level    => C_LEVEL_PROCEDURE
122992          ,p_module   => l_log_module);
122993 
122994 END IF;
122995 --
122996 l_component_type             := 'AMB_JLT';
122997 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
122998 l_component_type_code        := 'S';
122999 l_component_appl_id          :=  707;
123000 l_amb_context_code           := 'DEFAULT';
123001 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
123002 l_event_class_code           := 'DIR_INTERORG_RCPT';
123003 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
123004 l_line_definition_owner_code := 'S';
123005 l_line_definition_code       := 'DIRECT_INTERORG_RCPT';
123006 --
123007 l_balance_type_code          := 'A';
123008 l_segment                     := NULL;
123009 l_ccid                        := NULL;
123010 l_adr_transaction_coa_id      := NULL;
123011 l_adr_accounting_coa_id       := NULL;
123012 l_adr_flexfield_segment_code  := NULL;
123013 l_adr_flex_value_set_id       := NULL;
123014 l_adr_value_type_code         := NULL;
123015 l_adr_value_combination_id    := NULL;
123016 l_adr_value_segment_code      := NULL;
123017 
123018 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
123019 l_bflow_class_code           := '';    -- 4219869 Business Flow
123020 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
123021 l_budgetary_control_flag     := 'N';
123022 
123023 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
123024 l_bflow_applied_to_amt       := NULL; -- 5132302
123025 l_entered_amt_idx            := NULL;          -- 4262811
123026 l_accted_amt_idx             := NULL;          -- 4262811
123027 l_acc_rev_flag               := NULL;          -- 4262811
123028 l_accrual_line_num           := NULL;          -- 4262811
123029 l_tmp_amt                    := NULL;          -- 4262811
123030 --
123031  
123032 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
123033     l_balance_type_code <> 'B' THEN
123034 IF NVL(p_source_24,9E125) =  6
123035  THEN 
123036 
123037    --
123038    XLA_AE_LINES_PKG.SetNewLine;
123039 
123040    p_balance_type_code          := l_balance_type_code;
123041    -- set the flag so later we will know whether the gain loss line needs to be created
123042    
123043    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
123044      p_actual_flag :='A';
123045    END IF;
123046 
123047    --
123048    -- bulk performance
123049    --
123050    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
123051                                       p_header_num   => 0); -- 4262811
123052    --
123053    -- set accounting line options
123054    --
123055    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
123056            p_natural_side_code          => 'D'
123057          , p_gain_or_loss_flag          => 'N'
123058          , p_gl_transfer_mode_code      => 'S'
123059          , p_acct_entry_type_code       => 'A'
123060          , p_switch_side_flag           => 'Y'
123061          , p_merge_duplicate_code       => 'N'
123062          );
123063    --
123064    l_acc_rev_natural_side_code := 'C';  -- 4262811
123065    -- 
123066    --
123067    -- set accounting line type info
123068    --
123069    xla_ae_lines_pkg.SetAcctLineType
123070       (p_component_type             => l_component_type
123071       ,p_event_type_code            => l_event_type_code
123072       ,p_line_definition_owner_code => l_line_definition_owner_code
123073       ,p_line_definition_code       => l_line_definition_code
123074       ,p_accounting_line_code       => l_component_code
123075       ,p_accounting_line_type_code  => l_component_type_code
123076       ,p_accounting_line_appl_id    => l_component_appl_id
123077       ,p_amb_context_code           => l_amb_context_code
123078       ,p_entity_code                => l_entity_code
123079       ,p_event_class_code           => l_event_class_code);
123080    --
123081    -- set accounting class
123082    --
123083    xla_ae_lines_pkg.SetAcctClass(
123084            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
123085          , p_ae_header_id           => l_ae_header_id
123086          );
123087 
123088    --
123089    -- set rounding class
123090    --
123091    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
123092                       'PURCHASE_PRICE_VARIANCE';
123093 
123094    --
123095    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
123096    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
123097    --
123098    -- bulk performance
123099    --
123100    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
123101 
123102    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
123103       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
123104 
123105    -- 4955764
123106    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123107       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
123108 
123109    -- 4458381 Public Sector Enh
123110    
123111    --
123112    -- set accounting attributes for the line type
123113    --
123114    l_entered_amt_idx := 17;
123115    l_accted_amt_idx  := 22;
123116    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
123117    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
123118    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
123119    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
123120    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
123121    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
123122    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
123123    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
123124    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
123125    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
123126    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_29);
123127    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
123128    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
123129    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
123130    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
123131    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
123132    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_30);
123133    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
123134    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
123135    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
123136    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
123137    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
123138    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
123139    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
123140    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_30);
123141    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
123142    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
123143    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
123144    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
123145    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
123146    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
123147    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
123148    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
123149    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
123150    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
123151    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
123152    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
123153    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
123154    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
123155    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
123156    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
123157    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
123158    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
123159    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
123160    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
123161    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
123162    l_rec_acct_attrs.array_num_value(23)  := p_source_31;
123163    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
123164    l_rec_acct_attrs.array_num_value(24)  := p_source_31;
123165 
123166    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
123167    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
123168 
123169    ---------------------------------------------------------------------------------------------------------------
123170    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
123171    ---------------------------------------------------------------------------------------------------------------
123172    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
123173 
123174    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123175    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123176 
123177    IF xla_accounting_cache_pkg.GetValueChar
123178          (p_source_code         => 'LEDGER_CATEGORY_CODE'
123179          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
123180    AND l_bflow_method_code = 'PRIOR_ENTRY'
123181 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
123182    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
123183          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
123184        )
123185    THEN
123186          xla_ae_lines_pkg.BflowUpgEntry
123187            (p_business_method_code    => l_bflow_method_code
123188            ,p_business_class_code     => l_bflow_class_code
123189            ,p_balance_type            => l_balance_type_code);
123190    ELSE
123191       NULL;
123192 -- No business flow processing for business flow method of NONE.
123193    END IF;
123194 
123195    --
123196    -- call analytical criteria
123197    --
123198    
123199    --
123200    -- call description
123201    --
123202    -- No description or it is inherited.
123203    --
123204    -- call ADRs
123205    -- Bug 4922099
123206    --
123207    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123208         (NVL(l_actual_upg_option, 'N') = 'O') OR
123209         (NVL(l_enc_upg_option, 'N') = 'O')
123210       )
123211    THEN
123212    NULL;
123213    --
123214    --
123215    
123216   l_ccid := AcctDerRule_4(
123217            p_application_id           => p_application_id
123218          , p_ae_header_id             => l_ae_header_id 
123219 , p_source_4 => p_source_4
123220          , x_transaction_coa_id       => l_adr_transaction_coa_id
123221          , x_accounting_coa_id        => l_adr_accounting_coa_id
123222          , x_value_type_code          => l_adr_value_type_code
123223          , p_side                     => 'NA'
123224    );
123225 
123226    xla_ae_lines_pkg.set_ccid(
123227     p_code_combination_id          => l_ccid
123228   , p_value_type_code              => l_adr_value_type_code
123229   , p_transaction_coa_id           => l_adr_transaction_coa_id
123230   , p_accounting_coa_id            => l_adr_accounting_coa_id
123231   , p_adr_code                     => 'CST_DEFAULT'
123232   , p_adr_type_code                => 'S'
123233   , p_component_type               => l_component_type
123234   , p_component_code               => l_component_code
123235   , p_component_type_code          => l_component_type_code
123236   , p_component_appl_id            => l_component_appl_id
123237   , p_amb_context_code             => l_amb_context_code
123238   , p_side                         => 'NA'
123239   );
123240 
123241 
123242    --
123243    --
123244    END IF;
123245    --
123246    -- Bug 4922099
123247    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
123248           (NVL(l_enc_upg_option, 'N') = 'O')
123249         ) AND
123250         (l_bflow_method_code = 'PRIOR_ENTRY')
123251       )
123252    THEN
123253       IF
123254       --
123255       1 = 2
123256       --
123257       THEN
123258       xla_accounting_err_pkg.build_message
123259                                     (p_appli_s_name            => 'XLA'
123260                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123261                                     ,p_token_1                 => 'LINE_NUMBER'
123262                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
123263                                     ,p_token_2                 => 'LINE_TYPE_NAME'
123264                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
123265                                                                              l_component_type
123266                                                                             ,l_component_code
123267                                                                             ,l_component_type_code
123268                                                                             ,l_component_appl_id
123269                                                                             ,l_amb_context_code
123270                                                                             ,l_entity_code
123271                                                                             ,l_event_class_code
123272                                                                            )
123273                                     ,p_token_3                 => 'OWNER'
123274                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
123275                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
123276                                                                           ,p_lookup_code    => l_component_type_code
123277                                                                          )
123278                                     ,p_token_4                 => 'PRODUCT_NAME'
123279                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
123280                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
123281                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
123282                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
123283                                     ,p_ae_header_id            =>  NULL
123284                                        );
123285 
123286         IF (C_LEVEL_ERROR>= g_log_level) THEN
123287                  trace
123288                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123289                       ,p_level    => C_LEVEL_ERROR
123290                       ,p_module   => l_log_module);
123291         END IF;
123292       END IF;
123293    END IF;
123294    --
123295    --
123296    ------------------------------------------------------------------------------------------------
123297    -- 4219869 Business Flow
123298    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
123299    -- Prior Entry.  Currently, the following code is always generated.
123300    ------------------------------------------------------------------------------------------------
123301    XLA_AE_LINES_PKG.ValidateCurrentLine;
123302 
123303    ------------------------------------------------------------------------------------
123304    -- 4219869 Business Flow
123305    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
123306    ------------------------------------------------------------------------------------
123307    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123308 
123309    ----------------------------------------------------------------------------------
123310    -- 4219869 Business Flow
123311    -- Update journal entry status -- Need to generate this within IF <condition>
123312    ----------------------------------------------------------------------------------
123313    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123314          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
123315          ,p_balance_type_code => l_balance_type_code
123316          );
123317 
123318    -------------------------------------------------------------------------------------------
123319    -- 4262811 - Generate the Accrual Reversal lines
123320    -------------------------------------------------------------------------------------------
123321    BEGIN
123322       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
123323                               (g_array_event(p_event_id).array_value_num('header_index'));
123324       IF l_acc_rev_flag IS NULL THEN
123325          l_acc_rev_flag := 'N';
123326       END IF;
123327    EXCEPTION
123328       WHEN OTHERS THEN
123329          l_acc_rev_flag := 'N';
123330    END;
123331    --
123332    IF (l_acc_rev_flag = 'Y') THEN
123333 
123334        -- 4645092  ------------------------------------------------------------------------------
123335        -- To allow MPA report to determine if it should generate report process
123336        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
123337        ------------------------------------------------------------------------------------------
123338 
123339        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
123340        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
123341    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
123342    -- call ADRs
123343    -- Bug 4922099
123344    --
123345    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123346         (NVL(l_actual_upg_option, 'N') = 'O') OR
123347         (NVL(l_enc_upg_option, 'N') = 'O')
123348       )
123349    THEN
123350    NULL;
123351    --
123352    --
123353    
123354   l_ccid := AcctDerRule_4(
123355            p_application_id           => p_application_id
123356          , p_ae_header_id             => l_ae_header_id 
123357 , p_source_4 => p_source_4
123358          , x_transaction_coa_id       => l_adr_transaction_coa_id
123359          , x_accounting_coa_id        => l_adr_accounting_coa_id
123360          , x_value_type_code          => l_adr_value_type_code
123361          , p_side                     => 'NA'
123362    );
123363 
123364    xla_ae_lines_pkg.set_ccid(
123365     p_code_combination_id          => l_ccid
123366   , p_value_type_code              => l_adr_value_type_code
123367   , p_transaction_coa_id           => l_adr_transaction_coa_id
123368   , p_accounting_coa_id            => l_adr_accounting_coa_id
123369   , p_adr_code                     => 'CST_DEFAULT'
123370   , p_adr_type_code                => 'S'
123371   , p_component_type               => l_component_type
123372   , p_component_code               => l_component_code
123373   , p_component_type_code          => l_component_type_code
123374   , p_component_appl_id            => l_component_appl_id
123375   , p_amb_context_code             => l_amb_context_code
123376   , p_side                         => 'NA'
123377   );
123378 
123379 
123380    --
123381    --
123382    END IF;
123383 
123384        --
123385        -- Update the line information that should be overwritten
123386        --
123387        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
123388                                          p_header_num   => 1);
123389        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
123390 
123391        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
123392 
123393        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
123394           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
123395        END IF;
123396 
123397       --
123398       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
123399       --
123400       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
123401           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
123402       ELSE
123403           ---------------------------------------------------------------------------------------------------
123404           -- 4262811a Switch Sign
123405           ---------------------------------------------------------------------------------------------------
123406           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
123407           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123408                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123409           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123410                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123411           -- 5132302
123412           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
123413                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123414 
123415       END IF;
123416 
123417       -- 4955764
123418       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123419       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
123420 
123421 
123422       XLA_AE_LINES_PKG.ValidateCurrentLine;
123423       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123424 
123425       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123426                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
123427                ,p_balance_type_code => l_balance_type_code);
123428 
123429    END IF;
123430 
123431    -----------------------------------------------------------------------------------------
123432    -- 4262811 Multiperiod Accounting
123433    -----------------------------------------------------------------------------------------
123434      -- No MPA option is assigned.
123435 
123436 
123437 END IF;
123438 END IF;
123439 --
123440 
123441 --
123442 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123443    trace
123444       (p_msg      => 'END of AcctLineType_223'
123445       ,p_level    => C_LEVEL_PROCEDURE
123446       ,p_module   => l_log_module);
123447 END IF;
123448 --
123449 EXCEPTION
123450   WHEN xla_exceptions_pkg.application_exception THEN
123451       RAISE;
123452   WHEN OTHERS THEN
123453        xla_exceptions_pkg.raise_message
123454            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_223');
123455 END AcctLineType_223;
123456 --
123457 
123458 ---------------------------------------
123459 --
123460 -- PRIVATE FUNCTION
123461 --         AcctLineType_224
123462 --
123463 ---------------------------------------
123464 PROCEDURE AcctLineType_224 (
123465   p_application_id        IN NUMBER
123466  ,p_event_id              IN NUMBER
123467  ,p_calculate_acctd_flag  IN VARCHAR2
123468  ,p_calculate_g_l_flag    IN VARCHAR2
123469  ,p_actual_flag           IN OUT VARCHAR2
123470  ,p_balance_type_code     OUT VARCHAR2
123471  ,p_gain_or_loss_ref      OUT VARCHAR2
123472  
123473 --Cost Management Default Account
123474  , p_source_4            IN NUMBER
123475 --Receiving Accounting Line Type
123476  , p_source_5            IN VARCHAR2
123477 --DISTRIBUTION_IDENTIFIER
123478  , p_source_11            IN NUMBER
123479 --Distribution Type
123480  , p_source_12            IN VARCHAR2
123481  , p_source_12_meaning    IN VARCHAR2
123482 --Entered Amount
123483  , p_source_18            IN NUMBER
123484 --Accounted Amount
123485  , p_source_22            IN NUMBER
123486 --Entered Currency Code
123487  , p_source_32            IN VARCHAR2
123488 --Currency Conversion Date
123489  , p_source_33            IN DATE
123490 --Currency Conversion Rate
123491  , p_source_34            IN NUMBER
123492 )
123493 IS
123494 
123495 l_component_type              VARCHAR2(80);
123496 l_component_code              VARCHAR2(30);
123497 l_component_type_code         VARCHAR2(1);
123498 l_component_appl_id           INTEGER;
123499 l_amb_context_code            VARCHAR2(30);
123500 l_entity_code                 VARCHAR2(30);
123501 l_event_class_code            VARCHAR2(30);
123502 l_ae_header_id                NUMBER;
123503 l_event_type_code             VARCHAR2(30);
123504 l_line_definition_code        VARCHAR2(30);
123505 l_line_definition_owner_code  VARCHAR2(1);
123506 --
123507 -- adr variables
123508 l_segment                     VARCHAR2(30);
123509 l_ccid                        NUMBER;
123510 l_adr_transaction_coa_id      NUMBER;
123511 l_adr_accounting_coa_id       NUMBER;
123512 l_adr_flexfield_segment_code  VARCHAR2(30);
123513 l_adr_flex_value_set_id       NUMBER;
123514 l_adr_value_type_code         VARCHAR2(30);
123515 l_adr_value_combination_id    NUMBER;
123516 l_adr_value_segment_code      VARCHAR2(30);
123517 
123518 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
123519 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
123520 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
123521 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
123522 
123523 -- 4262811 Variables ------------------------------------------------------------------------------------------
123524 l_entered_amt_idx             NUMBER;
123525 l_accted_amt_idx              NUMBER;
123526 l_acc_rev_flag                VARCHAR2(1);
123527 l_accrual_line_num            NUMBER;
123528 l_tmp_amt                     NUMBER;
123529 l_acc_rev_natural_side_code   VARCHAR2(1);
123530 
123531 l_num_entries                 NUMBER;
123532 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
123533 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
123534 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
123535 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
123536 l_recog_line_1                NUMBER;
123537 l_recog_line_2                NUMBER;
123538 
123539 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
123540 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
123541 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
123542 
123543 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
123544 
123545 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
123546 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
123547 
123548 ---------------------------------------------------------------------------------------------------------------
123549 
123550 
123551 --
123552 -- bulk performance
123553 --
123554 l_balance_type_code           VARCHAR2(1);
123555 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
123556 l_log_module                  VARCHAR2(240);
123557 
123558 --
123559 -- Upgrade strategy
123560 --
123561 l_actual_upg_option           VARCHAR2(1);
123562 l_enc_upg_option           VARCHAR2(1);
123563 
123564 --
123565 BEGIN
123566 --
123567 IF g_log_enabled THEN
123568       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_224';
123569 END IF;
123570 --
123571 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123572 
123573       trace
123574          (p_msg      => 'BEGIN of AcctLineType_224'
123575          ,p_level    => C_LEVEL_PROCEDURE
123576          ,p_module   => l_log_module);
123577 
123578 END IF;
123579 --
123580 l_component_type             := 'AMB_JLT';
123581 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
123582 l_component_type_code        := 'S';
123583 l_component_appl_id          :=  707;
123584 l_amb_context_code           := 'DEFAULT';
123585 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
123586 l_event_class_code           := 'LDD_COST_ADJ_DEL';
123587 l_event_type_code            := 'LDD_COST_ADJ_DEL_ALL';
123588 l_line_definition_owner_code := 'S';
123589 l_line_definition_code       := 'LDD_COST_ADJ_DEL';
123590 --
123591 l_balance_type_code          := 'A';
123592 l_segment                     := NULL;
123593 l_ccid                        := NULL;
123594 l_adr_transaction_coa_id      := NULL;
123595 l_adr_accounting_coa_id       := NULL;
123596 l_adr_flexfield_segment_code  := NULL;
123597 l_adr_flex_value_set_id       := NULL;
123598 l_adr_value_type_code         := NULL;
123599 l_adr_value_combination_id    := NULL;
123600 l_adr_value_segment_code      := NULL;
123601 
123602 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
123603 l_bflow_class_code           := '';    -- 4219869 Business Flow
123604 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
123605 l_budgetary_control_flag     := 'N';
123606 
123607 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
123608 l_bflow_applied_to_amt       := NULL; -- 5132302
123609 l_entered_amt_idx            := NULL;          -- 4262811
123610 l_accted_amt_idx             := NULL;          -- 4262811
123611 l_acc_rev_flag               := NULL;          -- 4262811
123612 l_accrual_line_num           := NULL;          -- 4262811
123613 l_tmp_amt                    := NULL;          -- 4262811
123614 --
123615  
123616 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
123617     l_balance_type_code <> 'B' THEN
123618 IF NVL(p_source_5,'
123619 ') =  'Purchase Price Variance'
123620  THEN 
123621 
123622    --
123623    XLA_AE_LINES_PKG.SetNewLine;
123624 
123625    p_balance_type_code          := l_balance_type_code;
123626    -- set the flag so later we will know whether the gain loss line needs to be created
123627    
123628    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
123629      p_actual_flag :='A';
123630    END IF;
123631 
123632    --
123633    -- bulk performance
123634    --
123635    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
123636                                       p_header_num   => 0); -- 4262811
123637    --
123638    -- set accounting line options
123639    --
123640    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
123641            p_natural_side_code          => 'D'
123642          , p_gain_or_loss_flag          => 'N'
123643          , p_gl_transfer_mode_code      => 'S'
123644          , p_acct_entry_type_code       => 'A'
123645          , p_switch_side_flag           => 'Y'
123646          , p_merge_duplicate_code       => 'N'
123647          );
123648    --
123649    l_acc_rev_natural_side_code := 'C';  -- 4262811
123650    -- 
123651    --
123652    -- set accounting line type info
123653    --
123654    xla_ae_lines_pkg.SetAcctLineType
123655       (p_component_type             => l_component_type
123656       ,p_event_type_code            => l_event_type_code
123657       ,p_line_definition_owner_code => l_line_definition_owner_code
123658       ,p_line_definition_code       => l_line_definition_code
123659       ,p_accounting_line_code       => l_component_code
123660       ,p_accounting_line_type_code  => l_component_type_code
123661       ,p_accounting_line_appl_id    => l_component_appl_id
123662       ,p_amb_context_code           => l_amb_context_code
123663       ,p_entity_code                => l_entity_code
123664       ,p_event_class_code           => l_event_class_code);
123665    --
123666    -- set accounting class
123667    --
123668    xla_ae_lines_pkg.SetAcctClass(
123669            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
123670          , p_ae_header_id           => l_ae_header_id
123671          );
123672 
123673    --
123674    -- set rounding class
123675    --
123676    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
123677                       'PURCHASE_PRICE_VARIANCE';
123678 
123679    --
123680    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
123681    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
123682    --
123683    -- bulk performance
123684    --
123685    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
123686 
123687    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
123688       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
123689 
123690    -- 4955764
123691    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123692       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
123693 
123694    -- 4458381 Public Sector Enh
123695    
123696    --
123697    -- set accounting attributes for the line type
123698    --
123699    l_entered_amt_idx := 3;
123700    l_accted_amt_idx  := 7;
123701    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
123702    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
123703    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
123704    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
123705    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
123706    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
123707    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
123708    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
123709    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
123710    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
123711    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
123712    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
123713    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
123714    l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
123715    l_rec_acct_attrs.array_num_value(7)  := p_source_22;
123716 
123717    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
123718    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
123719 
123720    ---------------------------------------------------------------------------------------------------------------
123721    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
123722    ---------------------------------------------------------------------------------------------------------------
123723    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
123724 
123725    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123726    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123727 
123728    IF xla_accounting_cache_pkg.GetValueChar
123729          (p_source_code         => 'LEDGER_CATEGORY_CODE'
123730          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
123731    AND l_bflow_method_code = 'PRIOR_ENTRY'
123732 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
123733    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
123734          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
123735        )
123736    THEN
123737          xla_ae_lines_pkg.BflowUpgEntry
123738            (p_business_method_code    => l_bflow_method_code
123739            ,p_business_class_code     => l_bflow_class_code
123740            ,p_balance_type            => l_balance_type_code);
123741    ELSE
123742       NULL;
123743 -- No business flow processing for business flow method of NONE.
123744    END IF;
123745 
123746    --
123747    -- call analytical criteria
123748    --
123749    
123750    --
123751    -- call description
123752    --
123753    -- No description or it is inherited.
123754    --
123755    -- call ADRs
123756    -- Bug 4922099
123757    --
123758    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123759         (NVL(l_actual_upg_option, 'N') = 'O') OR
123760         (NVL(l_enc_upg_option, 'N') = 'O')
123761       )
123762    THEN
123763    NULL;
123764    --
123765    --
123766    
123767   l_ccid := AcctDerRule_4(
123768            p_application_id           => p_application_id
123769          , p_ae_header_id             => l_ae_header_id 
123770 , p_source_4 => p_source_4
123771          , x_transaction_coa_id       => l_adr_transaction_coa_id
123772          , x_accounting_coa_id        => l_adr_accounting_coa_id
123773          , x_value_type_code          => l_adr_value_type_code
123774          , p_side                     => 'NA'
123775    );
123776 
123777    xla_ae_lines_pkg.set_ccid(
123778     p_code_combination_id          => l_ccid
123779   , p_value_type_code              => l_adr_value_type_code
123780   , p_transaction_coa_id           => l_adr_transaction_coa_id
123781   , p_accounting_coa_id            => l_adr_accounting_coa_id
123782   , p_adr_code                     => 'CST_DEFAULT'
123783   , p_adr_type_code                => 'S'
123784   , p_component_type               => l_component_type
123785   , p_component_code               => l_component_code
123786   , p_component_type_code          => l_component_type_code
123787   , p_component_appl_id            => l_component_appl_id
123788   , p_amb_context_code             => l_amb_context_code
123789   , p_side                         => 'NA'
123790   );
123791 
123792 
123793    --
123794    --
123795    END IF;
123796    --
123797    -- Bug 4922099
123798    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
123799           (NVL(l_enc_upg_option, 'N') = 'O')
123800         ) AND
123801         (l_bflow_method_code = 'PRIOR_ENTRY')
123802       )
123803    THEN
123804       IF
123805       --
123806       1 = 2
123807       --
123808       THEN
123809       xla_accounting_err_pkg.build_message
123810                                     (p_appli_s_name            => 'XLA'
123811                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123812                                     ,p_token_1                 => 'LINE_NUMBER'
123813                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
123814                                     ,p_token_2                 => 'LINE_TYPE_NAME'
123815                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
123816                                                                              l_component_type
123817                                                                             ,l_component_code
123818                                                                             ,l_component_type_code
123819                                                                             ,l_component_appl_id
123820                                                                             ,l_amb_context_code
123821                                                                             ,l_entity_code
123822                                                                             ,l_event_class_code
123823                                                                            )
123824                                     ,p_token_3                 => 'OWNER'
123825                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
123826                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
123827                                                                           ,p_lookup_code    => l_component_type_code
123828                                                                          )
123829                                     ,p_token_4                 => 'PRODUCT_NAME'
123830                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
123831                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
123832                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
123833                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
123834                                     ,p_ae_header_id            =>  NULL
123835                                        );
123836 
123837         IF (C_LEVEL_ERROR>= g_log_level) THEN
123838                  trace
123839                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123840                       ,p_level    => C_LEVEL_ERROR
123841                       ,p_module   => l_log_module);
123842         END IF;
123843       END IF;
123844    END IF;
123845    --
123846    --
123847    ------------------------------------------------------------------------------------------------
123848    -- 4219869 Business Flow
123849    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
123850    -- Prior Entry.  Currently, the following code is always generated.
123851    ------------------------------------------------------------------------------------------------
123852    XLA_AE_LINES_PKG.ValidateCurrentLine;
123853 
123854    ------------------------------------------------------------------------------------
123855    -- 4219869 Business Flow
123856    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
123857    ------------------------------------------------------------------------------------
123858    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123859 
123860    ----------------------------------------------------------------------------------
123861    -- 4219869 Business Flow
123862    -- Update journal entry status -- Need to generate this within IF <condition>
123863    ----------------------------------------------------------------------------------
123864    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123865          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
123866          ,p_balance_type_code => l_balance_type_code
123867          );
123868 
123869    -------------------------------------------------------------------------------------------
123870    -- 4262811 - Generate the Accrual Reversal lines
123871    -------------------------------------------------------------------------------------------
123872    BEGIN
123873       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
123874                               (g_array_event(p_event_id).array_value_num('header_index'));
123875       IF l_acc_rev_flag IS NULL THEN
123876          l_acc_rev_flag := 'N';
123877       END IF;
123878    EXCEPTION
123879       WHEN OTHERS THEN
123880          l_acc_rev_flag := 'N';
123881    END;
123882    --
123883    IF (l_acc_rev_flag = 'Y') THEN
123884 
123885        -- 4645092  ------------------------------------------------------------------------------
123886        -- To allow MPA report to determine if it should generate report process
123887        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
123888        ------------------------------------------------------------------------------------------
123889 
123890        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
123891        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
123892    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
123893    -- call ADRs
123894    -- Bug 4922099
123895    --
123896    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123897         (NVL(l_actual_upg_option, 'N') = 'O') OR
123898         (NVL(l_enc_upg_option, 'N') = 'O')
123899       )
123900    THEN
123901    NULL;
123902    --
123903    --
123904    
123905   l_ccid := AcctDerRule_4(
123906            p_application_id           => p_application_id
123907          , p_ae_header_id             => l_ae_header_id 
123908 , p_source_4 => p_source_4
123909          , x_transaction_coa_id       => l_adr_transaction_coa_id
123910          , x_accounting_coa_id        => l_adr_accounting_coa_id
123911          , x_value_type_code          => l_adr_value_type_code
123912          , p_side                     => 'NA'
123913    );
123914 
123915    xla_ae_lines_pkg.set_ccid(
123916     p_code_combination_id          => l_ccid
123917   , p_value_type_code              => l_adr_value_type_code
123918   , p_transaction_coa_id           => l_adr_transaction_coa_id
123919   , p_accounting_coa_id            => l_adr_accounting_coa_id
123920   , p_adr_code                     => 'CST_DEFAULT'
123921   , p_adr_type_code                => 'S'
123922   , p_component_type               => l_component_type
123923   , p_component_code               => l_component_code
123924   , p_component_type_code          => l_component_type_code
123925   , p_component_appl_id            => l_component_appl_id
123926   , p_amb_context_code             => l_amb_context_code
123927   , p_side                         => 'NA'
123928   );
123929 
123930 
123931    --
123932    --
123933    END IF;
123934 
123935        --
123936        -- Update the line information that should be overwritten
123937        --
123938        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
123939                                          p_header_num   => 1);
123940        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
123941 
123942        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
123943 
123944        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
123945           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
123946        END IF;
123947 
123948       --
123949       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
123950       --
123951       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
123952           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
123953       ELSE
123954           ---------------------------------------------------------------------------------------------------
123955           -- 4262811a Switch Sign
123956           ---------------------------------------------------------------------------------------------------
123957           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
123958           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123959                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123960           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123961                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123962           -- 5132302
123963           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
123964                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123965 
123966       END IF;
123967 
123968       -- 4955764
123969       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123970       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
123971 
123972 
123973       XLA_AE_LINES_PKG.ValidateCurrentLine;
123974       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123975 
123976       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123977                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
123978                ,p_balance_type_code => l_balance_type_code);
123979 
123980    END IF;
123981 
123982    -----------------------------------------------------------------------------------------
123983    -- 4262811 Multiperiod Accounting
123984    -----------------------------------------------------------------------------------------
123985      -- No MPA option is assigned.
123986 
123987 
123988 END IF;
123989 END IF;
123990 --
123991 
123992 --
123993 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123994    trace
123995       (p_msg      => 'END of AcctLineType_224'
123996       ,p_level    => C_LEVEL_PROCEDURE
123997       ,p_module   => l_log_module);
123998 END IF;
123999 --
124000 EXCEPTION
124001   WHEN xla_exceptions_pkg.application_exception THEN
124002       RAISE;
124003   WHEN OTHERS THEN
124004        xla_exceptions_pkg.raise_message
124005            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_224');
124006 END AcctLineType_224;
124007 --
124008 
124009 ---------------------------------------
124010 --
124011 -- PRIVATE FUNCTION
124012 --         AcctLineType_225
124013 --
124014 ---------------------------------------
124015 PROCEDURE AcctLineType_225 (
124016   p_application_id        IN NUMBER
124017  ,p_event_id              IN NUMBER
124018  ,p_calculate_acctd_flag  IN VARCHAR2
124019  ,p_calculate_g_l_flag    IN VARCHAR2
124020  ,p_actual_flag           IN OUT VARCHAR2
124021  ,p_balance_type_code     OUT VARCHAR2
124022  ,p_gain_or_loss_ref      OUT VARCHAR2
124023  
124024 --Cost Management Default Account
124025  , p_source_4            IN NUMBER
124026 --Applied to Application ID
124027  , p_source_6            IN NUMBER
124028 --Applied to Distribution Link Type
124029  , p_source_7            IN VARCHAR2
124030 --Applied to Entity Code
124031  , p_source_8            IN VARCHAR2
124032 --Applied To Purchase Document Identifier
124033  , p_source_10            IN NUMBER
124034 --DISTRIBUTION_IDENTIFIER
124035  , p_source_11            IN NUMBER
124036 --Distribution Type
124037  , p_source_12            IN VARCHAR2
124038  , p_source_12_meaning    IN VARCHAR2
124039 --PO Budget Account
124040  , p_source_13            IN NUMBER
124041 --Encumbrance Reversal Amount Entered
124042  , p_source_14            IN NUMBER
124043 --Entered Currency Code
124044  , p_source_15            IN VARCHAR2
124045 --Transaction Encumbrance Reversal Amount
124046  , p_source_16            IN NUMBER
124047 --Entered Amount
124048  , p_source_18            IN NUMBER
124049 --Currency Conversion Date
124050  , p_source_19            IN DATE
124051 --Currency Conversion Rate
124052  , p_source_20            IN NUMBER
124053 --Currency Conversion Type
124054  , p_source_21            IN VARCHAR2
124055 --Accounted Amount
124056  , p_source_22            IN NUMBER
124057 --Purchasing Encumbrance Type Identifier
124058  , p_source_23            IN NUMBER
124059 --Accounting Line Type
124060  , p_source_24            IN NUMBER
124061 --Costing Encumbrance Upgrade Option
124062  , p_source_27            IN VARCHAR2
124063 --TXN_PO_DISTRIBUTION_ID
124064  , p_source_28            IN NUMBER
124065 )
124066 IS
124067 
124068 l_component_type              VARCHAR2(80);
124069 l_component_code              VARCHAR2(30);
124070 l_component_type_code         VARCHAR2(1);
124071 l_component_appl_id           INTEGER;
124072 l_amb_context_code            VARCHAR2(30);
124073 l_entity_code                 VARCHAR2(30);
124074 l_event_class_code            VARCHAR2(30);
124075 l_ae_header_id                NUMBER;
124076 l_event_type_code             VARCHAR2(30);
124077 l_line_definition_code        VARCHAR2(30);
124078 l_line_definition_owner_code  VARCHAR2(1);
124079 --
124080 -- adr variables
124081 l_segment                     VARCHAR2(30);
124082 l_ccid                        NUMBER;
124083 l_adr_transaction_coa_id      NUMBER;
124084 l_adr_accounting_coa_id       NUMBER;
124085 l_adr_flexfield_segment_code  VARCHAR2(30);
124086 l_adr_flex_value_set_id       NUMBER;
124087 l_adr_value_type_code         VARCHAR2(30);
124088 l_adr_value_combination_id    NUMBER;
124089 l_adr_value_segment_code      VARCHAR2(30);
124090 
124091 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
124092 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
124093 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
124094 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
124095 
124096 -- 4262811 Variables ------------------------------------------------------------------------------------------
124097 l_entered_amt_idx             NUMBER;
124098 l_accted_amt_idx              NUMBER;
124099 l_acc_rev_flag                VARCHAR2(1);
124100 l_accrual_line_num            NUMBER;
124101 l_tmp_amt                     NUMBER;
124102 l_acc_rev_natural_side_code   VARCHAR2(1);
124103 
124104 l_num_entries                 NUMBER;
124105 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
124106 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
124107 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
124108 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
124109 l_recog_line_1                NUMBER;
124110 l_recog_line_2                NUMBER;
124111 
124112 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
124113 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
124114 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
124115 
124116 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
124117 
124118 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
124119 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
124120 
124121 ---------------------------------------------------------------------------------------------------------------
124122 
124123 
124124 --
124125 -- bulk performance
124126 --
124127 l_balance_type_code           VARCHAR2(1);
124128 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
124129 l_log_module                  VARCHAR2(240);
124130 
124131 --
124132 -- Upgrade strategy
124133 --
124134 l_actual_upg_option           VARCHAR2(1);
124135 l_enc_upg_option           VARCHAR2(1);
124136 
124137 --
124138 BEGIN
124139 --
124140 IF g_log_enabled THEN
124141       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_225';
124142 END IF;
124143 --
124144 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124145 
124146       trace
124147          (p_msg      => 'BEGIN of AcctLineType_225'
124148          ,p_level    => C_LEVEL_PROCEDURE
124149          ,p_module   => l_log_module);
124150 
124151 END IF;
124152 --
124153 l_component_type             := 'AMB_JLT';
124154 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
124155 l_component_type_code        := 'S';
124156 l_component_appl_id          :=  707;
124157 l_amb_context_code           := 'DEFAULT';
124158 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
124159 l_event_class_code           := 'PURCHASE_ORDER';
124160 l_event_type_code            := 'PURCHASE_ORDER_ALL';
124161 l_line_definition_owner_code := 'S';
124162 l_line_definition_code       := 'PURCHASE_ORDER';
124163 --
124164 l_balance_type_code          := 'A';
124165 l_segment                     := NULL;
124166 l_ccid                        := NULL;
124167 l_adr_transaction_coa_id      := NULL;
124168 l_adr_accounting_coa_id       := NULL;
124169 l_adr_flexfield_segment_code  := NULL;
124170 l_adr_flex_value_set_id       := NULL;
124171 l_adr_value_type_code         := NULL;
124172 l_adr_value_combination_id    := NULL;
124173 l_adr_value_segment_code      := NULL;
124174 
124175 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
124176 l_bflow_class_code           := '';    -- 4219869 Business Flow
124177 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
124178 l_budgetary_control_flag     := 'N';
124179 
124180 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
124181 l_bflow_applied_to_amt       := NULL; -- 5132302
124182 l_entered_amt_idx            := NULL;          -- 4262811
124183 l_accted_amt_idx             := NULL;          -- 4262811
124184 l_acc_rev_flag               := NULL;          -- 4262811
124185 l_accrual_line_num           := NULL;          -- 4262811
124186 l_tmp_amt                    := NULL;          -- 4262811
124187 --
124188  
124189 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
124190     l_balance_type_code <> 'B' THEN
124191 IF NVL(p_source_24,9E125) =  6
124192  THEN 
124193 
124194    --
124195    XLA_AE_LINES_PKG.SetNewLine;
124196 
124197    p_balance_type_code          := l_balance_type_code;
124198    -- set the flag so later we will know whether the gain loss line needs to be created
124199    
124200    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
124201      p_actual_flag :='A';
124202    END IF;
124203 
124204    --
124205    -- bulk performance
124206    --
124207    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
124208                                       p_header_num   => 0); -- 4262811
124209    --
124210    -- set accounting line options
124211    --
124212    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
124213            p_natural_side_code          => 'D'
124214          , p_gain_or_loss_flag          => 'N'
124215          , p_gl_transfer_mode_code      => 'S'
124216          , p_acct_entry_type_code       => 'A'
124217          , p_switch_side_flag           => 'Y'
124218          , p_merge_duplicate_code       => 'N'
124219          );
124220    --
124221    l_acc_rev_natural_side_code := 'C';  -- 4262811
124222    -- 
124223    --
124224    -- set accounting line type info
124225    --
124226    xla_ae_lines_pkg.SetAcctLineType
124227       (p_component_type             => l_component_type
124228       ,p_event_type_code            => l_event_type_code
124229       ,p_line_definition_owner_code => l_line_definition_owner_code
124230       ,p_line_definition_code       => l_line_definition_code
124231       ,p_accounting_line_code       => l_component_code
124232       ,p_accounting_line_type_code  => l_component_type_code
124233       ,p_accounting_line_appl_id    => l_component_appl_id
124234       ,p_amb_context_code           => l_amb_context_code
124235       ,p_entity_code                => l_entity_code
124236       ,p_event_class_code           => l_event_class_code);
124237    --
124238    -- set accounting class
124239    --
124240    xla_ae_lines_pkg.SetAcctClass(
124241            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
124242          , p_ae_header_id           => l_ae_header_id
124243          );
124244 
124245    --
124246    -- set rounding class
124247    --
124248    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
124249                       'PURCHASE_PRICE_VARIANCE';
124250 
124251    --
124252    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
124253    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
124254    --
124255    -- bulk performance
124256    --
124257    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
124258 
124259    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
124260       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
124261 
124262    -- 4955764
124263    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
124264       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
124265 
124266    -- 4458381 Public Sector Enh
124267    
124268    --
124269    -- set accounting attributes for the line type
124270    --
124271    l_entered_amt_idx := 17;
124272    l_accted_amt_idx  := 22;
124273    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
124274    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
124275    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
124276    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
124277    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
124278    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
124279    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
124280    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
124281    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
124282    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
124283    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
124284    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
124285    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
124286    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
124287    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
124288    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
124289    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
124290    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
124291    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
124292    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
124293    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
124294    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
124295    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
124296    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
124297    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
124298    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
124299    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
124300    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
124301    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
124302    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
124303    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
124304    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
124305    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
124306    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
124307    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
124308    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
124309    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
124310    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
124311    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
124312    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
124313    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
124314    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
124315    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
124316    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
124317    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
124318    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
124319    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
124320    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
124321    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
124322 
124323    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
124324    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
124325 
124326    ---------------------------------------------------------------------------------------------------------------
124327    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
124328    ---------------------------------------------------------------------------------------------------------------
124329    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
124330 
124331    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124332    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124333 
124334    IF xla_accounting_cache_pkg.GetValueChar
124335          (p_source_code         => 'LEDGER_CATEGORY_CODE'
124336          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
124337    AND l_bflow_method_code = 'PRIOR_ENTRY'
124338 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
124339    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
124340          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
124341        )
124342    THEN
124343          xla_ae_lines_pkg.BflowUpgEntry
124344            (p_business_method_code    => l_bflow_method_code
124345            ,p_business_class_code     => l_bflow_class_code
124346            ,p_balance_type            => l_balance_type_code);
124347    ELSE
124348       NULL;
124349 -- No business flow processing for business flow method of NONE.
124350    END IF;
124351 
124352    --
124353    -- call analytical criteria
124354    --
124355    
124356    --
124357    -- call description
124358    --
124359    -- No description or it is inherited.
124360    --
124361    -- call ADRs
124362    -- Bug 4922099
124363    --
124364    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
124365         (NVL(l_actual_upg_option, 'N') = 'O') OR
124366         (NVL(l_enc_upg_option, 'N') = 'O')
124367       )
124368    THEN
124369    NULL;
124370    --
124371    --
124372    
124373   l_ccid := AcctDerRule_4(
124374            p_application_id           => p_application_id
124375          , p_ae_header_id             => l_ae_header_id 
124376 , p_source_4 => p_source_4
124377          , x_transaction_coa_id       => l_adr_transaction_coa_id
124378          , x_accounting_coa_id        => l_adr_accounting_coa_id
124379          , x_value_type_code          => l_adr_value_type_code
124380          , p_side                     => 'NA'
124381    );
124382 
124383    xla_ae_lines_pkg.set_ccid(
124384     p_code_combination_id          => l_ccid
124385   , p_value_type_code              => l_adr_value_type_code
124386   , p_transaction_coa_id           => l_adr_transaction_coa_id
124387   , p_accounting_coa_id            => l_adr_accounting_coa_id
124388   , p_adr_code                     => 'CST_DEFAULT'
124389   , p_adr_type_code                => 'S'
124390   , p_component_type               => l_component_type
124391   , p_component_code               => l_component_code
124392   , p_component_type_code          => l_component_type_code
124393   , p_component_appl_id            => l_component_appl_id
124394   , p_amb_context_code             => l_amb_context_code
124395   , p_side                         => 'NA'
124396   );
124397 
124398 
124399    --
124400    --
124401    END IF;
124402    --
124403    -- Bug 4922099
124404    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
124405           (NVL(l_enc_upg_option, 'N') = 'O')
124406         ) AND
124407         (l_bflow_method_code = 'PRIOR_ENTRY')
124408       )
124409    THEN
124410       IF
124411       --
124412       1 = 2
124413       --
124414       THEN
124415       xla_accounting_err_pkg.build_message
124416                                     (p_appli_s_name            => 'XLA'
124417                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124418                                     ,p_token_1                 => 'LINE_NUMBER'
124419                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
124420                                     ,p_token_2                 => 'LINE_TYPE_NAME'
124421                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
124422                                                                              l_component_type
124423                                                                             ,l_component_code
124424                                                                             ,l_component_type_code
124425                                                                             ,l_component_appl_id
124426                                                                             ,l_amb_context_code
124427                                                                             ,l_entity_code
124428                                                                             ,l_event_class_code
124429                                                                            )
124430                                     ,p_token_3                 => 'OWNER'
124431                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
124432                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
124433                                                                           ,p_lookup_code    => l_component_type_code
124434                                                                          )
124435                                     ,p_token_4                 => 'PRODUCT_NAME'
124436                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
124437                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
124438                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
124439                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
124440                                     ,p_ae_header_id            =>  NULL
124441                                        );
124442 
124443         IF (C_LEVEL_ERROR>= g_log_level) THEN
124444                  trace
124445                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124446                       ,p_level    => C_LEVEL_ERROR
124447                       ,p_module   => l_log_module);
124448         END IF;
124449       END IF;
124450    END IF;
124451    --
124452    --
124453    ------------------------------------------------------------------------------------------------
124454    -- 4219869 Business Flow
124455    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
124456    -- Prior Entry.  Currently, the following code is always generated.
124457    ------------------------------------------------------------------------------------------------
124458    XLA_AE_LINES_PKG.ValidateCurrentLine;
124459 
124460    ------------------------------------------------------------------------------------
124461    -- 4219869 Business Flow
124462    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
124463    ------------------------------------------------------------------------------------
124464    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
124465 
124466    ----------------------------------------------------------------------------------
124467    -- 4219869 Business Flow
124468    -- Update journal entry status -- Need to generate this within IF <condition>
124469    ----------------------------------------------------------------------------------
124470    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
124471          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
124472          ,p_balance_type_code => l_balance_type_code
124473          );
124474 
124475    -------------------------------------------------------------------------------------------
124476    -- 4262811 - Generate the Accrual Reversal lines
124477    -------------------------------------------------------------------------------------------
124478    BEGIN
124479       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
124480                               (g_array_event(p_event_id).array_value_num('header_index'));
124481       IF l_acc_rev_flag IS NULL THEN
124482          l_acc_rev_flag := 'N';
124483       END IF;
124484    EXCEPTION
124485       WHEN OTHERS THEN
124486          l_acc_rev_flag := 'N';
124487    END;
124488    --
124489    IF (l_acc_rev_flag = 'Y') THEN
124490 
124491        -- 4645092  ------------------------------------------------------------------------------
124492        -- To allow MPA report to determine if it should generate report process
124493        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
124494        ------------------------------------------------------------------------------------------
124495 
124496        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
124497        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
124498    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
124499    -- call ADRs
124500    -- Bug 4922099
124501    --
124502    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
124503         (NVL(l_actual_upg_option, 'N') = 'O') OR
124504         (NVL(l_enc_upg_option, 'N') = 'O')
124505       )
124506    THEN
124507    NULL;
124508    --
124509    --
124510    
124511   l_ccid := AcctDerRule_4(
124512            p_application_id           => p_application_id
124513          , p_ae_header_id             => l_ae_header_id 
124514 , p_source_4 => p_source_4
124515          , x_transaction_coa_id       => l_adr_transaction_coa_id
124516          , x_accounting_coa_id        => l_adr_accounting_coa_id
124517          , x_value_type_code          => l_adr_value_type_code
124518          , p_side                     => 'NA'
124519    );
124520 
124521    xla_ae_lines_pkg.set_ccid(
124522     p_code_combination_id          => l_ccid
124523   , p_value_type_code              => l_adr_value_type_code
124524   , p_transaction_coa_id           => l_adr_transaction_coa_id
124525   , p_accounting_coa_id            => l_adr_accounting_coa_id
124526   , p_adr_code                     => 'CST_DEFAULT'
124527   , p_adr_type_code                => 'S'
124528   , p_component_type               => l_component_type
124529   , p_component_code               => l_component_code
124530   , p_component_type_code          => l_component_type_code
124531   , p_component_appl_id            => l_component_appl_id
124532   , p_amb_context_code             => l_amb_context_code
124533   , p_side                         => 'NA'
124534   );
124535 
124536 
124537    --
124538    --
124539    END IF;
124540 
124541        --
124542        -- Update the line information that should be overwritten
124543        --
124544        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
124545                                          p_header_num   => 1);
124546        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
124547 
124548        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
124549 
124550        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
124551           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
124552        END IF;
124553 
124554       --
124555       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
124556       --
124557       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
124558           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
124559       ELSE
124560           ---------------------------------------------------------------------------------------------------
124561           -- 4262811a Switch Sign
124562           ---------------------------------------------------------------------------------------------------
124563           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
124564           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
124565                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124566           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
124567                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124568           -- 5132302
124569           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
124570                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124571 
124572       END IF;
124573 
124574       -- 4955764
124575       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
124576       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
124577 
124578 
124579       XLA_AE_LINES_PKG.ValidateCurrentLine;
124580       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
124581 
124582       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
124583                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
124584                ,p_balance_type_code => l_balance_type_code);
124585 
124586    END IF;
124587 
124588    -----------------------------------------------------------------------------------------
124589    -- 4262811 Multiperiod Accounting
124590    -----------------------------------------------------------------------------------------
124591      -- No MPA option is assigned.
124592 
124593 
124594 END IF;
124595 END IF;
124596 --
124597 
124598 --
124599 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124600    trace
124601       (p_msg      => 'END of AcctLineType_225'
124602       ,p_level    => C_LEVEL_PROCEDURE
124603       ,p_module   => l_log_module);
124604 END IF;
124605 --
124606 EXCEPTION
124607   WHEN xla_exceptions_pkg.application_exception THEN
124608       RAISE;
124609   WHEN OTHERS THEN
124610        xla_exceptions_pkg.raise_message
124611            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_225');
124612 END AcctLineType_225;
124613 --
124614 
124615 ---------------------------------------
124616 --
124617 -- PRIVATE FUNCTION
124618 --         AcctLineType_226
124619 --
124620 ---------------------------------------
124621 PROCEDURE AcctLineType_226 (
124622   p_application_id        IN NUMBER
124623  ,p_event_id              IN NUMBER
124624  ,p_calculate_acctd_flag  IN VARCHAR2
124625  ,p_calculate_g_l_flag    IN VARCHAR2
124626  ,p_actual_flag           IN OUT VARCHAR2
124627  ,p_balance_type_code     OUT VARCHAR2
124628  ,p_gain_or_loss_ref      OUT VARCHAR2
124629  
124630 --Cost Management Default Account
124631  , p_source_4            IN NUMBER
124632 --DISTRIBUTION_IDENTIFIER
124633  , p_source_11            IN NUMBER
124634 --Distribution Type
124635  , p_source_12            IN VARCHAR2
124636  , p_source_12_meaning    IN VARCHAR2
124637 --Entered Currency Code
124638  , p_source_15            IN VARCHAR2
124639 --Entered Amount
124640  , p_source_18            IN NUMBER
124641 --Currency Conversion Date
124642  , p_source_19            IN DATE
124643 --Currency Conversion Rate
124644  , p_source_20            IN NUMBER
124645 --Currency Conversion Type
124646  , p_source_21            IN VARCHAR2
124647 --Accounted Amount
124648  , p_source_22            IN NUMBER
124649 --Accounting Line Type
124650  , p_source_24            IN NUMBER
124651 )
124652 IS
124653 
124654 l_component_type              VARCHAR2(80);
124655 l_component_code              VARCHAR2(30);
124656 l_component_type_code         VARCHAR2(1);
124657 l_component_appl_id           INTEGER;
124658 l_amb_context_code            VARCHAR2(30);
124659 l_entity_code                 VARCHAR2(30);
124660 l_event_class_code            VARCHAR2(30);
124661 l_ae_header_id                NUMBER;
124662 l_event_type_code             VARCHAR2(30);
124663 l_line_definition_code        VARCHAR2(30);
124664 l_line_definition_owner_code  VARCHAR2(1);
124665 --
124666 -- adr variables
124667 l_segment                     VARCHAR2(30);
124668 l_ccid                        NUMBER;
124669 l_adr_transaction_coa_id      NUMBER;
124670 l_adr_accounting_coa_id       NUMBER;
124671 l_adr_flexfield_segment_code  VARCHAR2(30);
124672 l_adr_flex_value_set_id       NUMBER;
124673 l_adr_value_type_code         VARCHAR2(30);
124674 l_adr_value_combination_id    NUMBER;
124675 l_adr_value_segment_code      VARCHAR2(30);
124676 
124677 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
124678 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
124679 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
124680 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
124681 
124682 -- 4262811 Variables ------------------------------------------------------------------------------------------
124683 l_entered_amt_idx             NUMBER;
124684 l_accted_amt_idx              NUMBER;
124685 l_acc_rev_flag                VARCHAR2(1);
124686 l_accrual_line_num            NUMBER;
124687 l_tmp_amt                     NUMBER;
124688 l_acc_rev_natural_side_code   VARCHAR2(1);
124689 
124690 l_num_entries                 NUMBER;
124691 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
124692 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
124693 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
124694 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
124695 l_recog_line_1                NUMBER;
124696 l_recog_line_2                NUMBER;
124697 
124698 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
124699 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
124700 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
124701 
124702 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
124703 
124704 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
124705 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
124706 
124707 ---------------------------------------------------------------------------------------------------------------
124708 
124709 
124710 --
124711 -- bulk performance
124712 --
124713 l_balance_type_code           VARCHAR2(1);
124714 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
124715 l_log_module                  VARCHAR2(240);
124716 
124717 --
124718 -- Upgrade strategy
124719 --
124720 l_actual_upg_option           VARCHAR2(1);
124721 l_enc_upg_option           VARCHAR2(1);
124722 
124723 --
124724 BEGIN
124725 --
124726 IF g_log_enabled THEN
124727       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_226';
124728 END IF;
124729 --
124730 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124731 
124732       trace
124733          (p_msg      => 'BEGIN of AcctLineType_226'
124734          ,p_level    => C_LEVEL_PROCEDURE
124735          ,p_module   => l_log_module);
124736 
124737 END IF;
124738 --
124739 l_component_type             := 'AMB_JLT';
124740 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
124741 l_component_type_code        := 'S';
124742 l_component_appl_id          :=  707;
124743 l_amb_context_code           := 'DEFAULT';
124744 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
124745 l_event_class_code           := 'USER_DEFINE';
124746 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
124747 l_line_definition_owner_code := 'S';
124748 l_line_definition_code       := 'USER_DIR_INTERORG_SHIP_TP';
124749 --
124750 l_balance_type_code          := 'A';
124751 l_segment                     := NULL;
124752 l_ccid                        := NULL;
124753 l_adr_transaction_coa_id      := NULL;
124754 l_adr_accounting_coa_id       := NULL;
124755 l_adr_flexfield_segment_code  := NULL;
124756 l_adr_flex_value_set_id       := NULL;
124757 l_adr_value_type_code         := NULL;
124758 l_adr_value_combination_id    := NULL;
124759 l_adr_value_segment_code      := NULL;
124760 
124761 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
124762 l_bflow_class_code           := '';    -- 4219869 Business Flow
124763 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
124764 l_budgetary_control_flag     := 'N';
124765 
124766 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
124767 l_bflow_applied_to_amt       := NULL; -- 5132302
124768 l_entered_amt_idx            := NULL;          -- 4262811
124769 l_accted_amt_idx             := NULL;          -- 4262811
124770 l_acc_rev_flag               := NULL;          -- 4262811
124771 l_accrual_line_num           := NULL;          -- 4262811
124772 l_tmp_amt                    := NULL;          -- 4262811
124773 --
124774  
124775 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
124776     l_balance_type_code <> 'B' THEN
124777 IF NVL(p_source_24,9E125) =  6
124778  THEN 
124779 
124780    --
124781    XLA_AE_LINES_PKG.SetNewLine;
124782 
124783    p_balance_type_code          := l_balance_type_code;
124784    -- set the flag so later we will know whether the gain loss line needs to be created
124785    
124786    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
124787      p_actual_flag :='A';
124788    END IF;
124789 
124790    --
124791    -- bulk performance
124792    --
124793    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
124794                                       p_header_num   => 0); -- 4262811
124795    --
124796    -- set accounting line options
124797    --
124798    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
124799            p_natural_side_code          => 'D'
124800          , p_gain_or_loss_flag          => 'N'
124801          , p_gl_transfer_mode_code      => 'S'
124802          , p_acct_entry_type_code       => 'A'
124803          , p_switch_side_flag           => 'Y'
124804          , p_merge_duplicate_code       => 'N'
124805          );
124806    --
124807    l_acc_rev_natural_side_code := 'C';  -- 4262811
124808    -- 
124809    --
124810    -- set accounting line type info
124811    --
124812    xla_ae_lines_pkg.SetAcctLineType
124813       (p_component_type             => l_component_type
124814       ,p_event_type_code            => l_event_type_code
124815       ,p_line_definition_owner_code => l_line_definition_owner_code
124816       ,p_line_definition_code       => l_line_definition_code
124817       ,p_accounting_line_code       => l_component_code
124818       ,p_accounting_line_type_code  => l_component_type_code
124819       ,p_accounting_line_appl_id    => l_component_appl_id
124820       ,p_amb_context_code           => l_amb_context_code
124821       ,p_entity_code                => l_entity_code
124822       ,p_event_class_code           => l_event_class_code);
124823    --
124824    -- set accounting class
124825    --
124826    xla_ae_lines_pkg.SetAcctClass(
124827            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
124828          , p_ae_header_id           => l_ae_header_id
124829          );
124830 
124831    --
124832    -- set rounding class
124833    --
124834    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
124835                       'PURCHASE_PRICE_VARIANCE';
124836 
124837    --
124838    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
124839    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
124840    --
124841    -- bulk performance
124842    --
124843    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
124844 
124845    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
124846       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
124847 
124848    -- 4955764
124849    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
124850       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
124851 
124852    -- 4458381 Public Sector Enh
124853    
124854    --
124855    -- set accounting attributes for the line type
124856    --
124857    l_entered_amt_idx := 3;
124858    l_accted_amt_idx  := 8;
124859    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
124860    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
124861    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
124862    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
124863    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
124864    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
124865    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
124866    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
124867    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
124868    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
124869    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
124870    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
124871    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
124872    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
124873    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
124874    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
124875    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
124876 
124877    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
124878    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
124879 
124880    ---------------------------------------------------------------------------------------------------------------
124881    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
124882    ---------------------------------------------------------------------------------------------------------------
124883    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
124884 
124885    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124886    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124887 
124888    IF xla_accounting_cache_pkg.GetValueChar
124889          (p_source_code         => 'LEDGER_CATEGORY_CODE'
124890          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
124891    AND l_bflow_method_code = 'PRIOR_ENTRY'
124892 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
124893    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
124894          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
124895        )
124896    THEN
124897          xla_ae_lines_pkg.BflowUpgEntry
124898            (p_business_method_code    => l_bflow_method_code
124899            ,p_business_class_code     => l_bflow_class_code
124900            ,p_balance_type            => l_balance_type_code);
124901    ELSE
124902       NULL;
124903 -- No business flow processing for business flow method of NONE.
124904    END IF;
124905 
124906    --
124907    -- call analytical criteria
124908    --
124909    
124910    --
124911    -- call description
124912    --
124913    -- No description or it is inherited.
124914    --
124915    -- call ADRs
124916    -- Bug 4922099
124917    --
124918    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
124919         (NVL(l_actual_upg_option, 'N') = 'O') OR
124920         (NVL(l_enc_upg_option, 'N') = 'O')
124921       )
124922    THEN
124923    NULL;
124924    --
124925    --
124926    
124927   l_ccid := AcctDerRule_4(
124928            p_application_id           => p_application_id
124929          , p_ae_header_id             => l_ae_header_id 
124930 , p_source_4 => p_source_4
124931          , x_transaction_coa_id       => l_adr_transaction_coa_id
124932          , x_accounting_coa_id        => l_adr_accounting_coa_id
124933          , x_value_type_code          => l_adr_value_type_code
124934          , p_side                     => 'NA'
124935    );
124936 
124937    xla_ae_lines_pkg.set_ccid(
124938     p_code_combination_id          => l_ccid
124939   , p_value_type_code              => l_adr_value_type_code
124940   , p_transaction_coa_id           => l_adr_transaction_coa_id
124941   , p_accounting_coa_id            => l_adr_accounting_coa_id
124942   , p_adr_code                     => 'CST_DEFAULT'
124943   , p_adr_type_code                => 'S'
124944   , p_component_type               => l_component_type
124945   , p_component_code               => l_component_code
124946   , p_component_type_code          => l_component_type_code
124947   , p_component_appl_id            => l_component_appl_id
124948   , p_amb_context_code             => l_amb_context_code
124949   , p_side                         => 'NA'
124950   );
124951 
124952 
124953    --
124954    --
124955    END IF;
124956    --
124957    -- Bug 4922099
124958    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
124959           (NVL(l_enc_upg_option, 'N') = 'O')
124960         ) AND
124961         (l_bflow_method_code = 'PRIOR_ENTRY')
124962       )
124963    THEN
124964       IF
124965       --
124966       1 = 2
124967       --
124968       THEN
124969       xla_accounting_err_pkg.build_message
124970                                     (p_appli_s_name            => 'XLA'
124971                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124972                                     ,p_token_1                 => 'LINE_NUMBER'
124973                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
124974                                     ,p_token_2                 => 'LINE_TYPE_NAME'
124975                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
124976                                                                              l_component_type
124977                                                                             ,l_component_code
124978                                                                             ,l_component_type_code
124979                                                                             ,l_component_appl_id
124980                                                                             ,l_amb_context_code
124981                                                                             ,l_entity_code
124982                                                                             ,l_event_class_code
124983                                                                            )
124984                                     ,p_token_3                 => 'OWNER'
124985                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
124986                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
124987                                                                           ,p_lookup_code    => l_component_type_code
124988                                                                          )
124989                                     ,p_token_4                 => 'PRODUCT_NAME'
124990                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
124991                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
124992                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
124993                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
124994                                     ,p_ae_header_id            =>  NULL
124995                                        );
124996 
124997         IF (C_LEVEL_ERROR>= g_log_level) THEN
124998                  trace
124999                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
125000                       ,p_level    => C_LEVEL_ERROR
125001                       ,p_module   => l_log_module);
125002         END IF;
125003       END IF;
125004    END IF;
125005    --
125006    --
125007    ------------------------------------------------------------------------------------------------
125008    -- 4219869 Business Flow
125009    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
125010    -- Prior Entry.  Currently, the following code is always generated.
125011    ------------------------------------------------------------------------------------------------
125012    XLA_AE_LINES_PKG.ValidateCurrentLine;
125013 
125014    ------------------------------------------------------------------------------------
125015    -- 4219869 Business Flow
125016    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
125017    ------------------------------------------------------------------------------------
125018    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
125019 
125020    ----------------------------------------------------------------------------------
125021    -- 4219869 Business Flow
125022    -- Update journal entry status -- Need to generate this within IF <condition>
125023    ----------------------------------------------------------------------------------
125024    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
125025          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
125026          ,p_balance_type_code => l_balance_type_code
125027          );
125028 
125029    -------------------------------------------------------------------------------------------
125030    -- 4262811 - Generate the Accrual Reversal lines
125031    -------------------------------------------------------------------------------------------
125032    BEGIN
125033       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
125034                               (g_array_event(p_event_id).array_value_num('header_index'));
125035       IF l_acc_rev_flag IS NULL THEN
125036          l_acc_rev_flag := 'N';
125037       END IF;
125038    EXCEPTION
125039       WHEN OTHERS THEN
125040          l_acc_rev_flag := 'N';
125041    END;
125042    --
125043    IF (l_acc_rev_flag = 'Y') THEN
125044 
125045        -- 4645092  ------------------------------------------------------------------------------
125046        -- To allow MPA report to determine if it should generate report process
125047        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
125048        ------------------------------------------------------------------------------------------
125049 
125050        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
125051        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
125052    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
125053    -- call ADRs
125054    -- Bug 4922099
125055    --
125056    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
125057         (NVL(l_actual_upg_option, 'N') = 'O') OR
125058         (NVL(l_enc_upg_option, 'N') = 'O')
125059       )
125060    THEN
125061    NULL;
125062    --
125063    --
125064    
125065   l_ccid := AcctDerRule_4(
125066            p_application_id           => p_application_id
125067          , p_ae_header_id             => l_ae_header_id 
125068 , p_source_4 => p_source_4
125069          , x_transaction_coa_id       => l_adr_transaction_coa_id
125070          , x_accounting_coa_id        => l_adr_accounting_coa_id
125071          , x_value_type_code          => l_adr_value_type_code
125072          , p_side                     => 'NA'
125073    );
125074 
125075    xla_ae_lines_pkg.set_ccid(
125076     p_code_combination_id          => l_ccid
125077   , p_value_type_code              => l_adr_value_type_code
125078   , p_transaction_coa_id           => l_adr_transaction_coa_id
125079   , p_accounting_coa_id            => l_adr_accounting_coa_id
125080   , p_adr_code                     => 'CST_DEFAULT'
125081   , p_adr_type_code                => 'S'
125082   , p_component_type               => l_component_type
125083   , p_component_code               => l_component_code
125084   , p_component_type_code          => l_component_type_code
125085   , p_component_appl_id            => l_component_appl_id
125086   , p_amb_context_code             => l_amb_context_code
125087   , p_side                         => 'NA'
125088   );
125089 
125090 
125091    --
125092    --
125093    END IF;
125094 
125095        --
125096        -- Update the line information that should be overwritten
125097        --
125098        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
125099                                          p_header_num   => 1);
125100        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
125101 
125102        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
125103 
125104        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
125105           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
125106        END IF;
125107 
125108       --
125109       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
125110       --
125111       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
125112           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
125113       ELSE
125114           ---------------------------------------------------------------------------------------------------
125115           -- 4262811a Switch Sign
125116           ---------------------------------------------------------------------------------------------------
125117           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
125118           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125119                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125120           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125121                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125122           -- 5132302
125123           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
125124                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125125 
125126       END IF;
125127 
125128       -- 4955764
125129       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125130       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
125131 
125132 
125133       XLA_AE_LINES_PKG.ValidateCurrentLine;
125134       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
125135 
125136       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
125137                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
125138                ,p_balance_type_code => l_balance_type_code);
125139 
125140    END IF;
125141 
125142    -----------------------------------------------------------------------------------------
125143    -- 4262811 Multiperiod Accounting
125144    -----------------------------------------------------------------------------------------
125145      -- No MPA option is assigned.
125146 
125147 
125148 END IF;
125149 END IF;
125150 --
125151 
125152 --
125153 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125154    trace
125155       (p_msg      => 'END of AcctLineType_226'
125156       ,p_level    => C_LEVEL_PROCEDURE
125157       ,p_module   => l_log_module);
125158 END IF;
125159 --
125160 EXCEPTION
125161   WHEN xla_exceptions_pkg.application_exception THEN
125162       RAISE;
125163   WHEN OTHERS THEN
125164        xla_exceptions_pkg.raise_message
125165            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_226');
125166 END AcctLineType_226;
125167 --
125168 
125169 ---------------------------------------
125170 --
125171 -- PRIVATE FUNCTION
125172 --         AcctLineType_227
125173 --
125174 ---------------------------------------
125175 PROCEDURE AcctLineType_227 (
125176   p_application_id        IN NUMBER
125177  ,p_event_id              IN NUMBER
125178  ,p_calculate_acctd_flag  IN VARCHAR2
125179  ,p_calculate_g_l_flag    IN VARCHAR2
125180  ,p_actual_flag           IN OUT VARCHAR2
125181  ,p_balance_type_code     OUT VARCHAR2
125182  ,p_gain_or_loss_ref      OUT VARCHAR2
125183  
125184 --Cost Management Default Account
125185  , p_source_4            IN NUMBER
125186 --DISTRIBUTION_IDENTIFIER
125187  , p_source_11            IN NUMBER
125188 --Distribution Type
125189  , p_source_12            IN VARCHAR2
125190  , p_source_12_meaning    IN VARCHAR2
125191 --Entered Currency Code
125192  , p_source_15            IN VARCHAR2
125193 --Entered Amount
125194  , p_source_18            IN NUMBER
125195 --Currency Conversion Date
125196  , p_source_19            IN DATE
125197 --Currency Conversion Rate
125198  , p_source_20            IN NUMBER
125199 --Accounted Amount
125200  , p_source_22            IN NUMBER
125201 --Accounting Line Type
125202  , p_source_24            IN NUMBER
125203 )
125204 IS
125205 
125206 l_component_type              VARCHAR2(80);
125207 l_component_code              VARCHAR2(30);
125208 l_component_type_code         VARCHAR2(1);
125209 l_component_appl_id           INTEGER;
125210 l_amb_context_code            VARCHAR2(30);
125211 l_entity_code                 VARCHAR2(30);
125212 l_event_class_code            VARCHAR2(30);
125213 l_ae_header_id                NUMBER;
125214 l_event_type_code             VARCHAR2(30);
125215 l_line_definition_code        VARCHAR2(30);
125216 l_line_definition_owner_code  VARCHAR2(1);
125217 --
125218 -- adr variables
125219 l_segment                     VARCHAR2(30);
125220 l_ccid                        NUMBER;
125221 l_adr_transaction_coa_id      NUMBER;
125222 l_adr_accounting_coa_id       NUMBER;
125223 l_adr_flexfield_segment_code  VARCHAR2(30);
125224 l_adr_flex_value_set_id       NUMBER;
125225 l_adr_value_type_code         VARCHAR2(30);
125226 l_adr_value_combination_id    NUMBER;
125227 l_adr_value_segment_code      VARCHAR2(30);
125228 
125229 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
125230 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
125231 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
125232 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
125233 
125234 -- 4262811 Variables ------------------------------------------------------------------------------------------
125235 l_entered_amt_idx             NUMBER;
125236 l_accted_amt_idx              NUMBER;
125237 l_acc_rev_flag                VARCHAR2(1);
125238 l_accrual_line_num            NUMBER;
125239 l_tmp_amt                     NUMBER;
125240 l_acc_rev_natural_side_code   VARCHAR2(1);
125241 
125242 l_num_entries                 NUMBER;
125243 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
125244 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
125245 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
125246 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
125247 l_recog_line_1                NUMBER;
125248 l_recog_line_2                NUMBER;
125249 
125250 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
125251 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
125252 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
125253 
125254 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
125255 
125256 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
125257 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
125258 
125259 ---------------------------------------------------------------------------------------------------------------
125260 
125261 
125262 --
125263 -- bulk performance
125264 --
125265 l_balance_type_code           VARCHAR2(1);
125266 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
125267 l_log_module                  VARCHAR2(240);
125268 
125269 --
125270 -- Upgrade strategy
125271 --
125272 l_actual_upg_option           VARCHAR2(1);
125273 l_enc_upg_option           VARCHAR2(1);
125274 
125275 --
125276 BEGIN
125277 --
125278 IF g_log_enabled THEN
125279       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_227';
125280 END IF;
125281 --
125282 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125283 
125284       trace
125285          (p_msg      => 'BEGIN of AcctLineType_227'
125286          ,p_level    => C_LEVEL_PROCEDURE
125287          ,p_module   => l_log_module);
125288 
125289 END IF;
125290 --
125291 l_component_type             := 'AMB_JLT';
125292 l_component_code             := 'RECEIVING_INSPECTION';
125293 l_component_type_code        := 'S';
125294 l_component_appl_id          :=  707;
125295 l_amb_context_code           := 'DEFAULT';
125296 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
125297 l_event_class_code           := 'OSP';
125298 l_event_type_code            := 'OSP_ALL';
125299 l_line_definition_owner_code := 'S';
125300 l_line_definition_code       := 'OUTSIDE_PROCESSING';
125301 --
125302 l_balance_type_code          := 'A';
125303 l_segment                     := NULL;
125304 l_ccid                        := NULL;
125305 l_adr_transaction_coa_id      := NULL;
125306 l_adr_accounting_coa_id       := NULL;
125307 l_adr_flexfield_segment_code  := NULL;
125308 l_adr_flex_value_set_id       := NULL;
125309 l_adr_value_type_code         := NULL;
125310 l_adr_value_combination_id    := NULL;
125311 l_adr_value_segment_code      := NULL;
125312 
125313 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
125314 l_bflow_class_code           := '';    -- 4219869 Business Flow
125315 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
125316 l_budgetary_control_flag     := 'N';
125317 
125318 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
125319 l_bflow_applied_to_amt       := NULL; -- 5132302
125320 l_entered_amt_idx            := NULL;          -- 4262811
125321 l_accted_amt_idx             := NULL;          -- 4262811
125322 l_acc_rev_flag               := NULL;          -- 4262811
125323 l_accrual_line_num           := NULL;          -- 4262811
125324 l_tmp_amt                    := NULL;          -- 4262811
125325 --
125326  
125327 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
125328     l_balance_type_code <> 'B' THEN
125329 IF NVL(p_source_24,9E125) =  5
125330  THEN 
125331 
125332    --
125333    XLA_AE_LINES_PKG.SetNewLine;
125334 
125335    p_balance_type_code          := l_balance_type_code;
125336    -- set the flag so later we will know whether the gain loss line needs to be created
125337    
125338    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
125339      p_actual_flag :='A';
125340    END IF;
125341 
125342    --
125343    -- bulk performance
125344    --
125345    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
125346                                       p_header_num   => 0); -- 4262811
125347    --
125348    -- set accounting line options
125349    --
125350    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
125351            p_natural_side_code          => 'D'
125352          , p_gain_or_loss_flag          => 'N'
125353          , p_gl_transfer_mode_code      => 'S'
125354          , p_acct_entry_type_code       => 'A'
125355          , p_switch_side_flag           => 'Y'
125356          , p_merge_duplicate_code       => 'N'
125357          );
125358    --
125359    l_acc_rev_natural_side_code := 'C';  -- 4262811
125360    -- 
125361    --
125362    -- set accounting line type info
125363    --
125364    xla_ae_lines_pkg.SetAcctLineType
125365       (p_component_type             => l_component_type
125366       ,p_event_type_code            => l_event_type_code
125367       ,p_line_definition_owner_code => l_line_definition_owner_code
125368       ,p_line_definition_code       => l_line_definition_code
125369       ,p_accounting_line_code       => l_component_code
125370       ,p_accounting_line_type_code  => l_component_type_code
125371       ,p_accounting_line_appl_id    => l_component_appl_id
125372       ,p_amb_context_code           => l_amb_context_code
125373       ,p_entity_code                => l_entity_code
125374       ,p_event_class_code           => l_event_class_code);
125375    --
125376    -- set accounting class
125377    --
125378    xla_ae_lines_pkg.SetAcctClass(
125379            p_accounting_class_code  => 'RECEIVING_INSPECTION'
125380          , p_ae_header_id           => l_ae_header_id
125381          );
125382 
125383    --
125384    -- set rounding class
125385    --
125386    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
125387                       'RECEIVING_INSPECTION';
125388 
125389    --
125390    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
125391    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
125392    --
125393    -- bulk performance
125394    --
125395    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
125396 
125397    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
125398       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
125399 
125400    -- 4955764
125401    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125402       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
125403 
125404    -- 4458381 Public Sector Enh
125405    
125406    --
125407    -- set accounting attributes for the line type
125408    --
125409    l_entered_amt_idx := 3;
125410    l_accted_amt_idx  := 8;
125411    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
125412    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
125413    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
125414    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
125415    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
125416    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
125417    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
125418    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
125419    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
125420    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
125421    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
125422    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
125423    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
125424    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
125425    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
125426    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
125427    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
125428 
125429    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
125430    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
125431 
125432    ---------------------------------------------------------------------------------------------------------------
125433    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
125434    ---------------------------------------------------------------------------------------------------------------
125435    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
125436 
125437    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
125438    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
125439 
125440    IF xla_accounting_cache_pkg.GetValueChar
125441          (p_source_code         => 'LEDGER_CATEGORY_CODE'
125442          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
125443    AND l_bflow_method_code = 'PRIOR_ENTRY'
125444 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
125445    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
125446          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
125447        )
125448    THEN
125449          xla_ae_lines_pkg.BflowUpgEntry
125450            (p_business_method_code    => l_bflow_method_code
125451            ,p_business_class_code     => l_bflow_class_code
125452            ,p_balance_type            => l_balance_type_code);
125453    ELSE
125454       NULL;
125455 -- No business flow processing for business flow method of NONE.
125456    END IF;
125457 
125458    --
125459    -- call analytical criteria
125460    --
125461    
125462    --
125463    -- call description
125464    --
125465    -- No description or it is inherited.
125466    --
125467    -- call ADRs
125468    -- Bug 4922099
125469    --
125470    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
125471         (NVL(l_actual_upg_option, 'N') = 'O') OR
125472         (NVL(l_enc_upg_option, 'N') = 'O')
125473       )
125474    THEN
125475    NULL;
125476    --
125477    --
125478    
125479   l_ccid := AcctDerRule_4(
125480            p_application_id           => p_application_id
125481          , p_ae_header_id             => l_ae_header_id 
125482 , p_source_4 => p_source_4
125483          , x_transaction_coa_id       => l_adr_transaction_coa_id
125484          , x_accounting_coa_id        => l_adr_accounting_coa_id
125485          , x_value_type_code          => l_adr_value_type_code
125486          , p_side                     => 'NA'
125487    );
125488 
125489    xla_ae_lines_pkg.set_ccid(
125490     p_code_combination_id          => l_ccid
125491   , p_value_type_code              => l_adr_value_type_code
125492   , p_transaction_coa_id           => l_adr_transaction_coa_id
125493   , p_accounting_coa_id            => l_adr_accounting_coa_id
125494   , p_adr_code                     => 'CST_DEFAULT'
125495   , p_adr_type_code                => 'S'
125496   , p_component_type               => l_component_type
125497   , p_component_code               => l_component_code
125498   , p_component_type_code          => l_component_type_code
125499   , p_component_appl_id            => l_component_appl_id
125500   , p_amb_context_code             => l_amb_context_code
125501   , p_side                         => 'NA'
125502   );
125503 
125504 
125505    --
125506    --
125507    END IF;
125508    --
125509    -- Bug 4922099
125510    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
125511           (NVL(l_enc_upg_option, 'N') = 'O')
125512         ) AND
125513         (l_bflow_method_code = 'PRIOR_ENTRY')
125514       )
125515    THEN
125516       IF
125517       --
125518       1 = 2
125519       --
125520       THEN
125521       xla_accounting_err_pkg.build_message
125522                                     (p_appli_s_name            => 'XLA'
125523                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
125524                                     ,p_token_1                 => 'LINE_NUMBER'
125525                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
125526                                     ,p_token_2                 => 'LINE_TYPE_NAME'
125527                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
125528                                                                              l_component_type
125529                                                                             ,l_component_code
125530                                                                             ,l_component_type_code
125531                                                                             ,l_component_appl_id
125532                                                                             ,l_amb_context_code
125533                                                                             ,l_entity_code
125534                                                                             ,l_event_class_code
125535                                                                            )
125536                                     ,p_token_3                 => 'OWNER'
125537                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
125538                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
125539                                                                           ,p_lookup_code    => l_component_type_code
125540                                                                          )
125541                                     ,p_token_4                 => 'PRODUCT_NAME'
125542                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
125543                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
125544                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
125545                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
125546                                     ,p_ae_header_id            =>  NULL
125547                                        );
125548 
125549         IF (C_LEVEL_ERROR>= g_log_level) THEN
125550                  trace
125551                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
125552                       ,p_level    => C_LEVEL_ERROR
125553                       ,p_module   => l_log_module);
125554         END IF;
125555       END IF;
125556    END IF;
125557    --
125558    --
125559    ------------------------------------------------------------------------------------------------
125560    -- 4219869 Business Flow
125561    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
125562    -- Prior Entry.  Currently, the following code is always generated.
125563    ------------------------------------------------------------------------------------------------
125564    XLA_AE_LINES_PKG.ValidateCurrentLine;
125565 
125566    ------------------------------------------------------------------------------------
125567    -- 4219869 Business Flow
125568    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
125569    ------------------------------------------------------------------------------------
125570    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
125571 
125572    ----------------------------------------------------------------------------------
125573    -- 4219869 Business Flow
125574    -- Update journal entry status -- Need to generate this within IF <condition>
125575    ----------------------------------------------------------------------------------
125576    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
125577          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
125578          ,p_balance_type_code => l_balance_type_code
125579          );
125580 
125581    -------------------------------------------------------------------------------------------
125582    -- 4262811 - Generate the Accrual Reversal lines
125583    -------------------------------------------------------------------------------------------
125584    BEGIN
125585       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
125586                               (g_array_event(p_event_id).array_value_num('header_index'));
125587       IF l_acc_rev_flag IS NULL THEN
125588          l_acc_rev_flag := 'N';
125589       END IF;
125590    EXCEPTION
125591       WHEN OTHERS THEN
125592          l_acc_rev_flag := 'N';
125593    END;
125594    --
125595    IF (l_acc_rev_flag = 'Y') THEN
125596 
125597        -- 4645092  ------------------------------------------------------------------------------
125598        -- To allow MPA report to determine if it should generate report process
125599        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
125600        ------------------------------------------------------------------------------------------
125601 
125602        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
125603        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
125604    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
125605    -- call ADRs
125606    -- Bug 4922099
125607    --
125608    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
125609         (NVL(l_actual_upg_option, 'N') = 'O') OR
125610         (NVL(l_enc_upg_option, 'N') = 'O')
125611       )
125612    THEN
125613    NULL;
125614    --
125615    --
125616    
125617   l_ccid := AcctDerRule_4(
125618            p_application_id           => p_application_id
125619          , p_ae_header_id             => l_ae_header_id 
125620 , p_source_4 => p_source_4
125621          , x_transaction_coa_id       => l_adr_transaction_coa_id
125622          , x_accounting_coa_id        => l_adr_accounting_coa_id
125623          , x_value_type_code          => l_adr_value_type_code
125624          , p_side                     => 'NA'
125625    );
125626 
125627    xla_ae_lines_pkg.set_ccid(
125628     p_code_combination_id          => l_ccid
125629   , p_value_type_code              => l_adr_value_type_code
125630   , p_transaction_coa_id           => l_adr_transaction_coa_id
125631   , p_accounting_coa_id            => l_adr_accounting_coa_id
125632   , p_adr_code                     => 'CST_DEFAULT'
125633   , p_adr_type_code                => 'S'
125634   , p_component_type               => l_component_type
125635   , p_component_code               => l_component_code
125636   , p_component_type_code          => l_component_type_code
125637   , p_component_appl_id            => l_component_appl_id
125638   , p_amb_context_code             => l_amb_context_code
125639   , p_side                         => 'NA'
125640   );
125641 
125642 
125643    --
125644    --
125645    END IF;
125646 
125647        --
125648        -- Update the line information that should be overwritten
125649        --
125650        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
125651                                          p_header_num   => 1);
125652        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
125653 
125654        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
125655 
125656        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
125657           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
125658        END IF;
125659 
125660       --
125661       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
125662       --
125663       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
125664           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
125665       ELSE
125666           ---------------------------------------------------------------------------------------------------
125667           -- 4262811a Switch Sign
125668           ---------------------------------------------------------------------------------------------------
125669           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
125670           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125671                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125672           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125673                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125674           -- 5132302
125675           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
125676                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125677 
125678       END IF;
125679 
125680       -- 4955764
125681       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125682       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
125683 
125684 
125685       XLA_AE_LINES_PKG.ValidateCurrentLine;
125686       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
125687 
125688       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
125689                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
125690                ,p_balance_type_code => l_balance_type_code);
125691 
125692    END IF;
125693 
125694    -----------------------------------------------------------------------------------------
125695    -- 4262811 Multiperiod Accounting
125696    -----------------------------------------------------------------------------------------
125697      -- No MPA option is assigned.
125698 
125699 
125700 END IF;
125701 END IF;
125702 --
125703 
125704 --
125705 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125706    trace
125707       (p_msg      => 'END of AcctLineType_227'
125708       ,p_level    => C_LEVEL_PROCEDURE
125709       ,p_module   => l_log_module);
125710 END IF;
125711 --
125712 EXCEPTION
125713   WHEN xla_exceptions_pkg.application_exception THEN
125714       RAISE;
125715   WHEN OTHERS THEN
125716        xla_exceptions_pkg.raise_message
125717            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_227');
125718 END AcctLineType_227;
125719 --
125720 
125721 ---------------------------------------
125722 --
125723 -- PRIVATE FUNCTION
125724 --         AcctLineType_228
125725 --
125726 ---------------------------------------
125727 PROCEDURE AcctLineType_228 (
125728   p_application_id        IN NUMBER
125729  ,p_event_id              IN NUMBER
125730  ,p_calculate_acctd_flag  IN VARCHAR2
125731  ,p_calculate_g_l_flag    IN VARCHAR2
125732  ,p_actual_flag           IN OUT VARCHAR2
125733  ,p_balance_type_code     OUT VARCHAR2
125734  ,p_gain_or_loss_ref      OUT VARCHAR2
125735  
125736 --Cost Management Default Account
125737  , p_source_4            IN NUMBER
125738 --Applied to Application ID
125739  , p_source_6            IN NUMBER
125740 --Applied to Distribution Link Type
125741  , p_source_7            IN VARCHAR2
125742 --Applied to Entity Code
125743  , p_source_8            IN VARCHAR2
125744 --Applied To Purchase Document Identifier
125745  , p_source_10            IN NUMBER
125746 --DISTRIBUTION_IDENTIFIER
125747  , p_source_11            IN NUMBER
125748 --Distribution Type
125749  , p_source_12            IN VARCHAR2
125750  , p_source_12_meaning    IN VARCHAR2
125751 --PO Budget Account
125752  , p_source_13            IN NUMBER
125753 --Encumbrance Reversal Amount Entered
125754  , p_source_14            IN NUMBER
125755 --Entered Currency Code
125756  , p_source_15            IN VARCHAR2
125757 --Transaction Encumbrance Reversal Amount
125758  , p_source_16            IN NUMBER
125759 --Entered Amount
125760  , p_source_18            IN NUMBER
125761 --Currency Conversion Date
125762  , p_source_19            IN DATE
125763 --Currency Conversion Rate
125764  , p_source_20            IN NUMBER
125765 --Currency Conversion Type
125766  , p_source_21            IN VARCHAR2
125767 --Accounted Amount
125768  , p_source_22            IN NUMBER
125769 --Purchasing Encumbrance Type Identifier
125770  , p_source_23            IN NUMBER
125771 --Accounting Line Type
125772  , p_source_24            IN NUMBER
125773 --Costing Encumbrance Upgrade Option
125774  , p_source_27            IN VARCHAR2
125775 --TXN_PO_DISTRIBUTION_ID
125776  , p_source_28            IN NUMBER
125777 )
125778 IS
125779 
125780 l_component_type              VARCHAR2(80);
125781 l_component_code              VARCHAR2(30);
125782 l_component_type_code         VARCHAR2(1);
125783 l_component_appl_id           INTEGER;
125784 l_amb_context_code            VARCHAR2(30);
125785 l_entity_code                 VARCHAR2(30);
125786 l_event_class_code            VARCHAR2(30);
125787 l_ae_header_id                NUMBER;
125788 l_event_type_code             VARCHAR2(30);
125789 l_line_definition_code        VARCHAR2(30);
125790 l_line_definition_owner_code  VARCHAR2(1);
125791 --
125792 -- adr variables
125793 l_segment                     VARCHAR2(30);
125794 l_ccid                        NUMBER;
125795 l_adr_transaction_coa_id      NUMBER;
125796 l_adr_accounting_coa_id       NUMBER;
125797 l_adr_flexfield_segment_code  VARCHAR2(30);
125798 l_adr_flex_value_set_id       NUMBER;
125799 l_adr_value_type_code         VARCHAR2(30);
125800 l_adr_value_combination_id    NUMBER;
125801 l_adr_value_segment_code      VARCHAR2(30);
125802 
125803 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
125804 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
125805 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
125806 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
125807 
125808 -- 4262811 Variables ------------------------------------------------------------------------------------------
125809 l_entered_amt_idx             NUMBER;
125810 l_accted_amt_idx              NUMBER;
125811 l_acc_rev_flag                VARCHAR2(1);
125812 l_accrual_line_num            NUMBER;
125813 l_tmp_amt                     NUMBER;
125814 l_acc_rev_natural_side_code   VARCHAR2(1);
125815 
125816 l_num_entries                 NUMBER;
125817 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
125818 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
125819 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
125820 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
125821 l_recog_line_1                NUMBER;
125822 l_recog_line_2                NUMBER;
125823 
125824 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
125825 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
125826 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
125827 
125828 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
125829 
125830 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
125831 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
125832 
125833 ---------------------------------------------------------------------------------------------------------------
125834 
125835 
125836 --
125837 -- bulk performance
125838 --
125839 l_balance_type_code           VARCHAR2(1);
125840 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
125841 l_log_module                  VARCHAR2(240);
125842 
125843 --
125844 -- Upgrade strategy
125845 --
125846 l_actual_upg_option           VARCHAR2(1);
125847 l_enc_upg_option           VARCHAR2(1);
125848 
125849 --
125850 BEGIN
125851 --
125852 IF g_log_enabled THEN
125853       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_228';
125854 END IF;
125855 --
125856 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125857 
125858       trace
125859          (p_msg      => 'BEGIN of AcctLineType_228'
125860          ,p_level    => C_LEVEL_PROCEDURE
125861          ,p_module   => l_log_module);
125862 
125863 END IF;
125864 --
125865 l_component_type             := 'AMB_JLT';
125866 l_component_code             := 'RECEIVING_INSPECTION';
125867 l_component_type_code        := 'S';
125868 l_component_appl_id          :=  707;
125869 l_amb_context_code           := 'DEFAULT';
125870 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
125871 l_event_class_code           := 'PURCHASE_ORDER';
125872 l_event_type_code            := 'PURCHASE_ORDER_ALL';
125873 l_line_definition_owner_code := 'S';
125874 l_line_definition_code       := 'PURCHASE_ORDER';
125875 --
125876 l_balance_type_code          := 'A';
125877 l_segment                     := NULL;
125878 l_ccid                        := NULL;
125879 l_adr_transaction_coa_id      := NULL;
125880 l_adr_accounting_coa_id       := NULL;
125881 l_adr_flexfield_segment_code  := NULL;
125882 l_adr_flex_value_set_id       := NULL;
125883 l_adr_value_type_code         := NULL;
125884 l_adr_value_combination_id    := NULL;
125885 l_adr_value_segment_code      := NULL;
125886 
125887 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
125888 l_bflow_class_code           := '';    -- 4219869 Business Flow
125889 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
125890 l_budgetary_control_flag     := 'N';
125891 
125892 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
125893 l_bflow_applied_to_amt       := NULL; -- 5132302
125894 l_entered_amt_idx            := NULL;          -- 4262811
125895 l_accted_amt_idx             := NULL;          -- 4262811
125896 l_acc_rev_flag               := NULL;          -- 4262811
125897 l_accrual_line_num           := NULL;          -- 4262811
125898 l_tmp_amt                    := NULL;          -- 4262811
125899 --
125900  
125901 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
125902     l_balance_type_code <> 'B' THEN
125903 IF NVL(p_source_24,9E125) =  5
125904  THEN 
125905 
125906    --
125907    XLA_AE_LINES_PKG.SetNewLine;
125908 
125909    p_balance_type_code          := l_balance_type_code;
125910    -- set the flag so later we will know whether the gain loss line needs to be created
125911    
125912    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
125913      p_actual_flag :='A';
125914    END IF;
125915 
125916    --
125917    -- bulk performance
125918    --
125919    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
125920                                       p_header_num   => 0); -- 4262811
125921    --
125922    -- set accounting line options
125923    --
125924    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
125925            p_natural_side_code          => 'D'
125926          , p_gain_or_loss_flag          => 'N'
125927          , p_gl_transfer_mode_code      => 'S'
125928          , p_acct_entry_type_code       => 'A'
125929          , p_switch_side_flag           => 'Y'
125930          , p_merge_duplicate_code       => 'N'
125931          );
125932    --
125933    l_acc_rev_natural_side_code := 'C';  -- 4262811
125934    -- 
125935    --
125936    -- set accounting line type info
125937    --
125938    xla_ae_lines_pkg.SetAcctLineType
125939       (p_component_type             => l_component_type
125940       ,p_event_type_code            => l_event_type_code
125941       ,p_line_definition_owner_code => l_line_definition_owner_code
125942       ,p_line_definition_code       => l_line_definition_code
125943       ,p_accounting_line_code       => l_component_code
125944       ,p_accounting_line_type_code  => l_component_type_code
125945       ,p_accounting_line_appl_id    => l_component_appl_id
125946       ,p_amb_context_code           => l_amb_context_code
125947       ,p_entity_code                => l_entity_code
125948       ,p_event_class_code           => l_event_class_code);
125949    --
125950    -- set accounting class
125951    --
125952    xla_ae_lines_pkg.SetAcctClass(
125953            p_accounting_class_code  => 'RECEIVING_INSPECTION'
125954          , p_ae_header_id           => l_ae_header_id
125955          );
125956 
125957    --
125958    -- set rounding class
125959    --
125960    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
125961                       'RECEIVING_INSPECTION';
125962 
125963    --
125964    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
125965    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
125966    --
125967    -- bulk performance
125968    --
125969    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
125970 
125971    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
125972       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
125973 
125974    -- 4955764
125975    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125976       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
125977 
125978    -- 4458381 Public Sector Enh
125979    
125980    --
125981    -- set accounting attributes for the line type
125982    --
125983    l_entered_amt_idx := 17;
125984    l_accted_amt_idx  := 22;
125985    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
125986    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
125987    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
125988    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
125989    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
125990    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
125991    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
125992    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
125993    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
125994    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
125995    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
125996    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
125997    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
125998    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
125999    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
126000    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
126001    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
126002    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
126003    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
126004    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
126005    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
126006    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
126007    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
126008    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
126009    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
126010    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
126011    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
126012    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
126013    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
126014    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
126015    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
126016    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
126017    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
126018    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
126019    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
126020    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
126021    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
126022    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
126023    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
126024    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
126025    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
126026    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
126027    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
126028    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
126029    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
126030    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
126031    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
126032    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
126033    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
126034 
126035    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
126036    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
126037 
126038    ---------------------------------------------------------------------------------------------------------------
126039    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
126040    ---------------------------------------------------------------------------------------------------------------
126041    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
126042 
126043    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
126044    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
126045 
126046    IF xla_accounting_cache_pkg.GetValueChar
126047          (p_source_code         => 'LEDGER_CATEGORY_CODE'
126048          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
126049    AND l_bflow_method_code = 'PRIOR_ENTRY'
126050 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
126051    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
126052          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
126053        )
126054    THEN
126055          xla_ae_lines_pkg.BflowUpgEntry
126056            (p_business_method_code    => l_bflow_method_code
126057            ,p_business_class_code     => l_bflow_class_code
126058            ,p_balance_type            => l_balance_type_code);
126059    ELSE
126060       NULL;
126061 -- No business flow processing for business flow method of NONE.
126062    END IF;
126063 
126064    --
126065    -- call analytical criteria
126066    --
126067    
126068    --
126069    -- call description
126070    --
126071    -- No description or it is inherited.
126072    --
126073    -- call ADRs
126074    -- Bug 4922099
126075    --
126076    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
126077         (NVL(l_actual_upg_option, 'N') = 'O') OR
126078         (NVL(l_enc_upg_option, 'N') = 'O')
126079       )
126080    THEN
126081    NULL;
126082    --
126083    --
126084    
126085   l_ccid := AcctDerRule_4(
126086            p_application_id           => p_application_id
126087          , p_ae_header_id             => l_ae_header_id 
126088 , p_source_4 => p_source_4
126089          , x_transaction_coa_id       => l_adr_transaction_coa_id
126090          , x_accounting_coa_id        => l_adr_accounting_coa_id
126091          , x_value_type_code          => l_adr_value_type_code
126092          , p_side                     => 'NA'
126093    );
126094 
126095    xla_ae_lines_pkg.set_ccid(
126096     p_code_combination_id          => l_ccid
126097   , p_value_type_code              => l_adr_value_type_code
126098   , p_transaction_coa_id           => l_adr_transaction_coa_id
126099   , p_accounting_coa_id            => l_adr_accounting_coa_id
126100   , p_adr_code                     => 'CST_DEFAULT'
126101   , p_adr_type_code                => 'S'
126102   , p_component_type               => l_component_type
126103   , p_component_code               => l_component_code
126104   , p_component_type_code          => l_component_type_code
126105   , p_component_appl_id            => l_component_appl_id
126106   , p_amb_context_code             => l_amb_context_code
126107   , p_side                         => 'NA'
126108   );
126109 
126110 
126111    --
126112    --
126113    END IF;
126114    --
126115    -- Bug 4922099
126116    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
126117           (NVL(l_enc_upg_option, 'N') = 'O')
126118         ) AND
126119         (l_bflow_method_code = 'PRIOR_ENTRY')
126120       )
126121    THEN
126122       IF
126123       --
126124       1 = 2
126125       --
126126       THEN
126127       xla_accounting_err_pkg.build_message
126128                                     (p_appli_s_name            => 'XLA'
126129                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
126130                                     ,p_token_1                 => 'LINE_NUMBER'
126131                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
126132                                     ,p_token_2                 => 'LINE_TYPE_NAME'
126133                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
126134                                                                              l_component_type
126135                                                                             ,l_component_code
126136                                                                             ,l_component_type_code
126137                                                                             ,l_component_appl_id
126138                                                                             ,l_amb_context_code
126139                                                                             ,l_entity_code
126140                                                                             ,l_event_class_code
126141                                                                            )
126142                                     ,p_token_3                 => 'OWNER'
126143                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
126144                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
126145                                                                           ,p_lookup_code    => l_component_type_code
126146                                                                          )
126147                                     ,p_token_4                 => 'PRODUCT_NAME'
126148                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
126149                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
126150                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
126151                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
126152                                     ,p_ae_header_id            =>  NULL
126153                                        );
126154 
126155         IF (C_LEVEL_ERROR>= g_log_level) THEN
126156                  trace
126157                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
126158                       ,p_level    => C_LEVEL_ERROR
126159                       ,p_module   => l_log_module);
126160         END IF;
126161       END IF;
126162    END IF;
126163    --
126164    --
126165    ------------------------------------------------------------------------------------------------
126166    -- 4219869 Business Flow
126167    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
126168    -- Prior Entry.  Currently, the following code is always generated.
126169    ------------------------------------------------------------------------------------------------
126170    XLA_AE_LINES_PKG.ValidateCurrentLine;
126171 
126172    ------------------------------------------------------------------------------------
126173    -- 4219869 Business Flow
126174    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
126175    ------------------------------------------------------------------------------------
126176    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126177 
126178    ----------------------------------------------------------------------------------
126179    -- 4219869 Business Flow
126180    -- Update journal entry status -- Need to generate this within IF <condition>
126181    ----------------------------------------------------------------------------------
126182    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126183          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
126184          ,p_balance_type_code => l_balance_type_code
126185          );
126186 
126187    -------------------------------------------------------------------------------------------
126188    -- 4262811 - Generate the Accrual Reversal lines
126189    -------------------------------------------------------------------------------------------
126190    BEGIN
126191       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
126192                               (g_array_event(p_event_id).array_value_num('header_index'));
126193       IF l_acc_rev_flag IS NULL THEN
126194          l_acc_rev_flag := 'N';
126195       END IF;
126196    EXCEPTION
126197       WHEN OTHERS THEN
126198          l_acc_rev_flag := 'N';
126199    END;
126200    --
126201    IF (l_acc_rev_flag = 'Y') THEN
126202 
126203        -- 4645092  ------------------------------------------------------------------------------
126204        -- To allow MPA report to determine if it should generate report process
126205        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
126206        ------------------------------------------------------------------------------------------
126207 
126208        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
126209        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
126210    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
126211    -- call ADRs
126212    -- Bug 4922099
126213    --
126214    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
126215         (NVL(l_actual_upg_option, 'N') = 'O') OR
126216         (NVL(l_enc_upg_option, 'N') = 'O')
126217       )
126218    THEN
126219    NULL;
126220    --
126221    --
126222    
126223   l_ccid := AcctDerRule_4(
126224            p_application_id           => p_application_id
126225          , p_ae_header_id             => l_ae_header_id 
126226 , p_source_4 => p_source_4
126227          , x_transaction_coa_id       => l_adr_transaction_coa_id
126228          , x_accounting_coa_id        => l_adr_accounting_coa_id
126229          , x_value_type_code          => l_adr_value_type_code
126230          , p_side                     => 'NA'
126231    );
126232 
126233    xla_ae_lines_pkg.set_ccid(
126234     p_code_combination_id          => l_ccid
126235   , p_value_type_code              => l_adr_value_type_code
126236   , p_transaction_coa_id           => l_adr_transaction_coa_id
126237   , p_accounting_coa_id            => l_adr_accounting_coa_id
126238   , p_adr_code                     => 'CST_DEFAULT'
126239   , p_adr_type_code                => 'S'
126240   , p_component_type               => l_component_type
126241   , p_component_code               => l_component_code
126242   , p_component_type_code          => l_component_type_code
126243   , p_component_appl_id            => l_component_appl_id
126244   , p_amb_context_code             => l_amb_context_code
126245   , p_side                         => 'NA'
126246   );
126247 
126248 
126249    --
126250    --
126251    END IF;
126252 
126253        --
126254        -- Update the line information that should be overwritten
126255        --
126256        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
126257                                          p_header_num   => 1);
126258        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
126259 
126260        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
126261 
126262        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
126263           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
126264        END IF;
126265 
126266       --
126267       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
126268       --
126269       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
126270           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
126271       ELSE
126272           ---------------------------------------------------------------------------------------------------
126273           -- 4262811a Switch Sign
126274           ---------------------------------------------------------------------------------------------------
126275           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
126276           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126277                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126278           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126279                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126280           -- 5132302
126281           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
126282                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126283 
126284       END IF;
126285 
126286       -- 4955764
126287       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126288       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
126289 
126290 
126291       XLA_AE_LINES_PKG.ValidateCurrentLine;
126292       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126293 
126294       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126295                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
126296                ,p_balance_type_code => l_balance_type_code);
126297 
126298    END IF;
126299 
126300    -----------------------------------------------------------------------------------------
126301    -- 4262811 Multiperiod Accounting
126302    -----------------------------------------------------------------------------------------
126303      -- No MPA option is assigned.
126304 
126305 
126306 END IF;
126307 END IF;
126308 --
126309 
126310 --
126311 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126312    trace
126313       (p_msg      => 'END of AcctLineType_228'
126314       ,p_level    => C_LEVEL_PROCEDURE
126315       ,p_module   => l_log_module);
126316 END IF;
126317 --
126318 EXCEPTION
126319   WHEN xla_exceptions_pkg.application_exception THEN
126320       RAISE;
126321   WHEN OTHERS THEN
126322        xla_exceptions_pkg.raise_message
126323            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_228');
126324 END AcctLineType_228;
126325 --
126326 
126327 ---------------------------------------
126328 --
126329 -- PRIVATE FUNCTION
126330 --         AcctLineType_229
126331 --
126332 ---------------------------------------
126333 PROCEDURE AcctLineType_229 (
126334   p_application_id        IN NUMBER
126335  ,p_event_id              IN NUMBER
126336  ,p_calculate_acctd_flag  IN VARCHAR2
126337  ,p_calculate_g_l_flag    IN VARCHAR2
126338  ,p_actual_flag           IN OUT VARCHAR2
126339  ,p_balance_type_code     OUT VARCHAR2
126340  ,p_gain_or_loss_ref      OUT VARCHAR2
126341  
126342 --Cost Management Default Account
126343  , p_source_4            IN NUMBER
126344 --Receiving Accounting Line Type
126345  , p_source_5            IN VARCHAR2
126346 --DISTRIBUTION_IDENTIFIER
126347  , p_source_11            IN NUMBER
126348 --Distribution Type
126349  , p_source_12            IN VARCHAR2
126350  , p_source_12_meaning    IN VARCHAR2
126351 --Entered Amount
126352  , p_source_18            IN NUMBER
126353 --Accounted Amount
126354  , p_source_22            IN NUMBER
126355 --Entered Currency Code
126356  , p_source_32            IN VARCHAR2
126357 --Currency Conversion Date
126358  , p_source_33            IN DATE
126359 --Currency Conversion Rate
126360  , p_source_34            IN NUMBER
126361 )
126362 IS
126363 
126364 l_component_type              VARCHAR2(80);
126365 l_component_code              VARCHAR2(30);
126366 l_component_type_code         VARCHAR2(1);
126367 l_component_appl_id           INTEGER;
126368 l_amb_context_code            VARCHAR2(30);
126369 l_entity_code                 VARCHAR2(30);
126370 l_event_class_code            VARCHAR2(30);
126371 l_ae_header_id                NUMBER;
126372 l_event_type_code             VARCHAR2(30);
126373 l_line_definition_code        VARCHAR2(30);
126374 l_line_definition_owner_code  VARCHAR2(1);
126375 --
126376 -- adr variables
126377 l_segment                     VARCHAR2(30);
126378 l_ccid                        NUMBER;
126379 l_adr_transaction_coa_id      NUMBER;
126380 l_adr_accounting_coa_id       NUMBER;
126381 l_adr_flexfield_segment_code  VARCHAR2(30);
126382 l_adr_flex_value_set_id       NUMBER;
126383 l_adr_value_type_code         VARCHAR2(30);
126384 l_adr_value_combination_id    NUMBER;
126385 l_adr_value_segment_code      VARCHAR2(30);
126386 
126387 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
126388 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
126389 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
126390 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
126391 
126392 -- 4262811 Variables ------------------------------------------------------------------------------------------
126393 l_entered_amt_idx             NUMBER;
126394 l_accted_amt_idx              NUMBER;
126395 l_acc_rev_flag                VARCHAR2(1);
126396 l_accrual_line_num            NUMBER;
126397 l_tmp_amt                     NUMBER;
126398 l_acc_rev_natural_side_code   VARCHAR2(1);
126399 
126400 l_num_entries                 NUMBER;
126401 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
126402 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
126403 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
126404 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
126405 l_recog_line_1                NUMBER;
126406 l_recog_line_2                NUMBER;
126407 
126408 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
126409 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
126410 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
126411 
126412 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
126413 
126414 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
126415 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
126416 
126417 ---------------------------------------------------------------------------------------------------------------
126418 
126419 
126420 --
126421 -- bulk performance
126422 --
126423 l_balance_type_code           VARCHAR2(1);
126424 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
126425 l_log_module                  VARCHAR2(240);
126426 
126427 --
126428 -- Upgrade strategy
126429 --
126430 l_actual_upg_option           VARCHAR2(1);
126431 l_enc_upg_option           VARCHAR2(1);
126432 
126433 --
126434 BEGIN
126435 --
126436 IF g_log_enabled THEN
126437       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_229';
126438 END IF;
126439 --
126440 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126441 
126442       trace
126443          (p_msg      => 'BEGIN of AcctLineType_229'
126444          ,p_level    => C_LEVEL_PROCEDURE
126445          ,p_module   => l_log_module);
126446 
126447 END IF;
126448 --
126449 l_component_type             := 'AMB_JLT';
126450 l_component_code             := 'RECEIVING_INSPECTION';
126451 l_component_type_code        := 'S';
126452 l_component_appl_id          :=  707;
126453 l_amb_context_code           := 'DEFAULT';
126454 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
126455 l_event_class_code           := 'LDD_COST_ADJ_DEL';
126456 l_event_type_code            := 'LDD_COST_ADJ_DEL_ALL';
126457 l_line_definition_owner_code := 'S';
126458 l_line_definition_code       := 'LDD_COST_ADJ_DEL';
126459 --
126460 l_balance_type_code          := 'A';
126461 l_segment                     := NULL;
126462 l_ccid                        := NULL;
126463 l_adr_transaction_coa_id      := NULL;
126464 l_adr_accounting_coa_id       := NULL;
126465 l_adr_flexfield_segment_code  := NULL;
126466 l_adr_flex_value_set_id       := NULL;
126467 l_adr_value_type_code         := NULL;
126468 l_adr_value_combination_id    := NULL;
126469 l_adr_value_segment_code      := NULL;
126470 
126471 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
126472 l_bflow_class_code           := '';    -- 4219869 Business Flow
126473 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
126474 l_budgetary_control_flag     := 'N';
126475 
126476 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
126477 l_bflow_applied_to_amt       := NULL; -- 5132302
126478 l_entered_amt_idx            := NULL;          -- 4262811
126479 l_accted_amt_idx             := NULL;          -- 4262811
126480 l_acc_rev_flag               := NULL;          -- 4262811
126481 l_accrual_line_num           := NULL;          -- 4262811
126482 l_tmp_amt                    := NULL;          -- 4262811
126483 --
126484  
126485 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
126486     l_balance_type_code <> 'B' THEN
126487 IF NVL(p_source_5,'
126488 ') =  'Receiving Inspection'
126489  THEN 
126490 
126491    --
126492    XLA_AE_LINES_PKG.SetNewLine;
126493 
126494    p_balance_type_code          := l_balance_type_code;
126495    -- set the flag so later we will know whether the gain loss line needs to be created
126496    
126497    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
126498      p_actual_flag :='A';
126499    END IF;
126500 
126501    --
126502    -- bulk performance
126503    --
126504    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
126505                                       p_header_num   => 0); -- 4262811
126506    --
126507    -- set accounting line options
126508    --
126509    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
126510            p_natural_side_code          => 'D'
126511          , p_gain_or_loss_flag          => 'N'
126512          , p_gl_transfer_mode_code      => 'S'
126513          , p_acct_entry_type_code       => 'A'
126514          , p_switch_side_flag           => 'Y'
126515          , p_merge_duplicate_code       => 'N'
126516          );
126517    --
126518    l_acc_rev_natural_side_code := 'C';  -- 4262811
126519    -- 
126520    --
126521    -- set accounting line type info
126522    --
126523    xla_ae_lines_pkg.SetAcctLineType
126524       (p_component_type             => l_component_type
126525       ,p_event_type_code            => l_event_type_code
126526       ,p_line_definition_owner_code => l_line_definition_owner_code
126527       ,p_line_definition_code       => l_line_definition_code
126528       ,p_accounting_line_code       => l_component_code
126529       ,p_accounting_line_type_code  => l_component_type_code
126530       ,p_accounting_line_appl_id    => l_component_appl_id
126531       ,p_amb_context_code           => l_amb_context_code
126532       ,p_entity_code                => l_entity_code
126533       ,p_event_class_code           => l_event_class_code);
126534    --
126535    -- set accounting class
126536    --
126537    xla_ae_lines_pkg.SetAcctClass(
126538            p_accounting_class_code  => 'RECEIVING_INSPECTION'
126539          , p_ae_header_id           => l_ae_header_id
126540          );
126541 
126542    --
126543    -- set rounding class
126544    --
126545    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
126546                       'RECEIVING_INSPECTION';
126547 
126548    --
126549    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
126550    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
126551    --
126552    -- bulk performance
126553    --
126554    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
126555 
126556    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
126557       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
126558 
126559    -- 4955764
126560    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126561       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
126562 
126563    -- 4458381 Public Sector Enh
126564    
126565    --
126566    -- set accounting attributes for the line type
126567    --
126568    l_entered_amt_idx := 3;
126569    l_accted_amt_idx  := 7;
126570    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
126571    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
126572    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
126573    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
126574    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
126575    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
126576    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
126577    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
126578    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
126579    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
126580    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
126581    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
126582    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
126583    l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
126584    l_rec_acct_attrs.array_num_value(7)  := p_source_22;
126585 
126586    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
126587    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
126588 
126589    ---------------------------------------------------------------------------------------------------------------
126590    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
126591    ---------------------------------------------------------------------------------------------------------------
126592    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
126593 
126594    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
126595    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
126596 
126597    IF xla_accounting_cache_pkg.GetValueChar
126598          (p_source_code         => 'LEDGER_CATEGORY_CODE'
126599          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
126600    AND l_bflow_method_code = 'PRIOR_ENTRY'
126601 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
126602    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
126603          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
126604        )
126605    THEN
126606          xla_ae_lines_pkg.BflowUpgEntry
126607            (p_business_method_code    => l_bflow_method_code
126608            ,p_business_class_code     => l_bflow_class_code
126609            ,p_balance_type            => l_balance_type_code);
126610    ELSE
126611       NULL;
126612 -- No business flow processing for business flow method of NONE.
126613    END IF;
126614 
126615    --
126616    -- call analytical criteria
126617    --
126618    
126619    --
126620    -- call description
126621    --
126622    -- No description or it is inherited.
126623    --
126624    -- call ADRs
126625    -- Bug 4922099
126626    --
126627    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
126628         (NVL(l_actual_upg_option, 'N') = 'O') OR
126629         (NVL(l_enc_upg_option, 'N') = 'O')
126630       )
126631    THEN
126632    NULL;
126633    --
126634    --
126635    
126636   l_ccid := AcctDerRule_4(
126637            p_application_id           => p_application_id
126638          , p_ae_header_id             => l_ae_header_id 
126639 , p_source_4 => p_source_4
126640          , x_transaction_coa_id       => l_adr_transaction_coa_id
126641          , x_accounting_coa_id        => l_adr_accounting_coa_id
126642          , x_value_type_code          => l_adr_value_type_code
126643          , p_side                     => 'NA'
126644    );
126645 
126646    xla_ae_lines_pkg.set_ccid(
126647     p_code_combination_id          => l_ccid
126648   , p_value_type_code              => l_adr_value_type_code
126649   , p_transaction_coa_id           => l_adr_transaction_coa_id
126650   , p_accounting_coa_id            => l_adr_accounting_coa_id
126651   , p_adr_code                     => 'CST_DEFAULT'
126652   , p_adr_type_code                => 'S'
126653   , p_component_type               => l_component_type
126654   , p_component_code               => l_component_code
126655   , p_component_type_code          => l_component_type_code
126656   , p_component_appl_id            => l_component_appl_id
126657   , p_amb_context_code             => l_amb_context_code
126658   , p_side                         => 'NA'
126659   );
126660 
126661 
126662    --
126663    --
126664    END IF;
126665    --
126666    -- Bug 4922099
126667    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
126668           (NVL(l_enc_upg_option, 'N') = 'O')
126669         ) AND
126670         (l_bflow_method_code = 'PRIOR_ENTRY')
126671       )
126672    THEN
126673       IF
126674       --
126675       1 = 2
126676       --
126677       THEN
126678       xla_accounting_err_pkg.build_message
126679                                     (p_appli_s_name            => 'XLA'
126680                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
126681                                     ,p_token_1                 => 'LINE_NUMBER'
126682                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
126683                                     ,p_token_2                 => 'LINE_TYPE_NAME'
126684                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
126685                                                                              l_component_type
126686                                                                             ,l_component_code
126687                                                                             ,l_component_type_code
126688                                                                             ,l_component_appl_id
126689                                                                             ,l_amb_context_code
126690                                                                             ,l_entity_code
126691                                                                             ,l_event_class_code
126692                                                                            )
126693                                     ,p_token_3                 => 'OWNER'
126694                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
126695                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
126696                                                                           ,p_lookup_code    => l_component_type_code
126697                                                                          )
126698                                     ,p_token_4                 => 'PRODUCT_NAME'
126699                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
126700                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
126701                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
126702                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
126703                                     ,p_ae_header_id            =>  NULL
126704                                        );
126705 
126706         IF (C_LEVEL_ERROR>= g_log_level) THEN
126707                  trace
126708                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
126709                       ,p_level    => C_LEVEL_ERROR
126710                       ,p_module   => l_log_module);
126711         END IF;
126712       END IF;
126713    END IF;
126714    --
126715    --
126716    ------------------------------------------------------------------------------------------------
126717    -- 4219869 Business Flow
126718    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
126719    -- Prior Entry.  Currently, the following code is always generated.
126720    ------------------------------------------------------------------------------------------------
126721    XLA_AE_LINES_PKG.ValidateCurrentLine;
126722 
126723    ------------------------------------------------------------------------------------
126724    -- 4219869 Business Flow
126725    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
126726    ------------------------------------------------------------------------------------
126727    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126728 
126729    ----------------------------------------------------------------------------------
126730    -- 4219869 Business Flow
126731    -- Update journal entry status -- Need to generate this within IF <condition>
126732    ----------------------------------------------------------------------------------
126733    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126734          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
126735          ,p_balance_type_code => l_balance_type_code
126736          );
126737 
126738    -------------------------------------------------------------------------------------------
126739    -- 4262811 - Generate the Accrual Reversal lines
126740    -------------------------------------------------------------------------------------------
126741    BEGIN
126742       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
126743                               (g_array_event(p_event_id).array_value_num('header_index'));
126744       IF l_acc_rev_flag IS NULL THEN
126745          l_acc_rev_flag := 'N';
126746       END IF;
126747    EXCEPTION
126748       WHEN OTHERS THEN
126749          l_acc_rev_flag := 'N';
126750    END;
126751    --
126752    IF (l_acc_rev_flag = 'Y') THEN
126753 
126754        -- 4645092  ------------------------------------------------------------------------------
126755        -- To allow MPA report to determine if it should generate report process
126756        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
126757        ------------------------------------------------------------------------------------------
126758 
126759        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
126760        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
126761    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
126762    -- call ADRs
126763    -- Bug 4922099
126764    --
126765    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
126766         (NVL(l_actual_upg_option, 'N') = 'O') OR
126767         (NVL(l_enc_upg_option, 'N') = 'O')
126768       )
126769    THEN
126770    NULL;
126771    --
126772    --
126773    
126774   l_ccid := AcctDerRule_4(
126775            p_application_id           => p_application_id
126776          , p_ae_header_id             => l_ae_header_id 
126777 , p_source_4 => p_source_4
126778          , x_transaction_coa_id       => l_adr_transaction_coa_id
126779          , x_accounting_coa_id        => l_adr_accounting_coa_id
126780          , x_value_type_code          => l_adr_value_type_code
126781          , p_side                     => 'NA'
126782    );
126783 
126784    xla_ae_lines_pkg.set_ccid(
126785     p_code_combination_id          => l_ccid
126786   , p_value_type_code              => l_adr_value_type_code
126787   , p_transaction_coa_id           => l_adr_transaction_coa_id
126788   , p_accounting_coa_id            => l_adr_accounting_coa_id
126789   , p_adr_code                     => 'CST_DEFAULT'
126790   , p_adr_type_code                => 'S'
126791   , p_component_type               => l_component_type
126792   , p_component_code               => l_component_code
126793   , p_component_type_code          => l_component_type_code
126794   , p_component_appl_id            => l_component_appl_id
126795   , p_amb_context_code             => l_amb_context_code
126796   , p_side                         => 'NA'
126797   );
126798 
126799 
126800    --
126801    --
126802    END IF;
126803 
126804        --
126805        -- Update the line information that should be overwritten
126806        --
126807        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
126808                                          p_header_num   => 1);
126809        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
126810 
126811        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
126812 
126813        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
126814           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
126815        END IF;
126816 
126817       --
126818       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
126819       --
126820       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
126821           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
126822       ELSE
126823           ---------------------------------------------------------------------------------------------------
126824           -- 4262811a Switch Sign
126825           ---------------------------------------------------------------------------------------------------
126826           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
126827           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126828                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126829           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126830                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126831           -- 5132302
126832           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
126833                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126834 
126835       END IF;
126836 
126837       -- 4955764
126838       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126839       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
126840 
126841 
126842       XLA_AE_LINES_PKG.ValidateCurrentLine;
126843       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126844 
126845       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126846                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
126847                ,p_balance_type_code => l_balance_type_code);
126848 
126849    END IF;
126850 
126851    -----------------------------------------------------------------------------------------
126852    -- 4262811 Multiperiod Accounting
126853    -----------------------------------------------------------------------------------------
126854      -- No MPA option is assigned.
126855 
126856 
126857 END IF;
126858 END IF;
126859 --
126860 
126861 --
126862 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126863    trace
126864       (p_msg      => 'END of AcctLineType_229'
126865       ,p_level    => C_LEVEL_PROCEDURE
126866       ,p_module   => l_log_module);
126867 END IF;
126868 --
126869 EXCEPTION
126870   WHEN xla_exceptions_pkg.application_exception THEN
126871       RAISE;
126872   WHEN OTHERS THEN
126873        xla_exceptions_pkg.raise_message
126874            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_229');
126875 END AcctLineType_229;
126876 --
126877 
126878 ---------------------------------------
126879 --
126880 -- PRIVATE FUNCTION
126881 --         AcctLineType_230
126882 --
126883 ---------------------------------------
126884 PROCEDURE AcctLineType_230 (
126885   p_application_id        IN NUMBER
126886  ,p_event_id              IN NUMBER
126887  ,p_calculate_acctd_flag  IN VARCHAR2
126888  ,p_calculate_g_l_flag    IN VARCHAR2
126889  ,p_actual_flag           IN OUT VARCHAR2
126890  ,p_balance_type_code     OUT VARCHAR2
126891  ,p_gain_or_loss_ref      OUT VARCHAR2
126892  
126893 --Cost Management Default Account
126894  , p_source_4            IN NUMBER
126895 --Receiving Accounting Line Type
126896  , p_source_5            IN VARCHAR2
126897 --DISTRIBUTION_IDENTIFIER
126898  , p_source_11            IN NUMBER
126899 --Distribution Type
126900  , p_source_12            IN VARCHAR2
126901  , p_source_12_meaning    IN VARCHAR2
126902 --Entered Amount
126903  , p_source_18            IN NUMBER
126904 --Accounted Amount
126905  , p_source_22            IN NUMBER
126906 --Entered Currency Code
126907  , p_source_32            IN VARCHAR2
126908 --Currency Conversion Date
126909  , p_source_33            IN DATE
126910 --Currency Conversion Rate
126911  , p_source_34            IN NUMBER
126912 --Currency Conversion Type
126913  , p_source_36            IN VARCHAR2
126914 )
126915 IS
126916 
126917 l_component_type              VARCHAR2(80);
126918 l_component_code              VARCHAR2(30);
126919 l_component_type_code         VARCHAR2(1);
126920 l_component_appl_id           INTEGER;
126921 l_amb_context_code            VARCHAR2(30);
126922 l_entity_code                 VARCHAR2(30);
126923 l_event_class_code            VARCHAR2(30);
126924 l_ae_header_id                NUMBER;
126925 l_event_type_code             VARCHAR2(30);
126926 l_line_definition_code        VARCHAR2(30);
126927 l_line_definition_owner_code  VARCHAR2(1);
126928 --
126929 -- adr variables
126930 l_segment                     VARCHAR2(30);
126931 l_ccid                        NUMBER;
126932 l_adr_transaction_coa_id      NUMBER;
126933 l_adr_accounting_coa_id       NUMBER;
126934 l_adr_flexfield_segment_code  VARCHAR2(30);
126935 l_adr_flex_value_set_id       NUMBER;
126936 l_adr_value_type_code         VARCHAR2(30);
126937 l_adr_value_combination_id    NUMBER;
126938 l_adr_value_segment_code      VARCHAR2(30);
126939 
126940 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
126941 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
126942 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
126943 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
126944 
126945 -- 4262811 Variables ------------------------------------------------------------------------------------------
126946 l_entered_amt_idx             NUMBER;
126947 l_accted_amt_idx              NUMBER;
126948 l_acc_rev_flag                VARCHAR2(1);
126949 l_accrual_line_num            NUMBER;
126950 l_tmp_amt                     NUMBER;
126951 l_acc_rev_natural_side_code   VARCHAR2(1);
126952 
126953 l_num_entries                 NUMBER;
126954 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
126955 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
126956 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
126957 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
126958 l_recog_line_1                NUMBER;
126959 l_recog_line_2                NUMBER;
126960 
126961 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
126962 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
126963 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
126964 
126965 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
126966 
126967 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
126968 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
126969 
126970 ---------------------------------------------------------------------------------------------------------------
126971 
126972 
126973 --
126974 -- bulk performance
126975 --
126976 l_balance_type_code           VARCHAR2(1);
126977 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
126978 l_log_module                  VARCHAR2(240);
126979 
126980 --
126981 -- Upgrade strategy
126982 --
126983 l_actual_upg_option           VARCHAR2(1);
126984 l_enc_upg_option           VARCHAR2(1);
126985 
126986 --
126987 BEGIN
126988 --
126989 IF g_log_enabled THEN
126990       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_230';
126991 END IF;
126992 --
126993 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126994 
126995       trace
126996          (p_msg      => 'BEGIN of AcctLineType_230'
126997          ,p_level    => C_LEVEL_PROCEDURE
126998          ,p_module   => l_log_module);
126999 
127000 END IF;
127001 --
127002 l_component_type             := 'AMB_JLT';
127003 l_component_code             := 'RECEIVING_INSPECTION';
127004 l_component_type_code        := 'S';
127005 l_component_appl_id          :=  707;
127006 l_amb_context_code           := 'DEFAULT';
127007 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
127008 l_event_class_code           := 'LDD_COST_ADJ_RCV';
127009 l_event_type_code            := 'LDD_COST_ADJ_RCV_ALL';
127010 l_line_definition_owner_code := 'S';
127011 l_line_definition_code       := 'LDD_COST_ADJ_RCV';
127012 --
127013 l_balance_type_code          := 'A';
127014 l_segment                     := NULL;
127015 l_ccid                        := NULL;
127016 l_adr_transaction_coa_id      := NULL;
127017 l_adr_accounting_coa_id       := NULL;
127018 l_adr_flexfield_segment_code  := NULL;
127019 l_adr_flex_value_set_id       := NULL;
127020 l_adr_value_type_code         := NULL;
127021 l_adr_value_combination_id    := NULL;
127022 l_adr_value_segment_code      := NULL;
127023 
127024 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
127025 l_bflow_class_code           := '';    -- 4219869 Business Flow
127026 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
127027 l_budgetary_control_flag     := 'N';
127028 
127029 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
127030 l_bflow_applied_to_amt       := NULL; -- 5132302
127031 l_entered_amt_idx            := NULL;          -- 4262811
127032 l_accted_amt_idx             := NULL;          -- 4262811
127033 l_acc_rev_flag               := NULL;          -- 4262811
127034 l_accrual_line_num           := NULL;          -- 4262811
127035 l_tmp_amt                    := NULL;          -- 4262811
127036 --
127037  
127038 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
127039     l_balance_type_code <> 'B' THEN
127040 IF NVL(p_source_5,'
127041 ') =  'Receiving Inspection'
127042  THEN 
127043 
127044    --
127045    XLA_AE_LINES_PKG.SetNewLine;
127046 
127047    p_balance_type_code          := l_balance_type_code;
127048    -- set the flag so later we will know whether the gain loss line needs to be created
127049    
127050    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
127051      p_actual_flag :='A';
127052    END IF;
127053 
127054    --
127055    -- bulk performance
127056    --
127057    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
127058                                       p_header_num   => 0); -- 4262811
127059    --
127060    -- set accounting line options
127061    --
127062    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
127063            p_natural_side_code          => 'D'
127064          , p_gain_or_loss_flag          => 'N'
127065          , p_gl_transfer_mode_code      => 'S'
127066          , p_acct_entry_type_code       => 'A'
127067          , p_switch_side_flag           => 'Y'
127068          , p_merge_duplicate_code       => 'N'
127069          );
127070    --
127071    l_acc_rev_natural_side_code := 'C';  -- 4262811
127072    -- 
127073    --
127074    -- set accounting line type info
127075    --
127076    xla_ae_lines_pkg.SetAcctLineType
127077       (p_component_type             => l_component_type
127078       ,p_event_type_code            => l_event_type_code
127079       ,p_line_definition_owner_code => l_line_definition_owner_code
127080       ,p_line_definition_code       => l_line_definition_code
127081       ,p_accounting_line_code       => l_component_code
127082       ,p_accounting_line_type_code  => l_component_type_code
127083       ,p_accounting_line_appl_id    => l_component_appl_id
127084       ,p_amb_context_code           => l_amb_context_code
127085       ,p_entity_code                => l_entity_code
127086       ,p_event_class_code           => l_event_class_code);
127087    --
127088    -- set accounting class
127089    --
127090    xla_ae_lines_pkg.SetAcctClass(
127091            p_accounting_class_code  => 'RECEIVING_INSPECTION'
127092          , p_ae_header_id           => l_ae_header_id
127093          );
127094 
127095    --
127096    -- set rounding class
127097    --
127098    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
127099                       'RECEIVING_INSPECTION';
127100 
127101    --
127102    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
127103    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
127104    --
127105    -- bulk performance
127106    --
127107    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
127108 
127109    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
127110       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
127111 
127112    -- 4955764
127113    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
127114       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
127115 
127116    -- 4458381 Public Sector Enh
127117    
127118    --
127119    -- set accounting attributes for the line type
127120    --
127121    l_entered_amt_idx := 3;
127122    l_accted_amt_idx  := 8;
127123    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
127124    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
127125    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
127126    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
127127    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
127128    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
127129    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
127130    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
127131    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
127132    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
127133    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
127134    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
127135    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
127136    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
127137    l_rec_acct_attrs.array_char_value(7)  := p_source_36;
127138    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
127139    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
127140 
127141    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
127142    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
127143 
127144    ---------------------------------------------------------------------------------------------------------------
127145    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
127146    ---------------------------------------------------------------------------------------------------------------
127147    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
127148 
127149    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127150    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127151 
127152    IF xla_accounting_cache_pkg.GetValueChar
127153          (p_source_code         => 'LEDGER_CATEGORY_CODE'
127154          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
127155    AND l_bflow_method_code = 'PRIOR_ENTRY'
127156 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
127157    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
127158          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
127159        )
127160    THEN
127161          xla_ae_lines_pkg.BflowUpgEntry
127162            (p_business_method_code    => l_bflow_method_code
127163            ,p_business_class_code     => l_bflow_class_code
127164            ,p_balance_type            => l_balance_type_code);
127165    ELSE
127166       NULL;
127167 -- No business flow processing for business flow method of NONE.
127168    END IF;
127169 
127170    --
127171    -- call analytical criteria
127172    --
127173    
127174    --
127175    -- call description
127176    --
127177    -- No description or it is inherited.
127178    --
127179    -- call ADRs
127180    -- Bug 4922099
127181    --
127182    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127183         (NVL(l_actual_upg_option, 'N') = 'O') OR
127184         (NVL(l_enc_upg_option, 'N') = 'O')
127185       )
127186    THEN
127187    NULL;
127188    --
127189    --
127190    
127191   l_ccid := AcctDerRule_4(
127192            p_application_id           => p_application_id
127193          , p_ae_header_id             => l_ae_header_id 
127194 , p_source_4 => p_source_4
127195          , x_transaction_coa_id       => l_adr_transaction_coa_id
127196          , x_accounting_coa_id        => l_adr_accounting_coa_id
127197          , x_value_type_code          => l_adr_value_type_code
127198          , p_side                     => 'NA'
127199    );
127200 
127201    xla_ae_lines_pkg.set_ccid(
127202     p_code_combination_id          => l_ccid
127203   , p_value_type_code              => l_adr_value_type_code
127204   , p_transaction_coa_id           => l_adr_transaction_coa_id
127205   , p_accounting_coa_id            => l_adr_accounting_coa_id
127206   , p_adr_code                     => 'CST_DEFAULT'
127207   , p_adr_type_code                => 'S'
127208   , p_component_type               => l_component_type
127209   , p_component_code               => l_component_code
127210   , p_component_type_code          => l_component_type_code
127211   , p_component_appl_id            => l_component_appl_id
127212   , p_amb_context_code             => l_amb_context_code
127213   , p_side                         => 'NA'
127214   );
127215 
127216 
127217    --
127218    --
127219    END IF;
127220    --
127221    -- Bug 4922099
127222    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
127223           (NVL(l_enc_upg_option, 'N') = 'O')
127224         ) AND
127225         (l_bflow_method_code = 'PRIOR_ENTRY')
127226       )
127227    THEN
127228       IF
127229       --
127230       1 = 2
127231       --
127232       THEN
127233       xla_accounting_err_pkg.build_message
127234                                     (p_appli_s_name            => 'XLA'
127235                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127236                                     ,p_token_1                 => 'LINE_NUMBER'
127237                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
127238                                     ,p_token_2                 => 'LINE_TYPE_NAME'
127239                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
127240                                                                              l_component_type
127241                                                                             ,l_component_code
127242                                                                             ,l_component_type_code
127243                                                                             ,l_component_appl_id
127244                                                                             ,l_amb_context_code
127245                                                                             ,l_entity_code
127246                                                                             ,l_event_class_code
127247                                                                            )
127248                                     ,p_token_3                 => 'OWNER'
127249                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
127250                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
127251                                                                           ,p_lookup_code    => l_component_type_code
127252                                                                          )
127253                                     ,p_token_4                 => 'PRODUCT_NAME'
127254                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
127255                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
127256                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
127257                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
127258                                     ,p_ae_header_id            =>  NULL
127259                                        );
127260 
127261         IF (C_LEVEL_ERROR>= g_log_level) THEN
127262                  trace
127263                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127264                       ,p_level    => C_LEVEL_ERROR
127265                       ,p_module   => l_log_module);
127266         END IF;
127267       END IF;
127268    END IF;
127269    --
127270    --
127271    ------------------------------------------------------------------------------------------------
127272    -- 4219869 Business Flow
127273    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
127274    -- Prior Entry.  Currently, the following code is always generated.
127275    ------------------------------------------------------------------------------------------------
127276    XLA_AE_LINES_PKG.ValidateCurrentLine;
127277 
127278    ------------------------------------------------------------------------------------
127279    -- 4219869 Business Flow
127280    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
127281    ------------------------------------------------------------------------------------
127282    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127283 
127284    ----------------------------------------------------------------------------------
127285    -- 4219869 Business Flow
127286    -- Update journal entry status -- Need to generate this within IF <condition>
127287    ----------------------------------------------------------------------------------
127288    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127289          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
127290          ,p_balance_type_code => l_balance_type_code
127291          );
127292 
127293    -------------------------------------------------------------------------------------------
127294    -- 4262811 - Generate the Accrual Reversal lines
127295    -------------------------------------------------------------------------------------------
127296    BEGIN
127297       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
127298                               (g_array_event(p_event_id).array_value_num('header_index'));
127299       IF l_acc_rev_flag IS NULL THEN
127300          l_acc_rev_flag := 'N';
127301       END IF;
127302    EXCEPTION
127303       WHEN OTHERS THEN
127304          l_acc_rev_flag := 'N';
127305    END;
127306    --
127307    IF (l_acc_rev_flag = 'Y') THEN
127308 
127309        -- 4645092  ------------------------------------------------------------------------------
127310        -- To allow MPA report to determine if it should generate report process
127311        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
127312        ------------------------------------------------------------------------------------------
127313 
127314        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
127315        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
127316    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
127317    -- call ADRs
127318    -- Bug 4922099
127319    --
127320    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127321         (NVL(l_actual_upg_option, 'N') = 'O') OR
127322         (NVL(l_enc_upg_option, 'N') = 'O')
127323       )
127324    THEN
127325    NULL;
127326    --
127327    --
127328    
127329   l_ccid := AcctDerRule_4(
127330            p_application_id           => p_application_id
127331          , p_ae_header_id             => l_ae_header_id 
127332 , p_source_4 => p_source_4
127333          , x_transaction_coa_id       => l_adr_transaction_coa_id
127334          , x_accounting_coa_id        => l_adr_accounting_coa_id
127335          , x_value_type_code          => l_adr_value_type_code
127336          , p_side                     => 'NA'
127337    );
127338 
127339    xla_ae_lines_pkg.set_ccid(
127340     p_code_combination_id          => l_ccid
127341   , p_value_type_code              => l_adr_value_type_code
127342   , p_transaction_coa_id           => l_adr_transaction_coa_id
127343   , p_accounting_coa_id            => l_adr_accounting_coa_id
127344   , p_adr_code                     => 'CST_DEFAULT'
127345   , p_adr_type_code                => 'S'
127346   , p_component_type               => l_component_type
127347   , p_component_code               => l_component_code
127348   , p_component_type_code          => l_component_type_code
127349   , p_component_appl_id            => l_component_appl_id
127350   , p_amb_context_code             => l_amb_context_code
127351   , p_side                         => 'NA'
127352   );
127353 
127354 
127355    --
127356    --
127357    END IF;
127358 
127359        --
127360        -- Update the line information that should be overwritten
127361        --
127362        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
127363                                          p_header_num   => 1);
127364        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
127365 
127366        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
127367 
127368        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
127369           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
127370        END IF;
127371 
127372       --
127373       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
127374       --
127375       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
127376           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
127377       ELSE
127378           ---------------------------------------------------------------------------------------------------
127379           -- 4262811a Switch Sign
127380           ---------------------------------------------------------------------------------------------------
127381           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
127382           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127383                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127384           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127385                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127386           -- 5132302
127387           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
127388                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127389 
127390       END IF;
127391 
127392       -- 4955764
127393       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
127394       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
127395 
127396 
127397       XLA_AE_LINES_PKG.ValidateCurrentLine;
127398       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127399 
127400       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127401                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
127402                ,p_balance_type_code => l_balance_type_code);
127403 
127404    END IF;
127405 
127406    -----------------------------------------------------------------------------------------
127407    -- 4262811 Multiperiod Accounting
127408    -----------------------------------------------------------------------------------------
127409      -- No MPA option is assigned.
127410 
127411 
127412 END IF;
127413 END IF;
127414 --
127415 
127416 --
127417 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127418    trace
127419       (p_msg      => 'END of AcctLineType_230'
127420       ,p_level    => C_LEVEL_PROCEDURE
127421       ,p_module   => l_log_module);
127422 END IF;
127423 --
127424 EXCEPTION
127425   WHEN xla_exceptions_pkg.application_exception THEN
127426       RAISE;
127427   WHEN OTHERS THEN
127428        xla_exceptions_pkg.raise_message
127429            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_230');
127430 END AcctLineType_230;
127431 --
127432 
127433 ---------------------------------------
127434 --
127435 -- PRIVATE FUNCTION
127436 --         AcctLineType_231
127437 --
127438 ---------------------------------------
127439 PROCEDURE AcctLineType_231 (
127440   p_application_id        IN NUMBER
127441  ,p_event_id              IN NUMBER
127442  ,p_calculate_acctd_flag  IN VARCHAR2
127443  ,p_calculate_g_l_flag    IN VARCHAR2
127444  ,p_actual_flag           IN OUT VARCHAR2
127445  ,p_balance_type_code     OUT VARCHAR2
127446  ,p_gain_or_loss_ref      OUT VARCHAR2
127447  
127448 --Cost Management Default Account
127449  , p_source_4            IN NUMBER
127450 --Receiving Accounting Line Type
127451  , p_source_5            IN VARCHAR2
127452 --DISTRIBUTION_IDENTIFIER
127453  , p_source_11            IN NUMBER
127454 --Distribution Type
127455  , p_source_12            IN VARCHAR2
127456  , p_source_12_meaning    IN VARCHAR2
127457 --Entered Currency Code
127458  , p_source_15            IN VARCHAR2
127459 --Entered Amount
127460  , p_source_18            IN NUMBER
127461 --Currency Conversion Date
127462  , p_source_19            IN DATE
127463 --Currency Conversion Rate
127464  , p_source_20            IN NUMBER
127465 --Currency Conversion Type
127466  , p_source_21            IN VARCHAR2
127467 --Accounted Amount
127468  , p_source_22            IN NUMBER
127469 )
127470 IS
127471 
127472 l_component_type              VARCHAR2(80);
127473 l_component_code              VARCHAR2(30);
127474 l_component_type_code         VARCHAR2(1);
127475 l_component_appl_id           INTEGER;
127476 l_amb_context_code            VARCHAR2(30);
127477 l_entity_code                 VARCHAR2(30);
127478 l_event_class_code            VARCHAR2(30);
127479 l_ae_header_id                NUMBER;
127480 l_event_type_code             VARCHAR2(30);
127481 l_line_definition_code        VARCHAR2(30);
127482 l_line_definition_owner_code  VARCHAR2(1);
127483 --
127484 -- adr variables
127485 l_segment                     VARCHAR2(30);
127486 l_ccid                        NUMBER;
127487 l_adr_transaction_coa_id      NUMBER;
127488 l_adr_accounting_coa_id       NUMBER;
127489 l_adr_flexfield_segment_code  VARCHAR2(30);
127490 l_adr_flex_value_set_id       NUMBER;
127491 l_adr_value_type_code         VARCHAR2(30);
127492 l_adr_value_combination_id    NUMBER;
127493 l_adr_value_segment_code      VARCHAR2(30);
127494 
127495 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
127496 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
127497 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
127498 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
127499 
127500 -- 4262811 Variables ------------------------------------------------------------------------------------------
127501 l_entered_amt_idx             NUMBER;
127502 l_accted_amt_idx              NUMBER;
127503 l_acc_rev_flag                VARCHAR2(1);
127504 l_accrual_line_num            NUMBER;
127505 l_tmp_amt                     NUMBER;
127506 l_acc_rev_natural_side_code   VARCHAR2(1);
127507 
127508 l_num_entries                 NUMBER;
127509 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
127510 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
127511 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
127512 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
127513 l_recog_line_1                NUMBER;
127514 l_recog_line_2                NUMBER;
127515 
127516 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
127517 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
127518 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
127519 
127520 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
127521 
127522 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
127523 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
127524 
127525 ---------------------------------------------------------------------------------------------------------------
127526 
127527 
127528 --
127529 -- bulk performance
127530 --
127531 l_balance_type_code           VARCHAR2(1);
127532 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
127533 l_log_module                  VARCHAR2(240);
127534 
127535 --
127536 -- Upgrade strategy
127537 --
127538 l_actual_upg_option           VARCHAR2(1);
127539 l_enc_upg_option           VARCHAR2(1);
127540 
127541 --
127542 BEGIN
127543 --
127544 IF g_log_enabled THEN
127545       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_231';
127546 END IF;
127547 --
127548 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127549 
127550       trace
127551          (p_msg      => 'BEGIN of AcctLineType_231'
127552          ,p_level    => C_LEVEL_PROCEDURE
127553          ,p_module   => l_log_module);
127554 
127555 END IF;
127556 --
127557 l_component_type             := 'AMB_JLT';
127558 l_component_code             := 'RECEIVING_INSPECTION';
127559 l_component_type_code        := 'S';
127560 l_component_appl_id          :=  707;
127561 l_amb_context_code           := 'DEFAULT';
127562 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
127563 l_event_class_code           := 'RCPT_REC_INSP';
127564 l_event_type_code            := 'RCPT_REC_INSP_ALL';
127565 l_line_definition_owner_code := 'S';
127566 l_line_definition_code       := 'RCPT_REC_INSP';
127567 --
127568 l_balance_type_code          := 'A';
127569 l_segment                     := NULL;
127570 l_ccid                        := NULL;
127571 l_adr_transaction_coa_id      := NULL;
127572 l_adr_accounting_coa_id       := NULL;
127573 l_adr_flexfield_segment_code  := NULL;
127574 l_adr_flex_value_set_id       := NULL;
127575 l_adr_value_type_code         := NULL;
127576 l_adr_value_combination_id    := NULL;
127577 l_adr_value_segment_code      := NULL;
127578 
127579 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
127580 l_bflow_class_code           := '';    -- 4219869 Business Flow
127581 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
127582 l_budgetary_control_flag     := 'N';
127583 
127584 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
127585 l_bflow_applied_to_amt       := NULL; -- 5132302
127586 l_entered_amt_idx            := NULL;          -- 4262811
127587 l_accted_amt_idx             := NULL;          -- 4262811
127588 l_acc_rev_flag               := NULL;          -- 4262811
127589 l_accrual_line_num           := NULL;          -- 4262811
127590 l_tmp_amt                    := NULL;          -- 4262811
127591 --
127592  
127593 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
127594     l_balance_type_code <> 'B' THEN
127595 IF NVL(p_source_5,'
127596 ') =  'Receiving Inspection'
127597  THEN 
127598 
127599    --
127600    XLA_AE_LINES_PKG.SetNewLine;
127601 
127602    p_balance_type_code          := l_balance_type_code;
127603    -- set the flag so later we will know whether the gain loss line needs to be created
127604    
127605    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
127606      p_actual_flag :='A';
127607    END IF;
127608 
127609    --
127610    -- bulk performance
127611    --
127612    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
127613                                       p_header_num   => 0); -- 4262811
127614    --
127615    -- set accounting line options
127616    --
127617    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
127618            p_natural_side_code          => 'D'
127619          , p_gain_or_loss_flag          => 'N'
127620          , p_gl_transfer_mode_code      => 'S'
127621          , p_acct_entry_type_code       => 'A'
127622          , p_switch_side_flag           => 'Y'
127623          , p_merge_duplicate_code       => 'N'
127624          );
127625    --
127626    l_acc_rev_natural_side_code := 'C';  -- 4262811
127627    -- 
127628    --
127629    -- set accounting line type info
127630    --
127631    xla_ae_lines_pkg.SetAcctLineType
127632       (p_component_type             => l_component_type
127633       ,p_event_type_code            => l_event_type_code
127634       ,p_line_definition_owner_code => l_line_definition_owner_code
127635       ,p_line_definition_code       => l_line_definition_code
127636       ,p_accounting_line_code       => l_component_code
127637       ,p_accounting_line_type_code  => l_component_type_code
127638       ,p_accounting_line_appl_id    => l_component_appl_id
127639       ,p_amb_context_code           => l_amb_context_code
127640       ,p_entity_code                => l_entity_code
127641       ,p_event_class_code           => l_event_class_code);
127642    --
127643    -- set accounting class
127644    --
127645    xla_ae_lines_pkg.SetAcctClass(
127646            p_accounting_class_code  => 'RECEIVING_INSPECTION'
127647          , p_ae_header_id           => l_ae_header_id
127648          );
127649 
127650    --
127651    -- set rounding class
127652    --
127653    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
127654                       'RECEIVING_INSPECTION';
127655 
127656    --
127657    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
127658    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
127659    --
127660    -- bulk performance
127661    --
127662    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
127663 
127664    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
127665       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
127666 
127667    -- 4955764
127668    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
127669       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
127670 
127671    -- 4458381 Public Sector Enh
127672    
127673    --
127674    -- set accounting attributes for the line type
127675    --
127676    l_entered_amt_idx := 3;
127677    l_accted_amt_idx  := 8;
127678    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
127679    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
127680    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
127681    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
127682    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
127683    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
127684    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
127685    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
127686    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
127687    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
127688    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
127689    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
127690    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
127691    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
127692    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
127693    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
127694    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
127695 
127696    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
127697    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
127698 
127699    ---------------------------------------------------------------------------------------------------------------
127700    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
127701    ---------------------------------------------------------------------------------------------------------------
127702    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
127703 
127704    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127705    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127706 
127707    IF xla_accounting_cache_pkg.GetValueChar
127708          (p_source_code         => 'LEDGER_CATEGORY_CODE'
127709          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
127710    AND l_bflow_method_code = 'PRIOR_ENTRY'
127711 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
127712    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
127713          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
127714        )
127715    THEN
127716          xla_ae_lines_pkg.BflowUpgEntry
127717            (p_business_method_code    => l_bflow_method_code
127718            ,p_business_class_code     => l_bflow_class_code
127719            ,p_balance_type            => l_balance_type_code);
127720    ELSE
127721       NULL;
127722 -- No business flow processing for business flow method of NONE.
127723    END IF;
127724 
127725    --
127726    -- call analytical criteria
127727    --
127728    
127729    --
127730    -- call description
127731    --
127732    -- No description or it is inherited.
127733    --
127734    -- call ADRs
127735    -- Bug 4922099
127736    --
127737    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127738         (NVL(l_actual_upg_option, 'N') = 'O') OR
127739         (NVL(l_enc_upg_option, 'N') = 'O')
127740       )
127741    THEN
127742    NULL;
127743    --
127744    --
127745    
127746   l_ccid := AcctDerRule_4(
127747            p_application_id           => p_application_id
127748          , p_ae_header_id             => l_ae_header_id 
127749 , p_source_4 => p_source_4
127750          , x_transaction_coa_id       => l_adr_transaction_coa_id
127751          , x_accounting_coa_id        => l_adr_accounting_coa_id
127752          , x_value_type_code          => l_adr_value_type_code
127753          , p_side                     => 'NA'
127754    );
127755 
127756    xla_ae_lines_pkg.set_ccid(
127757     p_code_combination_id          => l_ccid
127758   , p_value_type_code              => l_adr_value_type_code
127759   , p_transaction_coa_id           => l_adr_transaction_coa_id
127760   , p_accounting_coa_id            => l_adr_accounting_coa_id
127761   , p_adr_code                     => 'CST_DEFAULT'
127762   , p_adr_type_code                => 'S'
127763   , p_component_type               => l_component_type
127764   , p_component_code               => l_component_code
127765   , p_component_type_code          => l_component_type_code
127766   , p_component_appl_id            => l_component_appl_id
127767   , p_amb_context_code             => l_amb_context_code
127768   , p_side                         => 'NA'
127769   );
127770 
127771 
127772    --
127773    --
127774    END IF;
127775    --
127776    -- Bug 4922099
127777    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
127778           (NVL(l_enc_upg_option, 'N') = 'O')
127779         ) AND
127780         (l_bflow_method_code = 'PRIOR_ENTRY')
127781       )
127782    THEN
127783       IF
127784       --
127785       1 = 2
127786       --
127787       THEN
127788       xla_accounting_err_pkg.build_message
127789                                     (p_appli_s_name            => 'XLA'
127790                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127791                                     ,p_token_1                 => 'LINE_NUMBER'
127792                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
127793                                     ,p_token_2                 => 'LINE_TYPE_NAME'
127794                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
127795                                                                              l_component_type
127796                                                                             ,l_component_code
127797                                                                             ,l_component_type_code
127798                                                                             ,l_component_appl_id
127799                                                                             ,l_amb_context_code
127800                                                                             ,l_entity_code
127801                                                                             ,l_event_class_code
127802                                                                            )
127803                                     ,p_token_3                 => 'OWNER'
127804                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
127805                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
127806                                                                           ,p_lookup_code    => l_component_type_code
127807                                                                          )
127808                                     ,p_token_4                 => 'PRODUCT_NAME'
127809                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
127810                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
127811                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
127812                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
127813                                     ,p_ae_header_id            =>  NULL
127814                                        );
127815 
127816         IF (C_LEVEL_ERROR>= g_log_level) THEN
127817                  trace
127818                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127819                       ,p_level    => C_LEVEL_ERROR
127820                       ,p_module   => l_log_module);
127821         END IF;
127822       END IF;
127823    END IF;
127824    --
127825    --
127826    ------------------------------------------------------------------------------------------------
127827    -- 4219869 Business Flow
127828    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
127829    -- Prior Entry.  Currently, the following code is always generated.
127830    ------------------------------------------------------------------------------------------------
127831    XLA_AE_LINES_PKG.ValidateCurrentLine;
127832 
127833    ------------------------------------------------------------------------------------
127834    -- 4219869 Business Flow
127835    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
127836    ------------------------------------------------------------------------------------
127837    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127838 
127839    ----------------------------------------------------------------------------------
127840    -- 4219869 Business Flow
127841    -- Update journal entry status -- Need to generate this within IF <condition>
127842    ----------------------------------------------------------------------------------
127843    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127844          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
127845          ,p_balance_type_code => l_balance_type_code
127846          );
127847 
127848    -------------------------------------------------------------------------------------------
127849    -- 4262811 - Generate the Accrual Reversal lines
127850    -------------------------------------------------------------------------------------------
127851    BEGIN
127852       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
127853                               (g_array_event(p_event_id).array_value_num('header_index'));
127854       IF l_acc_rev_flag IS NULL THEN
127855          l_acc_rev_flag := 'N';
127856       END IF;
127857    EXCEPTION
127858       WHEN OTHERS THEN
127859          l_acc_rev_flag := 'N';
127860    END;
127861    --
127862    IF (l_acc_rev_flag = 'Y') THEN
127863 
127864        -- 4645092  ------------------------------------------------------------------------------
127865        -- To allow MPA report to determine if it should generate report process
127866        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
127867        ------------------------------------------------------------------------------------------
127868 
127869        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
127870        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
127871    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
127872    -- call ADRs
127873    -- Bug 4922099
127874    --
127875    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127876         (NVL(l_actual_upg_option, 'N') = 'O') OR
127877         (NVL(l_enc_upg_option, 'N') = 'O')
127878       )
127879    THEN
127880    NULL;
127881    --
127882    --
127883    
127884   l_ccid := AcctDerRule_4(
127885            p_application_id           => p_application_id
127886          , p_ae_header_id             => l_ae_header_id 
127887 , p_source_4 => p_source_4
127888          , x_transaction_coa_id       => l_adr_transaction_coa_id
127889          , x_accounting_coa_id        => l_adr_accounting_coa_id
127890          , x_value_type_code          => l_adr_value_type_code
127891          , p_side                     => 'NA'
127892    );
127893 
127894    xla_ae_lines_pkg.set_ccid(
127895     p_code_combination_id          => l_ccid
127896   , p_value_type_code              => l_adr_value_type_code
127897   , p_transaction_coa_id           => l_adr_transaction_coa_id
127898   , p_accounting_coa_id            => l_adr_accounting_coa_id
127899   , p_adr_code                     => 'CST_DEFAULT'
127900   , p_adr_type_code                => 'S'
127901   , p_component_type               => l_component_type
127902   , p_component_code               => l_component_code
127903   , p_component_type_code          => l_component_type_code
127904   , p_component_appl_id            => l_component_appl_id
127905   , p_amb_context_code             => l_amb_context_code
127906   , p_side                         => 'NA'
127907   );
127908 
127909 
127910    --
127911    --
127912    END IF;
127913 
127914        --
127915        -- Update the line information that should be overwritten
127916        --
127917        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
127918                                          p_header_num   => 1);
127919        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
127920 
127921        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
127922 
127923        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
127924           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
127925        END IF;
127926 
127927       --
127928       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
127929       --
127930       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
127931           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
127932       ELSE
127933           ---------------------------------------------------------------------------------------------------
127934           -- 4262811a Switch Sign
127935           ---------------------------------------------------------------------------------------------------
127936           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
127937           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127938                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127939           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127940                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127941           -- 5132302
127942           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
127943                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127944 
127945       END IF;
127946 
127947       -- 4955764
127948       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
127949       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
127950 
127951 
127952       XLA_AE_LINES_PKG.ValidateCurrentLine;
127953       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127954 
127955       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127956                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
127957                ,p_balance_type_code => l_balance_type_code);
127958 
127959    END IF;
127960 
127961    -----------------------------------------------------------------------------------------
127962    -- 4262811 Multiperiod Accounting
127963    -----------------------------------------------------------------------------------------
127964      -- No MPA option is assigned.
127965 
127966 
127967 END IF;
127968 END IF;
127969 --
127970 
127971 --
127972 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127973    trace
127974       (p_msg      => 'END of AcctLineType_231'
127975       ,p_level    => C_LEVEL_PROCEDURE
127976       ,p_module   => l_log_module);
127977 END IF;
127978 --
127979 EXCEPTION
127980   WHEN xla_exceptions_pkg.application_exception THEN
127981       RAISE;
127982   WHEN OTHERS THEN
127983        xla_exceptions_pkg.raise_message
127984            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_231');
127985 END AcctLineType_231;
127986 --
127987 
127988 ---------------------------------------
127989 --
127990 -- PRIVATE FUNCTION
127991 --         AcctLineType_232
127992 --
127993 ---------------------------------------
127994 PROCEDURE AcctLineType_232 (
127995   p_application_id        IN NUMBER
127996  ,p_event_id              IN NUMBER
127997  ,p_calculate_acctd_flag  IN VARCHAR2
127998  ,p_calculate_g_l_flag    IN VARCHAR2
127999  ,p_actual_flag           IN OUT VARCHAR2
128000  ,p_balance_type_code     OUT VARCHAR2
128001  ,p_gain_or_loss_ref      OUT VARCHAR2
128002  
128003 --Cost Management Default Account
128004  , p_source_4            IN NUMBER
128005 --Receiving Accounting Line Type
128006  , p_source_5            IN VARCHAR2
128007 --DISTRIBUTION_IDENTIFIER
128008  , p_source_11            IN NUMBER
128009 --Distribution Type
128010  , p_source_12            IN VARCHAR2
128011  , p_source_12_meaning    IN VARCHAR2
128012 --Entered Currency Code
128013  , p_source_15            IN VARCHAR2
128014 --Entered Amount
128015  , p_source_18            IN NUMBER
128016 --Currency Conversion Date
128017  , p_source_19            IN DATE
128018 --Currency Conversion Rate
128019  , p_source_20            IN NUMBER
128020 --Accounted Amount
128021  , p_source_22            IN NUMBER
128022 )
128023 IS
128024 
128025 l_component_type              VARCHAR2(80);
128026 l_component_code              VARCHAR2(30);
128027 l_component_type_code         VARCHAR2(1);
128028 l_component_appl_id           INTEGER;
128029 l_amb_context_code            VARCHAR2(30);
128030 l_entity_code                 VARCHAR2(30);
128031 l_event_class_code            VARCHAR2(30);
128032 l_ae_header_id                NUMBER;
128033 l_event_type_code             VARCHAR2(30);
128034 l_line_definition_code        VARCHAR2(30);
128035 l_line_definition_owner_code  VARCHAR2(1);
128036 --
128037 -- adr variables
128038 l_segment                     VARCHAR2(30);
128039 l_ccid                        NUMBER;
128040 l_adr_transaction_coa_id      NUMBER;
128041 l_adr_accounting_coa_id       NUMBER;
128042 l_adr_flexfield_segment_code  VARCHAR2(30);
128043 l_adr_flex_value_set_id       NUMBER;
128044 l_adr_value_type_code         VARCHAR2(30);
128045 l_adr_value_combination_id    NUMBER;
128046 l_adr_value_segment_code      VARCHAR2(30);
128047 
128048 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
128049 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
128050 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
128051 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
128052 
128053 -- 4262811 Variables ------------------------------------------------------------------------------------------
128054 l_entered_amt_idx             NUMBER;
128055 l_accted_amt_idx              NUMBER;
128056 l_acc_rev_flag                VARCHAR2(1);
128057 l_accrual_line_num            NUMBER;
128058 l_tmp_amt                     NUMBER;
128059 l_acc_rev_natural_side_code   VARCHAR2(1);
128060 
128061 l_num_entries                 NUMBER;
128062 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
128063 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
128064 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
128065 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
128066 l_recog_line_1                NUMBER;
128067 l_recog_line_2                NUMBER;
128068 
128069 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
128070 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
128071 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
128072 
128073 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
128074 
128075 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
128076 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
128077 
128078 ---------------------------------------------------------------------------------------------------------------
128079 
128080 
128081 --
128082 -- bulk performance
128083 --
128084 l_balance_type_code           VARCHAR2(1);
128085 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
128086 l_log_module                  VARCHAR2(240);
128087 
128088 --
128089 -- Upgrade strategy
128090 --
128091 l_actual_upg_option           VARCHAR2(1);
128092 l_enc_upg_option           VARCHAR2(1);
128093 
128094 --
128095 BEGIN
128096 --
128097 IF g_log_enabled THEN
128098       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_232';
128099 END IF;
128100 --
128101 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128102 
128103       trace
128104          (p_msg      => 'BEGIN of AcctLineType_232'
128105          ,p_level    => C_LEVEL_PROCEDURE
128106          ,p_module   => l_log_module);
128107 
128108 END IF;
128109 --
128110 l_component_type             := 'AMB_JLT';
128111 l_component_code             := 'RECEIVING_INSPECTION';
128112 l_component_type_code        := 'S';
128113 l_component_appl_id          :=  707;
128114 l_amb_context_code           := 'DEFAULT';
128115 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
128116 l_event_class_code           := 'RETR_PRICE_ADJ_DEL';
128117 l_event_type_code            := 'RETR_PRICE_ADJ_DEL_ALL';
128118 l_line_definition_owner_code := 'S';
128119 l_line_definition_code       := 'RETR_PRICE_ADJ_DEL';
128120 --
128121 l_balance_type_code          := 'A';
128122 l_segment                     := NULL;
128123 l_ccid                        := NULL;
128124 l_adr_transaction_coa_id      := NULL;
128125 l_adr_accounting_coa_id       := NULL;
128126 l_adr_flexfield_segment_code  := NULL;
128127 l_adr_flex_value_set_id       := NULL;
128128 l_adr_value_type_code         := NULL;
128129 l_adr_value_combination_id    := NULL;
128130 l_adr_value_segment_code      := NULL;
128131 
128132 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
128133 l_bflow_class_code           := '';    -- 4219869 Business Flow
128134 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
128135 l_budgetary_control_flag     := 'N';
128136 
128137 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
128138 l_bflow_applied_to_amt       := NULL; -- 5132302
128139 l_entered_amt_idx            := NULL;          -- 4262811
128140 l_accted_amt_idx             := NULL;          -- 4262811
128141 l_acc_rev_flag               := NULL;          -- 4262811
128142 l_accrual_line_num           := NULL;          -- 4262811
128143 l_tmp_amt                    := NULL;          -- 4262811
128144 --
128145  
128146 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
128147     l_balance_type_code <> 'B' THEN
128148 IF NVL(p_source_5,'
128149 ') =  'Receiving Inspection'
128150  THEN 
128151 
128152    --
128153    XLA_AE_LINES_PKG.SetNewLine;
128154 
128155    p_balance_type_code          := l_balance_type_code;
128156    -- set the flag so later we will know whether the gain loss line needs to be created
128157    
128158    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
128159      p_actual_flag :='A';
128160    END IF;
128161 
128162    --
128163    -- bulk performance
128164    --
128165    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
128166                                       p_header_num   => 0); -- 4262811
128167    --
128168    -- set accounting line options
128169    --
128170    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
128171            p_natural_side_code          => 'D'
128172          , p_gain_or_loss_flag          => 'N'
128173          , p_gl_transfer_mode_code      => 'S'
128174          , p_acct_entry_type_code       => 'A'
128175          , p_switch_side_flag           => 'Y'
128176          , p_merge_duplicate_code       => 'N'
128177          );
128178    --
128179    l_acc_rev_natural_side_code := 'C';  -- 4262811
128180    -- 
128181    --
128182    -- set accounting line type info
128183    --
128184    xla_ae_lines_pkg.SetAcctLineType
128185       (p_component_type             => l_component_type
128186       ,p_event_type_code            => l_event_type_code
128187       ,p_line_definition_owner_code => l_line_definition_owner_code
128188       ,p_line_definition_code       => l_line_definition_code
128189       ,p_accounting_line_code       => l_component_code
128190       ,p_accounting_line_type_code  => l_component_type_code
128191       ,p_accounting_line_appl_id    => l_component_appl_id
128192       ,p_amb_context_code           => l_amb_context_code
128193       ,p_entity_code                => l_entity_code
128194       ,p_event_class_code           => l_event_class_code);
128195    --
128196    -- set accounting class
128197    --
128198    xla_ae_lines_pkg.SetAcctClass(
128199            p_accounting_class_code  => 'RECEIVING_INSPECTION'
128200          , p_ae_header_id           => l_ae_header_id
128201          );
128202 
128203    --
128204    -- set rounding class
128205    --
128206    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
128207                       'RECEIVING_INSPECTION';
128208 
128209    --
128210    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
128211    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
128212    --
128213    -- bulk performance
128214    --
128215    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
128216 
128217    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
128218       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
128219 
128220    -- 4955764
128221    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
128222       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
128223 
128224    -- 4458381 Public Sector Enh
128225    
128226    --
128227    -- set accounting attributes for the line type
128228    --
128229    l_entered_amt_idx := 3;
128230    l_accted_amt_idx  := 8;
128231    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
128232    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
128233    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
128234    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
128235    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
128236    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
128237    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
128238    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
128239    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
128240    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
128241    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
128242    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
128243    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
128244    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
128245    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
128246    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
128247    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
128248 
128249    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
128250    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
128251 
128252    ---------------------------------------------------------------------------------------------------------------
128253    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
128254    ---------------------------------------------------------------------------------------------------------------
128255    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
128256 
128257    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128258    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128259 
128260    IF xla_accounting_cache_pkg.GetValueChar
128261          (p_source_code         => 'LEDGER_CATEGORY_CODE'
128262          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
128263    AND l_bflow_method_code = 'PRIOR_ENTRY'
128264 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
128265    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
128266          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
128267        )
128268    THEN
128269          xla_ae_lines_pkg.BflowUpgEntry
128270            (p_business_method_code    => l_bflow_method_code
128271            ,p_business_class_code     => l_bflow_class_code
128272            ,p_balance_type            => l_balance_type_code);
128273    ELSE
128274       NULL;
128275 -- No business flow processing for business flow method of NONE.
128276    END IF;
128277 
128278    --
128279    -- call analytical criteria
128280    --
128281    
128282    --
128283    -- call description
128284    --
128285    -- No description or it is inherited.
128286    --
128287    -- call ADRs
128288    -- Bug 4922099
128289    --
128290    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
128291         (NVL(l_actual_upg_option, 'N') = 'O') OR
128292         (NVL(l_enc_upg_option, 'N') = 'O')
128293       )
128294    THEN
128295    NULL;
128296    --
128297    --
128298    
128299   l_ccid := AcctDerRule_4(
128300            p_application_id           => p_application_id
128301          , p_ae_header_id             => l_ae_header_id 
128302 , p_source_4 => p_source_4
128303          , x_transaction_coa_id       => l_adr_transaction_coa_id
128304          , x_accounting_coa_id        => l_adr_accounting_coa_id
128305          , x_value_type_code          => l_adr_value_type_code
128306          , p_side                     => 'NA'
128307    );
128308 
128309    xla_ae_lines_pkg.set_ccid(
128310     p_code_combination_id          => l_ccid
128311   , p_value_type_code              => l_adr_value_type_code
128312   , p_transaction_coa_id           => l_adr_transaction_coa_id
128313   , p_accounting_coa_id            => l_adr_accounting_coa_id
128314   , p_adr_code                     => 'CST_DEFAULT'
128315   , p_adr_type_code                => 'S'
128316   , p_component_type               => l_component_type
128317   , p_component_code               => l_component_code
128318   , p_component_type_code          => l_component_type_code
128319   , p_component_appl_id            => l_component_appl_id
128320   , p_amb_context_code             => l_amb_context_code
128321   , p_side                         => 'NA'
128322   );
128323 
128324 
128325    --
128326    --
128327    END IF;
128328    --
128329    -- Bug 4922099
128330    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
128331           (NVL(l_enc_upg_option, 'N') = 'O')
128332         ) AND
128333         (l_bflow_method_code = 'PRIOR_ENTRY')
128334       )
128335    THEN
128336       IF
128337       --
128338       1 = 2
128339       --
128340       THEN
128341       xla_accounting_err_pkg.build_message
128342                                     (p_appli_s_name            => 'XLA'
128343                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128344                                     ,p_token_1                 => 'LINE_NUMBER'
128345                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
128346                                     ,p_token_2                 => 'LINE_TYPE_NAME'
128347                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
128348                                                                              l_component_type
128349                                                                             ,l_component_code
128350                                                                             ,l_component_type_code
128351                                                                             ,l_component_appl_id
128352                                                                             ,l_amb_context_code
128353                                                                             ,l_entity_code
128354                                                                             ,l_event_class_code
128355                                                                            )
128356                                     ,p_token_3                 => 'OWNER'
128357                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
128358                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
128359                                                                           ,p_lookup_code    => l_component_type_code
128360                                                                          )
128361                                     ,p_token_4                 => 'PRODUCT_NAME'
128362                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
128363                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
128364                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
128365                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
128366                                     ,p_ae_header_id            =>  NULL
128367                                        );
128368 
128369         IF (C_LEVEL_ERROR>= g_log_level) THEN
128370                  trace
128371                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128372                       ,p_level    => C_LEVEL_ERROR
128373                       ,p_module   => l_log_module);
128374         END IF;
128375       END IF;
128376    END IF;
128377    --
128378    --
128379    ------------------------------------------------------------------------------------------------
128380    -- 4219869 Business Flow
128381    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
128382    -- Prior Entry.  Currently, the following code is always generated.
128383    ------------------------------------------------------------------------------------------------
128384    XLA_AE_LINES_PKG.ValidateCurrentLine;
128385 
128386    ------------------------------------------------------------------------------------
128387    -- 4219869 Business Flow
128388    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
128389    ------------------------------------------------------------------------------------
128390    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
128391 
128392    ----------------------------------------------------------------------------------
128393    -- 4219869 Business Flow
128394    -- Update journal entry status -- Need to generate this within IF <condition>
128395    ----------------------------------------------------------------------------------
128396    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
128397          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
128398          ,p_balance_type_code => l_balance_type_code
128399          );
128400 
128401    -------------------------------------------------------------------------------------------
128402    -- 4262811 - Generate the Accrual Reversal lines
128403    -------------------------------------------------------------------------------------------
128404    BEGIN
128405       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
128406                               (g_array_event(p_event_id).array_value_num('header_index'));
128407       IF l_acc_rev_flag IS NULL THEN
128408          l_acc_rev_flag := 'N';
128409       END IF;
128410    EXCEPTION
128411       WHEN OTHERS THEN
128412          l_acc_rev_flag := 'N';
128413    END;
128414    --
128415    IF (l_acc_rev_flag = 'Y') THEN
128416 
128417        -- 4645092  ------------------------------------------------------------------------------
128418        -- To allow MPA report to determine if it should generate report process
128419        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
128420        ------------------------------------------------------------------------------------------
128421 
128422        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
128423        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
128424    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
128425    -- call ADRs
128426    -- Bug 4922099
128427    --
128428    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
128429         (NVL(l_actual_upg_option, 'N') = 'O') OR
128430         (NVL(l_enc_upg_option, 'N') = 'O')
128431       )
128432    THEN
128433    NULL;
128434    --
128435    --
128436    
128437   l_ccid := AcctDerRule_4(
128438            p_application_id           => p_application_id
128439          , p_ae_header_id             => l_ae_header_id 
128440 , p_source_4 => p_source_4
128441          , x_transaction_coa_id       => l_adr_transaction_coa_id
128442          , x_accounting_coa_id        => l_adr_accounting_coa_id
128443          , x_value_type_code          => l_adr_value_type_code
128444          , p_side                     => 'NA'
128445    );
128446 
128447    xla_ae_lines_pkg.set_ccid(
128448     p_code_combination_id          => l_ccid
128449   , p_value_type_code              => l_adr_value_type_code
128450   , p_transaction_coa_id           => l_adr_transaction_coa_id
128451   , p_accounting_coa_id            => l_adr_accounting_coa_id
128452   , p_adr_code                     => 'CST_DEFAULT'
128453   , p_adr_type_code                => 'S'
128454   , p_component_type               => l_component_type
128455   , p_component_code               => l_component_code
128456   , p_component_type_code          => l_component_type_code
128457   , p_component_appl_id            => l_component_appl_id
128458   , p_amb_context_code             => l_amb_context_code
128459   , p_side                         => 'NA'
128460   );
128461 
128462 
128463    --
128464    --
128465    END IF;
128466 
128467        --
128468        -- Update the line information that should be overwritten
128469        --
128470        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
128471                                          p_header_num   => 1);
128472        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
128473 
128474        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
128475 
128476        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
128477           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
128478        END IF;
128479 
128480       --
128481       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
128482       --
128483       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
128484           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
128485       ELSE
128486           ---------------------------------------------------------------------------------------------------
128487           -- 4262811a Switch Sign
128488           ---------------------------------------------------------------------------------------------------
128489           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
128490           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
128491                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
128492           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
128493                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
128494           -- 5132302
128495           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
128496                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
128497 
128498       END IF;
128499 
128500       -- 4955764
128501       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
128502       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
128503 
128504 
128505       XLA_AE_LINES_PKG.ValidateCurrentLine;
128506       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
128507 
128508       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
128509                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
128510                ,p_balance_type_code => l_balance_type_code);
128511 
128512    END IF;
128513 
128514    -----------------------------------------------------------------------------------------
128515    -- 4262811 Multiperiod Accounting
128516    -----------------------------------------------------------------------------------------
128517      -- No MPA option is assigned.
128518 
128519 
128520 END IF;
128521 END IF;
128522 --
128523 
128524 --
128525 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128526    trace
128527       (p_msg      => 'END of AcctLineType_232'
128528       ,p_level    => C_LEVEL_PROCEDURE
128529       ,p_module   => l_log_module);
128530 END IF;
128531 --
128532 EXCEPTION
128533   WHEN xla_exceptions_pkg.application_exception THEN
128534       RAISE;
128535   WHEN OTHERS THEN
128536        xla_exceptions_pkg.raise_message
128537            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_232');
128538 END AcctLineType_232;
128539 --
128540 
128541 ---------------------------------------
128542 --
128543 -- PRIVATE FUNCTION
128544 --         AcctLineType_233
128545 --
128546 ---------------------------------------
128547 PROCEDURE AcctLineType_233 (
128548   p_application_id        IN NUMBER
128549  ,p_event_id              IN NUMBER
128550  ,p_calculate_acctd_flag  IN VARCHAR2
128551  ,p_calculate_g_l_flag    IN VARCHAR2
128552  ,p_actual_flag           IN OUT VARCHAR2
128553  ,p_balance_type_code     OUT VARCHAR2
128554  ,p_gain_or_loss_ref      OUT VARCHAR2
128555  
128556 --Cost Management Default Account
128557  , p_source_4            IN NUMBER
128558 --Receiving Accounting Line Type
128559  , p_source_5            IN VARCHAR2
128560 --Applied to Application ID
128561  , p_source_6            IN NUMBER
128562 --Applied to Distribution Link Type
128563  , p_source_7            IN VARCHAR2
128564 --Applied to Entity Code
128565  , p_source_8            IN VARCHAR2
128566 --PO_DISTRIBUTION_ID
128567  , p_source_9            IN NUMBER
128568 --Applied To Purchase Document Identifier
128569  , p_source_10            IN NUMBER
128570 --DISTRIBUTION_IDENTIFIER
128571  , p_source_11            IN NUMBER
128572 --Distribution Type
128573  , p_source_12            IN VARCHAR2
128574  , p_source_12_meaning    IN VARCHAR2
128575 --PO Budget Account
128576  , p_source_13            IN NUMBER
128577 --Encumbrance Reversal Amount Entered
128578  , p_source_14            IN NUMBER
128579 --Entered Currency Code
128580  , p_source_15            IN VARCHAR2
128581 --Transaction Encumbrance Reversal Amount
128582  , p_source_16            IN NUMBER
128583 --Entered Amount
128584  , p_source_18            IN NUMBER
128585 --Currency Conversion Date
128586  , p_source_19            IN DATE
128587 --Currency Conversion Rate
128588  , p_source_20            IN NUMBER
128589 --Currency Conversion Type
128590  , p_source_21            IN VARCHAR2
128591 --Accounted Amount
128592  , p_source_22            IN NUMBER
128593 --Purchasing Encumbrance Type Identifier
128594  , p_source_23            IN NUMBER
128595 --Costing Encumbrance Upgrade Option
128596  , p_source_27            IN VARCHAR2
128597 )
128598 IS
128599 
128600 l_component_type              VARCHAR2(80);
128601 l_component_code              VARCHAR2(30);
128602 l_component_type_code         VARCHAR2(1);
128603 l_component_appl_id           INTEGER;
128604 l_amb_context_code            VARCHAR2(30);
128605 l_entity_code                 VARCHAR2(30);
128606 l_event_class_code            VARCHAR2(30);
128607 l_ae_header_id                NUMBER;
128608 l_event_type_code             VARCHAR2(30);
128609 l_line_definition_code        VARCHAR2(30);
128610 l_line_definition_owner_code  VARCHAR2(1);
128611 --
128612 -- adr variables
128613 l_segment                     VARCHAR2(30);
128614 l_ccid                        NUMBER;
128615 l_adr_transaction_coa_id      NUMBER;
128616 l_adr_accounting_coa_id       NUMBER;
128617 l_adr_flexfield_segment_code  VARCHAR2(30);
128618 l_adr_flex_value_set_id       NUMBER;
128619 l_adr_value_type_code         VARCHAR2(30);
128620 l_adr_value_combination_id    NUMBER;
128621 l_adr_value_segment_code      VARCHAR2(30);
128622 
128623 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
128624 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
128625 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
128626 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
128627 
128628 -- 4262811 Variables ------------------------------------------------------------------------------------------
128629 l_entered_amt_idx             NUMBER;
128630 l_accted_amt_idx              NUMBER;
128631 l_acc_rev_flag                VARCHAR2(1);
128632 l_accrual_line_num            NUMBER;
128633 l_tmp_amt                     NUMBER;
128634 l_acc_rev_natural_side_code   VARCHAR2(1);
128635 
128636 l_num_entries                 NUMBER;
128637 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
128638 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
128639 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
128640 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
128641 l_recog_line_1                NUMBER;
128642 l_recog_line_2                NUMBER;
128643 
128644 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
128645 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
128646 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
128647 
128648 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
128649 
128650 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
128651 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
128652 
128653 ---------------------------------------------------------------------------------------------------------------
128654 
128655 
128656 --
128657 -- bulk performance
128658 --
128659 l_balance_type_code           VARCHAR2(1);
128660 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
128661 l_log_module                  VARCHAR2(240);
128662 
128663 --
128664 -- Upgrade strategy
128665 --
128666 l_actual_upg_option           VARCHAR2(1);
128667 l_enc_upg_option           VARCHAR2(1);
128668 
128669 --
128670 BEGIN
128671 --
128672 IF g_log_enabled THEN
128673       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_233';
128674 END IF;
128675 --
128676 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128677 
128678       trace
128679          (p_msg      => 'BEGIN of AcctLineType_233'
128680          ,p_level    => C_LEVEL_PROCEDURE
128681          ,p_module   => l_log_module);
128682 
128683 END IF;
128684 --
128685 l_component_type             := 'AMB_JLT';
128686 l_component_code             := 'RECEIVING_INSPECTION';
128687 l_component_type_code        := 'S';
128688 l_component_appl_id          :=  707;
128689 l_amb_context_code           := 'DEFAULT';
128690 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
128691 l_event_class_code           := 'DELIVER_EXPENSE';
128692 l_event_type_code            := 'DELIVER_EXPENSE_ALL';
128693 l_line_definition_owner_code := 'S';
128694 l_line_definition_code       := 'DELIVER_EXPENSE';
128695 --
128696 l_balance_type_code          := 'A';
128697 l_segment                     := NULL;
128698 l_ccid                        := NULL;
128699 l_adr_transaction_coa_id      := NULL;
128700 l_adr_accounting_coa_id       := NULL;
128701 l_adr_flexfield_segment_code  := NULL;
128702 l_adr_flex_value_set_id       := NULL;
128703 l_adr_value_type_code         := NULL;
128704 l_adr_value_combination_id    := NULL;
128705 l_adr_value_segment_code      := NULL;
128706 
128707 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
128708 l_bflow_class_code           := '';    -- 4219869 Business Flow
128709 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
128710 l_budgetary_control_flag     := 'N';
128711 
128712 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
128713 l_bflow_applied_to_amt       := NULL; -- 5132302
128714 l_entered_amt_idx            := NULL;          -- 4262811
128715 l_accted_amt_idx             := NULL;          -- 4262811
128716 l_acc_rev_flag               := NULL;          -- 4262811
128717 l_accrual_line_num           := NULL;          -- 4262811
128718 l_tmp_amt                    := NULL;          -- 4262811
128719 --
128720  
128721 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
128722     l_balance_type_code <> 'B' THEN
128723 IF NVL(p_source_5,'
128724 ') =  'Receiving Inspection'
128725  THEN 
128726 
128727    --
128728    XLA_AE_LINES_PKG.SetNewLine;
128729 
128730    p_balance_type_code          := l_balance_type_code;
128731    -- set the flag so later we will know whether the gain loss line needs to be created
128732    
128733    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
128734      p_actual_flag :='A';
128735    END IF;
128736 
128737    --
128738    -- bulk performance
128739    --
128740    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
128741                                       p_header_num   => 0); -- 4262811
128742    --
128743    -- set accounting line options
128744    --
128745    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
128746            p_natural_side_code          => 'D'
128747          , p_gain_or_loss_flag          => 'N'
128748          , p_gl_transfer_mode_code      => 'S'
128749          , p_acct_entry_type_code       => 'A'
128750          , p_switch_side_flag           => 'Y'
128751          , p_merge_duplicate_code       => 'N'
128752          );
128753    --
128754    l_acc_rev_natural_side_code := 'C';  -- 4262811
128755    -- 
128756    --
128757    -- set accounting line type info
128758    --
128759    xla_ae_lines_pkg.SetAcctLineType
128760       (p_component_type             => l_component_type
128761       ,p_event_type_code            => l_event_type_code
128762       ,p_line_definition_owner_code => l_line_definition_owner_code
128763       ,p_line_definition_code       => l_line_definition_code
128764       ,p_accounting_line_code       => l_component_code
128765       ,p_accounting_line_type_code  => l_component_type_code
128766       ,p_accounting_line_appl_id    => l_component_appl_id
128767       ,p_amb_context_code           => l_amb_context_code
128768       ,p_entity_code                => l_entity_code
128769       ,p_event_class_code           => l_event_class_code);
128770    --
128771    -- set accounting class
128772    --
128773    xla_ae_lines_pkg.SetAcctClass(
128774            p_accounting_class_code  => 'RECEIVING_INSPECTION'
128775          , p_ae_header_id           => l_ae_header_id
128776          );
128777 
128778    --
128779    -- set rounding class
128780    --
128781    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
128782                       'RECEIVING_INSPECTION';
128783 
128784    --
128785    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
128786    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
128787    --
128788    -- bulk performance
128789    --
128790    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
128791 
128792    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
128793       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
128794 
128795    -- 4955764
128796    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
128797       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
128798 
128799    -- 4458381 Public Sector Enh
128800    
128801    --
128802    -- set accounting attributes for the line type
128803    --
128804    l_entered_amt_idx := 17;
128805    l_accted_amt_idx  := 22;
128806    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
128807    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
128808    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
128809    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
128810    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
128811    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
128812    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
128813    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
128814    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_9);
128815    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
128816    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
128817    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
128818    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
128819    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
128820    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
128821    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
128822    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
128823    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
128824    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
128825    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
128826    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
128827    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
128828    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
128829    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
128830    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
128831    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
128832    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
128833    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
128834    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
128835    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
128836    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
128837    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
128838    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
128839    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
128840    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
128841    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
128842    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
128843    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
128844    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
128845    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
128846    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
128847    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
128848    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
128849    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
128850    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
128851    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
128852    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
128853    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
128854    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
128855 
128856    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
128857    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
128858 
128859    ---------------------------------------------------------------------------------------------------------------
128860    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
128861    ---------------------------------------------------------------------------------------------------------------
128862    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
128863 
128864    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128865    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128866 
128867    IF xla_accounting_cache_pkg.GetValueChar
128868          (p_source_code         => 'LEDGER_CATEGORY_CODE'
128869          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
128870    AND l_bflow_method_code = 'PRIOR_ENTRY'
128871 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
128872    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
128873          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
128874        )
128875    THEN
128876          xla_ae_lines_pkg.BflowUpgEntry
128877            (p_business_method_code    => l_bflow_method_code
128878            ,p_business_class_code     => l_bflow_class_code
128879            ,p_balance_type            => l_balance_type_code);
128880    ELSE
128881       NULL;
128882 -- No business flow processing for business flow method of NONE.
128883    END IF;
128884 
128885    --
128886    -- call analytical criteria
128887    --
128888    
128889    --
128890    -- call description
128891    --
128892    -- No description or it is inherited.
128893    --
128894    -- call ADRs
128895    -- Bug 4922099
128896    --
128897    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
128898         (NVL(l_actual_upg_option, 'N') = 'O') OR
128899         (NVL(l_enc_upg_option, 'N') = 'O')
128900       )
128901    THEN
128902    NULL;
128903    --
128904    --
128905    
128906   l_ccid := AcctDerRule_4(
128907            p_application_id           => p_application_id
128908          , p_ae_header_id             => l_ae_header_id 
128909 , p_source_4 => p_source_4
128910          , x_transaction_coa_id       => l_adr_transaction_coa_id
128911          , x_accounting_coa_id        => l_adr_accounting_coa_id
128912          , x_value_type_code          => l_adr_value_type_code
128913          , p_side                     => 'NA'
128914    );
128915 
128916    xla_ae_lines_pkg.set_ccid(
128917     p_code_combination_id          => l_ccid
128918   , p_value_type_code              => l_adr_value_type_code
128919   , p_transaction_coa_id           => l_adr_transaction_coa_id
128920   , p_accounting_coa_id            => l_adr_accounting_coa_id
128921   , p_adr_code                     => 'CST_DEFAULT'
128922   , p_adr_type_code                => 'S'
128923   , p_component_type               => l_component_type
128924   , p_component_code               => l_component_code
128925   , p_component_type_code          => l_component_type_code
128926   , p_component_appl_id            => l_component_appl_id
128927   , p_amb_context_code             => l_amb_context_code
128928   , p_side                         => 'NA'
128929   );
128930 
128931 
128932    --
128933    --
128934    END IF;
128935    --
128936    -- Bug 4922099
128937    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
128938           (NVL(l_enc_upg_option, 'N') = 'O')
128939         ) AND
128940         (l_bflow_method_code = 'PRIOR_ENTRY')
128941       )
128942    THEN
128943       IF
128944       --
128945       1 = 2
128946       --
128947       THEN
128948       xla_accounting_err_pkg.build_message
128949                                     (p_appli_s_name            => 'XLA'
128950                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128951                                     ,p_token_1                 => 'LINE_NUMBER'
128952                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
128953                                     ,p_token_2                 => 'LINE_TYPE_NAME'
128954                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
128955                                                                              l_component_type
128956                                                                             ,l_component_code
128957                                                                             ,l_component_type_code
128958                                                                             ,l_component_appl_id
128959                                                                             ,l_amb_context_code
128960                                                                             ,l_entity_code
128961                                                                             ,l_event_class_code
128962                                                                            )
128963                                     ,p_token_3                 => 'OWNER'
128964                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
128965                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
128966                                                                           ,p_lookup_code    => l_component_type_code
128967                                                                          )
128968                                     ,p_token_4                 => 'PRODUCT_NAME'
128969                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
128970                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
128971                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
128972                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
128973                                     ,p_ae_header_id            =>  NULL
128974                                        );
128975 
128976         IF (C_LEVEL_ERROR>= g_log_level) THEN
128977                  trace
128978                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128979                       ,p_level    => C_LEVEL_ERROR
128980                       ,p_module   => l_log_module);
128981         END IF;
128982       END IF;
128983    END IF;
128984    --
128985    --
128986    ------------------------------------------------------------------------------------------------
128987    -- 4219869 Business Flow
128988    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
128989    -- Prior Entry.  Currently, the following code is always generated.
128990    ------------------------------------------------------------------------------------------------
128991    XLA_AE_LINES_PKG.ValidateCurrentLine;
128992 
128993    ------------------------------------------------------------------------------------
128994    -- 4219869 Business Flow
128995    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
128996    ------------------------------------------------------------------------------------
128997    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
128998 
128999    ----------------------------------------------------------------------------------
129000    -- 4219869 Business Flow
129001    -- Update journal entry status -- Need to generate this within IF <condition>
129002    ----------------------------------------------------------------------------------
129003    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129004          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
129005          ,p_balance_type_code => l_balance_type_code
129006          );
129007 
129008    -------------------------------------------------------------------------------------------
129009    -- 4262811 - Generate the Accrual Reversal lines
129010    -------------------------------------------------------------------------------------------
129011    BEGIN
129012       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
129013                               (g_array_event(p_event_id).array_value_num('header_index'));
129014       IF l_acc_rev_flag IS NULL THEN
129015          l_acc_rev_flag := 'N';
129016       END IF;
129017    EXCEPTION
129018       WHEN OTHERS THEN
129019          l_acc_rev_flag := 'N';
129020    END;
129021    --
129022    IF (l_acc_rev_flag = 'Y') THEN
129023 
129024        -- 4645092  ------------------------------------------------------------------------------
129025        -- To allow MPA report to determine if it should generate report process
129026        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
129027        ------------------------------------------------------------------------------------------
129028 
129029        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
129030        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
129031    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
129032    -- call ADRs
129033    -- Bug 4922099
129034    --
129035    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
129036         (NVL(l_actual_upg_option, 'N') = 'O') OR
129037         (NVL(l_enc_upg_option, 'N') = 'O')
129038       )
129039    THEN
129040    NULL;
129041    --
129042    --
129043    
129044   l_ccid := AcctDerRule_4(
129045            p_application_id           => p_application_id
129046          , p_ae_header_id             => l_ae_header_id 
129047 , p_source_4 => p_source_4
129048          , x_transaction_coa_id       => l_adr_transaction_coa_id
129049          , x_accounting_coa_id        => l_adr_accounting_coa_id
129050          , x_value_type_code          => l_adr_value_type_code
129051          , p_side                     => 'NA'
129052    );
129053 
129054    xla_ae_lines_pkg.set_ccid(
129055     p_code_combination_id          => l_ccid
129056   , p_value_type_code              => l_adr_value_type_code
129057   , p_transaction_coa_id           => l_adr_transaction_coa_id
129058   , p_accounting_coa_id            => l_adr_accounting_coa_id
129059   , p_adr_code                     => 'CST_DEFAULT'
129060   , p_adr_type_code                => 'S'
129061   , p_component_type               => l_component_type
129062   , p_component_code               => l_component_code
129063   , p_component_type_code          => l_component_type_code
129064   , p_component_appl_id            => l_component_appl_id
129065   , p_amb_context_code             => l_amb_context_code
129066   , p_side                         => 'NA'
129067   );
129068 
129069 
129070    --
129071    --
129072    END IF;
129073 
129074        --
129075        -- Update the line information that should be overwritten
129076        --
129077        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
129078                                          p_header_num   => 1);
129079        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
129080 
129081        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
129082 
129083        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
129084           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
129085        END IF;
129086 
129087       --
129088       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
129089       --
129090       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
129091           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
129092       ELSE
129093           ---------------------------------------------------------------------------------------------------
129094           -- 4262811a Switch Sign
129095           ---------------------------------------------------------------------------------------------------
129096           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
129097           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129098                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129099           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129100                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129101           -- 5132302
129102           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
129103                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129104 
129105       END IF;
129106 
129107       -- 4955764
129108       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129109       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
129110 
129111 
129112       XLA_AE_LINES_PKG.ValidateCurrentLine;
129113       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
129114 
129115       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129116                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
129117                ,p_balance_type_code => l_balance_type_code);
129118 
129119    END IF;
129120 
129121    -----------------------------------------------------------------------------------------
129122    -- 4262811 Multiperiod Accounting
129123    -----------------------------------------------------------------------------------------
129124      -- No MPA option is assigned.
129125 
129126 
129127 END IF;
129128 END IF;
129129 --
129130 
129131 --
129132 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129133    trace
129134       (p_msg      => 'END of AcctLineType_233'
129135       ,p_level    => C_LEVEL_PROCEDURE
129136       ,p_module   => l_log_module);
129137 END IF;
129138 --
129139 EXCEPTION
129140   WHEN xla_exceptions_pkg.application_exception THEN
129141       RAISE;
129142   WHEN OTHERS THEN
129143        xla_exceptions_pkg.raise_message
129144            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_233');
129145 END AcctLineType_233;
129146 --
129147 
129148 ---------------------------------------
129149 --
129150 -- PRIVATE FUNCTION
129151 --         AcctLineType_234
129152 --
129153 ---------------------------------------
129154 PROCEDURE AcctLineType_234 (
129155   p_application_id        IN NUMBER
129156  ,p_event_id              IN NUMBER
129157  ,p_calculate_acctd_flag  IN VARCHAR2
129158  ,p_calculate_g_l_flag    IN VARCHAR2
129159  ,p_actual_flag           IN OUT VARCHAR2
129160  ,p_balance_type_code     OUT VARCHAR2
129161  ,p_gain_or_loss_ref      OUT VARCHAR2
129162  
129163 --Cost Management Default Account
129164  , p_source_4            IN NUMBER
129165 --Receiving Accounting Line Type
129166  , p_source_5            IN VARCHAR2
129167 --DISTRIBUTION_IDENTIFIER
129168  , p_source_11            IN NUMBER
129169 --Distribution Type
129170  , p_source_12            IN VARCHAR2
129171  , p_source_12_meaning    IN VARCHAR2
129172 --Entered Currency Code
129173  , p_source_15            IN VARCHAR2
129174 --Entered Amount
129175  , p_source_18            IN NUMBER
129176 --Currency Conversion Date
129177  , p_source_19            IN DATE
129178 --Currency Conversion Rate
129179  , p_source_20            IN NUMBER
129180 --Currency Conversion Type
129181  , p_source_21            IN VARCHAR2
129182 --Accounted Amount
129183  , p_source_22            IN NUMBER
129184 )
129185 IS
129186 
129187 l_component_type              VARCHAR2(80);
129188 l_component_code              VARCHAR2(30);
129189 l_component_type_code         VARCHAR2(1);
129190 l_component_appl_id           INTEGER;
129191 l_amb_context_code            VARCHAR2(30);
129192 l_entity_code                 VARCHAR2(30);
129193 l_event_class_code            VARCHAR2(30);
129194 l_ae_header_id                NUMBER;
129195 l_event_type_code             VARCHAR2(30);
129196 l_line_definition_code        VARCHAR2(30);
129197 l_line_definition_owner_code  VARCHAR2(1);
129198 --
129199 -- adr variables
129200 l_segment                     VARCHAR2(30);
129201 l_ccid                        NUMBER;
129202 l_adr_transaction_coa_id      NUMBER;
129203 l_adr_accounting_coa_id       NUMBER;
129204 l_adr_flexfield_segment_code  VARCHAR2(30);
129205 l_adr_flex_value_set_id       NUMBER;
129206 l_adr_value_type_code         VARCHAR2(30);
129207 l_adr_value_combination_id    NUMBER;
129208 l_adr_value_segment_code      VARCHAR2(30);
129209 
129210 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
129211 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
129212 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
129213 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
129214 
129215 -- 4262811 Variables ------------------------------------------------------------------------------------------
129216 l_entered_amt_idx             NUMBER;
129217 l_accted_amt_idx              NUMBER;
129218 l_acc_rev_flag                VARCHAR2(1);
129219 l_accrual_line_num            NUMBER;
129220 l_tmp_amt                     NUMBER;
129221 l_acc_rev_natural_side_code   VARCHAR2(1);
129222 
129223 l_num_entries                 NUMBER;
129224 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
129225 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
129226 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
129227 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
129228 l_recog_line_1                NUMBER;
129229 l_recog_line_2                NUMBER;
129230 
129231 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
129232 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
129233 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
129234 
129235 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
129236 
129237 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
129238 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
129239 
129240 ---------------------------------------------------------------------------------------------------------------
129241 
129242 
129243 --
129244 -- bulk performance
129245 --
129246 l_balance_type_code           VARCHAR2(1);
129247 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
129248 l_log_module                  VARCHAR2(240);
129249 
129250 --
129251 -- Upgrade strategy
129252 --
129253 l_actual_upg_option           VARCHAR2(1);
129254 l_enc_upg_option           VARCHAR2(1);
129255 
129256 --
129257 BEGIN
129258 --
129259 IF g_log_enabled THEN
129260       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_234';
129261 END IF;
129262 --
129263 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129264 
129265       trace
129266          (p_msg      => 'BEGIN of AcctLineType_234'
129267          ,p_level    => C_LEVEL_PROCEDURE
129268          ,p_module   => l_log_module);
129269 
129270 END IF;
129271 --
129272 l_component_type             := 'AMB_JLT';
129273 l_component_code             := 'RECEIVING_INSPECTION';
129274 l_component_type_code        := 'S';
129275 l_component_appl_id          :=  707;
129276 l_amb_context_code           := 'DEFAULT';
129277 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
129278 l_event_class_code           := 'RETR_PRICE_ADJ_RCV';
129279 l_event_type_code            := 'RETR_PRICE_ADJ_RCV_ALL';
129280 l_line_definition_owner_code := 'S';
129281 l_line_definition_code       := 'RETR_PRICE_ADJ_RCV';
129282 --
129283 l_balance_type_code          := 'A';
129284 l_segment                     := NULL;
129285 l_ccid                        := NULL;
129286 l_adr_transaction_coa_id      := NULL;
129287 l_adr_accounting_coa_id       := NULL;
129288 l_adr_flexfield_segment_code  := NULL;
129289 l_adr_flex_value_set_id       := NULL;
129290 l_adr_value_type_code         := NULL;
129291 l_adr_value_combination_id    := NULL;
129292 l_adr_value_segment_code      := NULL;
129293 
129294 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
129295 l_bflow_class_code           := '';    -- 4219869 Business Flow
129296 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
129297 l_budgetary_control_flag     := 'N';
129298 
129299 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
129300 l_bflow_applied_to_amt       := NULL; -- 5132302
129301 l_entered_amt_idx            := NULL;          -- 4262811
129302 l_accted_amt_idx             := NULL;          -- 4262811
129303 l_acc_rev_flag               := NULL;          -- 4262811
129304 l_accrual_line_num           := NULL;          -- 4262811
129305 l_tmp_amt                    := NULL;          -- 4262811
129306 --
129307  
129308 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
129309     l_balance_type_code <> 'B' THEN
129310 IF NVL(p_source_5,'
129311 ') =  'Receiving Inspection'
129312  THEN 
129313 
129314    --
129315    XLA_AE_LINES_PKG.SetNewLine;
129316 
129317    p_balance_type_code          := l_balance_type_code;
129318    -- set the flag so later we will know whether the gain loss line needs to be created
129319    
129320    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
129321      p_actual_flag :='A';
129322    END IF;
129323 
129324    --
129325    -- bulk performance
129326    --
129327    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
129328                                       p_header_num   => 0); -- 4262811
129329    --
129330    -- set accounting line options
129331    --
129332    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
129333            p_natural_side_code          => 'D'
129334          , p_gain_or_loss_flag          => 'N'
129335          , p_gl_transfer_mode_code      => 'S'
129336          , p_acct_entry_type_code       => 'A'
129337          , p_switch_side_flag           => 'Y'
129338          , p_merge_duplicate_code       => 'N'
129339          );
129340    --
129341    l_acc_rev_natural_side_code := 'C';  -- 4262811
129342    -- 
129343    --
129344    -- set accounting line type info
129345    --
129346    xla_ae_lines_pkg.SetAcctLineType
129347       (p_component_type             => l_component_type
129348       ,p_event_type_code            => l_event_type_code
129349       ,p_line_definition_owner_code => l_line_definition_owner_code
129350       ,p_line_definition_code       => l_line_definition_code
129351       ,p_accounting_line_code       => l_component_code
129352       ,p_accounting_line_type_code  => l_component_type_code
129353       ,p_accounting_line_appl_id    => l_component_appl_id
129354       ,p_amb_context_code           => l_amb_context_code
129355       ,p_entity_code                => l_entity_code
129356       ,p_event_class_code           => l_event_class_code);
129357    --
129358    -- set accounting class
129359    --
129360    xla_ae_lines_pkg.SetAcctClass(
129361            p_accounting_class_code  => 'RECEIVING_INSPECTION'
129362          , p_ae_header_id           => l_ae_header_id
129363          );
129364 
129365    --
129366    -- set rounding class
129367    --
129368    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
129369                       'RECEIVING_INSPECTION';
129370 
129371    --
129372    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
129373    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
129374    --
129375    -- bulk performance
129376    --
129377    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
129378 
129379    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
129380       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
129381 
129382    -- 4955764
129383    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129384       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
129385 
129386    -- 4458381 Public Sector Enh
129387    
129388    --
129389    -- set accounting attributes for the line type
129390    --
129391    l_entered_amt_idx := 3;
129392    l_accted_amt_idx  := 8;
129393    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
129394    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
129395    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
129396    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
129397    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
129398    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
129399    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
129400    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
129401    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
129402    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
129403    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
129404    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
129405    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
129406    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
129407    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
129408    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
129409    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
129410 
129411    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
129412    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
129413 
129414    ---------------------------------------------------------------------------------------------------------------
129415    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
129416    ---------------------------------------------------------------------------------------------------------------
129417    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
129418 
129419    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129420    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129421 
129422    IF xla_accounting_cache_pkg.GetValueChar
129423          (p_source_code         => 'LEDGER_CATEGORY_CODE'
129424          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
129425    AND l_bflow_method_code = 'PRIOR_ENTRY'
129426 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
129427    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
129428          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
129429        )
129430    THEN
129431          xla_ae_lines_pkg.BflowUpgEntry
129432            (p_business_method_code    => l_bflow_method_code
129433            ,p_business_class_code     => l_bflow_class_code
129434            ,p_balance_type            => l_balance_type_code);
129435    ELSE
129436       NULL;
129437 -- No business flow processing for business flow method of NONE.
129438    END IF;
129439 
129440    --
129441    -- call analytical criteria
129442    --
129443    
129444    --
129445    -- call description
129446    --
129447    -- No description or it is inherited.
129448    --
129449    -- call ADRs
129450    -- Bug 4922099
129451    --
129452    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
129453         (NVL(l_actual_upg_option, 'N') = 'O') OR
129454         (NVL(l_enc_upg_option, 'N') = 'O')
129455       )
129456    THEN
129457    NULL;
129458    --
129459    --
129460    
129461   l_ccid := AcctDerRule_4(
129462            p_application_id           => p_application_id
129463          , p_ae_header_id             => l_ae_header_id 
129464 , p_source_4 => p_source_4
129465          , x_transaction_coa_id       => l_adr_transaction_coa_id
129466          , x_accounting_coa_id        => l_adr_accounting_coa_id
129467          , x_value_type_code          => l_adr_value_type_code
129468          , p_side                     => 'NA'
129469    );
129470 
129471    xla_ae_lines_pkg.set_ccid(
129472     p_code_combination_id          => l_ccid
129473   , p_value_type_code              => l_adr_value_type_code
129474   , p_transaction_coa_id           => l_adr_transaction_coa_id
129475   , p_accounting_coa_id            => l_adr_accounting_coa_id
129476   , p_adr_code                     => 'CST_DEFAULT'
129477   , p_adr_type_code                => 'S'
129478   , p_component_type               => l_component_type
129479   , p_component_code               => l_component_code
129480   , p_component_type_code          => l_component_type_code
129481   , p_component_appl_id            => l_component_appl_id
129482   , p_amb_context_code             => l_amb_context_code
129483   , p_side                         => 'NA'
129484   );
129485 
129486 
129487    --
129488    --
129489    END IF;
129490    --
129491    -- Bug 4922099
129492    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
129493           (NVL(l_enc_upg_option, 'N') = 'O')
129494         ) AND
129495         (l_bflow_method_code = 'PRIOR_ENTRY')
129496       )
129497    THEN
129498       IF
129499       --
129500       1 = 2
129501       --
129502       THEN
129503       xla_accounting_err_pkg.build_message
129504                                     (p_appli_s_name            => 'XLA'
129505                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
129506                                     ,p_token_1                 => 'LINE_NUMBER'
129507                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
129508                                     ,p_token_2                 => 'LINE_TYPE_NAME'
129509                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
129510                                                                              l_component_type
129511                                                                             ,l_component_code
129512                                                                             ,l_component_type_code
129513                                                                             ,l_component_appl_id
129514                                                                             ,l_amb_context_code
129515                                                                             ,l_entity_code
129516                                                                             ,l_event_class_code
129517                                                                            )
129518                                     ,p_token_3                 => 'OWNER'
129519                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
129520                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
129521                                                                           ,p_lookup_code    => l_component_type_code
129522                                                                          )
129523                                     ,p_token_4                 => 'PRODUCT_NAME'
129524                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
129525                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
129526                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
129527                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
129528                                     ,p_ae_header_id            =>  NULL
129529                                        );
129530 
129531         IF (C_LEVEL_ERROR>= g_log_level) THEN
129532                  trace
129533                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
129534                       ,p_level    => C_LEVEL_ERROR
129535                       ,p_module   => l_log_module);
129536         END IF;
129537       END IF;
129538    END IF;
129539    --
129540    --
129541    ------------------------------------------------------------------------------------------------
129542    -- 4219869 Business Flow
129543    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
129544    -- Prior Entry.  Currently, the following code is always generated.
129545    ------------------------------------------------------------------------------------------------
129546    XLA_AE_LINES_PKG.ValidateCurrentLine;
129547 
129548    ------------------------------------------------------------------------------------
129549    -- 4219869 Business Flow
129550    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
129551    ------------------------------------------------------------------------------------
129552    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
129553 
129554    ----------------------------------------------------------------------------------
129555    -- 4219869 Business Flow
129556    -- Update journal entry status -- Need to generate this within IF <condition>
129557    ----------------------------------------------------------------------------------
129558    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129559          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
129560          ,p_balance_type_code => l_balance_type_code
129561          );
129562 
129563    -------------------------------------------------------------------------------------------
129564    -- 4262811 - Generate the Accrual Reversal lines
129565    -------------------------------------------------------------------------------------------
129566    BEGIN
129567       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
129568                               (g_array_event(p_event_id).array_value_num('header_index'));
129569       IF l_acc_rev_flag IS NULL THEN
129570          l_acc_rev_flag := 'N';
129571       END IF;
129572    EXCEPTION
129573       WHEN OTHERS THEN
129574          l_acc_rev_flag := 'N';
129575    END;
129576    --
129577    IF (l_acc_rev_flag = 'Y') THEN
129578 
129579        -- 4645092  ------------------------------------------------------------------------------
129580        -- To allow MPA report to determine if it should generate report process
129581        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
129582        ------------------------------------------------------------------------------------------
129583 
129584        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
129585        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
129586    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
129587    -- call ADRs
129588    -- Bug 4922099
129589    --
129590    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
129591         (NVL(l_actual_upg_option, 'N') = 'O') OR
129592         (NVL(l_enc_upg_option, 'N') = 'O')
129593       )
129594    THEN
129595    NULL;
129596    --
129597    --
129598    
129599   l_ccid := AcctDerRule_4(
129600            p_application_id           => p_application_id
129601          , p_ae_header_id             => l_ae_header_id 
129602 , p_source_4 => p_source_4
129603          , x_transaction_coa_id       => l_adr_transaction_coa_id
129604          , x_accounting_coa_id        => l_adr_accounting_coa_id
129605          , x_value_type_code          => l_adr_value_type_code
129606          , p_side                     => 'NA'
129607    );
129608 
129609    xla_ae_lines_pkg.set_ccid(
129610     p_code_combination_id          => l_ccid
129611   , p_value_type_code              => l_adr_value_type_code
129612   , p_transaction_coa_id           => l_adr_transaction_coa_id
129613   , p_accounting_coa_id            => l_adr_accounting_coa_id
129614   , p_adr_code                     => 'CST_DEFAULT'
129615   , p_adr_type_code                => 'S'
129616   , p_component_type               => l_component_type
129617   , p_component_code               => l_component_code
129618   , p_component_type_code          => l_component_type_code
129619   , p_component_appl_id            => l_component_appl_id
129620   , p_amb_context_code             => l_amb_context_code
129621   , p_side                         => 'NA'
129622   );
129623 
129624 
129625    --
129626    --
129627    END IF;
129628 
129629        --
129630        -- Update the line information that should be overwritten
129631        --
129632        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
129633                                          p_header_num   => 1);
129634        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
129635 
129636        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
129637 
129638        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
129639           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
129640        END IF;
129641 
129642       --
129643       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
129644       --
129645       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
129646           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
129647       ELSE
129648           ---------------------------------------------------------------------------------------------------
129649           -- 4262811a Switch Sign
129650           ---------------------------------------------------------------------------------------------------
129651           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
129652           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129653                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129654           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129655                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129656           -- 5132302
129657           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
129658                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129659 
129660       END IF;
129661 
129662       -- 4955764
129663       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129664       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
129665 
129666 
129667       XLA_AE_LINES_PKG.ValidateCurrentLine;
129668       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
129669 
129670       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129671                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
129672                ,p_balance_type_code => l_balance_type_code);
129673 
129674    END IF;
129675 
129676    -----------------------------------------------------------------------------------------
129677    -- 4262811 Multiperiod Accounting
129678    -----------------------------------------------------------------------------------------
129679      -- No MPA option is assigned.
129680 
129681 
129682 END IF;
129683 END IF;
129684 --
129685 
129686 --
129687 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129688    trace
129689       (p_msg      => 'END of AcctLineType_234'
129690       ,p_level    => C_LEVEL_PROCEDURE
129691       ,p_module   => l_log_module);
129692 END IF;
129693 --
129694 EXCEPTION
129695   WHEN xla_exceptions_pkg.application_exception THEN
129696       RAISE;
129697   WHEN OTHERS THEN
129698        xla_exceptions_pkg.raise_message
129699            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_234');
129700 END AcctLineType_234;
129701 --
129702 
129703 ---------------------------------------
129704 --
129705 -- PRIVATE FUNCTION
129706 --         AcctLineType_235
129707 --
129708 ---------------------------------------
129709 PROCEDURE AcctLineType_235 (
129710   p_application_id        IN NUMBER
129711  ,p_event_id              IN NUMBER
129712  ,p_calculate_acctd_flag  IN VARCHAR2
129713  ,p_calculate_g_l_flag    IN VARCHAR2
129714  ,p_actual_flag           IN OUT VARCHAR2
129715  ,p_balance_type_code     OUT VARCHAR2
129716  ,p_gain_or_loss_ref      OUT VARCHAR2
129717  
129718 --Cost Management Default Account
129719  , p_source_4            IN NUMBER
129720 --DISTRIBUTION_IDENTIFIER
129721  , p_source_11            IN NUMBER
129722 --Distribution Type
129723  , p_source_12            IN VARCHAR2
129724  , p_source_12_meaning    IN VARCHAR2
129725 --Entered Currency Code
129726  , p_source_15            IN VARCHAR2
129727 --Entered Amount
129728  , p_source_18            IN NUMBER
129729 --Currency Conversion Date
129730  , p_source_19            IN DATE
129731 --Currency Conversion Rate
129732  , p_source_20            IN NUMBER
129733 --Accounted Amount
129734  , p_source_22            IN NUMBER
129735 --Accounting Line Type
129736  , p_source_24            IN NUMBER
129737 )
129738 IS
129739 
129740 l_component_type              VARCHAR2(80);
129741 l_component_code              VARCHAR2(30);
129742 l_component_type_code         VARCHAR2(1);
129743 l_component_appl_id           INTEGER;
129744 l_amb_context_code            VARCHAR2(30);
129745 l_entity_code                 VARCHAR2(30);
129746 l_event_class_code            VARCHAR2(30);
129747 l_ae_header_id                NUMBER;
129748 l_event_type_code             VARCHAR2(30);
129749 l_line_definition_code        VARCHAR2(30);
129750 l_line_definition_owner_code  VARCHAR2(1);
129751 --
129752 -- adr variables
129753 l_segment                     VARCHAR2(30);
129754 l_ccid                        NUMBER;
129755 l_adr_transaction_coa_id      NUMBER;
129756 l_adr_accounting_coa_id       NUMBER;
129757 l_adr_flexfield_segment_code  VARCHAR2(30);
129758 l_adr_flex_value_set_id       NUMBER;
129759 l_adr_value_type_code         VARCHAR2(30);
129760 l_adr_value_combination_id    NUMBER;
129761 l_adr_value_segment_code      VARCHAR2(30);
129762 
129763 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
129764 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
129765 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
129766 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
129767 
129768 -- 4262811 Variables ------------------------------------------------------------------------------------------
129769 l_entered_amt_idx             NUMBER;
129770 l_accted_amt_idx              NUMBER;
129771 l_acc_rev_flag                VARCHAR2(1);
129772 l_accrual_line_num            NUMBER;
129773 l_tmp_amt                     NUMBER;
129774 l_acc_rev_natural_side_code   VARCHAR2(1);
129775 
129776 l_num_entries                 NUMBER;
129777 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
129778 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
129779 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
129780 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
129781 l_recog_line_1                NUMBER;
129782 l_recog_line_2                NUMBER;
129783 
129784 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
129785 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
129786 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
129787 
129788 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
129789 
129790 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
129791 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
129792 
129793 ---------------------------------------------------------------------------------------------------------------
129794 
129795 
129796 --
129797 -- bulk performance
129798 --
129799 l_balance_type_code           VARCHAR2(1);
129800 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
129801 l_log_module                  VARCHAR2(240);
129802 
129803 --
129804 -- Upgrade strategy
129805 --
129806 l_actual_upg_option           VARCHAR2(1);
129807 l_enc_upg_option           VARCHAR2(1);
129808 
129809 --
129810 BEGIN
129811 --
129812 IF g_log_enabled THEN
129813       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_235';
129814 END IF;
129815 --
129816 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129817 
129818       trace
129819          (p_msg      => 'BEGIN of AcctLineType_235'
129820          ,p_level    => C_LEVEL_PROCEDURE
129821          ,p_module   => l_log_module);
129822 
129823 END IF;
129824 --
129825 l_component_type             := 'AMB_JLT';
129826 l_component_code             := 'RESOURCE_ABSORPTION';
129827 l_component_type_code        := 'S';
129828 l_component_appl_id          :=  707;
129829 l_amb_context_code           := 'DEFAULT';
129830 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
129831 l_event_class_code           := 'OSP';
129832 l_event_type_code            := 'OSP_ALL';
129833 l_line_definition_owner_code := 'S';
129834 l_line_definition_code       := 'OUTSIDE_PROCESSING';
129835 --
129836 l_balance_type_code          := 'A';
129837 l_segment                     := NULL;
129838 l_ccid                        := NULL;
129839 l_adr_transaction_coa_id      := NULL;
129840 l_adr_accounting_coa_id       := NULL;
129841 l_adr_flexfield_segment_code  := NULL;
129842 l_adr_flex_value_set_id       := NULL;
129843 l_adr_value_type_code         := NULL;
129844 l_adr_value_combination_id    := NULL;
129845 l_adr_value_segment_code      := NULL;
129846 
129847 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
129848 l_bflow_class_code           := '';    -- 4219869 Business Flow
129849 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
129850 l_budgetary_control_flag     := 'N';
129851 
129852 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
129853 l_bflow_applied_to_amt       := NULL; -- 5132302
129854 l_entered_amt_idx            := NULL;          -- 4262811
129855 l_accted_amt_idx             := NULL;          -- 4262811
129856 l_acc_rev_flag               := NULL;          -- 4262811
129857 l_accrual_line_num           := NULL;          -- 4262811
129858 l_tmp_amt                    := NULL;          -- 4262811
129859 --
129860  
129861 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
129862     l_balance_type_code <> 'B' THEN
129863 IF NVL(p_source_24,9E125) =  4
129864  THEN 
129865 
129866    --
129867    XLA_AE_LINES_PKG.SetNewLine;
129868 
129869    p_balance_type_code          := l_balance_type_code;
129870    -- set the flag so later we will know whether the gain loss line needs to be created
129871    
129872    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
129873      p_actual_flag :='A';
129874    END IF;
129875 
129876    --
129877    -- bulk performance
129878    --
129879    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
129880                                       p_header_num   => 0); -- 4262811
129881    --
129882    -- set accounting line options
129883    --
129884    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
129885            p_natural_side_code          => 'D'
129886          , p_gain_or_loss_flag          => 'N'
129887          , p_gl_transfer_mode_code      => 'S'
129888          , p_acct_entry_type_code       => 'A'
129889          , p_switch_side_flag           => 'Y'
129890          , p_merge_duplicate_code       => 'N'
129891          );
129892    --
129893    l_acc_rev_natural_side_code := 'C';  -- 4262811
129894    -- 
129895    --
129896    -- set accounting line type info
129897    --
129898    xla_ae_lines_pkg.SetAcctLineType
129899       (p_component_type             => l_component_type
129900       ,p_event_type_code            => l_event_type_code
129901       ,p_line_definition_owner_code => l_line_definition_owner_code
129902       ,p_line_definition_code       => l_line_definition_code
129903       ,p_accounting_line_code       => l_component_code
129904       ,p_accounting_line_type_code  => l_component_type_code
129905       ,p_accounting_line_appl_id    => l_component_appl_id
129906       ,p_amb_context_code           => l_amb_context_code
129907       ,p_entity_code                => l_entity_code
129908       ,p_event_class_code           => l_event_class_code);
129909    --
129910    -- set accounting class
129911    --
129912    xla_ae_lines_pkg.SetAcctClass(
129913            p_accounting_class_code  => 'RESOURCE_ABSORPTION'
129914          , p_ae_header_id           => l_ae_header_id
129915          );
129916 
129917    --
129918    -- set rounding class
129919    --
129920    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
129921                       'RESOURCE_ABSORPTION';
129922 
129923    --
129924    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
129925    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
129926    --
129927    -- bulk performance
129928    --
129929    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
129930 
129931    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
129932       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
129933 
129934    -- 4955764
129935    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129936       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
129937 
129938    -- 4458381 Public Sector Enh
129939    
129940    --
129941    -- set accounting attributes for the line type
129942    --
129943    l_entered_amt_idx := 3;
129944    l_accted_amt_idx  := 8;
129945    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
129946    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
129947    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
129948    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
129949    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
129950    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
129951    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
129952    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
129953    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
129954    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
129955    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
129956    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
129957    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
129958    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
129959    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
129960    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
129961    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
129962 
129963    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
129964    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
129965 
129966    ---------------------------------------------------------------------------------------------------------------
129967    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
129968    ---------------------------------------------------------------------------------------------------------------
129969    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
129970 
129971    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129972    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129973 
129974    IF xla_accounting_cache_pkg.GetValueChar
129975          (p_source_code         => 'LEDGER_CATEGORY_CODE'
129976          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
129977    AND l_bflow_method_code = 'PRIOR_ENTRY'
129978 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
129979    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
129980          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
129981        )
129982    THEN
129983          xla_ae_lines_pkg.BflowUpgEntry
129984            (p_business_method_code    => l_bflow_method_code
129985            ,p_business_class_code     => l_bflow_class_code
129986            ,p_balance_type            => l_balance_type_code);
129987    ELSE
129988       NULL;
129989 -- No business flow processing for business flow method of NONE.
129990    END IF;
129991 
129992    --
129993    -- call analytical criteria
129994    --
129995    
129996    --
129997    -- call description
129998    --
129999    -- No description or it is inherited.
130000    --
130001    -- call ADRs
130002    -- Bug 4922099
130003    --
130004    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130005         (NVL(l_actual_upg_option, 'N') = 'O') OR
130006         (NVL(l_enc_upg_option, 'N') = 'O')
130007       )
130008    THEN
130009    NULL;
130010    --
130011    --
130012    
130013   l_ccid := AcctDerRule_4(
130014            p_application_id           => p_application_id
130015          , p_ae_header_id             => l_ae_header_id 
130016 , p_source_4 => p_source_4
130017          , x_transaction_coa_id       => l_adr_transaction_coa_id
130018          , x_accounting_coa_id        => l_adr_accounting_coa_id
130019          , x_value_type_code          => l_adr_value_type_code
130020          , p_side                     => 'NA'
130021    );
130022 
130023    xla_ae_lines_pkg.set_ccid(
130024     p_code_combination_id          => l_ccid
130025   , p_value_type_code              => l_adr_value_type_code
130026   , p_transaction_coa_id           => l_adr_transaction_coa_id
130027   , p_accounting_coa_id            => l_adr_accounting_coa_id
130028   , p_adr_code                     => 'CST_DEFAULT'
130029   , p_adr_type_code                => 'S'
130030   , p_component_type               => l_component_type
130031   , p_component_code               => l_component_code
130032   , p_component_type_code          => l_component_type_code
130033   , p_component_appl_id            => l_component_appl_id
130034   , p_amb_context_code             => l_amb_context_code
130035   , p_side                         => 'NA'
130036   );
130037 
130038 
130039    --
130040    --
130041    END IF;
130042    --
130043    -- Bug 4922099
130044    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
130045           (NVL(l_enc_upg_option, 'N') = 'O')
130046         ) AND
130047         (l_bflow_method_code = 'PRIOR_ENTRY')
130048       )
130049    THEN
130050       IF
130051       --
130052       1 = 2
130053       --
130054       THEN
130055       xla_accounting_err_pkg.build_message
130056                                     (p_appli_s_name            => 'XLA'
130057                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130058                                     ,p_token_1                 => 'LINE_NUMBER'
130059                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
130060                                     ,p_token_2                 => 'LINE_TYPE_NAME'
130061                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
130062                                                                              l_component_type
130063                                                                             ,l_component_code
130064                                                                             ,l_component_type_code
130065                                                                             ,l_component_appl_id
130066                                                                             ,l_amb_context_code
130067                                                                             ,l_entity_code
130068                                                                             ,l_event_class_code
130069                                                                            )
130070                                     ,p_token_3                 => 'OWNER'
130071                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
130072                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
130073                                                                           ,p_lookup_code    => l_component_type_code
130074                                                                          )
130075                                     ,p_token_4                 => 'PRODUCT_NAME'
130076                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
130077                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
130078                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
130079                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
130080                                     ,p_ae_header_id            =>  NULL
130081                                        );
130082 
130083         IF (C_LEVEL_ERROR>= g_log_level) THEN
130084                  trace
130085                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130086                       ,p_level    => C_LEVEL_ERROR
130087                       ,p_module   => l_log_module);
130088         END IF;
130089       END IF;
130090    END IF;
130091    --
130092    --
130093    ------------------------------------------------------------------------------------------------
130094    -- 4219869 Business Flow
130095    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
130096    -- Prior Entry.  Currently, the following code is always generated.
130097    ------------------------------------------------------------------------------------------------
130098    XLA_AE_LINES_PKG.ValidateCurrentLine;
130099 
130100    ------------------------------------------------------------------------------------
130101    -- 4219869 Business Flow
130102    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
130103    ------------------------------------------------------------------------------------
130104    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130105 
130106    ----------------------------------------------------------------------------------
130107    -- 4219869 Business Flow
130108    -- Update journal entry status -- Need to generate this within IF <condition>
130109    ----------------------------------------------------------------------------------
130110    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130111          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
130112          ,p_balance_type_code => l_balance_type_code
130113          );
130114 
130115    -------------------------------------------------------------------------------------------
130116    -- 4262811 - Generate the Accrual Reversal lines
130117    -------------------------------------------------------------------------------------------
130118    BEGIN
130119       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
130120                               (g_array_event(p_event_id).array_value_num('header_index'));
130121       IF l_acc_rev_flag IS NULL THEN
130122          l_acc_rev_flag := 'N';
130123       END IF;
130124    EXCEPTION
130125       WHEN OTHERS THEN
130126          l_acc_rev_flag := 'N';
130127    END;
130128    --
130129    IF (l_acc_rev_flag = 'Y') THEN
130130 
130131        -- 4645092  ------------------------------------------------------------------------------
130132        -- To allow MPA report to determine if it should generate report process
130133        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
130134        ------------------------------------------------------------------------------------------
130135 
130136        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
130137        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
130138    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
130139    -- call ADRs
130140    -- Bug 4922099
130141    --
130142    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130143         (NVL(l_actual_upg_option, 'N') = 'O') OR
130144         (NVL(l_enc_upg_option, 'N') = 'O')
130145       )
130146    THEN
130147    NULL;
130148    --
130149    --
130150    
130151   l_ccid := AcctDerRule_4(
130152            p_application_id           => p_application_id
130153          , p_ae_header_id             => l_ae_header_id 
130154 , p_source_4 => p_source_4
130155          , x_transaction_coa_id       => l_adr_transaction_coa_id
130156          , x_accounting_coa_id        => l_adr_accounting_coa_id
130157          , x_value_type_code          => l_adr_value_type_code
130158          , p_side                     => 'NA'
130159    );
130160 
130161    xla_ae_lines_pkg.set_ccid(
130162     p_code_combination_id          => l_ccid
130163   , p_value_type_code              => l_adr_value_type_code
130164   , p_transaction_coa_id           => l_adr_transaction_coa_id
130165   , p_accounting_coa_id            => l_adr_accounting_coa_id
130166   , p_adr_code                     => 'CST_DEFAULT'
130167   , p_adr_type_code                => 'S'
130168   , p_component_type               => l_component_type
130169   , p_component_code               => l_component_code
130170   , p_component_type_code          => l_component_type_code
130171   , p_component_appl_id            => l_component_appl_id
130172   , p_amb_context_code             => l_amb_context_code
130173   , p_side                         => 'NA'
130174   );
130175 
130176 
130177    --
130178    --
130179    END IF;
130180 
130181        --
130182        -- Update the line information that should be overwritten
130183        --
130184        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
130185                                          p_header_num   => 1);
130186        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
130187 
130188        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
130189 
130190        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
130191           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
130192        END IF;
130193 
130194       --
130195       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
130196       --
130197       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
130198           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
130199       ELSE
130200           ---------------------------------------------------------------------------------------------------
130201           -- 4262811a Switch Sign
130202           ---------------------------------------------------------------------------------------------------
130203           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
130204           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130205                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130206           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130207                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130208           -- 5132302
130209           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
130210                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130211 
130212       END IF;
130213 
130214       -- 4955764
130215       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130216       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
130217 
130218 
130219       XLA_AE_LINES_PKG.ValidateCurrentLine;
130220       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130221 
130222       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130223                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
130224                ,p_balance_type_code => l_balance_type_code);
130225 
130226    END IF;
130227 
130228    -----------------------------------------------------------------------------------------
130229    -- 4262811 Multiperiod Accounting
130230    -----------------------------------------------------------------------------------------
130231      -- No MPA option is assigned.
130232 
130233 
130234 END IF;
130235 END IF;
130236 --
130237 
130238 --
130239 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130240    trace
130241       (p_msg      => 'END of AcctLineType_235'
130242       ,p_level    => C_LEVEL_PROCEDURE
130243       ,p_module   => l_log_module);
130244 END IF;
130245 --
130246 EXCEPTION
130247   WHEN xla_exceptions_pkg.application_exception THEN
130248       RAISE;
130249   WHEN OTHERS THEN
130250        xla_exceptions_pkg.raise_message
130251            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_235');
130252 END AcctLineType_235;
130253 --
130254 
130255 ---------------------------------------
130256 --
130257 -- PRIVATE FUNCTION
130258 --         AcctLineType_236
130259 --
130260 ---------------------------------------
130261 PROCEDURE AcctLineType_236 (
130262   p_application_id        IN NUMBER
130263  ,p_event_id              IN NUMBER
130264  ,p_calculate_acctd_flag  IN VARCHAR2
130265  ,p_calculate_g_l_flag    IN VARCHAR2
130266  ,p_actual_flag           IN OUT VARCHAR2
130267  ,p_balance_type_code     OUT VARCHAR2
130268  ,p_gain_or_loss_ref      OUT VARCHAR2
130269  
130270 --Cost Management Default Account
130271  , p_source_4            IN NUMBER
130272 --DISTRIBUTION_IDENTIFIER
130273  , p_source_11            IN NUMBER
130274 --Distribution Type
130275  , p_source_12            IN VARCHAR2
130276  , p_source_12_meaning    IN VARCHAR2
130277 --Entered Currency Code
130278  , p_source_15            IN VARCHAR2
130279 --Entered Amount
130280  , p_source_18            IN NUMBER
130281 --Currency Conversion Date
130282  , p_source_19            IN DATE
130283 --Currency Conversion Rate
130284  , p_source_20            IN NUMBER
130285 --Currency Conversion Type
130286  , p_source_21            IN VARCHAR2
130287 --Accounted Amount
130288  , p_source_22            IN NUMBER
130289 --Accounting Line Type
130290  , p_source_24            IN NUMBER
130291 )
130292 IS
130293 
130294 l_component_type              VARCHAR2(80);
130295 l_component_code              VARCHAR2(30);
130296 l_component_type_code         VARCHAR2(1);
130297 l_component_appl_id           INTEGER;
130298 l_amb_context_code            VARCHAR2(30);
130299 l_entity_code                 VARCHAR2(30);
130300 l_event_class_code            VARCHAR2(30);
130301 l_ae_header_id                NUMBER;
130302 l_event_type_code             VARCHAR2(30);
130303 l_line_definition_code        VARCHAR2(30);
130304 l_line_definition_owner_code  VARCHAR2(1);
130305 --
130306 -- adr variables
130307 l_segment                     VARCHAR2(30);
130308 l_ccid                        NUMBER;
130309 l_adr_transaction_coa_id      NUMBER;
130310 l_adr_accounting_coa_id       NUMBER;
130311 l_adr_flexfield_segment_code  VARCHAR2(30);
130312 l_adr_flex_value_set_id       NUMBER;
130313 l_adr_value_type_code         VARCHAR2(30);
130314 l_adr_value_combination_id    NUMBER;
130315 l_adr_value_segment_code      VARCHAR2(30);
130316 
130317 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
130318 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
130319 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
130320 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
130321 
130322 -- 4262811 Variables ------------------------------------------------------------------------------------------
130323 l_entered_amt_idx             NUMBER;
130324 l_accted_amt_idx              NUMBER;
130325 l_acc_rev_flag                VARCHAR2(1);
130326 l_accrual_line_num            NUMBER;
130327 l_tmp_amt                     NUMBER;
130328 l_acc_rev_natural_side_code   VARCHAR2(1);
130329 
130330 l_num_entries                 NUMBER;
130331 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
130332 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
130333 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
130334 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
130335 l_recog_line_1                NUMBER;
130336 l_recog_line_2                NUMBER;
130337 
130338 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
130339 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
130340 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
130341 
130342 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
130343 
130344 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
130345 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
130346 
130347 ---------------------------------------------------------------------------------------------------------------
130348 
130349 
130350 --
130351 -- bulk performance
130352 --
130353 l_balance_type_code           VARCHAR2(1);
130354 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
130355 l_log_module                  VARCHAR2(240);
130356 
130357 --
130358 -- Upgrade strategy
130359 --
130360 l_actual_upg_option           VARCHAR2(1);
130361 l_enc_upg_option           VARCHAR2(1);
130362 
130363 --
130364 BEGIN
130365 --
130366 IF g_log_enabled THEN
130367       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_236';
130368 END IF;
130369 --
130370 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130371 
130372       trace
130373          (p_msg      => 'BEGIN of AcctLineType_236'
130374          ,p_level    => C_LEVEL_PROCEDURE
130375          ,p_module   => l_log_module);
130376 
130377 END IF;
130378 --
130379 l_component_type             := 'AMB_JLT';
130380 l_component_code             := 'RESOURCE_ABSORPTION';
130381 l_component_type_code        := 'S';
130382 l_component_appl_id          :=  707;
130383 l_amb_context_code           := 'DEFAULT';
130384 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
130385 l_event_class_code           := 'ABSORPTION';
130386 l_event_type_code            := 'ABSORPTION_ALL';
130387 l_line_definition_owner_code := 'S';
130388 l_line_definition_code       := 'ABSORPTION';
130389 --
130390 l_balance_type_code          := 'A';
130391 l_segment                     := NULL;
130392 l_ccid                        := NULL;
130393 l_adr_transaction_coa_id      := NULL;
130394 l_adr_accounting_coa_id       := NULL;
130395 l_adr_flexfield_segment_code  := NULL;
130396 l_adr_flex_value_set_id       := NULL;
130397 l_adr_value_type_code         := NULL;
130398 l_adr_value_combination_id    := NULL;
130399 l_adr_value_segment_code      := NULL;
130400 
130401 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
130402 l_bflow_class_code           := '';    -- 4219869 Business Flow
130403 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
130404 l_budgetary_control_flag     := 'N';
130405 
130406 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
130407 l_bflow_applied_to_amt       := NULL; -- 5132302
130408 l_entered_amt_idx            := NULL;          -- 4262811
130409 l_accted_amt_idx             := NULL;          -- 4262811
130410 l_acc_rev_flag               := NULL;          -- 4262811
130411 l_accrual_line_num           := NULL;          -- 4262811
130412 l_tmp_amt                    := NULL;          -- 4262811
130413 --
130414  
130415 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
130416     l_balance_type_code <> 'B' THEN
130417 IF NVL(p_source_24,9E125) =  4
130418  THEN 
130419 
130420    --
130421    XLA_AE_LINES_PKG.SetNewLine;
130422 
130423    p_balance_type_code          := l_balance_type_code;
130424    -- set the flag so later we will know whether the gain loss line needs to be created
130425    
130426    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
130427      p_actual_flag :='A';
130428    END IF;
130429 
130430    --
130431    -- bulk performance
130432    --
130433    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
130434                                       p_header_num   => 0); -- 4262811
130435    --
130436    -- set accounting line options
130437    --
130438    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
130439            p_natural_side_code          => 'D'
130440          , p_gain_or_loss_flag          => 'N'
130441          , p_gl_transfer_mode_code      => 'S'
130442          , p_acct_entry_type_code       => 'A'
130443          , p_switch_side_flag           => 'Y'
130444          , p_merge_duplicate_code       => 'N'
130445          );
130446    --
130447    l_acc_rev_natural_side_code := 'C';  -- 4262811
130448    -- 
130449    --
130450    -- set accounting line type info
130451    --
130452    xla_ae_lines_pkg.SetAcctLineType
130453       (p_component_type             => l_component_type
130454       ,p_event_type_code            => l_event_type_code
130455       ,p_line_definition_owner_code => l_line_definition_owner_code
130456       ,p_line_definition_code       => l_line_definition_code
130457       ,p_accounting_line_code       => l_component_code
130458       ,p_accounting_line_type_code  => l_component_type_code
130459       ,p_accounting_line_appl_id    => l_component_appl_id
130460       ,p_amb_context_code           => l_amb_context_code
130461       ,p_entity_code                => l_entity_code
130462       ,p_event_class_code           => l_event_class_code);
130463    --
130464    -- set accounting class
130465    --
130466    xla_ae_lines_pkg.SetAcctClass(
130467            p_accounting_class_code  => 'RESOURCE_ABSORPTION'
130468          , p_ae_header_id           => l_ae_header_id
130469          );
130470 
130471    --
130472    -- set rounding class
130473    --
130474    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
130475                       'RESOURCE_ABSORPTION';
130476 
130477    --
130478    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
130479    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
130480    --
130481    -- bulk performance
130482    --
130483    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
130484 
130485    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
130486       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
130487 
130488    -- 4955764
130489    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130490       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
130491 
130492    -- 4458381 Public Sector Enh
130493    
130494    --
130495    -- set accounting attributes for the line type
130496    --
130497    l_entered_amt_idx := 3;
130498    l_accted_amt_idx  := 8;
130499    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
130500    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
130501    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
130502    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
130503    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
130504    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
130505    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
130506    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
130507    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
130508    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
130509    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
130510    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
130511    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
130512    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
130513    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
130514    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
130515    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
130516 
130517    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
130518    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
130519 
130520    ---------------------------------------------------------------------------------------------------------------
130521    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
130522    ---------------------------------------------------------------------------------------------------------------
130523    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
130524 
130525    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
130526    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
130527 
130528    IF xla_accounting_cache_pkg.GetValueChar
130529          (p_source_code         => 'LEDGER_CATEGORY_CODE'
130530          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
130531    AND l_bflow_method_code = 'PRIOR_ENTRY'
130532 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
130533    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
130534          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
130535        )
130536    THEN
130537          xla_ae_lines_pkg.BflowUpgEntry
130538            (p_business_method_code    => l_bflow_method_code
130539            ,p_business_class_code     => l_bflow_class_code
130540            ,p_balance_type            => l_balance_type_code);
130541    ELSE
130542       NULL;
130543 -- No business flow processing for business flow method of NONE.
130544    END IF;
130545 
130546    --
130547    -- call analytical criteria
130548    --
130549    
130550    --
130551    -- call description
130552    --
130553    -- No description or it is inherited.
130554    --
130555    -- call ADRs
130556    -- Bug 4922099
130557    --
130558    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130559         (NVL(l_actual_upg_option, 'N') = 'O') OR
130560         (NVL(l_enc_upg_option, 'N') = 'O')
130561       )
130562    THEN
130563    NULL;
130564    --
130565    --
130566    
130567   l_ccid := AcctDerRule_4(
130568            p_application_id           => p_application_id
130569          , p_ae_header_id             => l_ae_header_id 
130570 , p_source_4 => p_source_4
130571          , x_transaction_coa_id       => l_adr_transaction_coa_id
130572          , x_accounting_coa_id        => l_adr_accounting_coa_id
130573          , x_value_type_code          => l_adr_value_type_code
130574          , p_side                     => 'NA'
130575    );
130576 
130577    xla_ae_lines_pkg.set_ccid(
130578     p_code_combination_id          => l_ccid
130579   , p_value_type_code              => l_adr_value_type_code
130580   , p_transaction_coa_id           => l_adr_transaction_coa_id
130581   , p_accounting_coa_id            => l_adr_accounting_coa_id
130582   , p_adr_code                     => 'CST_DEFAULT'
130583   , p_adr_type_code                => 'S'
130584   , p_component_type               => l_component_type
130585   , p_component_code               => l_component_code
130586   , p_component_type_code          => l_component_type_code
130587   , p_component_appl_id            => l_component_appl_id
130588   , p_amb_context_code             => l_amb_context_code
130589   , p_side                         => 'NA'
130590   );
130591 
130592 
130593    --
130594    --
130595    END IF;
130596    --
130597    -- Bug 4922099
130598    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
130599           (NVL(l_enc_upg_option, 'N') = 'O')
130600         ) AND
130601         (l_bflow_method_code = 'PRIOR_ENTRY')
130602       )
130603    THEN
130604       IF
130605       --
130606       1 = 2
130607       --
130608       THEN
130609       xla_accounting_err_pkg.build_message
130610                                     (p_appli_s_name            => 'XLA'
130611                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130612                                     ,p_token_1                 => 'LINE_NUMBER'
130613                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
130614                                     ,p_token_2                 => 'LINE_TYPE_NAME'
130615                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
130616                                                                              l_component_type
130617                                                                             ,l_component_code
130618                                                                             ,l_component_type_code
130619                                                                             ,l_component_appl_id
130620                                                                             ,l_amb_context_code
130621                                                                             ,l_entity_code
130622                                                                             ,l_event_class_code
130623                                                                            )
130624                                     ,p_token_3                 => 'OWNER'
130625                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
130626                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
130627                                                                           ,p_lookup_code    => l_component_type_code
130628                                                                          )
130629                                     ,p_token_4                 => 'PRODUCT_NAME'
130630                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
130631                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
130632                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
130633                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
130634                                     ,p_ae_header_id            =>  NULL
130635                                        );
130636 
130637         IF (C_LEVEL_ERROR>= g_log_level) THEN
130638                  trace
130639                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130640                       ,p_level    => C_LEVEL_ERROR
130641                       ,p_module   => l_log_module);
130642         END IF;
130643       END IF;
130644    END IF;
130645    --
130646    --
130647    ------------------------------------------------------------------------------------------------
130648    -- 4219869 Business Flow
130649    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
130650    -- Prior Entry.  Currently, the following code is always generated.
130651    ------------------------------------------------------------------------------------------------
130652    XLA_AE_LINES_PKG.ValidateCurrentLine;
130653 
130654    ------------------------------------------------------------------------------------
130655    -- 4219869 Business Flow
130656    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
130657    ------------------------------------------------------------------------------------
130658    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130659 
130660    ----------------------------------------------------------------------------------
130661    -- 4219869 Business Flow
130662    -- Update journal entry status -- Need to generate this within IF <condition>
130663    ----------------------------------------------------------------------------------
130664    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130665          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
130666          ,p_balance_type_code => l_balance_type_code
130667          );
130668 
130669    -------------------------------------------------------------------------------------------
130670    -- 4262811 - Generate the Accrual Reversal lines
130671    -------------------------------------------------------------------------------------------
130672    BEGIN
130673       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
130674                               (g_array_event(p_event_id).array_value_num('header_index'));
130675       IF l_acc_rev_flag IS NULL THEN
130676          l_acc_rev_flag := 'N';
130677       END IF;
130678    EXCEPTION
130679       WHEN OTHERS THEN
130680          l_acc_rev_flag := 'N';
130681    END;
130682    --
130683    IF (l_acc_rev_flag = 'Y') THEN
130684 
130685        -- 4645092  ------------------------------------------------------------------------------
130686        -- To allow MPA report to determine if it should generate report process
130687        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
130688        ------------------------------------------------------------------------------------------
130689 
130690        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
130691        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
130692    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
130693    -- call ADRs
130694    -- Bug 4922099
130695    --
130696    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130697         (NVL(l_actual_upg_option, 'N') = 'O') OR
130698         (NVL(l_enc_upg_option, 'N') = 'O')
130699       )
130700    THEN
130701    NULL;
130702    --
130703    --
130704    
130705   l_ccid := AcctDerRule_4(
130706            p_application_id           => p_application_id
130707          , p_ae_header_id             => l_ae_header_id 
130708 , p_source_4 => p_source_4
130709          , x_transaction_coa_id       => l_adr_transaction_coa_id
130710          , x_accounting_coa_id        => l_adr_accounting_coa_id
130711          , x_value_type_code          => l_adr_value_type_code
130712          , p_side                     => 'NA'
130713    );
130714 
130715    xla_ae_lines_pkg.set_ccid(
130716     p_code_combination_id          => l_ccid
130717   , p_value_type_code              => l_adr_value_type_code
130718   , p_transaction_coa_id           => l_adr_transaction_coa_id
130719   , p_accounting_coa_id            => l_adr_accounting_coa_id
130720   , p_adr_code                     => 'CST_DEFAULT'
130721   , p_adr_type_code                => 'S'
130722   , p_component_type               => l_component_type
130723   , p_component_code               => l_component_code
130724   , p_component_type_code          => l_component_type_code
130725   , p_component_appl_id            => l_component_appl_id
130726   , p_amb_context_code             => l_amb_context_code
130727   , p_side                         => 'NA'
130728   );
130729 
130730 
130731    --
130732    --
130733    END IF;
130734 
130735        --
130736        -- Update the line information that should be overwritten
130737        --
130738        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
130739                                          p_header_num   => 1);
130740        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
130741 
130742        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
130743 
130744        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
130745           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
130746        END IF;
130747 
130748       --
130749       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
130750       --
130751       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
130752           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
130753       ELSE
130754           ---------------------------------------------------------------------------------------------------
130755           -- 4262811a Switch Sign
130756           ---------------------------------------------------------------------------------------------------
130757           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
130758           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130759                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130760           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130761                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130762           -- 5132302
130763           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
130764                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130765 
130766       END IF;
130767 
130768       -- 4955764
130769       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130770       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
130771 
130772 
130773       XLA_AE_LINES_PKG.ValidateCurrentLine;
130774       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130775 
130776       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130777                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
130778                ,p_balance_type_code => l_balance_type_code);
130779 
130780    END IF;
130781 
130782    -----------------------------------------------------------------------------------------
130783    -- 4262811 Multiperiod Accounting
130784    -----------------------------------------------------------------------------------------
130785      -- No MPA option is assigned.
130786 
130787 
130788 END IF;
130789 END IF;
130790 --
130791 
130792 --
130793 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130794    trace
130795       (p_msg      => 'END of AcctLineType_236'
130796       ,p_level    => C_LEVEL_PROCEDURE
130797       ,p_module   => l_log_module);
130798 END IF;
130799 --
130800 EXCEPTION
130801   WHEN xla_exceptions_pkg.application_exception THEN
130802       RAISE;
130803   WHEN OTHERS THEN
130804        xla_exceptions_pkg.raise_message
130805            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_236');
130806 END AcctLineType_236;
130807 --
130808 
130809 ---------------------------------------
130810 --
130811 -- PRIVATE FUNCTION
130812 --         AcctLineType_237
130813 --
130814 ---------------------------------------
130815 PROCEDURE AcctLineType_237 (
130816   p_application_id        IN NUMBER
130817  ,p_event_id              IN NUMBER
130818  ,p_calculate_acctd_flag  IN VARCHAR2
130819  ,p_calculate_g_l_flag    IN VARCHAR2
130820  ,p_actual_flag           IN OUT VARCHAR2
130821  ,p_balance_type_code     OUT VARCHAR2
130822  ,p_gain_or_loss_ref      OUT VARCHAR2
130823  
130824 --Cost Management Default Account
130825  , p_source_4            IN NUMBER
130826 --DISTRIBUTION_IDENTIFIER
130827  , p_source_11            IN NUMBER
130828 --Distribution Type
130829  , p_source_12            IN VARCHAR2
130830  , p_source_12_meaning    IN VARCHAR2
130831 --Entered Currency Code
130832  , p_source_15            IN VARCHAR2
130833 --Entered Amount
130834  , p_source_18            IN NUMBER
130835 --Currency Conversion Date
130836  , p_source_19            IN DATE
130837 --Currency Conversion Rate
130838  , p_source_20            IN NUMBER
130839 --Currency Conversion Type
130840  , p_source_21            IN VARCHAR2
130841 --Accounted Amount
130842  , p_source_22            IN NUMBER
130843 --Accounting Line Type
130844  , p_source_24            IN NUMBER
130845 )
130846 IS
130847 
130848 l_component_type              VARCHAR2(80);
130849 l_component_code              VARCHAR2(30);
130850 l_component_type_code         VARCHAR2(1);
130851 l_component_appl_id           INTEGER;
130852 l_amb_context_code            VARCHAR2(30);
130853 l_entity_code                 VARCHAR2(30);
130854 l_event_class_code            VARCHAR2(30);
130855 l_ae_header_id                NUMBER;
130856 l_event_type_code             VARCHAR2(30);
130857 l_line_definition_code        VARCHAR2(30);
130858 l_line_definition_owner_code  VARCHAR2(1);
130859 --
130860 -- adr variables
130861 l_segment                     VARCHAR2(30);
130862 l_ccid                        NUMBER;
130863 l_adr_transaction_coa_id      NUMBER;
130864 l_adr_accounting_coa_id       NUMBER;
130865 l_adr_flexfield_segment_code  VARCHAR2(30);
130866 l_adr_flex_value_set_id       NUMBER;
130867 l_adr_value_type_code         VARCHAR2(30);
130868 l_adr_value_combination_id    NUMBER;
130869 l_adr_value_segment_code      VARCHAR2(30);
130870 
130871 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
130872 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
130873 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
130874 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
130875 
130876 -- 4262811 Variables ------------------------------------------------------------------------------------------
130877 l_entered_amt_idx             NUMBER;
130878 l_accted_amt_idx              NUMBER;
130879 l_acc_rev_flag                VARCHAR2(1);
130880 l_accrual_line_num            NUMBER;
130881 l_tmp_amt                     NUMBER;
130882 l_acc_rev_natural_side_code   VARCHAR2(1);
130883 
130884 l_num_entries                 NUMBER;
130885 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
130886 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
130887 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
130888 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
130889 l_recog_line_1                NUMBER;
130890 l_recog_line_2                NUMBER;
130891 
130892 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
130893 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
130894 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
130895 
130896 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
130897 
130898 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
130899 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
130900 
130901 ---------------------------------------------------------------------------------------------------------------
130902 
130903 
130904 --
130905 -- bulk performance
130906 --
130907 l_balance_type_code           VARCHAR2(1);
130908 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
130909 l_log_module                  VARCHAR2(240);
130910 
130911 --
130912 -- Upgrade strategy
130913 --
130914 l_actual_upg_option           VARCHAR2(1);
130915 l_enc_upg_option           VARCHAR2(1);
130916 
130917 --
130918 BEGIN
130919 --
130920 IF g_log_enabled THEN
130921       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_237';
130922 END IF;
130923 --
130924 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130925 
130926       trace
130927          (p_msg      => 'BEGIN of AcctLineType_237'
130928          ,p_level    => C_LEVEL_PROCEDURE
130929          ,p_module   => l_log_module);
130930 
130931 END IF;
130932 --
130933 l_component_type             := 'AMB_JLT';
130934 l_component_code             := 'RESOURCE_RATE_VARIANCE';
130935 l_component_type_code        := 'S';
130936 l_component_appl_id          :=  707;
130937 l_amb_context_code           := 'DEFAULT';
130938 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
130939 l_event_class_code           := 'ABSORPTION';
130940 l_event_type_code            := 'ABSORPTION_ALL';
130941 l_line_definition_owner_code := 'S';
130942 l_line_definition_code       := 'ABSORPTION';
130943 --
130944 l_balance_type_code          := 'A';
130945 l_segment                     := NULL;
130946 l_ccid                        := NULL;
130947 l_adr_transaction_coa_id      := NULL;
130948 l_adr_accounting_coa_id       := NULL;
130949 l_adr_flexfield_segment_code  := NULL;
130950 l_adr_flex_value_set_id       := NULL;
130951 l_adr_value_type_code         := NULL;
130952 l_adr_value_combination_id    := NULL;
130953 l_adr_value_segment_code      := NULL;
130954 
130955 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
130956 l_bflow_class_code           := '';    -- 4219869 Business Flow
130957 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
130958 l_budgetary_control_flag     := 'N';
130959 
130960 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
130961 l_bflow_applied_to_amt       := NULL; -- 5132302
130962 l_entered_amt_idx            := NULL;          -- 4262811
130963 l_accted_amt_idx             := NULL;          -- 4262811
130964 l_acc_rev_flag               := NULL;          -- 4262811
130965 l_accrual_line_num           := NULL;          -- 4262811
130966 l_tmp_amt                    := NULL;          -- 4262811
130967 --
130968  
130969 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
130970     l_balance_type_code <> 'B' THEN
130971 IF NVL(p_source_24,9E125) =  6
130972  THEN 
130973 
130974    --
130975    XLA_AE_LINES_PKG.SetNewLine;
130976 
130977    p_balance_type_code          := l_balance_type_code;
130978    -- set the flag so later we will know whether the gain loss line needs to be created
130979    
130980    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
130981      p_actual_flag :='A';
130982    END IF;
130983 
130984    --
130985    -- bulk performance
130986    --
130987    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
130988                                       p_header_num   => 0); -- 4262811
130989    --
130990    -- set accounting line options
130991    --
130992    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
130993            p_natural_side_code          => 'D'
130994          , p_gain_or_loss_flag          => 'N'
130995          , p_gl_transfer_mode_code      => 'S'
130996          , p_acct_entry_type_code       => 'A'
130997          , p_switch_side_flag           => 'Y'
130998          , p_merge_duplicate_code       => 'N'
130999          );
131000    --
131001    l_acc_rev_natural_side_code := 'C';  -- 4262811
131002    -- 
131003    --
131004    -- set accounting line type info
131005    --
131006    xla_ae_lines_pkg.SetAcctLineType
131007       (p_component_type             => l_component_type
131008       ,p_event_type_code            => l_event_type_code
131009       ,p_line_definition_owner_code => l_line_definition_owner_code
131010       ,p_line_definition_code       => l_line_definition_code
131011       ,p_accounting_line_code       => l_component_code
131012       ,p_accounting_line_type_code  => l_component_type_code
131013       ,p_accounting_line_appl_id    => l_component_appl_id
131014       ,p_amb_context_code           => l_amb_context_code
131015       ,p_entity_code                => l_entity_code
131016       ,p_event_class_code           => l_event_class_code);
131017    --
131018    -- set accounting class
131019    --
131020    xla_ae_lines_pkg.SetAcctClass(
131021            p_accounting_class_code  => 'RESOURCE_RATE_VARIANCE'
131022          , p_ae_header_id           => l_ae_header_id
131023          );
131024 
131025    --
131026    -- set rounding class
131027    --
131028    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
131029                       'RESOURCE_RATE_VARIANCE';
131030 
131031    --
131032    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
131033    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
131034    --
131035    -- bulk performance
131036    --
131037    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
131038 
131039    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
131040       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
131041 
131042    -- 4955764
131043    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
131044       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
131045 
131046    -- 4458381 Public Sector Enh
131047    
131048    --
131049    -- set accounting attributes for the line type
131050    --
131051    l_entered_amt_idx := 3;
131052    l_accted_amt_idx  := 8;
131053    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
131054    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
131055    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
131056    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
131057    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
131058    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
131059    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
131060    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
131061    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
131062    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
131063    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
131064    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
131065    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
131066    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
131067    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
131068    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
131069    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
131070 
131071    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
131072    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
131073 
131074    ---------------------------------------------------------------------------------------------------------------
131075    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
131076    ---------------------------------------------------------------------------------------------------------------
131077    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
131078 
131079    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131080    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131081 
131082    IF xla_accounting_cache_pkg.GetValueChar
131083          (p_source_code         => 'LEDGER_CATEGORY_CODE'
131084          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
131085    AND l_bflow_method_code = 'PRIOR_ENTRY'
131086 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
131087    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
131088          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
131089        )
131090    THEN
131091          xla_ae_lines_pkg.BflowUpgEntry
131092            (p_business_method_code    => l_bflow_method_code
131093            ,p_business_class_code     => l_bflow_class_code
131094            ,p_balance_type            => l_balance_type_code);
131095    ELSE
131096       NULL;
131097 -- No business flow processing for business flow method of NONE.
131098    END IF;
131099 
131100    --
131101    -- call analytical criteria
131102    --
131103    
131104    --
131105    -- call description
131106    --
131107    -- No description or it is inherited.
131108    --
131109    -- call ADRs
131110    -- Bug 4922099
131111    --
131112    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131113         (NVL(l_actual_upg_option, 'N') = 'O') OR
131114         (NVL(l_enc_upg_option, 'N') = 'O')
131115       )
131116    THEN
131117    NULL;
131118    --
131119    --
131120    
131121   l_ccid := AcctDerRule_4(
131122            p_application_id           => p_application_id
131123          , p_ae_header_id             => l_ae_header_id 
131124 , p_source_4 => p_source_4
131125          , x_transaction_coa_id       => l_adr_transaction_coa_id
131126          , x_accounting_coa_id        => l_adr_accounting_coa_id
131127          , x_value_type_code          => l_adr_value_type_code
131128          , p_side                     => 'NA'
131129    );
131130 
131131    xla_ae_lines_pkg.set_ccid(
131132     p_code_combination_id          => l_ccid
131133   , p_value_type_code              => l_adr_value_type_code
131134   , p_transaction_coa_id           => l_adr_transaction_coa_id
131135   , p_accounting_coa_id            => l_adr_accounting_coa_id
131136   , p_adr_code                     => 'CST_DEFAULT'
131137   , p_adr_type_code                => 'S'
131138   , p_component_type               => l_component_type
131139   , p_component_code               => l_component_code
131140   , p_component_type_code          => l_component_type_code
131141   , p_component_appl_id            => l_component_appl_id
131142   , p_amb_context_code             => l_amb_context_code
131143   , p_side                         => 'NA'
131144   );
131145 
131146 
131147    --
131148    --
131149    END IF;
131150    --
131151    -- Bug 4922099
131152    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
131153           (NVL(l_enc_upg_option, 'N') = 'O')
131154         ) AND
131155         (l_bflow_method_code = 'PRIOR_ENTRY')
131156       )
131157    THEN
131158       IF
131159       --
131160       1 = 2
131161       --
131162       THEN
131163       xla_accounting_err_pkg.build_message
131164                                     (p_appli_s_name            => 'XLA'
131165                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131166                                     ,p_token_1                 => 'LINE_NUMBER'
131167                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
131168                                     ,p_token_2                 => 'LINE_TYPE_NAME'
131169                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
131170                                                                              l_component_type
131171                                                                             ,l_component_code
131172                                                                             ,l_component_type_code
131173                                                                             ,l_component_appl_id
131174                                                                             ,l_amb_context_code
131175                                                                             ,l_entity_code
131176                                                                             ,l_event_class_code
131177                                                                            )
131178                                     ,p_token_3                 => 'OWNER'
131179                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
131180                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
131181                                                                           ,p_lookup_code    => l_component_type_code
131182                                                                          )
131183                                     ,p_token_4                 => 'PRODUCT_NAME'
131184                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
131185                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
131186                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
131187                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
131188                                     ,p_ae_header_id            =>  NULL
131189                                        );
131190 
131191         IF (C_LEVEL_ERROR>= g_log_level) THEN
131192                  trace
131193                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131194                       ,p_level    => C_LEVEL_ERROR
131195                       ,p_module   => l_log_module);
131196         END IF;
131197       END IF;
131198    END IF;
131199    --
131200    --
131201    ------------------------------------------------------------------------------------------------
131202    -- 4219869 Business Flow
131203    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
131204    -- Prior Entry.  Currently, the following code is always generated.
131205    ------------------------------------------------------------------------------------------------
131206    XLA_AE_LINES_PKG.ValidateCurrentLine;
131207 
131208    ------------------------------------------------------------------------------------
131209    -- 4219869 Business Flow
131210    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
131211    ------------------------------------------------------------------------------------
131212    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131213 
131214    ----------------------------------------------------------------------------------
131215    -- 4219869 Business Flow
131216    -- Update journal entry status -- Need to generate this within IF <condition>
131217    ----------------------------------------------------------------------------------
131218    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131219          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
131220          ,p_balance_type_code => l_balance_type_code
131221          );
131222 
131223    -------------------------------------------------------------------------------------------
131224    -- 4262811 - Generate the Accrual Reversal lines
131225    -------------------------------------------------------------------------------------------
131226    BEGIN
131227       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
131228                               (g_array_event(p_event_id).array_value_num('header_index'));
131229       IF l_acc_rev_flag IS NULL THEN
131230          l_acc_rev_flag := 'N';
131231       END IF;
131232    EXCEPTION
131233       WHEN OTHERS THEN
131234          l_acc_rev_flag := 'N';
131235    END;
131236    --
131237    IF (l_acc_rev_flag = 'Y') THEN
131238 
131239        -- 4645092  ------------------------------------------------------------------------------
131240        -- To allow MPA report to determine if it should generate report process
131241        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
131242        ------------------------------------------------------------------------------------------
131243 
131244        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
131245        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
131246    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
131247    -- call ADRs
131248    -- Bug 4922099
131249    --
131250    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131251         (NVL(l_actual_upg_option, 'N') = 'O') OR
131252         (NVL(l_enc_upg_option, 'N') = 'O')
131253       )
131254    THEN
131255    NULL;
131256    --
131257    --
131258    
131259   l_ccid := AcctDerRule_4(
131260            p_application_id           => p_application_id
131261          , p_ae_header_id             => l_ae_header_id 
131262 , p_source_4 => p_source_4
131263          , x_transaction_coa_id       => l_adr_transaction_coa_id
131264          , x_accounting_coa_id        => l_adr_accounting_coa_id
131265          , x_value_type_code          => l_adr_value_type_code
131266          , p_side                     => 'NA'
131267    );
131268 
131269    xla_ae_lines_pkg.set_ccid(
131270     p_code_combination_id          => l_ccid
131271   , p_value_type_code              => l_adr_value_type_code
131272   , p_transaction_coa_id           => l_adr_transaction_coa_id
131273   , p_accounting_coa_id            => l_adr_accounting_coa_id
131274   , p_adr_code                     => 'CST_DEFAULT'
131275   , p_adr_type_code                => 'S'
131276   , p_component_type               => l_component_type
131277   , p_component_code               => l_component_code
131278   , p_component_type_code          => l_component_type_code
131279   , p_component_appl_id            => l_component_appl_id
131280   , p_amb_context_code             => l_amb_context_code
131281   , p_side                         => 'NA'
131282   );
131283 
131284 
131285    --
131286    --
131287    END IF;
131288 
131289        --
131290        -- Update the line information that should be overwritten
131291        --
131292        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
131293                                          p_header_num   => 1);
131294        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
131295 
131296        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
131297 
131298        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
131299           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
131300        END IF;
131301 
131302       --
131303       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
131304       --
131305       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
131306           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
131307       ELSE
131308           ---------------------------------------------------------------------------------------------------
131309           -- 4262811a Switch Sign
131310           ---------------------------------------------------------------------------------------------------
131311           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
131312           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131313                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131314           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131315                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131316           -- 5132302
131317           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
131318                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131319 
131320       END IF;
131321 
131322       -- 4955764
131323       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
131324       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
131325 
131326 
131327       XLA_AE_LINES_PKG.ValidateCurrentLine;
131328       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131329 
131330       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131331                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
131332                ,p_balance_type_code => l_balance_type_code);
131333 
131334    END IF;
131335 
131336    -----------------------------------------------------------------------------------------
131337    -- 4262811 Multiperiod Accounting
131338    -----------------------------------------------------------------------------------------
131339      -- No MPA option is assigned.
131340 
131341 
131342 END IF;
131343 END IF;
131344 --
131345 
131346 --
131347 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131348    trace
131349       (p_msg      => 'END of AcctLineType_237'
131350       ,p_level    => C_LEVEL_PROCEDURE
131351       ,p_module   => l_log_module);
131352 END IF;
131353 --
131354 EXCEPTION
131355   WHEN xla_exceptions_pkg.application_exception THEN
131356       RAISE;
131357   WHEN OTHERS THEN
131358        xla_exceptions_pkg.raise_message
131359            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_237');
131360 END AcctLineType_237;
131361 --
131362 
131363 ---------------------------------------
131364 --
131365 -- PRIVATE FUNCTION
131366 --         AcctLineType_238
131367 --
131368 ---------------------------------------
131369 PROCEDURE AcctLineType_238 (
131370   p_application_id        IN NUMBER
131371  ,p_event_id              IN NUMBER
131372  ,p_calculate_acctd_flag  IN VARCHAR2
131373  ,p_calculate_g_l_flag    IN VARCHAR2
131374  ,p_actual_flag           IN OUT VARCHAR2
131375  ,p_balance_type_code     OUT VARCHAR2
131376  ,p_gain_or_loss_ref      OUT VARCHAR2
131377  
131378 --Cost Management Default Account
131379  , p_source_4            IN NUMBER
131380 --Receiving Accounting Line Type
131381  , p_source_5            IN VARCHAR2
131382 --DISTRIBUTION_IDENTIFIER
131383  , p_source_11            IN NUMBER
131384 --Distribution Type
131385  , p_source_12            IN VARCHAR2
131386  , p_source_12_meaning    IN VARCHAR2
131387 --Entered Currency Code
131388  , p_source_15            IN VARCHAR2
131389 --Entered Amount
131390  , p_source_18            IN NUMBER
131391 --Currency Conversion Date
131392  , p_source_19            IN DATE
131393 --Currency Conversion Rate
131394  , p_source_20            IN NUMBER
131395 --Currency Conversion Type
131396  , p_source_21            IN VARCHAR2
131397 --Accounted Amount
131398  , p_source_22            IN NUMBER
131399 )
131400 IS
131401 
131402 l_component_type              VARCHAR2(80);
131403 l_component_code              VARCHAR2(30);
131404 l_component_type_code         VARCHAR2(1);
131405 l_component_appl_id           INTEGER;
131406 l_amb_context_code            VARCHAR2(30);
131407 l_entity_code                 VARCHAR2(30);
131408 l_event_class_code            VARCHAR2(30);
131409 l_ae_header_id                NUMBER;
131410 l_event_type_code             VARCHAR2(30);
131411 l_line_definition_code        VARCHAR2(30);
131412 l_line_definition_owner_code  VARCHAR2(1);
131413 --
131414 -- adr variables
131415 l_segment                     VARCHAR2(30);
131416 l_ccid                        NUMBER;
131417 l_adr_transaction_coa_id      NUMBER;
131418 l_adr_accounting_coa_id       NUMBER;
131419 l_adr_flexfield_segment_code  VARCHAR2(30);
131420 l_adr_flex_value_set_id       NUMBER;
131421 l_adr_value_type_code         VARCHAR2(30);
131422 l_adr_value_combination_id    NUMBER;
131423 l_adr_value_segment_code      VARCHAR2(30);
131424 
131425 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
131426 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
131427 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
131428 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
131429 
131430 -- 4262811 Variables ------------------------------------------------------------------------------------------
131431 l_entered_amt_idx             NUMBER;
131432 l_accted_amt_idx              NUMBER;
131433 l_acc_rev_flag                VARCHAR2(1);
131434 l_accrual_line_num            NUMBER;
131435 l_tmp_amt                     NUMBER;
131436 l_acc_rev_natural_side_code   VARCHAR2(1);
131437 
131438 l_num_entries                 NUMBER;
131439 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
131440 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
131441 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
131442 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
131443 l_recog_line_1                NUMBER;
131444 l_recog_line_2                NUMBER;
131445 
131446 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
131447 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
131448 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
131449 
131450 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
131451 
131452 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
131453 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
131454 
131455 ---------------------------------------------------------------------------------------------------------------
131456 
131457 
131458 --
131459 -- bulk performance
131460 --
131461 l_balance_type_code           VARCHAR2(1);
131462 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
131463 l_log_module                  VARCHAR2(240);
131464 
131465 --
131466 -- Upgrade strategy
131467 --
131468 l_actual_upg_option           VARCHAR2(1);
131469 l_enc_upg_option           VARCHAR2(1);
131470 
131471 --
131472 BEGIN
131473 --
131474 IF g_log_enabled THEN
131475       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_238';
131476 END IF;
131477 --
131478 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131479 
131480       trace
131481          (p_msg      => 'BEGIN of AcctLineType_238'
131482          ,p_level    => C_LEVEL_PROCEDURE
131483          ,p_module   => l_log_module);
131484 
131485 END IF;
131486 --
131487 l_component_type             := 'AMB_JLT';
131488 l_component_code             := 'RETROACTIVE_PRICE_ADJ';
131489 l_component_type_code        := 'S';
131490 l_component_appl_id          :=  707;
131491 l_amb_context_code           := 'DEFAULT';
131492 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
131493 l_event_class_code           := 'RETR_PRICE_ADJ_RCV';
131494 l_event_type_code            := 'RETR_PRICE_ADJ_RCV_ALL';
131495 l_line_definition_owner_code := 'S';
131496 l_line_definition_code       := 'RETR_PRICE_ADJ_RCV';
131497 --
131498 l_balance_type_code          := 'A';
131499 l_segment                     := NULL;
131500 l_ccid                        := NULL;
131501 l_adr_transaction_coa_id      := NULL;
131502 l_adr_accounting_coa_id       := NULL;
131503 l_adr_flexfield_segment_code  := NULL;
131504 l_adr_flex_value_set_id       := NULL;
131505 l_adr_value_type_code         := NULL;
131506 l_adr_value_combination_id    := NULL;
131507 l_adr_value_segment_code      := NULL;
131508 
131509 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
131510 l_bflow_class_code           := '';    -- 4219869 Business Flow
131511 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
131512 l_budgetary_control_flag     := 'N';
131513 
131514 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
131515 l_bflow_applied_to_amt       := NULL; -- 5132302
131516 l_entered_amt_idx            := NULL;          -- 4262811
131517 l_accted_amt_idx             := NULL;          -- 4262811
131518 l_acc_rev_flag               := NULL;          -- 4262811
131519 l_accrual_line_num           := NULL;          -- 4262811
131520 l_tmp_amt                    := NULL;          -- 4262811
131521 --
131522  
131523 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
131524     l_balance_type_code <> 'B' THEN
131525 IF NVL(p_source_5,'
131526 ') =  'Retroprice Adjustment'
131527  THEN 
131528 
131529    --
131530    XLA_AE_LINES_PKG.SetNewLine;
131531 
131532    p_balance_type_code          := l_balance_type_code;
131533    -- set the flag so later we will know whether the gain loss line needs to be created
131534    
131535    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
131536      p_actual_flag :='A';
131537    END IF;
131538 
131539    --
131540    -- bulk performance
131541    --
131542    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
131543                                       p_header_num   => 0); -- 4262811
131544    --
131545    -- set accounting line options
131546    --
131547    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
131548            p_natural_side_code          => 'D'
131549          , p_gain_or_loss_flag          => 'N'
131550          , p_gl_transfer_mode_code      => 'S'
131551          , p_acct_entry_type_code       => 'A'
131552          , p_switch_side_flag           => 'Y'
131553          , p_merge_duplicate_code       => 'N'
131554          );
131555    --
131556    l_acc_rev_natural_side_code := 'C';  -- 4262811
131557    -- 
131558    --
131559    -- set accounting line type info
131560    --
131561    xla_ae_lines_pkg.SetAcctLineType
131562       (p_component_type             => l_component_type
131563       ,p_event_type_code            => l_event_type_code
131564       ,p_line_definition_owner_code => l_line_definition_owner_code
131565       ,p_line_definition_code       => l_line_definition_code
131566       ,p_accounting_line_code       => l_component_code
131567       ,p_accounting_line_type_code  => l_component_type_code
131568       ,p_accounting_line_appl_id    => l_component_appl_id
131569       ,p_amb_context_code           => l_amb_context_code
131570       ,p_entity_code                => l_entity_code
131571       ,p_event_class_code           => l_event_class_code);
131572    --
131573    -- set accounting class
131574    --
131575    xla_ae_lines_pkg.SetAcctClass(
131576            p_accounting_class_code  => 'RETROACTIVE_PRICE_ADJUSTMENT'
131577          , p_ae_header_id           => l_ae_header_id
131578          );
131579 
131580    --
131581    -- set rounding class
131582    --
131583    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
131584                       'RETROACTIVE_PRICE_ADJUSTMENT';
131585 
131586    --
131587    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
131588    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
131589    --
131590    -- bulk performance
131591    --
131592    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
131593 
131594    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
131595       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
131596 
131597    -- 4955764
131598    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
131599       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
131600 
131601    -- 4458381 Public Sector Enh
131602    
131603    --
131604    -- set accounting attributes for the line type
131605    --
131606    l_entered_amt_idx := 3;
131607    l_accted_amt_idx  := 8;
131608    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
131609    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
131610    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
131611    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
131612    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
131613    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
131614    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
131615    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
131616    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
131617    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
131618    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
131619    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
131620    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
131621    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
131622    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
131623    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
131624    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
131625 
131626    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
131627    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
131628 
131629    ---------------------------------------------------------------------------------------------------------------
131630    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
131631    ---------------------------------------------------------------------------------------------------------------
131632    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
131633 
131634    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131635    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131636 
131637    IF xla_accounting_cache_pkg.GetValueChar
131638          (p_source_code         => 'LEDGER_CATEGORY_CODE'
131639          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
131640    AND l_bflow_method_code = 'PRIOR_ENTRY'
131641 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
131642    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
131643          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
131644        )
131645    THEN
131646          xla_ae_lines_pkg.BflowUpgEntry
131647            (p_business_method_code    => l_bflow_method_code
131648            ,p_business_class_code     => l_bflow_class_code
131649            ,p_balance_type            => l_balance_type_code);
131650    ELSE
131651       NULL;
131652 -- No business flow processing for business flow method of NONE.
131653    END IF;
131654 
131655    --
131656    -- call analytical criteria
131657    --
131658    
131659    --
131660    -- call description
131661    --
131662    -- No description or it is inherited.
131663    --
131664    -- call ADRs
131665    -- Bug 4922099
131666    --
131667    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131668         (NVL(l_actual_upg_option, 'N') = 'O') OR
131669         (NVL(l_enc_upg_option, 'N') = 'O')
131670       )
131671    THEN
131672    NULL;
131673    --
131674    --
131675    
131676   l_ccid := AcctDerRule_4(
131677            p_application_id           => p_application_id
131678          , p_ae_header_id             => l_ae_header_id 
131679 , p_source_4 => p_source_4
131680          , x_transaction_coa_id       => l_adr_transaction_coa_id
131681          , x_accounting_coa_id        => l_adr_accounting_coa_id
131682          , x_value_type_code          => l_adr_value_type_code
131683          , p_side                     => 'NA'
131684    );
131685 
131686    xla_ae_lines_pkg.set_ccid(
131687     p_code_combination_id          => l_ccid
131688   , p_value_type_code              => l_adr_value_type_code
131689   , p_transaction_coa_id           => l_adr_transaction_coa_id
131690   , p_accounting_coa_id            => l_adr_accounting_coa_id
131691   , p_adr_code                     => 'CST_DEFAULT'
131692   , p_adr_type_code                => 'S'
131693   , p_component_type               => l_component_type
131694   , p_component_code               => l_component_code
131695   , p_component_type_code          => l_component_type_code
131696   , p_component_appl_id            => l_component_appl_id
131697   , p_amb_context_code             => l_amb_context_code
131698   , p_side                         => 'NA'
131699   );
131700 
131701 
131702    --
131703    --
131704    END IF;
131705    --
131706    -- Bug 4922099
131707    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
131708           (NVL(l_enc_upg_option, 'N') = 'O')
131709         ) AND
131710         (l_bflow_method_code = 'PRIOR_ENTRY')
131711       )
131712    THEN
131713       IF
131714       --
131715       1 = 2
131716       --
131717       THEN
131718       xla_accounting_err_pkg.build_message
131719                                     (p_appli_s_name            => 'XLA'
131720                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131721                                     ,p_token_1                 => 'LINE_NUMBER'
131722                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
131723                                     ,p_token_2                 => 'LINE_TYPE_NAME'
131724                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
131725                                                                              l_component_type
131726                                                                             ,l_component_code
131727                                                                             ,l_component_type_code
131728                                                                             ,l_component_appl_id
131729                                                                             ,l_amb_context_code
131730                                                                             ,l_entity_code
131731                                                                             ,l_event_class_code
131732                                                                            )
131733                                     ,p_token_3                 => 'OWNER'
131734                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
131735                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
131736                                                                           ,p_lookup_code    => l_component_type_code
131737                                                                          )
131738                                     ,p_token_4                 => 'PRODUCT_NAME'
131739                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
131740                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
131741                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
131742                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
131743                                     ,p_ae_header_id            =>  NULL
131744                                        );
131745 
131746         IF (C_LEVEL_ERROR>= g_log_level) THEN
131747                  trace
131748                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131749                       ,p_level    => C_LEVEL_ERROR
131750                       ,p_module   => l_log_module);
131751         END IF;
131752       END IF;
131753    END IF;
131754    --
131755    --
131756    ------------------------------------------------------------------------------------------------
131757    -- 4219869 Business Flow
131758    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
131759    -- Prior Entry.  Currently, the following code is always generated.
131760    ------------------------------------------------------------------------------------------------
131761    XLA_AE_LINES_PKG.ValidateCurrentLine;
131762 
131763    ------------------------------------------------------------------------------------
131764    -- 4219869 Business Flow
131765    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
131766    ------------------------------------------------------------------------------------
131767    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131768 
131769    ----------------------------------------------------------------------------------
131770    -- 4219869 Business Flow
131771    -- Update journal entry status -- Need to generate this within IF <condition>
131772    ----------------------------------------------------------------------------------
131773    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131774          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
131775          ,p_balance_type_code => l_balance_type_code
131776          );
131777 
131778    -------------------------------------------------------------------------------------------
131779    -- 4262811 - Generate the Accrual Reversal lines
131780    -------------------------------------------------------------------------------------------
131781    BEGIN
131782       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
131783                               (g_array_event(p_event_id).array_value_num('header_index'));
131784       IF l_acc_rev_flag IS NULL THEN
131785          l_acc_rev_flag := 'N';
131786       END IF;
131787    EXCEPTION
131788       WHEN OTHERS THEN
131789          l_acc_rev_flag := 'N';
131790    END;
131791    --
131792    IF (l_acc_rev_flag = 'Y') THEN
131793 
131794        -- 4645092  ------------------------------------------------------------------------------
131795        -- To allow MPA report to determine if it should generate report process
131796        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
131797        ------------------------------------------------------------------------------------------
131798 
131799        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
131800        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
131801    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
131802    -- call ADRs
131803    -- Bug 4922099
131804    --
131805    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131806         (NVL(l_actual_upg_option, 'N') = 'O') OR
131807         (NVL(l_enc_upg_option, 'N') = 'O')
131808       )
131809    THEN
131810    NULL;
131811    --
131812    --
131813    
131814   l_ccid := AcctDerRule_4(
131815            p_application_id           => p_application_id
131816          , p_ae_header_id             => l_ae_header_id 
131817 , p_source_4 => p_source_4
131818          , x_transaction_coa_id       => l_adr_transaction_coa_id
131819          , x_accounting_coa_id        => l_adr_accounting_coa_id
131820          , x_value_type_code          => l_adr_value_type_code
131821          , p_side                     => 'NA'
131822    );
131823 
131824    xla_ae_lines_pkg.set_ccid(
131825     p_code_combination_id          => l_ccid
131826   , p_value_type_code              => l_adr_value_type_code
131827   , p_transaction_coa_id           => l_adr_transaction_coa_id
131828   , p_accounting_coa_id            => l_adr_accounting_coa_id
131829   , p_adr_code                     => 'CST_DEFAULT'
131830   , p_adr_type_code                => 'S'
131831   , p_component_type               => l_component_type
131832   , p_component_code               => l_component_code
131833   , p_component_type_code          => l_component_type_code
131834   , p_component_appl_id            => l_component_appl_id
131835   , p_amb_context_code             => l_amb_context_code
131836   , p_side                         => 'NA'
131837   );
131838 
131839 
131840    --
131841    --
131842    END IF;
131843 
131844        --
131845        -- Update the line information that should be overwritten
131846        --
131847        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
131848                                          p_header_num   => 1);
131849        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
131850 
131851        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
131852 
131853        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
131854           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
131855        END IF;
131856 
131857       --
131858       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
131859       --
131860       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
131861           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
131862       ELSE
131863           ---------------------------------------------------------------------------------------------------
131864           -- 4262811a Switch Sign
131865           ---------------------------------------------------------------------------------------------------
131866           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
131867           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131868                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131869           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131870                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131871           -- 5132302
131872           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
131873                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131874 
131875       END IF;
131876 
131877       -- 4955764
131878       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
131879       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
131880 
131881 
131882       XLA_AE_LINES_PKG.ValidateCurrentLine;
131883       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131884 
131885       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131886                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
131887                ,p_balance_type_code => l_balance_type_code);
131888 
131889    END IF;
131890 
131891    -----------------------------------------------------------------------------------------
131892    -- 4262811 Multiperiod Accounting
131893    -----------------------------------------------------------------------------------------
131894      -- No MPA option is assigned.
131895 
131896 
131897 END IF;
131898 END IF;
131899 --
131900 
131901 --
131902 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131903    trace
131904       (p_msg      => 'END of AcctLineType_238'
131905       ,p_level    => C_LEVEL_PROCEDURE
131906       ,p_module   => l_log_module);
131907 END IF;
131908 --
131909 EXCEPTION
131910   WHEN xla_exceptions_pkg.application_exception THEN
131911       RAISE;
131912   WHEN OTHERS THEN
131913        xla_exceptions_pkg.raise_message
131914            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_238');
131915 END AcctLineType_238;
131916 --
131917 
131918 ---------------------------------------
131919 --
131920 -- PRIVATE FUNCTION
131921 --         AcctLineType_239
131922 --
131923 ---------------------------------------
131924 PROCEDURE AcctLineType_239 (
131925   p_application_id        IN NUMBER
131926  ,p_event_id              IN NUMBER
131927  ,p_calculate_acctd_flag  IN VARCHAR2
131928  ,p_calculate_g_l_flag    IN VARCHAR2
131929  ,p_actual_flag           IN OUT VARCHAR2
131930  ,p_balance_type_code     OUT VARCHAR2
131931  ,p_gain_or_loss_ref      OUT VARCHAR2
131932  
131933 --Cost Management Default Account
131934  , p_source_4            IN NUMBER
131935 --Receiving Accounting Line Type
131936  , p_source_5            IN VARCHAR2
131937 --DISTRIBUTION_IDENTIFIER
131938  , p_source_11            IN NUMBER
131939 --Distribution Type
131940  , p_source_12            IN VARCHAR2
131941  , p_source_12_meaning    IN VARCHAR2
131942 --Entered Currency Code
131943  , p_source_15            IN VARCHAR2
131944 --Entered Amount
131945  , p_source_18            IN NUMBER
131946 --Currency Conversion Date
131947  , p_source_19            IN DATE
131948 --Currency Conversion Rate
131949  , p_source_20            IN NUMBER
131950 --Accounted Amount
131951  , p_source_22            IN NUMBER
131952 )
131953 IS
131954 
131955 l_component_type              VARCHAR2(80);
131956 l_component_code              VARCHAR2(30);
131957 l_component_type_code         VARCHAR2(1);
131958 l_component_appl_id           INTEGER;
131959 l_amb_context_code            VARCHAR2(30);
131960 l_entity_code                 VARCHAR2(30);
131961 l_event_class_code            VARCHAR2(30);
131962 l_ae_header_id                NUMBER;
131963 l_event_type_code             VARCHAR2(30);
131964 l_line_definition_code        VARCHAR2(30);
131965 l_line_definition_owner_code  VARCHAR2(1);
131966 --
131967 -- adr variables
131968 l_segment                     VARCHAR2(30);
131969 l_ccid                        NUMBER;
131970 l_adr_transaction_coa_id      NUMBER;
131971 l_adr_accounting_coa_id       NUMBER;
131972 l_adr_flexfield_segment_code  VARCHAR2(30);
131973 l_adr_flex_value_set_id       NUMBER;
131974 l_adr_value_type_code         VARCHAR2(30);
131975 l_adr_value_combination_id    NUMBER;
131976 l_adr_value_segment_code      VARCHAR2(30);
131977 
131978 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
131979 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
131980 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
131981 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
131982 
131983 -- 4262811 Variables ------------------------------------------------------------------------------------------
131984 l_entered_amt_idx             NUMBER;
131985 l_accted_amt_idx              NUMBER;
131986 l_acc_rev_flag                VARCHAR2(1);
131987 l_accrual_line_num            NUMBER;
131988 l_tmp_amt                     NUMBER;
131989 l_acc_rev_natural_side_code   VARCHAR2(1);
131990 
131991 l_num_entries                 NUMBER;
131992 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
131993 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
131994 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
131995 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
131996 l_recog_line_1                NUMBER;
131997 l_recog_line_2                NUMBER;
131998 
131999 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
132000 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
132001 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
132002 
132003 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
132004 
132005 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
132006 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
132007 
132008 ---------------------------------------------------------------------------------------------------------------
132009 
132010 
132011 --
132012 -- bulk performance
132013 --
132014 l_balance_type_code           VARCHAR2(1);
132015 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
132016 l_log_module                  VARCHAR2(240);
132017 
132018 --
132019 -- Upgrade strategy
132020 --
132021 l_actual_upg_option           VARCHAR2(1);
132022 l_enc_upg_option           VARCHAR2(1);
132023 
132024 --
132025 BEGIN
132026 --
132027 IF g_log_enabled THEN
132028       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_239';
132029 END IF;
132030 --
132031 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132032 
132033       trace
132034          (p_msg      => 'BEGIN of AcctLineType_239'
132035          ,p_level    => C_LEVEL_PROCEDURE
132036          ,p_module   => l_log_module);
132037 
132038 END IF;
132039 --
132040 l_component_type             := 'AMB_JLT';
132041 l_component_code             := 'RETROACTIVE_PRICE_ADJ';
132042 l_component_type_code        := 'S';
132043 l_component_appl_id          :=  707;
132044 l_amb_context_code           := 'DEFAULT';
132045 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
132046 l_event_class_code           := 'RETR_PRICE_ADJ_DEL';
132047 l_event_type_code            := 'RETR_PRICE_ADJ_DEL_ALL';
132048 l_line_definition_owner_code := 'S';
132049 l_line_definition_code       := 'RETR_PRICE_ADJ_DEL';
132050 --
132051 l_balance_type_code          := 'A';
132052 l_segment                     := NULL;
132053 l_ccid                        := NULL;
132054 l_adr_transaction_coa_id      := NULL;
132055 l_adr_accounting_coa_id       := NULL;
132056 l_adr_flexfield_segment_code  := NULL;
132057 l_adr_flex_value_set_id       := NULL;
132058 l_adr_value_type_code         := NULL;
132059 l_adr_value_combination_id    := NULL;
132060 l_adr_value_segment_code      := NULL;
132061 
132062 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
132063 l_bflow_class_code           := '';    -- 4219869 Business Flow
132064 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
132065 l_budgetary_control_flag     := 'N';
132066 
132067 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
132068 l_bflow_applied_to_amt       := NULL; -- 5132302
132069 l_entered_amt_idx            := NULL;          -- 4262811
132070 l_accted_amt_idx             := NULL;          -- 4262811
132071 l_acc_rev_flag               := NULL;          -- 4262811
132072 l_accrual_line_num           := NULL;          -- 4262811
132073 l_tmp_amt                    := NULL;          -- 4262811
132074 --
132075  
132076 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
132077     l_balance_type_code <> 'B' THEN
132078 IF NVL(p_source_5,'
132079 ') =  'Retroprice Adjustment'
132080  THEN 
132081 
132082    --
132083    XLA_AE_LINES_PKG.SetNewLine;
132084 
132085    p_balance_type_code          := l_balance_type_code;
132086    -- set the flag so later we will know whether the gain loss line needs to be created
132087    
132088    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
132089      p_actual_flag :='A';
132090    END IF;
132091 
132092    --
132093    -- bulk performance
132094    --
132095    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
132096                                       p_header_num   => 0); -- 4262811
132097    --
132098    -- set accounting line options
132099    --
132100    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
132101            p_natural_side_code          => 'D'
132102          , p_gain_or_loss_flag          => 'N'
132103          , p_gl_transfer_mode_code      => 'S'
132104          , p_acct_entry_type_code       => 'A'
132105          , p_switch_side_flag           => 'Y'
132106          , p_merge_duplicate_code       => 'N'
132107          );
132108    --
132109    l_acc_rev_natural_side_code := 'C';  -- 4262811
132110    -- 
132111    --
132112    -- set accounting line type info
132113    --
132114    xla_ae_lines_pkg.SetAcctLineType
132115       (p_component_type             => l_component_type
132116       ,p_event_type_code            => l_event_type_code
132117       ,p_line_definition_owner_code => l_line_definition_owner_code
132118       ,p_line_definition_code       => l_line_definition_code
132119       ,p_accounting_line_code       => l_component_code
132120       ,p_accounting_line_type_code  => l_component_type_code
132121       ,p_accounting_line_appl_id    => l_component_appl_id
132122       ,p_amb_context_code           => l_amb_context_code
132123       ,p_entity_code                => l_entity_code
132124       ,p_event_class_code           => l_event_class_code);
132125    --
132126    -- set accounting class
132127    --
132128    xla_ae_lines_pkg.SetAcctClass(
132129            p_accounting_class_code  => 'RETROACTIVE_PRICE_ADJUSTMENT'
132130          , p_ae_header_id           => l_ae_header_id
132131          );
132132 
132133    --
132134    -- set rounding class
132135    --
132136    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
132137                       'RETROACTIVE_PRICE_ADJUSTMENT';
132138 
132139    --
132140    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
132141    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
132142    --
132143    -- bulk performance
132144    --
132145    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
132146 
132147    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
132148       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
132149 
132150    -- 4955764
132151    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
132152       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
132153 
132154    -- 4458381 Public Sector Enh
132155    
132156    --
132157    -- set accounting attributes for the line type
132158    --
132159    l_entered_amt_idx := 3;
132160    l_accted_amt_idx  := 8;
132161    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
132162    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
132163    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
132164    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
132165    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
132166    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
132167    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
132168    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
132169    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
132170    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
132171    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
132172    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
132173    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
132174    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
132175    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
132176    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
132177    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
132178 
132179    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
132180    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
132181 
132182    ---------------------------------------------------------------------------------------------------------------
132183    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
132184    ---------------------------------------------------------------------------------------------------------------
132185    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
132186 
132187    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132188    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132189 
132190    IF xla_accounting_cache_pkg.GetValueChar
132191          (p_source_code         => 'LEDGER_CATEGORY_CODE'
132192          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
132193    AND l_bflow_method_code = 'PRIOR_ENTRY'
132194 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
132195    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
132196          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
132197        )
132198    THEN
132199          xla_ae_lines_pkg.BflowUpgEntry
132200            (p_business_method_code    => l_bflow_method_code
132201            ,p_business_class_code     => l_bflow_class_code
132202            ,p_balance_type            => l_balance_type_code);
132203    ELSE
132204       NULL;
132205 -- No business flow processing for business flow method of NONE.
132206    END IF;
132207 
132208    --
132209    -- call analytical criteria
132210    --
132211    
132212    --
132213    -- call description
132214    --
132215    -- No description or it is inherited.
132216    --
132217    -- call ADRs
132218    -- Bug 4922099
132219    --
132220    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132221         (NVL(l_actual_upg_option, 'N') = 'O') OR
132222         (NVL(l_enc_upg_option, 'N') = 'O')
132223       )
132224    THEN
132225    NULL;
132226    --
132227    --
132228    
132229   l_ccid := AcctDerRule_4(
132230            p_application_id           => p_application_id
132231          , p_ae_header_id             => l_ae_header_id 
132232 , p_source_4 => p_source_4
132233          , x_transaction_coa_id       => l_adr_transaction_coa_id
132234          , x_accounting_coa_id        => l_adr_accounting_coa_id
132235          , x_value_type_code          => l_adr_value_type_code
132236          , p_side                     => 'NA'
132237    );
132238 
132239    xla_ae_lines_pkg.set_ccid(
132240     p_code_combination_id          => l_ccid
132241   , p_value_type_code              => l_adr_value_type_code
132242   , p_transaction_coa_id           => l_adr_transaction_coa_id
132243   , p_accounting_coa_id            => l_adr_accounting_coa_id
132244   , p_adr_code                     => 'CST_DEFAULT'
132245   , p_adr_type_code                => 'S'
132246   , p_component_type               => l_component_type
132247   , p_component_code               => l_component_code
132248   , p_component_type_code          => l_component_type_code
132249   , p_component_appl_id            => l_component_appl_id
132250   , p_amb_context_code             => l_amb_context_code
132251   , p_side                         => 'NA'
132252   );
132253 
132254 
132255    --
132256    --
132257    END IF;
132258    --
132259    -- Bug 4922099
132260    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
132261           (NVL(l_enc_upg_option, 'N') = 'O')
132262         ) AND
132263         (l_bflow_method_code = 'PRIOR_ENTRY')
132264       )
132265    THEN
132266       IF
132267       --
132268       1 = 2
132269       --
132270       THEN
132271       xla_accounting_err_pkg.build_message
132272                                     (p_appli_s_name            => 'XLA'
132273                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132274                                     ,p_token_1                 => 'LINE_NUMBER'
132275                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
132276                                     ,p_token_2                 => 'LINE_TYPE_NAME'
132277                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
132278                                                                              l_component_type
132279                                                                             ,l_component_code
132280                                                                             ,l_component_type_code
132281                                                                             ,l_component_appl_id
132282                                                                             ,l_amb_context_code
132283                                                                             ,l_entity_code
132284                                                                             ,l_event_class_code
132285                                                                            )
132286                                     ,p_token_3                 => 'OWNER'
132287                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
132288                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
132289                                                                           ,p_lookup_code    => l_component_type_code
132290                                                                          )
132291                                     ,p_token_4                 => 'PRODUCT_NAME'
132292                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
132293                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
132294                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
132295                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
132296                                     ,p_ae_header_id            =>  NULL
132297                                        );
132298 
132299         IF (C_LEVEL_ERROR>= g_log_level) THEN
132300                  trace
132301                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132302                       ,p_level    => C_LEVEL_ERROR
132303                       ,p_module   => l_log_module);
132304         END IF;
132305       END IF;
132306    END IF;
132307    --
132308    --
132309    ------------------------------------------------------------------------------------------------
132310    -- 4219869 Business Flow
132311    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
132312    -- Prior Entry.  Currently, the following code is always generated.
132313    ------------------------------------------------------------------------------------------------
132314    XLA_AE_LINES_PKG.ValidateCurrentLine;
132315 
132316    ------------------------------------------------------------------------------------
132317    -- 4219869 Business Flow
132318    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
132319    ------------------------------------------------------------------------------------
132320    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132321 
132322    ----------------------------------------------------------------------------------
132323    -- 4219869 Business Flow
132324    -- Update journal entry status -- Need to generate this within IF <condition>
132325    ----------------------------------------------------------------------------------
132326    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132327          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
132328          ,p_balance_type_code => l_balance_type_code
132329          );
132330 
132331    -------------------------------------------------------------------------------------------
132332    -- 4262811 - Generate the Accrual Reversal lines
132333    -------------------------------------------------------------------------------------------
132334    BEGIN
132335       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
132336                               (g_array_event(p_event_id).array_value_num('header_index'));
132337       IF l_acc_rev_flag IS NULL THEN
132338          l_acc_rev_flag := 'N';
132339       END IF;
132340    EXCEPTION
132341       WHEN OTHERS THEN
132342          l_acc_rev_flag := 'N';
132343    END;
132344    --
132345    IF (l_acc_rev_flag = 'Y') THEN
132346 
132347        -- 4645092  ------------------------------------------------------------------------------
132348        -- To allow MPA report to determine if it should generate report process
132349        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
132350        ------------------------------------------------------------------------------------------
132351 
132352        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
132353        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
132354    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
132355    -- call ADRs
132356    -- Bug 4922099
132357    --
132358    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132359         (NVL(l_actual_upg_option, 'N') = 'O') OR
132360         (NVL(l_enc_upg_option, 'N') = 'O')
132361       )
132362    THEN
132363    NULL;
132364    --
132365    --
132366    
132367   l_ccid := AcctDerRule_4(
132368            p_application_id           => p_application_id
132369          , p_ae_header_id             => l_ae_header_id 
132370 , p_source_4 => p_source_4
132371          , x_transaction_coa_id       => l_adr_transaction_coa_id
132372          , x_accounting_coa_id        => l_adr_accounting_coa_id
132373          , x_value_type_code          => l_adr_value_type_code
132374          , p_side                     => 'NA'
132375    );
132376 
132377    xla_ae_lines_pkg.set_ccid(
132378     p_code_combination_id          => l_ccid
132379   , p_value_type_code              => l_adr_value_type_code
132380   , p_transaction_coa_id           => l_adr_transaction_coa_id
132381   , p_accounting_coa_id            => l_adr_accounting_coa_id
132382   , p_adr_code                     => 'CST_DEFAULT'
132383   , p_adr_type_code                => 'S'
132384   , p_component_type               => l_component_type
132385   , p_component_code               => l_component_code
132386   , p_component_type_code          => l_component_type_code
132387   , p_component_appl_id            => l_component_appl_id
132388   , p_amb_context_code             => l_amb_context_code
132389   , p_side                         => 'NA'
132390   );
132391 
132392 
132393    --
132394    --
132395    END IF;
132396 
132397        --
132398        -- Update the line information that should be overwritten
132399        --
132400        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
132401                                          p_header_num   => 1);
132402        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
132403 
132404        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
132405 
132406        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
132407           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
132408        END IF;
132409 
132410       --
132411       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
132412       --
132413       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
132414           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
132415       ELSE
132416           ---------------------------------------------------------------------------------------------------
132417           -- 4262811a Switch Sign
132418           ---------------------------------------------------------------------------------------------------
132419           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
132420           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
132421                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132422           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
132423                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132424           -- 5132302
132425           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
132426                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132427 
132428       END IF;
132429 
132430       -- 4955764
132431       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
132432       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
132433 
132434 
132435       XLA_AE_LINES_PKG.ValidateCurrentLine;
132436       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132437 
132438       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132439                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
132440                ,p_balance_type_code => l_balance_type_code);
132441 
132442    END IF;
132443 
132444    -----------------------------------------------------------------------------------------
132445    -- 4262811 Multiperiod Accounting
132446    -----------------------------------------------------------------------------------------
132447      -- No MPA option is assigned.
132448 
132449 
132450 END IF;
132451 END IF;
132452 --
132453 
132454 --
132455 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132456    trace
132457       (p_msg      => 'END of AcctLineType_239'
132458       ,p_level    => C_LEVEL_PROCEDURE
132459       ,p_module   => l_log_module);
132460 END IF;
132461 --
132462 EXCEPTION
132463   WHEN xla_exceptions_pkg.application_exception THEN
132464       RAISE;
132465   WHEN OTHERS THEN
132466        xla_exceptions_pkg.raise_message
132467            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_239');
132468 END AcctLineType_239;
132469 --
132470 
132471 ---------------------------------------
132472 --
132473 -- PRIVATE FUNCTION
132474 --         AcctLineType_240
132475 --
132476 ---------------------------------------
132477 PROCEDURE AcctLineType_240 (
132478   p_application_id        IN NUMBER
132479  ,p_event_id              IN NUMBER
132480  ,p_calculate_acctd_flag  IN VARCHAR2
132481  ,p_calculate_g_l_flag    IN VARCHAR2
132482  ,p_actual_flag           IN OUT VARCHAR2
132483  ,p_balance_type_code     OUT VARCHAR2
132484  ,p_gain_or_loss_ref      OUT VARCHAR2
132485  
132486 --Cost Management Default Account
132487  , p_source_4            IN NUMBER
132488 --Applied to Application ID
132489  , p_source_6            IN NUMBER
132490 --Applied to Distribution Link Type
132491  , p_source_7            IN VARCHAR2
132492 --Applied to Entity Code
132493  , p_source_8            IN VARCHAR2
132494 --Applied To Purchase Document Identifier
132495  , p_source_10            IN NUMBER
132496 --DISTRIBUTION_IDENTIFIER
132497  , p_source_11            IN NUMBER
132498 --Distribution Type
132499  , p_source_12            IN VARCHAR2
132500  , p_source_12_meaning    IN VARCHAR2
132501 --PO Budget Account
132502  , p_source_13            IN NUMBER
132503 --Encumbrance Reversal Amount Entered
132504  , p_source_14            IN NUMBER
132505 --Entered Currency Code
132506  , p_source_15            IN VARCHAR2
132507 --Transaction Encumbrance Reversal Amount
132508  , p_source_16            IN NUMBER
132509 --Entered Amount
132510  , p_source_18            IN NUMBER
132511 --Currency Conversion Date
132512  , p_source_19            IN DATE
132513 --Currency Conversion Rate
132514  , p_source_20            IN NUMBER
132515 --Currency Conversion Type
132516  , p_source_21            IN VARCHAR2
132517 --Accounted Amount
132518  , p_source_22            IN NUMBER
132519 --Purchasing Encumbrance Type Identifier
132520  , p_source_23            IN NUMBER
132521 --Accounting Line Type
132522  , p_source_24            IN NUMBER
132523 --Costing Encumbrance Upgrade Option
132524  , p_source_27            IN VARCHAR2
132525 --TXN_PO_DISTRIBUTION_ID
132526  , p_source_28            IN NUMBER
132527 )
132528 IS
132529 
132530 l_component_type              VARCHAR2(80);
132531 l_component_code              VARCHAR2(30);
132532 l_component_type_code         VARCHAR2(1);
132533 l_component_appl_id           INTEGER;
132534 l_amb_context_code            VARCHAR2(30);
132535 l_entity_code                 VARCHAR2(30);
132536 l_event_class_code            VARCHAR2(30);
132537 l_ae_header_id                NUMBER;
132538 l_event_type_code             VARCHAR2(30);
132539 l_line_definition_code        VARCHAR2(30);
132540 l_line_definition_owner_code  VARCHAR2(1);
132541 --
132542 -- adr variables
132543 l_segment                     VARCHAR2(30);
132544 l_ccid                        NUMBER;
132545 l_adr_transaction_coa_id      NUMBER;
132546 l_adr_accounting_coa_id       NUMBER;
132547 l_adr_flexfield_segment_code  VARCHAR2(30);
132548 l_adr_flex_value_set_id       NUMBER;
132549 l_adr_value_type_code         VARCHAR2(30);
132550 l_adr_value_combination_id    NUMBER;
132551 l_adr_value_segment_code      VARCHAR2(30);
132552 
132553 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
132554 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
132555 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
132556 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
132557 
132558 -- 4262811 Variables ------------------------------------------------------------------------------------------
132559 l_entered_amt_idx             NUMBER;
132560 l_accted_amt_idx              NUMBER;
132561 l_acc_rev_flag                VARCHAR2(1);
132562 l_accrual_line_num            NUMBER;
132563 l_tmp_amt                     NUMBER;
132564 l_acc_rev_natural_side_code   VARCHAR2(1);
132565 
132566 l_num_entries                 NUMBER;
132567 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
132568 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
132569 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
132570 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
132571 l_recog_line_1                NUMBER;
132572 l_recog_line_2                NUMBER;
132573 
132574 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
132575 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
132576 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
132577 
132578 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
132579 
132580 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
132581 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
132582 
132583 ---------------------------------------------------------------------------------------------------------------
132584 
132585 
132586 --
132587 -- bulk performance
132588 --
132589 l_balance_type_code           VARCHAR2(1);
132590 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
132591 l_log_module                  VARCHAR2(240);
132592 
132593 --
132594 -- Upgrade strategy
132595 --
132596 l_actual_upg_option           VARCHAR2(1);
132597 l_enc_upg_option           VARCHAR2(1);
132598 
132599 --
132600 BEGIN
132601 --
132602 IF g_log_enabled THEN
132603       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_240';
132604 END IF;
132605 --
132606 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132607 
132608       trace
132609          (p_msg      => 'BEGIN of AcctLineType_240'
132610          ,p_level    => C_LEVEL_PROCEDURE
132611          ,p_module   => l_log_module);
132612 
132613 END IF;
132614 --
132615 l_component_type             := 'AMB_JLT';
132616 l_component_code             := 'SHIKYU_VARIANCE';
132617 l_component_type_code        := 'S';
132618 l_component_appl_id          :=  707;
132619 l_amb_context_code           := 'DEFAULT';
132620 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
132621 l_event_class_code           := 'PURCHASE_ORDER';
132622 l_event_type_code            := 'PURCHASE_ORDER_ALL';
132623 l_line_definition_owner_code := 'S';
132624 l_line_definition_code       := 'PURCHASE_ORDER';
132625 --
132626 l_balance_type_code          := 'A';
132627 l_segment                     := NULL;
132628 l_ccid                        := NULL;
132629 l_adr_transaction_coa_id      := NULL;
132630 l_adr_accounting_coa_id       := NULL;
132631 l_adr_flexfield_segment_code  := NULL;
132632 l_adr_flex_value_set_id       := NULL;
132633 l_adr_value_type_code         := NULL;
132634 l_adr_value_combination_id    := NULL;
132635 l_adr_value_segment_code      := NULL;
132636 
132637 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
132638 l_bflow_class_code           := '';    -- 4219869 Business Flow
132639 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
132640 l_budgetary_control_flag     := 'N';
132641 
132642 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
132643 l_bflow_applied_to_amt       := NULL; -- 5132302
132644 l_entered_amt_idx            := NULL;          -- 4262811
132645 l_accted_amt_idx             := NULL;          -- 4262811
132646 l_acc_rev_flag               := NULL;          -- 4262811
132647 l_accrual_line_num           := NULL;          -- 4262811
132648 l_tmp_amt                    := NULL;          -- 4262811
132649 --
132650  
132651 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
132652     l_balance_type_code <> 'B' THEN
132653 IF NVL(p_source_24,9E125) =  33
132654  THEN 
132655 
132656    --
132657    XLA_AE_LINES_PKG.SetNewLine;
132658 
132659    p_balance_type_code          := l_balance_type_code;
132660    -- set the flag so later we will know whether the gain loss line needs to be created
132661    
132662    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
132663      p_actual_flag :='A';
132664    END IF;
132665 
132666    --
132667    -- bulk performance
132668    --
132669    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
132670                                       p_header_num   => 0); -- 4262811
132671    --
132672    -- set accounting line options
132673    --
132674    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
132675            p_natural_side_code          => 'D'
132676          , p_gain_or_loss_flag          => 'N'
132677          , p_gl_transfer_mode_code      => 'S'
132678          , p_acct_entry_type_code       => 'A'
132679          , p_switch_side_flag           => 'Y'
132680          , p_merge_duplicate_code       => 'N'
132681          );
132682    --
132683    l_acc_rev_natural_side_code := 'C';  -- 4262811
132684    -- 
132685    --
132686    -- set accounting line type info
132687    --
132688    xla_ae_lines_pkg.SetAcctLineType
132689       (p_component_type             => l_component_type
132690       ,p_event_type_code            => l_event_type_code
132691       ,p_line_definition_owner_code => l_line_definition_owner_code
132692       ,p_line_definition_code       => l_line_definition_code
132693       ,p_accounting_line_code       => l_component_code
132694       ,p_accounting_line_type_code  => l_component_type_code
132695       ,p_accounting_line_appl_id    => l_component_appl_id
132696       ,p_amb_context_code           => l_amb_context_code
132697       ,p_entity_code                => l_entity_code
132698       ,p_event_class_code           => l_event_class_code);
132699    --
132700    -- set accounting class
132701    --
132702    xla_ae_lines_pkg.SetAcctClass(
132703            p_accounting_class_code  => 'SHIKYU_VARIANCE'
132704          , p_ae_header_id           => l_ae_header_id
132705          );
132706 
132707    --
132708    -- set rounding class
132709    --
132710    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
132711                       'SHIKYU_VARIANCE';
132712 
132713    --
132714    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
132715    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
132716    --
132717    -- bulk performance
132718    --
132719    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
132720 
132721    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
132722       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
132723 
132724    -- 4955764
132725    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
132726       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
132727 
132728    -- 4458381 Public Sector Enh
132729    
132730    --
132731    -- set accounting attributes for the line type
132732    --
132733    l_entered_amt_idx := 17;
132734    l_accted_amt_idx  := 22;
132735    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
132736    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
132737    l_rec_acct_attrs.array_num_value(1)  := p_source_6;
132738    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
132739    l_rec_acct_attrs.array_char_value(2)  := p_source_7;
132740    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
132741    l_rec_acct_attrs.array_char_value(3)  := p_source_8;
132742    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
132743    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_28);
132744    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
132745    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_10);
132746    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
132747    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_11);
132748    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
132749    l_rec_acct_attrs.array_char_value(7)  := p_source_12;
132750    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
132751    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_13);
132752    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
132753    l_rec_acct_attrs.array_num_value(9)  := p_source_14;
132754    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
132755    l_rec_acct_attrs.array_char_value(10)  := p_source_15;
132756    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
132757    l_rec_acct_attrs.array_num_value(11)  := p_source_16;
132758    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
132759    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_13);
132760    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
132761    l_rec_acct_attrs.array_num_value(13)  := p_source_14;
132762    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
132763    l_rec_acct_attrs.array_char_value(14)  := p_source_15;
132764    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
132765    l_rec_acct_attrs.array_num_value(15)  := p_source_16;
132766    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
132767    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
132768    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
132769    l_rec_acct_attrs.array_num_value(17)  := p_source_18;
132770    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
132771    l_rec_acct_attrs.array_char_value(18)  := p_source_15;
132772    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
132773    l_rec_acct_attrs.array_date_value(19)  := p_source_19;
132774    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
132775    l_rec_acct_attrs.array_num_value(20)  := p_source_20;
132776    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
132777    l_rec_acct_attrs.array_char_value(21)  := p_source_21;
132778    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
132779    l_rec_acct_attrs.array_num_value(22)  := p_source_22;
132780    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
132781    l_rec_acct_attrs.array_num_value(23)  := p_source_23;
132782    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
132783    l_rec_acct_attrs.array_num_value(24)  := p_source_23;
132784 
132785    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
132786    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
132787 
132788    ---------------------------------------------------------------------------------------------------------------
132789    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
132790    ---------------------------------------------------------------------------------------------------------------
132791    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
132792 
132793    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132794    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132795 
132796    IF xla_accounting_cache_pkg.GetValueChar
132797          (p_source_code         => 'LEDGER_CATEGORY_CODE'
132798          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
132799    AND l_bflow_method_code = 'PRIOR_ENTRY'
132800 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
132801    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
132802          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
132803        )
132804    THEN
132805          xla_ae_lines_pkg.BflowUpgEntry
132806            (p_business_method_code    => l_bflow_method_code
132807            ,p_business_class_code     => l_bflow_class_code
132808            ,p_balance_type            => l_balance_type_code);
132809    ELSE
132810       NULL;
132811 -- No business flow processing for business flow method of NONE.
132812    END IF;
132813 
132814    --
132815    -- call analytical criteria
132816    --
132817    
132818    --
132819    -- call description
132820    --
132821    -- No description or it is inherited.
132822    --
132823    -- call ADRs
132824    -- Bug 4922099
132825    --
132826    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132827         (NVL(l_actual_upg_option, 'N') = 'O') OR
132828         (NVL(l_enc_upg_option, 'N') = 'O')
132829       )
132830    THEN
132831    NULL;
132832    --
132833    --
132834    
132835   l_ccid := AcctDerRule_4(
132836            p_application_id           => p_application_id
132837          , p_ae_header_id             => l_ae_header_id 
132838 , p_source_4 => p_source_4
132839          , x_transaction_coa_id       => l_adr_transaction_coa_id
132840          , x_accounting_coa_id        => l_adr_accounting_coa_id
132841          , x_value_type_code          => l_adr_value_type_code
132842          , p_side                     => 'NA'
132843    );
132844 
132845    xla_ae_lines_pkg.set_ccid(
132846     p_code_combination_id          => l_ccid
132847   , p_value_type_code              => l_adr_value_type_code
132848   , p_transaction_coa_id           => l_adr_transaction_coa_id
132849   , p_accounting_coa_id            => l_adr_accounting_coa_id
132850   , p_adr_code                     => 'CST_DEFAULT'
132851   , p_adr_type_code                => 'S'
132852   , p_component_type               => l_component_type
132853   , p_component_code               => l_component_code
132854   , p_component_type_code          => l_component_type_code
132855   , p_component_appl_id            => l_component_appl_id
132856   , p_amb_context_code             => l_amb_context_code
132857   , p_side                         => 'NA'
132858   );
132859 
132860 
132861    --
132862    --
132863    END IF;
132864    --
132865    -- Bug 4922099
132866    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
132867           (NVL(l_enc_upg_option, 'N') = 'O')
132868         ) AND
132869         (l_bflow_method_code = 'PRIOR_ENTRY')
132870       )
132871    THEN
132872       IF
132873       --
132874       1 = 2
132875       --
132876       THEN
132877       xla_accounting_err_pkg.build_message
132878                                     (p_appli_s_name            => 'XLA'
132879                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132880                                     ,p_token_1                 => 'LINE_NUMBER'
132881                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
132882                                     ,p_token_2                 => 'LINE_TYPE_NAME'
132883                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
132884                                                                              l_component_type
132885                                                                             ,l_component_code
132886                                                                             ,l_component_type_code
132887                                                                             ,l_component_appl_id
132888                                                                             ,l_amb_context_code
132889                                                                             ,l_entity_code
132890                                                                             ,l_event_class_code
132891                                                                            )
132892                                     ,p_token_3                 => 'OWNER'
132893                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
132894                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
132895                                                                           ,p_lookup_code    => l_component_type_code
132896                                                                          )
132897                                     ,p_token_4                 => 'PRODUCT_NAME'
132898                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
132899                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
132900                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
132901                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
132902                                     ,p_ae_header_id            =>  NULL
132903                                        );
132904 
132905         IF (C_LEVEL_ERROR>= g_log_level) THEN
132906                  trace
132907                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132908                       ,p_level    => C_LEVEL_ERROR
132909                       ,p_module   => l_log_module);
132910         END IF;
132911       END IF;
132912    END IF;
132913    --
132914    --
132915    ------------------------------------------------------------------------------------------------
132916    -- 4219869 Business Flow
132917    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
132918    -- Prior Entry.  Currently, the following code is always generated.
132919    ------------------------------------------------------------------------------------------------
132920    XLA_AE_LINES_PKG.ValidateCurrentLine;
132921 
132922    ------------------------------------------------------------------------------------
132923    -- 4219869 Business Flow
132924    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
132925    ------------------------------------------------------------------------------------
132926    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132927 
132928    ----------------------------------------------------------------------------------
132929    -- 4219869 Business Flow
132930    -- Update journal entry status -- Need to generate this within IF <condition>
132931    ----------------------------------------------------------------------------------
132932    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132933          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
132934          ,p_balance_type_code => l_balance_type_code
132935          );
132936 
132937    -------------------------------------------------------------------------------------------
132938    -- 4262811 - Generate the Accrual Reversal lines
132939    -------------------------------------------------------------------------------------------
132940    BEGIN
132941       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
132942                               (g_array_event(p_event_id).array_value_num('header_index'));
132943       IF l_acc_rev_flag IS NULL THEN
132944          l_acc_rev_flag := 'N';
132945       END IF;
132946    EXCEPTION
132947       WHEN OTHERS THEN
132948          l_acc_rev_flag := 'N';
132949    END;
132950    --
132951    IF (l_acc_rev_flag = 'Y') THEN
132952 
132953        -- 4645092  ------------------------------------------------------------------------------
132954        -- To allow MPA report to determine if it should generate report process
132955        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
132956        ------------------------------------------------------------------------------------------
132957 
132958        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
132959        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
132960    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
132961    -- call ADRs
132962    -- Bug 4922099
132963    --
132964    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132965         (NVL(l_actual_upg_option, 'N') = 'O') OR
132966         (NVL(l_enc_upg_option, 'N') = 'O')
132967       )
132968    THEN
132969    NULL;
132970    --
132971    --
132972    
132973   l_ccid := AcctDerRule_4(
132974            p_application_id           => p_application_id
132975          , p_ae_header_id             => l_ae_header_id 
132976 , p_source_4 => p_source_4
132977          , x_transaction_coa_id       => l_adr_transaction_coa_id
132978          , x_accounting_coa_id        => l_adr_accounting_coa_id
132979          , x_value_type_code          => l_adr_value_type_code
132980          , p_side                     => 'NA'
132981    );
132982 
132983    xla_ae_lines_pkg.set_ccid(
132984     p_code_combination_id          => l_ccid
132985   , p_value_type_code              => l_adr_value_type_code
132986   , p_transaction_coa_id           => l_adr_transaction_coa_id
132987   , p_accounting_coa_id            => l_adr_accounting_coa_id
132988   , p_adr_code                     => 'CST_DEFAULT'
132989   , p_adr_type_code                => 'S'
132990   , p_component_type               => l_component_type
132991   , p_component_code               => l_component_code
132992   , p_component_type_code          => l_component_type_code
132993   , p_component_appl_id            => l_component_appl_id
132994   , p_amb_context_code             => l_amb_context_code
132995   , p_side                         => 'NA'
132996   );
132997 
132998 
132999    --
133000    --
133001    END IF;
133002 
133003        --
133004        -- Update the line information that should be overwritten
133005        --
133006        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
133007                                          p_header_num   => 1);
133008        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
133009 
133010        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
133011 
133012        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
133013           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
133014        END IF;
133015 
133016       --
133017       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
133018       --
133019       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
133020           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
133021       ELSE
133022           ---------------------------------------------------------------------------------------------------
133023           -- 4262811a Switch Sign
133024           ---------------------------------------------------------------------------------------------------
133025           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
133026           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
133027                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133028           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
133029                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133030           -- 5132302
133031           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
133032                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133033 
133034       END IF;
133035 
133036       -- 4955764
133037       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
133038       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
133039 
133040 
133041       XLA_AE_LINES_PKG.ValidateCurrentLine;
133042       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
133043 
133044       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
133045                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
133046                ,p_balance_type_code => l_balance_type_code);
133047 
133048    END IF;
133049 
133050    -----------------------------------------------------------------------------------------
133051    -- 4262811 Multiperiod Accounting
133052    -----------------------------------------------------------------------------------------
133053      -- No MPA option is assigned.
133054 
133055 
133056 END IF;
133057 END IF;
133058 --
133059 
133060 --
133061 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133062    trace
133063       (p_msg      => 'END of AcctLineType_240'
133064       ,p_level    => C_LEVEL_PROCEDURE
133065       ,p_module   => l_log_module);
133066 END IF;
133067 --
133068 EXCEPTION
133069   WHEN xla_exceptions_pkg.application_exception THEN
133070       RAISE;
133071   WHEN OTHERS THEN
133072        xla_exceptions_pkg.raise_message
133073            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_240');
133074 END AcctLineType_240;
133075 --
133076 
133077 ---------------------------------------
133078 --
133079 -- PRIVATE FUNCTION
133080 --         AcctLineType_241
133081 --
133082 ---------------------------------------
133083 PROCEDURE AcctLineType_241 (
133084   p_application_id        IN NUMBER
133085  ,p_event_id              IN NUMBER
133086  ,p_calculate_acctd_flag  IN VARCHAR2
133087  ,p_calculate_g_l_flag    IN VARCHAR2
133088  ,p_actual_flag           IN OUT VARCHAR2
133089  ,p_balance_type_code     OUT VARCHAR2
133090  ,p_gain_or_loss_ref      OUT VARCHAR2
133091  
133092 --Cost Management Default Account
133093  , p_source_4            IN NUMBER
133094 --DISTRIBUTION_IDENTIFIER
133095  , p_source_11            IN NUMBER
133096 --Distribution Type
133097  , p_source_12            IN VARCHAR2
133098  , p_source_12_meaning    IN VARCHAR2
133099 --Entered Currency Code
133100  , p_source_15            IN VARCHAR2
133101 --Entered Amount
133102  , p_source_18            IN NUMBER
133103 --Currency Conversion Date
133104  , p_source_19            IN DATE
133105 --Currency Conversion Rate
133106  , p_source_20            IN NUMBER
133107 --Currency Conversion Type
133108  , p_source_21            IN VARCHAR2
133109 --Accounted Amount
133110  , p_source_22            IN NUMBER
133111 --Accounting Line Type
133112  , p_source_24            IN NUMBER
133113 )
133114 IS
133115 
133116 l_component_type              VARCHAR2(80);
133117 l_component_code              VARCHAR2(30);
133118 l_component_type_code         VARCHAR2(1);
133119 l_component_appl_id           INTEGER;
133120 l_amb_context_code            VARCHAR2(30);
133121 l_entity_code                 VARCHAR2(30);
133122 l_event_class_code            VARCHAR2(30);
133123 l_ae_header_id                NUMBER;
133124 l_event_type_code             VARCHAR2(30);
133125 l_line_definition_code        VARCHAR2(30);
133126 l_line_definition_owner_code  VARCHAR2(1);
133127 --
133128 -- adr variables
133129 l_segment                     VARCHAR2(30);
133130 l_ccid                        NUMBER;
133131 l_adr_transaction_coa_id      NUMBER;
133132 l_adr_accounting_coa_id       NUMBER;
133133 l_adr_flexfield_segment_code  VARCHAR2(30);
133134 l_adr_flex_value_set_id       NUMBER;
133135 l_adr_value_type_code         VARCHAR2(30);
133136 l_adr_value_combination_id    NUMBER;
133137 l_adr_value_segment_code      VARCHAR2(30);
133138 
133139 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
133140 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
133141 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
133142 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
133143 
133144 -- 4262811 Variables ------------------------------------------------------------------------------------------
133145 l_entered_amt_idx             NUMBER;
133146 l_accted_amt_idx              NUMBER;
133147 l_acc_rev_flag                VARCHAR2(1);
133148 l_accrual_line_num            NUMBER;
133149 l_tmp_amt                     NUMBER;
133150 l_acc_rev_natural_side_code   VARCHAR2(1);
133151 
133152 l_num_entries                 NUMBER;
133153 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
133154 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
133155 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
133156 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
133157 l_recog_line_1                NUMBER;
133158 l_recog_line_2                NUMBER;
133159 
133160 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
133161 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
133162 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
133163 
133164 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
133165 
133166 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
133167 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
133168 
133169 ---------------------------------------------------------------------------------------------------------------
133170 
133171 
133172 --
133173 -- bulk performance
133174 --
133175 l_balance_type_code           VARCHAR2(1);
133176 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
133177 l_log_module                  VARCHAR2(240);
133178 
133179 --
133180 -- Upgrade strategy
133181 --
133182 l_actual_upg_option           VARCHAR2(1);
133183 l_enc_upg_option           VARCHAR2(1);
133184 
133185 --
133186 BEGIN
133187 --
133188 IF g_log_enabled THEN
133189       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_241';
133190 END IF;
133191 --
133192 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133193 
133194       trace
133195          (p_msg      => 'BEGIN of AcctLineType_241'
133196          ,p_level    => C_LEVEL_PROCEDURE
133197          ,p_module   => l_log_module);
133198 
133199 END IF;
133200 --
133201 l_component_type             := 'AMB_JLT';
133202 l_component_code             := 'WIP_VALUATION';
133203 l_component_type_code        := 'S';
133204 l_component_appl_id          :=  707;
133205 l_amb_context_code           := 'DEFAULT';
133206 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
133207 l_event_class_code           := 'ABSORPTION';
133208 l_event_type_code            := 'ABSORPTION_ALL';
133209 l_line_definition_owner_code := 'S';
133210 l_line_definition_code       := 'ABSORPTION';
133211 --
133212 l_balance_type_code          := 'A';
133213 l_segment                     := NULL;
133214 l_ccid                        := NULL;
133215 l_adr_transaction_coa_id      := NULL;
133216 l_adr_accounting_coa_id       := NULL;
133217 l_adr_flexfield_segment_code  := NULL;
133218 l_adr_flex_value_set_id       := NULL;
133219 l_adr_value_type_code         := NULL;
133220 l_adr_value_combination_id    := NULL;
133221 l_adr_value_segment_code      := NULL;
133222 
133223 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
133224 l_bflow_class_code           := '';    -- 4219869 Business Flow
133225 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
133226 l_budgetary_control_flag     := 'N';
133227 
133228 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
133229 l_bflow_applied_to_amt       := NULL; -- 5132302
133230 l_entered_amt_idx            := NULL;          -- 4262811
133231 l_accted_amt_idx             := NULL;          -- 4262811
133232 l_acc_rev_flag               := NULL;          -- 4262811
133233 l_accrual_line_num           := NULL;          -- 4262811
133234 l_tmp_amt                    := NULL;          -- 4262811
133235 --
133236  
133237 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
133238     l_balance_type_code <> 'B' THEN
133239 IF NVL(p_source_24,9E125) =  7
133240  THEN 
133241 
133242    --
133243    XLA_AE_LINES_PKG.SetNewLine;
133244 
133245    p_balance_type_code          := l_balance_type_code;
133246    -- set the flag so later we will know whether the gain loss line needs to be created
133247    
133248    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
133249      p_actual_flag :='A';
133250    END IF;
133251 
133252    --
133253    -- bulk performance
133254    --
133255    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
133256                                       p_header_num   => 0); -- 4262811
133257    --
133258    -- set accounting line options
133259    --
133260    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
133261            p_natural_side_code          => 'D'
133262          , p_gain_or_loss_flag          => 'N'
133263          , p_gl_transfer_mode_code      => 'S'
133264          , p_acct_entry_type_code       => 'A'
133265          , p_switch_side_flag           => 'Y'
133266          , p_merge_duplicate_code       => 'N'
133267          );
133268    --
133269    l_acc_rev_natural_side_code := 'C';  -- 4262811
133270    -- 
133271    --
133272    -- set accounting line type info
133273    --
133274    xla_ae_lines_pkg.SetAcctLineType
133275       (p_component_type             => l_component_type
133276       ,p_event_type_code            => l_event_type_code
133277       ,p_line_definition_owner_code => l_line_definition_owner_code
133278       ,p_line_definition_code       => l_line_definition_code
133279       ,p_accounting_line_code       => l_component_code
133280       ,p_accounting_line_type_code  => l_component_type_code
133281       ,p_accounting_line_appl_id    => l_component_appl_id
133282       ,p_amb_context_code           => l_amb_context_code
133283       ,p_entity_code                => l_entity_code
133284       ,p_event_class_code           => l_event_class_code);
133285    --
133286    -- set accounting class
133287    --
133288    xla_ae_lines_pkg.SetAcctClass(
133289            p_accounting_class_code  => 'WIP_VALUATION'
133290          , p_ae_header_id           => l_ae_header_id
133291          );
133292 
133293    --
133294    -- set rounding class
133295    --
133296    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
133297                       'WIP_VALUATION';
133298 
133299    --
133300    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
133301    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
133302    --
133303    -- bulk performance
133304    --
133305    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
133306 
133307    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
133308       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
133309 
133310    -- 4955764
133311    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
133312       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
133313 
133314    -- 4458381 Public Sector Enh
133315    
133316    --
133317    -- set accounting attributes for the line type
133318    --
133319    l_entered_amt_idx := 3;
133320    l_accted_amt_idx  := 8;
133321    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
133322    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
133323    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
133324    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
133325    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
133326    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
133327    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
133328    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
133329    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
133330    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
133331    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
133332    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
133333    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
133334    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
133335    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
133336    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
133337    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
133338 
133339    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
133340    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
133341 
133342    ---------------------------------------------------------------------------------------------------------------
133343    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
133344    ---------------------------------------------------------------------------------------------------------------
133345    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
133346 
133347    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133348    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133349 
133350    IF xla_accounting_cache_pkg.GetValueChar
133351          (p_source_code         => 'LEDGER_CATEGORY_CODE'
133352          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
133353    AND l_bflow_method_code = 'PRIOR_ENTRY'
133354 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
133355    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
133356          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
133357        )
133358    THEN
133359          xla_ae_lines_pkg.BflowUpgEntry
133360            (p_business_method_code    => l_bflow_method_code
133361            ,p_business_class_code     => l_bflow_class_code
133362            ,p_balance_type            => l_balance_type_code);
133363    ELSE
133364       NULL;
133365 -- No business flow processing for business flow method of NONE.
133366    END IF;
133367 
133368    --
133369    -- call analytical criteria
133370    --
133371    
133372    --
133373    -- call description
133374    --
133375    -- No description or it is inherited.
133376    --
133377    -- call ADRs
133378    -- Bug 4922099
133379    --
133380    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
133381         (NVL(l_actual_upg_option, 'N') = 'O') OR
133382         (NVL(l_enc_upg_option, 'N') = 'O')
133383       )
133384    THEN
133385    NULL;
133386    --
133387    --
133388    
133389   l_ccid := AcctDerRule_4(
133390            p_application_id           => p_application_id
133391          , p_ae_header_id             => l_ae_header_id 
133392 , p_source_4 => p_source_4
133393          , x_transaction_coa_id       => l_adr_transaction_coa_id
133394          , x_accounting_coa_id        => l_adr_accounting_coa_id
133395          , x_value_type_code          => l_adr_value_type_code
133396          , p_side                     => 'NA'
133397    );
133398 
133399    xla_ae_lines_pkg.set_ccid(
133400     p_code_combination_id          => l_ccid
133401   , p_value_type_code              => l_adr_value_type_code
133402   , p_transaction_coa_id           => l_adr_transaction_coa_id
133403   , p_accounting_coa_id            => l_adr_accounting_coa_id
133404   , p_adr_code                     => 'CST_DEFAULT'
133405   , p_adr_type_code                => 'S'
133406   , p_component_type               => l_component_type
133407   , p_component_code               => l_component_code
133408   , p_component_type_code          => l_component_type_code
133409   , p_component_appl_id            => l_component_appl_id
133410   , p_amb_context_code             => l_amb_context_code
133411   , p_side                         => 'NA'
133412   );
133413 
133414 
133415    --
133416    --
133417    END IF;
133418    --
133419    -- Bug 4922099
133420    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
133421           (NVL(l_enc_upg_option, 'N') = 'O')
133422         ) AND
133423         (l_bflow_method_code = 'PRIOR_ENTRY')
133424       )
133425    THEN
133426       IF
133427       --
133428       1 = 2
133429       --
133430       THEN
133431       xla_accounting_err_pkg.build_message
133432                                     (p_appli_s_name            => 'XLA'
133433                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133434                                     ,p_token_1                 => 'LINE_NUMBER'
133435                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
133436                                     ,p_token_2                 => 'LINE_TYPE_NAME'
133437                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
133438                                                                              l_component_type
133439                                                                             ,l_component_code
133440                                                                             ,l_component_type_code
133441                                                                             ,l_component_appl_id
133442                                                                             ,l_amb_context_code
133443                                                                             ,l_entity_code
133444                                                                             ,l_event_class_code
133445                                                                            )
133446                                     ,p_token_3                 => 'OWNER'
133447                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
133448                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
133449                                                                           ,p_lookup_code    => l_component_type_code
133450                                                                          )
133451                                     ,p_token_4                 => 'PRODUCT_NAME'
133452                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
133453                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
133454                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
133455                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
133456                                     ,p_ae_header_id            =>  NULL
133457                                        );
133458 
133459         IF (C_LEVEL_ERROR>= g_log_level) THEN
133460                  trace
133461                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133462                       ,p_level    => C_LEVEL_ERROR
133463                       ,p_module   => l_log_module);
133464         END IF;
133465       END IF;
133466    END IF;
133467    --
133468    --
133469    ------------------------------------------------------------------------------------------------
133470    -- 4219869 Business Flow
133471    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
133472    -- Prior Entry.  Currently, the following code is always generated.
133473    ------------------------------------------------------------------------------------------------
133474    XLA_AE_LINES_PKG.ValidateCurrentLine;
133475 
133476    ------------------------------------------------------------------------------------
133477    -- 4219869 Business Flow
133478    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
133479    ------------------------------------------------------------------------------------
133480    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
133481 
133482    ----------------------------------------------------------------------------------
133483    -- 4219869 Business Flow
133484    -- Update journal entry status -- Need to generate this within IF <condition>
133485    ----------------------------------------------------------------------------------
133486    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
133487          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
133488          ,p_balance_type_code => l_balance_type_code
133489          );
133490 
133491    -------------------------------------------------------------------------------------------
133492    -- 4262811 - Generate the Accrual Reversal lines
133493    -------------------------------------------------------------------------------------------
133494    BEGIN
133495       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
133496                               (g_array_event(p_event_id).array_value_num('header_index'));
133497       IF l_acc_rev_flag IS NULL THEN
133498          l_acc_rev_flag := 'N';
133499       END IF;
133500    EXCEPTION
133501       WHEN OTHERS THEN
133502          l_acc_rev_flag := 'N';
133503    END;
133504    --
133505    IF (l_acc_rev_flag = 'Y') THEN
133506 
133507        -- 4645092  ------------------------------------------------------------------------------
133508        -- To allow MPA report to determine if it should generate report process
133509        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
133510        ------------------------------------------------------------------------------------------
133511 
133512        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
133513        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
133514    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
133515    -- call ADRs
133516    -- Bug 4922099
133517    --
133518    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
133519         (NVL(l_actual_upg_option, 'N') = 'O') OR
133520         (NVL(l_enc_upg_option, 'N') = 'O')
133521       )
133522    THEN
133523    NULL;
133524    --
133525    --
133526    
133527   l_ccid := AcctDerRule_4(
133528            p_application_id           => p_application_id
133529          , p_ae_header_id             => l_ae_header_id 
133530 , p_source_4 => p_source_4
133531          , x_transaction_coa_id       => l_adr_transaction_coa_id
133532          , x_accounting_coa_id        => l_adr_accounting_coa_id
133533          , x_value_type_code          => l_adr_value_type_code
133534          , p_side                     => 'NA'
133535    );
133536 
133537    xla_ae_lines_pkg.set_ccid(
133538     p_code_combination_id          => l_ccid
133539   , p_value_type_code              => l_adr_value_type_code
133540   , p_transaction_coa_id           => l_adr_transaction_coa_id
133541   , p_accounting_coa_id            => l_adr_accounting_coa_id
133542   , p_adr_code                     => 'CST_DEFAULT'
133543   , p_adr_type_code                => 'S'
133544   , p_component_type               => l_component_type
133545   , p_component_code               => l_component_code
133546   , p_component_type_code          => l_component_type_code
133547   , p_component_appl_id            => l_component_appl_id
133548   , p_amb_context_code             => l_amb_context_code
133549   , p_side                         => 'NA'
133550   );
133551 
133552 
133553    --
133554    --
133555    END IF;
133556 
133557        --
133558        -- Update the line information that should be overwritten
133559        --
133560        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
133561                                          p_header_num   => 1);
133562        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
133563 
133564        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
133565 
133566        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
133567           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
133568        END IF;
133569 
133570       --
133571       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
133572       --
133573       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
133574           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
133575       ELSE
133576           ---------------------------------------------------------------------------------------------------
133577           -- 4262811a Switch Sign
133578           ---------------------------------------------------------------------------------------------------
133579           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
133580           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
133581                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133582           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
133583                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133584           -- 5132302
133585           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
133586                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133587 
133588       END IF;
133589 
133590       -- 4955764
133591       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
133592       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
133593 
133594 
133595       XLA_AE_LINES_PKG.ValidateCurrentLine;
133596       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
133597 
133598       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
133599                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
133600                ,p_balance_type_code => l_balance_type_code);
133601 
133602    END IF;
133603 
133604    -----------------------------------------------------------------------------------------
133605    -- 4262811 Multiperiod Accounting
133606    -----------------------------------------------------------------------------------------
133607      -- No MPA option is assigned.
133608 
133609 
133610 END IF;
133611 END IF;
133612 --
133613 
133614 --
133615 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133616    trace
133617       (p_msg      => 'END of AcctLineType_241'
133618       ,p_level    => C_LEVEL_PROCEDURE
133619       ,p_module   => l_log_module);
133620 END IF;
133621 --
133622 EXCEPTION
133623   WHEN xla_exceptions_pkg.application_exception THEN
133624       RAISE;
133625   WHEN OTHERS THEN
133626        xla_exceptions_pkg.raise_message
133627            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_241');
133628 END AcctLineType_241;
133629 --
133630 
133631 ---------------------------------------
133632 --
133633 -- PRIVATE FUNCTION
133634 --         AcctLineType_242
133635 --
133636 ---------------------------------------
133637 PROCEDURE AcctLineType_242 (
133638   p_application_id        IN NUMBER
133639  ,p_event_id              IN NUMBER
133640  ,p_calculate_acctd_flag  IN VARCHAR2
133641  ,p_calculate_g_l_flag    IN VARCHAR2
133642  ,p_actual_flag           IN OUT VARCHAR2
133643  ,p_balance_type_code     OUT VARCHAR2
133644  ,p_gain_or_loss_ref      OUT VARCHAR2
133645  
133646 --Cost Management Default Account
133647  , p_source_4            IN NUMBER
133648 --DISTRIBUTION_IDENTIFIER
133649  , p_source_11            IN NUMBER
133650 --Distribution Type
133651  , p_source_12            IN VARCHAR2
133652  , p_source_12_meaning    IN VARCHAR2
133653 --Entered Currency Code
133654  , p_source_15            IN VARCHAR2
133655 --Entered Amount
133656  , p_source_18            IN NUMBER
133657 --Currency Conversion Date
133658  , p_source_19            IN DATE
133659 --Currency Conversion Rate
133660  , p_source_20            IN NUMBER
133661 --Currency Conversion Type
133662  , p_source_21            IN VARCHAR2
133663 --Accounted Amount
133664  , p_source_22            IN NUMBER
133665 --Accounting Line Type
133666  , p_source_24            IN NUMBER
133667 )
133668 IS
133669 
133670 l_component_type              VARCHAR2(80);
133671 l_component_code              VARCHAR2(30);
133672 l_component_type_code         VARCHAR2(1);
133673 l_component_appl_id           INTEGER;
133674 l_amb_context_code            VARCHAR2(30);
133675 l_entity_code                 VARCHAR2(30);
133676 l_event_class_code            VARCHAR2(30);
133677 l_ae_header_id                NUMBER;
133678 l_event_type_code             VARCHAR2(30);
133679 l_line_definition_code        VARCHAR2(30);
133680 l_line_definition_owner_code  VARCHAR2(1);
133681 --
133682 -- adr variables
133683 l_segment                     VARCHAR2(30);
133684 l_ccid                        NUMBER;
133685 l_adr_transaction_coa_id      NUMBER;
133686 l_adr_accounting_coa_id       NUMBER;
133687 l_adr_flexfield_segment_code  VARCHAR2(30);
133688 l_adr_flex_value_set_id       NUMBER;
133689 l_adr_value_type_code         VARCHAR2(30);
133690 l_adr_value_combination_id    NUMBER;
133691 l_adr_value_segment_code      VARCHAR2(30);
133692 
133693 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
133694 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
133695 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
133696 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
133697 
133698 -- 4262811 Variables ------------------------------------------------------------------------------------------
133699 l_entered_amt_idx             NUMBER;
133700 l_accted_amt_idx              NUMBER;
133701 l_acc_rev_flag                VARCHAR2(1);
133702 l_accrual_line_num            NUMBER;
133703 l_tmp_amt                     NUMBER;
133704 l_acc_rev_natural_side_code   VARCHAR2(1);
133705 
133706 l_num_entries                 NUMBER;
133707 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
133708 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
133709 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
133710 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
133711 l_recog_line_1                NUMBER;
133712 l_recog_line_2                NUMBER;
133713 
133714 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
133715 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
133716 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
133717 
133718 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
133719 
133720 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
133721 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
133722 
133723 ---------------------------------------------------------------------------------------------------------------
133724 
133725 
133726 --
133727 -- bulk performance
133728 --
133729 l_balance_type_code           VARCHAR2(1);
133730 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
133731 l_log_module                  VARCHAR2(240);
133732 
133733 --
133734 -- Upgrade strategy
133735 --
133736 l_actual_upg_option           VARCHAR2(1);
133737 l_enc_upg_option           VARCHAR2(1);
133738 
133739 --
133740 BEGIN
133741 --
133742 IF g_log_enabled THEN
133743       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_242';
133744 END IF;
133745 --
133746 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133747 
133748       trace
133749          (p_msg      => 'BEGIN of AcctLineType_242'
133750          ,p_level    => C_LEVEL_PROCEDURE
133751          ,p_module   => l_log_module);
133752 
133753 END IF;
133754 --
133755 l_component_type             := 'AMB_JLT';
133756 l_component_code             := 'WIP_VALUATION';
133757 l_component_type_code        := 'S';
133758 l_component_appl_id          :=  707;
133759 l_amb_context_code           := 'DEFAULT';
133760 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
133761 l_event_class_code           := 'VARIANCE';
133762 l_event_type_code            := 'VARIANCE_ALL';
133763 l_line_definition_owner_code := 'S';
133764 l_line_definition_code       := 'VARIANCE';
133765 --
133766 l_balance_type_code          := 'A';
133767 l_segment                     := NULL;
133768 l_ccid                        := NULL;
133769 l_adr_transaction_coa_id      := NULL;
133770 l_adr_accounting_coa_id       := NULL;
133771 l_adr_flexfield_segment_code  := NULL;
133772 l_adr_flex_value_set_id       := NULL;
133773 l_adr_value_type_code         := NULL;
133774 l_adr_value_combination_id    := NULL;
133775 l_adr_value_segment_code      := NULL;
133776 
133777 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
133778 l_bflow_class_code           := '';    -- 4219869 Business Flow
133779 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
133780 l_budgetary_control_flag     := 'N';
133781 
133782 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
133783 l_bflow_applied_to_amt       := NULL; -- 5132302
133784 l_entered_amt_idx            := NULL;          -- 4262811
133785 l_accted_amt_idx             := NULL;          -- 4262811
133786 l_acc_rev_flag               := NULL;          -- 4262811
133787 l_accrual_line_num           := NULL;          -- 4262811
133788 l_tmp_amt                    := NULL;          -- 4262811
133789 --
133790  
133791 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
133792     l_balance_type_code <> 'B' THEN
133793 IF NVL(p_source_24,9E125) =  7
133794  THEN 
133795 
133796    --
133797    XLA_AE_LINES_PKG.SetNewLine;
133798 
133799    p_balance_type_code          := l_balance_type_code;
133800    -- set the flag so later we will know whether the gain loss line needs to be created
133801    
133802    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
133803      p_actual_flag :='A';
133804    END IF;
133805 
133806    --
133807    -- bulk performance
133808    --
133809    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
133810                                       p_header_num   => 0); -- 4262811
133811    --
133812    -- set accounting line options
133813    --
133814    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
133815            p_natural_side_code          => 'D'
133816          , p_gain_or_loss_flag          => 'N'
133817          , p_gl_transfer_mode_code      => 'S'
133818          , p_acct_entry_type_code       => 'A'
133819          , p_switch_side_flag           => 'Y'
133820          , p_merge_duplicate_code       => 'N'
133821          );
133822    --
133823    l_acc_rev_natural_side_code := 'C';  -- 4262811
133824    -- 
133825    --
133826    -- set accounting line type info
133827    --
133828    xla_ae_lines_pkg.SetAcctLineType
133829       (p_component_type             => l_component_type
133830       ,p_event_type_code            => l_event_type_code
133831       ,p_line_definition_owner_code => l_line_definition_owner_code
133832       ,p_line_definition_code       => l_line_definition_code
133833       ,p_accounting_line_code       => l_component_code
133834       ,p_accounting_line_type_code  => l_component_type_code
133835       ,p_accounting_line_appl_id    => l_component_appl_id
133836       ,p_amb_context_code           => l_amb_context_code
133837       ,p_entity_code                => l_entity_code
133838       ,p_event_class_code           => l_event_class_code);
133839    --
133840    -- set accounting class
133841    --
133842    xla_ae_lines_pkg.SetAcctClass(
133843            p_accounting_class_code  => 'WIP_VALUATION'
133844          , p_ae_header_id           => l_ae_header_id
133845          );
133846 
133847    --
133848    -- set rounding class
133849    --
133850    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
133851                       'WIP_VALUATION';
133852 
133853    --
133854    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
133855    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
133856    --
133857    -- bulk performance
133858    --
133859    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
133860 
133861    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
133862       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
133863 
133864    -- 4955764
133865    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
133866       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
133867 
133868    -- 4458381 Public Sector Enh
133869    
133870    --
133871    -- set accounting attributes for the line type
133872    --
133873    l_entered_amt_idx := 3;
133874    l_accted_amt_idx  := 8;
133875    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
133876    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
133877    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
133878    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
133879    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
133880    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
133881    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
133882    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
133883    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
133884    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
133885    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
133886    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
133887    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
133888    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
133889    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
133890    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
133891    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
133892 
133893    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
133894    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
133895 
133896    ---------------------------------------------------------------------------------------------------------------
133897    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
133898    ---------------------------------------------------------------------------------------------------------------
133899    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
133900 
133901    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133902    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133903 
133904    IF xla_accounting_cache_pkg.GetValueChar
133905          (p_source_code         => 'LEDGER_CATEGORY_CODE'
133906          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
133907    AND l_bflow_method_code = 'PRIOR_ENTRY'
133908 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
133909    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
133910          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
133911        )
133912    THEN
133913          xla_ae_lines_pkg.BflowUpgEntry
133914            (p_business_method_code    => l_bflow_method_code
133915            ,p_business_class_code     => l_bflow_class_code
133916            ,p_balance_type            => l_balance_type_code);
133917    ELSE
133918       NULL;
133919 -- No business flow processing for business flow method of NONE.
133920    END IF;
133921 
133922    --
133923    -- call analytical criteria
133924    --
133925    
133926    --
133927    -- call description
133928    --
133929    -- No description or it is inherited.
133930    --
133931    -- call ADRs
133932    -- Bug 4922099
133933    --
133934    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
133935         (NVL(l_actual_upg_option, 'N') = 'O') OR
133936         (NVL(l_enc_upg_option, 'N') = 'O')
133937       )
133938    THEN
133939    NULL;
133940    --
133941    --
133942    
133943   l_ccid := AcctDerRule_4(
133944            p_application_id           => p_application_id
133945          , p_ae_header_id             => l_ae_header_id 
133946 , p_source_4 => p_source_4
133947          , x_transaction_coa_id       => l_adr_transaction_coa_id
133948          , x_accounting_coa_id        => l_adr_accounting_coa_id
133949          , x_value_type_code          => l_adr_value_type_code
133950          , p_side                     => 'NA'
133951    );
133952 
133953    xla_ae_lines_pkg.set_ccid(
133954     p_code_combination_id          => l_ccid
133955   , p_value_type_code              => l_adr_value_type_code
133956   , p_transaction_coa_id           => l_adr_transaction_coa_id
133957   , p_accounting_coa_id            => l_adr_accounting_coa_id
133958   , p_adr_code                     => 'CST_DEFAULT'
133959   , p_adr_type_code                => 'S'
133960   , p_component_type               => l_component_type
133961   , p_component_code               => l_component_code
133962   , p_component_type_code          => l_component_type_code
133963   , p_component_appl_id            => l_component_appl_id
133964   , p_amb_context_code             => l_amb_context_code
133965   , p_side                         => 'NA'
133966   );
133967 
133968 
133969    --
133970    --
133971    END IF;
133972    --
133973    -- Bug 4922099
133974    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
133975           (NVL(l_enc_upg_option, 'N') = 'O')
133976         ) AND
133977         (l_bflow_method_code = 'PRIOR_ENTRY')
133978       )
133979    THEN
133980       IF
133981       --
133982       1 = 2
133983       --
133984       THEN
133985       xla_accounting_err_pkg.build_message
133986                                     (p_appli_s_name            => 'XLA'
133987                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133988                                     ,p_token_1                 => 'LINE_NUMBER'
133989                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
133990                                     ,p_token_2                 => 'LINE_TYPE_NAME'
133991                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
133992                                                                              l_component_type
133993                                                                             ,l_component_code
133994                                                                             ,l_component_type_code
133995                                                                             ,l_component_appl_id
133996                                                                             ,l_amb_context_code
133997                                                                             ,l_entity_code
133998                                                                             ,l_event_class_code
133999                                                                            )
134000                                     ,p_token_3                 => 'OWNER'
134001                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
134002                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
134003                                                                           ,p_lookup_code    => l_component_type_code
134004                                                                          )
134005                                     ,p_token_4                 => 'PRODUCT_NAME'
134006                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
134007                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
134008                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
134009                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
134010                                     ,p_ae_header_id            =>  NULL
134011                                        );
134012 
134013         IF (C_LEVEL_ERROR>= g_log_level) THEN
134014                  trace
134015                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
134016                       ,p_level    => C_LEVEL_ERROR
134017                       ,p_module   => l_log_module);
134018         END IF;
134019       END IF;
134020    END IF;
134021    --
134022    --
134023    ------------------------------------------------------------------------------------------------
134024    -- 4219869 Business Flow
134025    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
134026    -- Prior Entry.  Currently, the following code is always generated.
134027    ------------------------------------------------------------------------------------------------
134028    XLA_AE_LINES_PKG.ValidateCurrentLine;
134029 
134030    ------------------------------------------------------------------------------------
134031    -- 4219869 Business Flow
134032    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
134033    ------------------------------------------------------------------------------------
134034    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
134035 
134036    ----------------------------------------------------------------------------------
134037    -- 4219869 Business Flow
134038    -- Update journal entry status -- Need to generate this within IF <condition>
134039    ----------------------------------------------------------------------------------
134040    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
134041          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
134042          ,p_balance_type_code => l_balance_type_code
134043          );
134044 
134045    -------------------------------------------------------------------------------------------
134046    -- 4262811 - Generate the Accrual Reversal lines
134047    -------------------------------------------------------------------------------------------
134048    BEGIN
134049       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
134050                               (g_array_event(p_event_id).array_value_num('header_index'));
134051       IF l_acc_rev_flag IS NULL THEN
134052          l_acc_rev_flag := 'N';
134053       END IF;
134054    EXCEPTION
134055       WHEN OTHERS THEN
134056          l_acc_rev_flag := 'N';
134057    END;
134058    --
134059    IF (l_acc_rev_flag = 'Y') THEN
134060 
134061        -- 4645092  ------------------------------------------------------------------------------
134062        -- To allow MPA report to determine if it should generate report process
134063        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
134064        ------------------------------------------------------------------------------------------
134065 
134066        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
134067        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
134068    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
134069    -- call ADRs
134070    -- Bug 4922099
134071    --
134072    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
134073         (NVL(l_actual_upg_option, 'N') = 'O') OR
134074         (NVL(l_enc_upg_option, 'N') = 'O')
134075       )
134076    THEN
134077    NULL;
134078    --
134079    --
134080    
134081   l_ccid := AcctDerRule_4(
134082            p_application_id           => p_application_id
134083          , p_ae_header_id             => l_ae_header_id 
134084 , p_source_4 => p_source_4
134085          , x_transaction_coa_id       => l_adr_transaction_coa_id
134086          , x_accounting_coa_id        => l_adr_accounting_coa_id
134087          , x_value_type_code          => l_adr_value_type_code
134088          , p_side                     => 'NA'
134089    );
134090 
134091    xla_ae_lines_pkg.set_ccid(
134092     p_code_combination_id          => l_ccid
134093   , p_value_type_code              => l_adr_value_type_code
134094   , p_transaction_coa_id           => l_adr_transaction_coa_id
134095   , p_accounting_coa_id            => l_adr_accounting_coa_id
134096   , p_adr_code                     => 'CST_DEFAULT'
134097   , p_adr_type_code                => 'S'
134098   , p_component_type               => l_component_type
134099   , p_component_code               => l_component_code
134100   , p_component_type_code          => l_component_type_code
134101   , p_component_appl_id            => l_component_appl_id
134102   , p_amb_context_code             => l_amb_context_code
134103   , p_side                         => 'NA'
134104   );
134105 
134106 
134107    --
134108    --
134109    END IF;
134110 
134111        --
134112        -- Update the line information that should be overwritten
134113        --
134114        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
134115                                          p_header_num   => 1);
134116        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
134117 
134118        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
134119 
134120        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
134121           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
134122        END IF;
134123 
134124       --
134125       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
134126       --
134127       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
134128           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
134129       ELSE
134130           ---------------------------------------------------------------------------------------------------
134131           -- 4262811a Switch Sign
134132           ---------------------------------------------------------------------------------------------------
134133           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
134134           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134135                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134136           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134137                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134138           -- 5132302
134139           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
134140                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134141 
134142       END IF;
134143 
134144       -- 4955764
134145       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134146       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
134147 
134148 
134149       XLA_AE_LINES_PKG.ValidateCurrentLine;
134150       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
134151 
134152       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
134153                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
134154                ,p_balance_type_code => l_balance_type_code);
134155 
134156    END IF;
134157 
134158    -----------------------------------------------------------------------------------------
134159    -- 4262811 Multiperiod Accounting
134160    -----------------------------------------------------------------------------------------
134161      -- No MPA option is assigned.
134162 
134163 
134164 END IF;
134165 END IF;
134166 --
134167 
134168 --
134169 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134170    trace
134171       (p_msg      => 'END of AcctLineType_242'
134172       ,p_level    => C_LEVEL_PROCEDURE
134173       ,p_module   => l_log_module);
134174 END IF;
134175 --
134176 EXCEPTION
134177   WHEN xla_exceptions_pkg.application_exception THEN
134178       RAISE;
134179   WHEN OTHERS THEN
134180        xla_exceptions_pkg.raise_message
134181            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_242');
134182 END AcctLineType_242;
134183 --
134184 
134185 ---------------------------------------
134186 --
134187 -- PRIVATE FUNCTION
134188 --         AcctLineType_243
134189 --
134190 ---------------------------------------
134191 PROCEDURE AcctLineType_243 (
134192   p_application_id        IN NUMBER
134193  ,p_event_id              IN NUMBER
134194  ,p_calculate_acctd_flag  IN VARCHAR2
134195  ,p_calculate_g_l_flag    IN VARCHAR2
134196  ,p_actual_flag           IN OUT VARCHAR2
134197  ,p_balance_type_code     OUT VARCHAR2
134198  ,p_gain_or_loss_ref      OUT VARCHAR2
134199  
134200 --Cost Management Default Account
134201  , p_source_4            IN NUMBER
134202 --DISTRIBUTION_IDENTIFIER
134203  , p_source_11            IN NUMBER
134204 --Distribution Type
134205  , p_source_12            IN VARCHAR2
134206  , p_source_12_meaning    IN VARCHAR2
134207 --Entered Currency Code
134208  , p_source_15            IN VARCHAR2
134209 --Entered Amount
134210  , p_source_18            IN NUMBER
134211 --Currency Conversion Date
134212  , p_source_19            IN DATE
134213 --Currency Conversion Rate
134214  , p_source_20            IN NUMBER
134215 --Currency Conversion Type
134216  , p_source_21            IN VARCHAR2
134217 --Accounted Amount
134218  , p_source_22            IN NUMBER
134219 --Accounting Line Type
134220  , p_source_24            IN NUMBER
134221 )
134222 IS
134223 
134224 l_component_type              VARCHAR2(80);
134225 l_component_code              VARCHAR2(30);
134226 l_component_type_code         VARCHAR2(1);
134227 l_component_appl_id           INTEGER;
134228 l_amb_context_code            VARCHAR2(30);
134229 l_entity_code                 VARCHAR2(30);
134230 l_event_class_code            VARCHAR2(30);
134231 l_ae_header_id                NUMBER;
134232 l_event_type_code             VARCHAR2(30);
134233 l_line_definition_code        VARCHAR2(30);
134234 l_line_definition_owner_code  VARCHAR2(1);
134235 --
134236 -- adr variables
134237 l_segment                     VARCHAR2(30);
134238 l_ccid                        NUMBER;
134239 l_adr_transaction_coa_id      NUMBER;
134240 l_adr_accounting_coa_id       NUMBER;
134241 l_adr_flexfield_segment_code  VARCHAR2(30);
134242 l_adr_flex_value_set_id       NUMBER;
134243 l_adr_value_type_code         VARCHAR2(30);
134244 l_adr_value_combination_id    NUMBER;
134245 l_adr_value_segment_code      VARCHAR2(30);
134246 
134247 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
134248 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
134249 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
134250 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
134251 
134252 -- 4262811 Variables ------------------------------------------------------------------------------------------
134253 l_entered_amt_idx             NUMBER;
134254 l_accted_amt_idx              NUMBER;
134255 l_acc_rev_flag                VARCHAR2(1);
134256 l_accrual_line_num            NUMBER;
134257 l_tmp_amt                     NUMBER;
134258 l_acc_rev_natural_side_code   VARCHAR2(1);
134259 
134260 l_num_entries                 NUMBER;
134261 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
134262 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
134263 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
134264 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
134265 l_recog_line_1                NUMBER;
134266 l_recog_line_2                NUMBER;
134267 
134268 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
134269 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
134270 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
134271 
134272 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
134273 
134274 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
134275 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
134276 
134277 ---------------------------------------------------------------------------------------------------------------
134278 
134279 
134280 --
134281 -- bulk performance
134282 --
134283 l_balance_type_code           VARCHAR2(1);
134284 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
134285 l_log_module                  VARCHAR2(240);
134286 
134287 --
134288 -- Upgrade strategy
134289 --
134290 l_actual_upg_option           VARCHAR2(1);
134291 l_enc_upg_option           VARCHAR2(1);
134292 
134293 --
134294 BEGIN
134295 --
134296 IF g_log_enabled THEN
134297       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_243';
134298 END IF;
134299 --
134300 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134301 
134302       trace
134303          (p_msg      => 'BEGIN of AcctLineType_243'
134304          ,p_level    => C_LEVEL_PROCEDURE
134305          ,p_module   => l_log_module);
134306 
134307 END IF;
134308 --
134309 l_component_type             := 'AMB_JLT';
134310 l_component_code             := 'WIP_VALUATION';
134311 l_component_type_code        := 'S';
134312 l_component_appl_id          :=  707;
134313 l_amb_context_code           := 'DEFAULT';
134314 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
134315 l_event_class_code           := 'WIP_COST_UPD';
134316 l_event_type_code            := 'WIP_COST_UPD_ALL';
134317 l_line_definition_owner_code := 'S';
134318 l_line_definition_code       := 'COST_UPDATE';
134319 --
134320 l_balance_type_code          := 'A';
134321 l_segment                     := NULL;
134322 l_ccid                        := NULL;
134323 l_adr_transaction_coa_id      := NULL;
134324 l_adr_accounting_coa_id       := NULL;
134325 l_adr_flexfield_segment_code  := NULL;
134326 l_adr_flex_value_set_id       := NULL;
134327 l_adr_value_type_code         := NULL;
134328 l_adr_value_combination_id    := NULL;
134329 l_adr_value_segment_code      := NULL;
134330 
134331 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
134332 l_bflow_class_code           := '';    -- 4219869 Business Flow
134333 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
134334 l_budgetary_control_flag     := 'N';
134335 
134336 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
134337 l_bflow_applied_to_amt       := NULL; -- 5132302
134338 l_entered_amt_idx            := NULL;          -- 4262811
134339 l_accted_amt_idx             := NULL;          -- 4262811
134340 l_acc_rev_flag               := NULL;          -- 4262811
134341 l_accrual_line_num           := NULL;          -- 4262811
134342 l_tmp_amt                    := NULL;          -- 4262811
134343 --
134344  
134345 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
134346     l_balance_type_code <> 'B' THEN
134347 IF NVL(p_source_24,9E125) =  7
134348  THEN 
134349 
134350    --
134351    XLA_AE_LINES_PKG.SetNewLine;
134352 
134353    p_balance_type_code          := l_balance_type_code;
134354    -- set the flag so later we will know whether the gain loss line needs to be created
134355    
134356    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
134357      p_actual_flag :='A';
134358    END IF;
134359 
134360    --
134361    -- bulk performance
134362    --
134363    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
134364                                       p_header_num   => 0); -- 4262811
134365    --
134366    -- set accounting line options
134367    --
134368    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
134369            p_natural_side_code          => 'D'
134370          , p_gain_or_loss_flag          => 'N'
134371          , p_gl_transfer_mode_code      => 'S'
134372          , p_acct_entry_type_code       => 'A'
134373          , p_switch_side_flag           => 'Y'
134374          , p_merge_duplicate_code       => 'N'
134375          );
134376    --
134377    l_acc_rev_natural_side_code := 'C';  -- 4262811
134378    -- 
134379    --
134380    -- set accounting line type info
134381    --
134382    xla_ae_lines_pkg.SetAcctLineType
134383       (p_component_type             => l_component_type
134384       ,p_event_type_code            => l_event_type_code
134385       ,p_line_definition_owner_code => l_line_definition_owner_code
134386       ,p_line_definition_code       => l_line_definition_code
134387       ,p_accounting_line_code       => l_component_code
134388       ,p_accounting_line_type_code  => l_component_type_code
134389       ,p_accounting_line_appl_id    => l_component_appl_id
134390       ,p_amb_context_code           => l_amb_context_code
134391       ,p_entity_code                => l_entity_code
134392       ,p_event_class_code           => l_event_class_code);
134393    --
134394    -- set accounting class
134395    --
134396    xla_ae_lines_pkg.SetAcctClass(
134397            p_accounting_class_code  => 'WIP_VALUATION'
134398          , p_ae_header_id           => l_ae_header_id
134399          );
134400 
134401    --
134402    -- set rounding class
134403    --
134404    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
134405                       'WIP_VALUATION';
134406 
134407    --
134408    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
134409    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
134410    --
134411    -- bulk performance
134412    --
134413    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
134414 
134415    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
134416       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
134417 
134418    -- 4955764
134419    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134420       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
134421 
134422    -- 4458381 Public Sector Enh
134423    
134424    --
134425    -- set accounting attributes for the line type
134426    --
134427    l_entered_amt_idx := 3;
134428    l_accted_amt_idx  := 8;
134429    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
134430    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
134431    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
134432    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
134433    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
134434    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
134435    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
134436    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
134437    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
134438    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
134439    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
134440    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
134441    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
134442    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
134443    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
134444    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
134445    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
134446 
134447    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
134448    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
134449 
134450    ---------------------------------------------------------------------------------------------------------------
134451    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
134452    ---------------------------------------------------------------------------------------------------------------
134453    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
134454 
134455    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
134456    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
134457 
134458    IF xla_accounting_cache_pkg.GetValueChar
134459          (p_source_code         => 'LEDGER_CATEGORY_CODE'
134460          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
134461    AND l_bflow_method_code = 'PRIOR_ENTRY'
134462 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
134463    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
134464          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
134465        )
134466    THEN
134467          xla_ae_lines_pkg.BflowUpgEntry
134468            (p_business_method_code    => l_bflow_method_code
134469            ,p_business_class_code     => l_bflow_class_code
134470            ,p_balance_type            => l_balance_type_code);
134471    ELSE
134472       NULL;
134473 -- No business flow processing for business flow method of NONE.
134474    END IF;
134475 
134476    --
134477    -- call analytical criteria
134478    --
134479    
134480    --
134481    -- call description
134482    --
134483    -- No description or it is inherited.
134484    --
134485    -- call ADRs
134486    -- Bug 4922099
134487    --
134488    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
134489         (NVL(l_actual_upg_option, 'N') = 'O') OR
134490         (NVL(l_enc_upg_option, 'N') = 'O')
134491       )
134492    THEN
134493    NULL;
134494    --
134495    --
134496    
134497   l_ccid := AcctDerRule_4(
134498            p_application_id           => p_application_id
134499          , p_ae_header_id             => l_ae_header_id 
134500 , p_source_4 => p_source_4
134501          , x_transaction_coa_id       => l_adr_transaction_coa_id
134502          , x_accounting_coa_id        => l_adr_accounting_coa_id
134503          , x_value_type_code          => l_adr_value_type_code
134504          , p_side                     => 'NA'
134505    );
134506 
134507    xla_ae_lines_pkg.set_ccid(
134508     p_code_combination_id          => l_ccid
134509   , p_value_type_code              => l_adr_value_type_code
134510   , p_transaction_coa_id           => l_adr_transaction_coa_id
134511   , p_accounting_coa_id            => l_adr_accounting_coa_id
134512   , p_adr_code                     => 'CST_DEFAULT'
134513   , p_adr_type_code                => 'S'
134514   , p_component_type               => l_component_type
134515   , p_component_code               => l_component_code
134516   , p_component_type_code          => l_component_type_code
134517   , p_component_appl_id            => l_component_appl_id
134518   , p_amb_context_code             => l_amb_context_code
134519   , p_side                         => 'NA'
134520   );
134521 
134522 
134523    --
134524    --
134525    END IF;
134526    --
134527    -- Bug 4922099
134528    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
134529           (NVL(l_enc_upg_option, 'N') = 'O')
134530         ) AND
134531         (l_bflow_method_code = 'PRIOR_ENTRY')
134532       )
134533    THEN
134534       IF
134535       --
134536       1 = 2
134537       --
134538       THEN
134539       xla_accounting_err_pkg.build_message
134540                                     (p_appli_s_name            => 'XLA'
134541                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
134542                                     ,p_token_1                 => 'LINE_NUMBER'
134543                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
134544                                     ,p_token_2                 => 'LINE_TYPE_NAME'
134545                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
134546                                                                              l_component_type
134547                                                                             ,l_component_code
134548                                                                             ,l_component_type_code
134549                                                                             ,l_component_appl_id
134550                                                                             ,l_amb_context_code
134551                                                                             ,l_entity_code
134552                                                                             ,l_event_class_code
134553                                                                            )
134554                                     ,p_token_3                 => 'OWNER'
134555                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
134556                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
134557                                                                           ,p_lookup_code    => l_component_type_code
134558                                                                          )
134559                                     ,p_token_4                 => 'PRODUCT_NAME'
134560                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
134561                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
134562                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
134563                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
134564                                     ,p_ae_header_id            =>  NULL
134565                                        );
134566 
134567         IF (C_LEVEL_ERROR>= g_log_level) THEN
134568                  trace
134569                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
134570                       ,p_level    => C_LEVEL_ERROR
134571                       ,p_module   => l_log_module);
134572         END IF;
134573       END IF;
134574    END IF;
134575    --
134576    --
134577    ------------------------------------------------------------------------------------------------
134578    -- 4219869 Business Flow
134579    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
134580    -- Prior Entry.  Currently, the following code is always generated.
134581    ------------------------------------------------------------------------------------------------
134582    XLA_AE_LINES_PKG.ValidateCurrentLine;
134583 
134584    ------------------------------------------------------------------------------------
134585    -- 4219869 Business Flow
134586    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
134587    ------------------------------------------------------------------------------------
134588    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
134589 
134590    ----------------------------------------------------------------------------------
134591    -- 4219869 Business Flow
134592    -- Update journal entry status -- Need to generate this within IF <condition>
134593    ----------------------------------------------------------------------------------
134594    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
134595          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
134596          ,p_balance_type_code => l_balance_type_code
134597          );
134598 
134599    -------------------------------------------------------------------------------------------
134600    -- 4262811 - Generate the Accrual Reversal lines
134601    -------------------------------------------------------------------------------------------
134602    BEGIN
134603       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
134604                               (g_array_event(p_event_id).array_value_num('header_index'));
134605       IF l_acc_rev_flag IS NULL THEN
134606          l_acc_rev_flag := 'N';
134607       END IF;
134608    EXCEPTION
134609       WHEN OTHERS THEN
134610          l_acc_rev_flag := 'N';
134611    END;
134612    --
134613    IF (l_acc_rev_flag = 'Y') THEN
134614 
134615        -- 4645092  ------------------------------------------------------------------------------
134616        -- To allow MPA report to determine if it should generate report process
134617        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
134618        ------------------------------------------------------------------------------------------
134619 
134620        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
134621        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
134622    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
134623    -- call ADRs
134624    -- Bug 4922099
134625    --
134626    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
134627         (NVL(l_actual_upg_option, 'N') = 'O') OR
134628         (NVL(l_enc_upg_option, 'N') = 'O')
134629       )
134630    THEN
134631    NULL;
134632    --
134633    --
134634    
134635   l_ccid := AcctDerRule_4(
134636            p_application_id           => p_application_id
134637          , p_ae_header_id             => l_ae_header_id 
134638 , p_source_4 => p_source_4
134639          , x_transaction_coa_id       => l_adr_transaction_coa_id
134640          , x_accounting_coa_id        => l_adr_accounting_coa_id
134641          , x_value_type_code          => l_adr_value_type_code
134642          , p_side                     => 'NA'
134643    );
134644 
134645    xla_ae_lines_pkg.set_ccid(
134646     p_code_combination_id          => l_ccid
134647   , p_value_type_code              => l_adr_value_type_code
134648   , p_transaction_coa_id           => l_adr_transaction_coa_id
134649   , p_accounting_coa_id            => l_adr_accounting_coa_id
134650   , p_adr_code                     => 'CST_DEFAULT'
134651   , p_adr_type_code                => 'S'
134652   , p_component_type               => l_component_type
134653   , p_component_code               => l_component_code
134654   , p_component_type_code          => l_component_type_code
134655   , p_component_appl_id            => l_component_appl_id
134656   , p_amb_context_code             => l_amb_context_code
134657   , p_side                         => 'NA'
134658   );
134659 
134660 
134661    --
134662    --
134663    END IF;
134664 
134665        --
134666        -- Update the line information that should be overwritten
134667        --
134668        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
134669                                          p_header_num   => 1);
134670        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
134671 
134672        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
134673 
134674        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
134675           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
134676        END IF;
134677 
134678       --
134679       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
134680       --
134681       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
134682           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
134683       ELSE
134684           ---------------------------------------------------------------------------------------------------
134685           -- 4262811a Switch Sign
134686           ---------------------------------------------------------------------------------------------------
134687           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
134688           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134689                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134690           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134691                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134692           -- 5132302
134693           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
134694                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134695 
134696       END IF;
134697 
134698       -- 4955764
134699       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134700       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
134701 
134702 
134703       XLA_AE_LINES_PKG.ValidateCurrentLine;
134704       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
134705 
134706       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
134707                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
134708                ,p_balance_type_code => l_balance_type_code);
134709 
134710    END IF;
134711 
134712    -----------------------------------------------------------------------------------------
134713    -- 4262811 Multiperiod Accounting
134714    -----------------------------------------------------------------------------------------
134715      -- No MPA option is assigned.
134716 
134717 
134718 END IF;
134719 END IF;
134720 --
134721 
134722 --
134723 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134724    trace
134725       (p_msg      => 'END of AcctLineType_243'
134726       ,p_level    => C_LEVEL_PROCEDURE
134727       ,p_module   => l_log_module);
134728 END IF;
134729 --
134730 EXCEPTION
134731   WHEN xla_exceptions_pkg.application_exception THEN
134732       RAISE;
134733   WHEN OTHERS THEN
134734        xla_exceptions_pkg.raise_message
134735            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_243');
134736 END AcctLineType_243;
134737 --
134738 
134739 ---------------------------------------
134740 --
134741 -- PRIVATE FUNCTION
134742 --         AcctLineType_244
134743 --
134744 ---------------------------------------
134745 PROCEDURE AcctLineType_244 (
134746   p_application_id        IN NUMBER
134747  ,p_event_id              IN NUMBER
134748  ,p_calculate_acctd_flag  IN VARCHAR2
134749  ,p_calculate_g_l_flag    IN VARCHAR2
134750  ,p_actual_flag           IN OUT VARCHAR2
134751  ,p_balance_type_code     OUT VARCHAR2
134752  ,p_gain_or_loss_ref      OUT VARCHAR2
134753  
134754 --Cost Management Default Account
134755  , p_source_4            IN NUMBER
134756 --DISTRIBUTION_IDENTIFIER
134757  , p_source_11            IN NUMBER
134758 --Distribution Type
134759  , p_source_12            IN VARCHAR2
134760  , p_source_12_meaning    IN VARCHAR2
134761 --Entered Currency Code
134762  , p_source_15            IN VARCHAR2
134763 --Entered Amount
134764  , p_source_18            IN NUMBER
134765 --Currency Conversion Date
134766  , p_source_19            IN DATE
134767 --Currency Conversion Rate
134768  , p_source_20            IN NUMBER
134769 --Currency Conversion Type
134770  , p_source_21            IN VARCHAR2
134771 --Accounted Amount
134772  , p_source_22            IN NUMBER
134773 --Accounting Line Type
134774  , p_source_24            IN NUMBER
134775 )
134776 IS
134777 
134778 l_component_type              VARCHAR2(80);
134779 l_component_code              VARCHAR2(30);
134780 l_component_type_code         VARCHAR2(1);
134781 l_component_appl_id           INTEGER;
134782 l_amb_context_code            VARCHAR2(30);
134783 l_entity_code                 VARCHAR2(30);
134784 l_event_class_code            VARCHAR2(30);
134785 l_ae_header_id                NUMBER;
134786 l_event_type_code             VARCHAR2(30);
134787 l_line_definition_code        VARCHAR2(30);
134788 l_line_definition_owner_code  VARCHAR2(1);
134789 --
134790 -- adr variables
134791 l_segment                     VARCHAR2(30);
134792 l_ccid                        NUMBER;
134793 l_adr_transaction_coa_id      NUMBER;
134794 l_adr_accounting_coa_id       NUMBER;
134795 l_adr_flexfield_segment_code  VARCHAR2(30);
134796 l_adr_flex_value_set_id       NUMBER;
134797 l_adr_value_type_code         VARCHAR2(30);
134798 l_adr_value_combination_id    NUMBER;
134799 l_adr_value_segment_code      VARCHAR2(30);
134800 
134801 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
134802 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
134803 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
134804 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
134805 
134806 -- 4262811 Variables ------------------------------------------------------------------------------------------
134807 l_entered_amt_idx             NUMBER;
134808 l_accted_amt_idx              NUMBER;
134809 l_acc_rev_flag                VARCHAR2(1);
134810 l_accrual_line_num            NUMBER;
134811 l_tmp_amt                     NUMBER;
134812 l_acc_rev_natural_side_code   VARCHAR2(1);
134813 
134814 l_num_entries                 NUMBER;
134815 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
134816 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
134817 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
134818 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
134819 l_recog_line_1                NUMBER;
134820 l_recog_line_2                NUMBER;
134821 
134822 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
134823 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
134824 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
134825 
134826 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
134827 
134828 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
134829 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
134830 
134831 ---------------------------------------------------------------------------------------------------------------
134832 
134833 
134834 --
134835 -- bulk performance
134836 --
134837 l_balance_type_code           VARCHAR2(1);
134838 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
134839 l_log_module                  VARCHAR2(240);
134840 
134841 --
134842 -- Upgrade strategy
134843 --
134844 l_actual_upg_option           VARCHAR2(1);
134845 l_enc_upg_option           VARCHAR2(1);
134846 
134847 --
134848 BEGIN
134849 --
134850 IF g_log_enabled THEN
134851       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_244';
134852 END IF;
134853 --
134854 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134855 
134856       trace
134857          (p_msg      => 'BEGIN of AcctLineType_244'
134858          ,p_level    => C_LEVEL_PROCEDURE
134859          ,p_module   => l_log_module);
134860 
134861 END IF;
134862 --
134863 l_component_type             := 'AMB_JLT';
134864 l_component_code             := 'WIP_VALUATION';
134865 l_component_type_code        := 'S';
134866 l_component_appl_id          :=  707;
134867 l_amb_context_code           := 'DEFAULT';
134868 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
134869 l_event_class_code           := 'WIP_LOT';
134870 l_event_type_code            := 'WIP_LOT_ALL';
134871 l_line_definition_owner_code := 'S';
134872 l_line_definition_code       := 'WIP_LOT';
134873 --
134874 l_balance_type_code          := 'A';
134875 l_segment                     := NULL;
134876 l_ccid                        := NULL;
134877 l_adr_transaction_coa_id      := NULL;
134878 l_adr_accounting_coa_id       := NULL;
134879 l_adr_flexfield_segment_code  := NULL;
134880 l_adr_flex_value_set_id       := NULL;
134881 l_adr_value_type_code         := NULL;
134882 l_adr_value_combination_id    := NULL;
134883 l_adr_value_segment_code      := NULL;
134884 
134885 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
134886 l_bflow_class_code           := '';    -- 4219869 Business Flow
134887 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
134888 l_budgetary_control_flag     := 'N';
134889 
134890 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
134891 l_bflow_applied_to_amt       := NULL; -- 5132302
134892 l_entered_amt_idx            := NULL;          -- 4262811
134893 l_accted_amt_idx             := NULL;          -- 4262811
134894 l_acc_rev_flag               := NULL;          -- 4262811
134895 l_accrual_line_num           := NULL;          -- 4262811
134896 l_tmp_amt                    := NULL;          -- 4262811
134897 --
134898  
134899 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
134900     l_balance_type_code <> 'B' THEN
134901 IF NVL(p_source_24,9E125) =  21 OR 
134902 NVL(p_source_24,9E125) =  22 OR 
134903 NVL(p_source_24,9E125) =  23 OR 
134904 NVL(p_source_24,9E125) =  24 OR 
134905 NVL(p_source_24,9E125) =  26 OR 
134906 NVL(p_source_24,9E125) =  28
134907  THEN 
134908 
134909    --
134910    XLA_AE_LINES_PKG.SetNewLine;
134911 
134912    p_balance_type_code          := l_balance_type_code;
134913    -- set the flag so later we will know whether the gain loss line needs to be created
134914    
134915    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
134916      p_actual_flag :='A';
134917    END IF;
134918 
134919    --
134920    -- bulk performance
134921    --
134922    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
134923                                       p_header_num   => 0); -- 4262811
134924    --
134925    -- set accounting line options
134926    --
134927    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
134928            p_natural_side_code          => 'D'
134929          , p_gain_or_loss_flag          => 'N'
134930          , p_gl_transfer_mode_code      => 'S'
134931          , p_acct_entry_type_code       => 'A'
134932          , p_switch_side_flag           => 'Y'
134933          , p_merge_duplicate_code       => 'N'
134934          );
134935    --
134936    l_acc_rev_natural_side_code := 'C';  -- 4262811
134937    -- 
134938    --
134939    -- set accounting line type info
134940    --
134941    xla_ae_lines_pkg.SetAcctLineType
134942       (p_component_type             => l_component_type
134943       ,p_event_type_code            => l_event_type_code
134944       ,p_line_definition_owner_code => l_line_definition_owner_code
134945       ,p_line_definition_code       => l_line_definition_code
134946       ,p_accounting_line_code       => l_component_code
134947       ,p_accounting_line_type_code  => l_component_type_code
134948       ,p_accounting_line_appl_id    => l_component_appl_id
134949       ,p_amb_context_code           => l_amb_context_code
134950       ,p_entity_code                => l_entity_code
134951       ,p_event_class_code           => l_event_class_code);
134952    --
134953    -- set accounting class
134954    --
134955    xla_ae_lines_pkg.SetAcctClass(
134956            p_accounting_class_code  => 'WIP_VALUATION'
134957          , p_ae_header_id           => l_ae_header_id
134958          );
134959 
134960    --
134961    -- set rounding class
134962    --
134963    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
134964                       'WIP_VALUATION';
134965 
134966    --
134967    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
134968    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
134969    --
134970    -- bulk performance
134971    --
134972    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
134973 
134974    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
134975       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
134976 
134977    -- 4955764
134978    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134979       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
134980 
134981    -- 4458381 Public Sector Enh
134982    
134983    --
134984    -- set accounting attributes for the line type
134985    --
134986    l_entered_amt_idx := 3;
134987    l_accted_amt_idx  := 8;
134988    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
134989    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
134990    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
134991    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
134992    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
134993    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
134994    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
134995    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
134996    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
134997    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
134998    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
134999    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
135000    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
135001    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
135002    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
135003    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
135004    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
135005 
135006    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
135007    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
135008 
135009    ---------------------------------------------------------------------------------------------------------------
135010    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
135011    ---------------------------------------------------------------------------------------------------------------
135012    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
135013 
135014    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
135015    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
135016 
135017    IF xla_accounting_cache_pkg.GetValueChar
135018          (p_source_code         => 'LEDGER_CATEGORY_CODE'
135019          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
135020    AND l_bflow_method_code = 'PRIOR_ENTRY'
135021 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
135022    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
135023          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
135024        )
135025    THEN
135026          xla_ae_lines_pkg.BflowUpgEntry
135027            (p_business_method_code    => l_bflow_method_code
135028            ,p_business_class_code     => l_bflow_class_code
135029            ,p_balance_type            => l_balance_type_code);
135030    ELSE
135031       NULL;
135032 -- No business flow processing for business flow method of NONE.
135033    END IF;
135034 
135035    --
135036    -- call analytical criteria
135037    --
135038    
135039    --
135040    -- call description
135041    --
135042    -- No description or it is inherited.
135043    --
135044    -- call ADRs
135045    -- Bug 4922099
135046    --
135047    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135048         (NVL(l_actual_upg_option, 'N') = 'O') OR
135049         (NVL(l_enc_upg_option, 'N') = 'O')
135050       )
135051    THEN
135052    NULL;
135053    --
135054    --
135055    
135056   l_ccid := AcctDerRule_4(
135057            p_application_id           => p_application_id
135058          , p_ae_header_id             => l_ae_header_id 
135059 , p_source_4 => p_source_4
135060          , x_transaction_coa_id       => l_adr_transaction_coa_id
135061          , x_accounting_coa_id        => l_adr_accounting_coa_id
135062          , x_value_type_code          => l_adr_value_type_code
135063          , p_side                     => 'NA'
135064    );
135065 
135066    xla_ae_lines_pkg.set_ccid(
135067     p_code_combination_id          => l_ccid
135068   , p_value_type_code              => l_adr_value_type_code
135069   , p_transaction_coa_id           => l_adr_transaction_coa_id
135070   , p_accounting_coa_id            => l_adr_accounting_coa_id
135071   , p_adr_code                     => 'CST_DEFAULT'
135072   , p_adr_type_code                => 'S'
135073   , p_component_type               => l_component_type
135074   , p_component_code               => l_component_code
135075   , p_component_type_code          => l_component_type_code
135076   , p_component_appl_id            => l_component_appl_id
135077   , p_amb_context_code             => l_amb_context_code
135078   , p_side                         => 'NA'
135079   );
135080 
135081 
135082    --
135083    --
135084    END IF;
135085    --
135086    -- Bug 4922099
135087    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
135088           (NVL(l_enc_upg_option, 'N') = 'O')
135089         ) AND
135090         (l_bflow_method_code = 'PRIOR_ENTRY')
135091       )
135092    THEN
135093       IF
135094       --
135095       1 = 2
135096       --
135097       THEN
135098       xla_accounting_err_pkg.build_message
135099                                     (p_appli_s_name            => 'XLA'
135100                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135101                                     ,p_token_1                 => 'LINE_NUMBER'
135102                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
135103                                     ,p_token_2                 => 'LINE_TYPE_NAME'
135104                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
135105                                                                              l_component_type
135106                                                                             ,l_component_code
135107                                                                             ,l_component_type_code
135108                                                                             ,l_component_appl_id
135109                                                                             ,l_amb_context_code
135110                                                                             ,l_entity_code
135111                                                                             ,l_event_class_code
135112                                                                            )
135113                                     ,p_token_3                 => 'OWNER'
135114                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
135115                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
135116                                                                           ,p_lookup_code    => l_component_type_code
135117                                                                          )
135118                                     ,p_token_4                 => 'PRODUCT_NAME'
135119                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
135120                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
135121                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
135122                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
135123                                     ,p_ae_header_id            =>  NULL
135124                                        );
135125 
135126         IF (C_LEVEL_ERROR>= g_log_level) THEN
135127                  trace
135128                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135129                       ,p_level    => C_LEVEL_ERROR
135130                       ,p_module   => l_log_module);
135131         END IF;
135132       END IF;
135133    END IF;
135134    --
135135    --
135136    ------------------------------------------------------------------------------------------------
135137    -- 4219869 Business Flow
135138    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
135139    -- Prior Entry.  Currently, the following code is always generated.
135140    ------------------------------------------------------------------------------------------------
135141    XLA_AE_LINES_PKG.ValidateCurrentLine;
135142 
135143    ------------------------------------------------------------------------------------
135144    -- 4219869 Business Flow
135145    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
135146    ------------------------------------------------------------------------------------
135147    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135148 
135149    ----------------------------------------------------------------------------------
135150    -- 4219869 Business Flow
135151    -- Update journal entry status -- Need to generate this within IF <condition>
135152    ----------------------------------------------------------------------------------
135153    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135154          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
135155          ,p_balance_type_code => l_balance_type_code
135156          );
135157 
135158    -------------------------------------------------------------------------------------------
135159    -- 4262811 - Generate the Accrual Reversal lines
135160    -------------------------------------------------------------------------------------------
135161    BEGIN
135162       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
135163                               (g_array_event(p_event_id).array_value_num('header_index'));
135164       IF l_acc_rev_flag IS NULL THEN
135165          l_acc_rev_flag := 'N';
135166       END IF;
135167    EXCEPTION
135168       WHEN OTHERS THEN
135169          l_acc_rev_flag := 'N';
135170    END;
135171    --
135172    IF (l_acc_rev_flag = 'Y') THEN
135173 
135174        -- 4645092  ------------------------------------------------------------------------------
135175        -- To allow MPA report to determine if it should generate report process
135176        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
135177        ------------------------------------------------------------------------------------------
135178 
135179        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
135180        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
135181    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
135182    -- call ADRs
135183    -- Bug 4922099
135184    --
135185    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135186         (NVL(l_actual_upg_option, 'N') = 'O') OR
135187         (NVL(l_enc_upg_option, 'N') = 'O')
135188       )
135189    THEN
135190    NULL;
135191    --
135192    --
135193    
135194   l_ccid := AcctDerRule_4(
135195            p_application_id           => p_application_id
135196          , p_ae_header_id             => l_ae_header_id 
135197 , p_source_4 => p_source_4
135198          , x_transaction_coa_id       => l_adr_transaction_coa_id
135199          , x_accounting_coa_id        => l_adr_accounting_coa_id
135200          , x_value_type_code          => l_adr_value_type_code
135201          , p_side                     => 'NA'
135202    );
135203 
135204    xla_ae_lines_pkg.set_ccid(
135205     p_code_combination_id          => l_ccid
135206   , p_value_type_code              => l_adr_value_type_code
135207   , p_transaction_coa_id           => l_adr_transaction_coa_id
135208   , p_accounting_coa_id            => l_adr_accounting_coa_id
135209   , p_adr_code                     => 'CST_DEFAULT'
135210   , p_adr_type_code                => 'S'
135211   , p_component_type               => l_component_type
135212   , p_component_code               => l_component_code
135213   , p_component_type_code          => l_component_type_code
135214   , p_component_appl_id            => l_component_appl_id
135215   , p_amb_context_code             => l_amb_context_code
135216   , p_side                         => 'NA'
135217   );
135218 
135219 
135220    --
135221    --
135222    END IF;
135223 
135224        --
135225        -- Update the line information that should be overwritten
135226        --
135227        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
135228                                          p_header_num   => 1);
135229        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
135230 
135231        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
135232 
135233        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
135234           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
135235        END IF;
135236 
135237       --
135238       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
135239       --
135240       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
135241           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
135242       ELSE
135243           ---------------------------------------------------------------------------------------------------
135244           -- 4262811a Switch Sign
135245           ---------------------------------------------------------------------------------------------------
135246           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
135247           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135248                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135249           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135250                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135251           -- 5132302
135252           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
135253                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135254 
135255       END IF;
135256 
135257       -- 4955764
135258       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
135259       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
135260 
135261 
135262       XLA_AE_LINES_PKG.ValidateCurrentLine;
135263       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135264 
135265       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135266                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
135267                ,p_balance_type_code => l_balance_type_code);
135268 
135269    END IF;
135270 
135271    -----------------------------------------------------------------------------------------
135272    -- 4262811 Multiperiod Accounting
135273    -----------------------------------------------------------------------------------------
135274      -- No MPA option is assigned.
135275 
135276 
135277 END IF;
135278 END IF;
135279 --
135280 
135281 --
135282 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135283    trace
135284       (p_msg      => 'END of AcctLineType_244'
135285       ,p_level    => C_LEVEL_PROCEDURE
135286       ,p_module   => l_log_module);
135287 END IF;
135288 --
135289 EXCEPTION
135290   WHEN xla_exceptions_pkg.application_exception THEN
135291       RAISE;
135292   WHEN OTHERS THEN
135293        xla_exceptions_pkg.raise_message
135294            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_244');
135295 END AcctLineType_244;
135296 --
135297 
135298 ---------------------------------------
135299 --
135300 -- PRIVATE FUNCTION
135301 --         AcctLineType_245
135302 --
135303 ---------------------------------------
135304 PROCEDURE AcctLineType_245 (
135305   p_application_id        IN NUMBER
135306  ,p_event_id              IN NUMBER
135307  ,p_calculate_acctd_flag  IN VARCHAR2
135308  ,p_calculate_g_l_flag    IN VARCHAR2
135309  ,p_actual_flag           IN OUT VARCHAR2
135310  ,p_balance_type_code     OUT VARCHAR2
135311  ,p_gain_or_loss_ref      OUT VARCHAR2
135312  
135313 --Cost Management Default Account
135314  , p_source_4            IN NUMBER
135315 --DISTRIBUTION_IDENTIFIER
135316  , p_source_11            IN NUMBER
135317 --Distribution Type
135318  , p_source_12            IN VARCHAR2
135319  , p_source_12_meaning    IN VARCHAR2
135320 --Entered Currency Code
135321  , p_source_15            IN VARCHAR2
135322 --Entered Amount
135323  , p_source_18            IN NUMBER
135324 --Currency Conversion Date
135325  , p_source_19            IN DATE
135326 --Currency Conversion Rate
135327  , p_source_20            IN NUMBER
135328 --Currency Conversion Type
135329  , p_source_21            IN VARCHAR2
135330 --Accounted Amount
135331  , p_source_22            IN NUMBER
135332 --Accounting Line Type
135333  , p_source_24            IN NUMBER
135334 )
135335 IS
135336 
135337 l_component_type              VARCHAR2(80);
135338 l_component_code              VARCHAR2(30);
135339 l_component_type_code         VARCHAR2(1);
135340 l_component_appl_id           INTEGER;
135341 l_amb_context_code            VARCHAR2(30);
135342 l_entity_code                 VARCHAR2(30);
135343 l_event_class_code            VARCHAR2(30);
135344 l_ae_header_id                NUMBER;
135345 l_event_type_code             VARCHAR2(30);
135346 l_line_definition_code        VARCHAR2(30);
135347 l_line_definition_owner_code  VARCHAR2(1);
135348 --
135349 -- adr variables
135350 l_segment                     VARCHAR2(30);
135351 l_ccid                        NUMBER;
135352 l_adr_transaction_coa_id      NUMBER;
135353 l_adr_accounting_coa_id       NUMBER;
135354 l_adr_flexfield_segment_code  VARCHAR2(30);
135355 l_adr_flex_value_set_id       NUMBER;
135356 l_adr_value_type_code         VARCHAR2(30);
135357 l_adr_value_combination_id    NUMBER;
135358 l_adr_value_segment_code      VARCHAR2(30);
135359 
135360 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
135361 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
135362 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
135363 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
135364 
135365 -- 4262811 Variables ------------------------------------------------------------------------------------------
135366 l_entered_amt_idx             NUMBER;
135367 l_accted_amt_idx              NUMBER;
135368 l_acc_rev_flag                VARCHAR2(1);
135369 l_accrual_line_num            NUMBER;
135370 l_tmp_amt                     NUMBER;
135371 l_acc_rev_natural_side_code   VARCHAR2(1);
135372 
135373 l_num_entries                 NUMBER;
135374 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
135375 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
135376 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
135377 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
135378 l_recog_line_1                NUMBER;
135379 l_recog_line_2                NUMBER;
135380 
135381 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
135382 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
135383 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
135384 
135385 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
135386 
135387 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
135388 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
135389 
135390 ---------------------------------------------------------------------------------------------------------------
135391 
135392 
135393 --
135394 -- bulk performance
135395 --
135396 l_balance_type_code           VARCHAR2(1);
135397 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
135398 l_log_module                  VARCHAR2(240);
135399 
135400 --
135401 -- Upgrade strategy
135402 --
135403 l_actual_upg_option           VARCHAR2(1);
135404 l_enc_upg_option           VARCHAR2(1);
135405 
135406 --
135407 BEGIN
135408 --
135409 IF g_log_enabled THEN
135410       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_245';
135411 END IF;
135412 --
135413 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135414 
135415       trace
135416          (p_msg      => 'BEGIN of AcctLineType_245'
135417          ,p_level    => C_LEVEL_PROCEDURE
135418          ,p_module   => l_log_module);
135419 
135420 END IF;
135421 --
135422 l_component_type             := 'AMB_JLT';
135423 l_component_code             := 'WIP_VALUATION';
135424 l_component_type_code        := 'S';
135425 l_component_appl_id          :=  707;
135426 l_amb_context_code           := 'DEFAULT';
135427 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
135428 l_event_class_code           := 'WIP_MTL';
135429 l_event_type_code            := 'WIP_MTL_ALL';
135430 l_line_definition_owner_code := 'S';
135431 l_line_definition_code       := 'WIP_MTL';
135432 --
135433 l_balance_type_code          := 'A';
135434 l_segment                     := NULL;
135435 l_ccid                        := NULL;
135436 l_adr_transaction_coa_id      := NULL;
135437 l_adr_accounting_coa_id       := NULL;
135438 l_adr_flexfield_segment_code  := NULL;
135439 l_adr_flex_value_set_id       := NULL;
135440 l_adr_value_type_code         := NULL;
135441 l_adr_value_combination_id    := NULL;
135442 l_adr_value_segment_code      := NULL;
135443 
135444 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
135445 l_bflow_class_code           := '';    -- 4219869 Business Flow
135446 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
135447 l_budgetary_control_flag     := 'N';
135448 
135449 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
135450 l_bflow_applied_to_amt       := NULL; -- 5132302
135451 l_entered_amt_idx            := NULL;          -- 4262811
135452 l_accted_amt_idx             := NULL;          -- 4262811
135453 l_acc_rev_flag               := NULL;          -- 4262811
135454 l_accrual_line_num           := NULL;          -- 4262811
135455 l_tmp_amt                    := NULL;          -- 4262811
135456 --
135457  
135458 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
135459     l_balance_type_code <> 'B' THEN
135460 IF NVL(p_source_24,9E125) =  7
135461  THEN 
135462 
135463    --
135464    XLA_AE_LINES_PKG.SetNewLine;
135465 
135466    p_balance_type_code          := l_balance_type_code;
135467    -- set the flag so later we will know whether the gain loss line needs to be created
135468    
135469    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
135470      p_actual_flag :='A';
135471    END IF;
135472 
135473    --
135474    -- bulk performance
135475    --
135476    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
135477                                       p_header_num   => 0); -- 4262811
135478    --
135479    -- set accounting line options
135480    --
135481    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
135482            p_natural_side_code          => 'D'
135483          , p_gain_or_loss_flag          => 'N'
135484          , p_gl_transfer_mode_code      => 'S'
135485          , p_acct_entry_type_code       => 'A'
135486          , p_switch_side_flag           => 'Y'
135487          , p_merge_duplicate_code       => 'N'
135488          );
135489    --
135490    l_acc_rev_natural_side_code := 'C';  -- 4262811
135491    -- 
135492    --
135493    -- set accounting line type info
135494    --
135495    xla_ae_lines_pkg.SetAcctLineType
135496       (p_component_type             => l_component_type
135497       ,p_event_type_code            => l_event_type_code
135498       ,p_line_definition_owner_code => l_line_definition_owner_code
135499       ,p_line_definition_code       => l_line_definition_code
135500       ,p_accounting_line_code       => l_component_code
135501       ,p_accounting_line_type_code  => l_component_type_code
135502       ,p_accounting_line_appl_id    => l_component_appl_id
135503       ,p_amb_context_code           => l_amb_context_code
135504       ,p_entity_code                => l_entity_code
135505       ,p_event_class_code           => l_event_class_code);
135506    --
135507    -- set accounting class
135508    --
135509    xla_ae_lines_pkg.SetAcctClass(
135510            p_accounting_class_code  => 'WIP_VALUATION'
135511          , p_ae_header_id           => l_ae_header_id
135512          );
135513 
135514    --
135515    -- set rounding class
135516    --
135517    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
135518                       'WIP_VALUATION';
135519 
135520    --
135521    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
135522    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
135523    --
135524    -- bulk performance
135525    --
135526    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
135527 
135528    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
135529       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
135530 
135531    -- 4955764
135532    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
135533       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
135534 
135535    -- 4458381 Public Sector Enh
135536    
135537    --
135538    -- set accounting attributes for the line type
135539    --
135540    l_entered_amt_idx := 3;
135541    l_accted_amt_idx  := 8;
135542    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
135543    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
135544    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
135545    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
135546    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
135547    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
135548    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
135549    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
135550    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
135551    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
135552    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
135553    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
135554    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
135555    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
135556    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
135557    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
135558    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
135559 
135560    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
135561    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
135562 
135563    ---------------------------------------------------------------------------------------------------------------
135564    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
135565    ---------------------------------------------------------------------------------------------------------------
135566    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
135567 
135568    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
135569    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
135570 
135571    IF xla_accounting_cache_pkg.GetValueChar
135572          (p_source_code         => 'LEDGER_CATEGORY_CODE'
135573          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
135574    AND l_bflow_method_code = 'PRIOR_ENTRY'
135575 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
135576    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
135577          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
135578        )
135579    THEN
135580          xla_ae_lines_pkg.BflowUpgEntry
135581            (p_business_method_code    => l_bflow_method_code
135582            ,p_business_class_code     => l_bflow_class_code
135583            ,p_balance_type            => l_balance_type_code);
135584    ELSE
135585       NULL;
135586 -- No business flow processing for business flow method of NONE.
135587    END IF;
135588 
135589    --
135590    -- call analytical criteria
135591    --
135592    
135593    --
135594    -- call description
135595    --
135596    -- No description or it is inherited.
135597    --
135598    -- call ADRs
135599    -- Bug 4922099
135600    --
135601    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135602         (NVL(l_actual_upg_option, 'N') = 'O') OR
135603         (NVL(l_enc_upg_option, 'N') = 'O')
135604       )
135605    THEN
135606    NULL;
135607    --
135608    --
135609    
135610   l_ccid := AcctDerRule_4(
135611            p_application_id           => p_application_id
135612          , p_ae_header_id             => l_ae_header_id 
135613 , p_source_4 => p_source_4
135614          , x_transaction_coa_id       => l_adr_transaction_coa_id
135615          , x_accounting_coa_id        => l_adr_accounting_coa_id
135616          , x_value_type_code          => l_adr_value_type_code
135617          , p_side                     => 'NA'
135618    );
135619 
135620    xla_ae_lines_pkg.set_ccid(
135621     p_code_combination_id          => l_ccid
135622   , p_value_type_code              => l_adr_value_type_code
135623   , p_transaction_coa_id           => l_adr_transaction_coa_id
135624   , p_accounting_coa_id            => l_adr_accounting_coa_id
135625   , p_adr_code                     => 'CST_DEFAULT'
135626   , p_adr_type_code                => 'S'
135627   , p_component_type               => l_component_type
135628   , p_component_code               => l_component_code
135629   , p_component_type_code          => l_component_type_code
135630   , p_component_appl_id            => l_component_appl_id
135631   , p_amb_context_code             => l_amb_context_code
135632   , p_side                         => 'NA'
135633   );
135634 
135635 
135636    --
135637    --
135638    END IF;
135639    --
135640    -- Bug 4922099
135641    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
135642           (NVL(l_enc_upg_option, 'N') = 'O')
135643         ) AND
135644         (l_bflow_method_code = 'PRIOR_ENTRY')
135645       )
135646    THEN
135647       IF
135648       --
135649       1 = 2
135650       --
135651       THEN
135652       xla_accounting_err_pkg.build_message
135653                                     (p_appli_s_name            => 'XLA'
135654                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135655                                     ,p_token_1                 => 'LINE_NUMBER'
135656                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
135657                                     ,p_token_2                 => 'LINE_TYPE_NAME'
135658                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
135659                                                                              l_component_type
135660                                                                             ,l_component_code
135661                                                                             ,l_component_type_code
135662                                                                             ,l_component_appl_id
135663                                                                             ,l_amb_context_code
135664                                                                             ,l_entity_code
135665                                                                             ,l_event_class_code
135666                                                                            )
135667                                     ,p_token_3                 => 'OWNER'
135668                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
135669                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
135670                                                                           ,p_lookup_code    => l_component_type_code
135671                                                                          )
135672                                     ,p_token_4                 => 'PRODUCT_NAME'
135673                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
135674                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
135675                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
135676                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
135677                                     ,p_ae_header_id            =>  NULL
135678                                        );
135679 
135680         IF (C_LEVEL_ERROR>= g_log_level) THEN
135681                  trace
135682                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135683                       ,p_level    => C_LEVEL_ERROR
135684                       ,p_module   => l_log_module);
135685         END IF;
135686       END IF;
135687    END IF;
135688    --
135689    --
135690    ------------------------------------------------------------------------------------------------
135691    -- 4219869 Business Flow
135692    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
135693    -- Prior Entry.  Currently, the following code is always generated.
135694    ------------------------------------------------------------------------------------------------
135695    XLA_AE_LINES_PKG.ValidateCurrentLine;
135696 
135697    ------------------------------------------------------------------------------------
135698    -- 4219869 Business Flow
135699    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
135700    ------------------------------------------------------------------------------------
135701    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135702 
135703    ----------------------------------------------------------------------------------
135704    -- 4219869 Business Flow
135705    -- Update journal entry status -- Need to generate this within IF <condition>
135706    ----------------------------------------------------------------------------------
135707    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135708          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
135709          ,p_balance_type_code => l_balance_type_code
135710          );
135711 
135712    -------------------------------------------------------------------------------------------
135713    -- 4262811 - Generate the Accrual Reversal lines
135714    -------------------------------------------------------------------------------------------
135715    BEGIN
135716       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
135717                               (g_array_event(p_event_id).array_value_num('header_index'));
135718       IF l_acc_rev_flag IS NULL THEN
135719          l_acc_rev_flag := 'N';
135720       END IF;
135721    EXCEPTION
135722       WHEN OTHERS THEN
135723          l_acc_rev_flag := 'N';
135724    END;
135725    --
135726    IF (l_acc_rev_flag = 'Y') THEN
135727 
135728        -- 4645092  ------------------------------------------------------------------------------
135729        -- To allow MPA report to determine if it should generate report process
135730        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
135731        ------------------------------------------------------------------------------------------
135732 
135733        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
135734        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
135735    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
135736    -- call ADRs
135737    -- Bug 4922099
135738    --
135739    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135740         (NVL(l_actual_upg_option, 'N') = 'O') OR
135741         (NVL(l_enc_upg_option, 'N') = 'O')
135742       )
135743    THEN
135744    NULL;
135745    --
135746    --
135747    
135748   l_ccid := AcctDerRule_4(
135749            p_application_id           => p_application_id
135750          , p_ae_header_id             => l_ae_header_id 
135751 , p_source_4 => p_source_4
135752          , x_transaction_coa_id       => l_adr_transaction_coa_id
135753          , x_accounting_coa_id        => l_adr_accounting_coa_id
135754          , x_value_type_code          => l_adr_value_type_code
135755          , p_side                     => 'NA'
135756    );
135757 
135758    xla_ae_lines_pkg.set_ccid(
135759     p_code_combination_id          => l_ccid
135760   , p_value_type_code              => l_adr_value_type_code
135761   , p_transaction_coa_id           => l_adr_transaction_coa_id
135762   , p_accounting_coa_id            => l_adr_accounting_coa_id
135763   , p_adr_code                     => 'CST_DEFAULT'
135764   , p_adr_type_code                => 'S'
135765   , p_component_type               => l_component_type
135766   , p_component_code               => l_component_code
135767   , p_component_type_code          => l_component_type_code
135768   , p_component_appl_id            => l_component_appl_id
135769   , p_amb_context_code             => l_amb_context_code
135770   , p_side                         => 'NA'
135771   );
135772 
135773 
135774    --
135775    --
135776    END IF;
135777 
135778        --
135779        -- Update the line information that should be overwritten
135780        --
135781        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
135782                                          p_header_num   => 1);
135783        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
135784 
135785        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
135786 
135787        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
135788           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
135789        END IF;
135790 
135791       --
135792       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
135793       --
135794       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
135795           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
135796       ELSE
135797           ---------------------------------------------------------------------------------------------------
135798           -- 4262811a Switch Sign
135799           ---------------------------------------------------------------------------------------------------
135800           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
135801           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135802                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135803           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135804                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135805           -- 5132302
135806           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
135807                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135808 
135809       END IF;
135810 
135811       -- 4955764
135812       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
135813       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
135814 
135815 
135816       XLA_AE_LINES_PKG.ValidateCurrentLine;
135817       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135818 
135819       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135820                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
135821                ,p_balance_type_code => l_balance_type_code);
135822 
135823    END IF;
135824 
135825    -----------------------------------------------------------------------------------------
135826    -- 4262811 Multiperiod Accounting
135827    -----------------------------------------------------------------------------------------
135828      -- No MPA option is assigned.
135829 
135830 
135831 END IF;
135832 END IF;
135833 --
135834 
135835 --
135836 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135837    trace
135838       (p_msg      => 'END of AcctLineType_245'
135839       ,p_level    => C_LEVEL_PROCEDURE
135840       ,p_module   => l_log_module);
135841 END IF;
135842 --
135843 EXCEPTION
135844   WHEN xla_exceptions_pkg.application_exception THEN
135845       RAISE;
135846   WHEN OTHERS THEN
135847        xla_exceptions_pkg.raise_message
135848            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_245');
135849 END AcctLineType_245;
135850 --
135851 
135852 ---------------------------------------
135853 --
135854 -- PRIVATE FUNCTION
135855 --         AcctLineType_246
135856 --
135857 ---------------------------------------
135858 PROCEDURE AcctLineType_246 (
135859   p_application_id        IN NUMBER
135860  ,p_event_id              IN NUMBER
135861  ,p_calculate_acctd_flag  IN VARCHAR2
135862  ,p_calculate_g_l_flag    IN VARCHAR2
135863  ,p_actual_flag           IN OUT VARCHAR2
135864  ,p_balance_type_code     OUT VARCHAR2
135865  ,p_gain_or_loss_ref      OUT VARCHAR2
135866  
135867 --Cost Management Default Account
135868  , p_source_4            IN NUMBER
135869 --DISTRIBUTION_IDENTIFIER
135870  , p_source_11            IN NUMBER
135871 --Distribution Type
135872  , p_source_12            IN VARCHAR2
135873  , p_source_12_meaning    IN VARCHAR2
135874 --Entered Currency Code
135875  , p_source_15            IN VARCHAR2
135876 --Entered Amount
135877  , p_source_18            IN NUMBER
135878 --Currency Conversion Date
135879  , p_source_19            IN DATE
135880 --Currency Conversion Rate
135881  , p_source_20            IN NUMBER
135882 --Accounted Amount
135883  , p_source_22            IN NUMBER
135884 --Accounting Line Type
135885  , p_source_24            IN NUMBER
135886 )
135887 IS
135888 
135889 l_component_type              VARCHAR2(80);
135890 l_component_code              VARCHAR2(30);
135891 l_component_type_code         VARCHAR2(1);
135892 l_component_appl_id           INTEGER;
135893 l_amb_context_code            VARCHAR2(30);
135894 l_entity_code                 VARCHAR2(30);
135895 l_event_class_code            VARCHAR2(30);
135896 l_ae_header_id                NUMBER;
135897 l_event_type_code             VARCHAR2(30);
135898 l_line_definition_code        VARCHAR2(30);
135899 l_line_definition_owner_code  VARCHAR2(1);
135900 --
135901 -- adr variables
135902 l_segment                     VARCHAR2(30);
135903 l_ccid                        NUMBER;
135904 l_adr_transaction_coa_id      NUMBER;
135905 l_adr_accounting_coa_id       NUMBER;
135906 l_adr_flexfield_segment_code  VARCHAR2(30);
135907 l_adr_flex_value_set_id       NUMBER;
135908 l_adr_value_type_code         VARCHAR2(30);
135909 l_adr_value_combination_id    NUMBER;
135910 l_adr_value_segment_code      VARCHAR2(30);
135911 
135912 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
135913 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
135914 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
135915 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
135916 
135917 -- 4262811 Variables ------------------------------------------------------------------------------------------
135918 l_entered_amt_idx             NUMBER;
135919 l_accted_amt_idx              NUMBER;
135920 l_acc_rev_flag                VARCHAR2(1);
135921 l_accrual_line_num            NUMBER;
135922 l_tmp_amt                     NUMBER;
135923 l_acc_rev_natural_side_code   VARCHAR2(1);
135924 
135925 l_num_entries                 NUMBER;
135926 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
135927 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
135928 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
135929 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
135930 l_recog_line_1                NUMBER;
135931 l_recog_line_2                NUMBER;
135932 
135933 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
135934 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
135935 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
135936 
135937 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
135938 
135939 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
135940 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
135941 
135942 ---------------------------------------------------------------------------------------------------------------
135943 
135944 
135945 --
135946 -- bulk performance
135947 --
135948 l_balance_type_code           VARCHAR2(1);
135949 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
135950 l_log_module                  VARCHAR2(240);
135951 
135952 --
135953 -- Upgrade strategy
135954 --
135955 l_actual_upg_option           VARCHAR2(1);
135956 l_enc_upg_option           VARCHAR2(1);
135957 
135958 --
135959 BEGIN
135960 --
135961 IF g_log_enabled THEN
135962       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_246';
135963 END IF;
135964 --
135965 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135966 
135967       trace
135968          (p_msg      => 'BEGIN of AcctLineType_246'
135969          ,p_level    => C_LEVEL_PROCEDURE
135970          ,p_module   => l_log_module);
135971 
135972 END IF;
135973 --
135974 l_component_type             := 'AMB_JLT';
135975 l_component_code             := 'WIP_VALUATION';
135976 l_component_type_code        := 'S';
135977 l_component_appl_id          :=  707;
135978 l_amb_context_code           := 'DEFAULT';
135979 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
135980 l_event_class_code           := 'OSP';
135981 l_event_type_code            := 'OSP_ALL';
135982 l_line_definition_owner_code := 'S';
135983 l_line_definition_code       := 'OUTSIDE_PROCESSING';
135984 --
135985 l_balance_type_code          := 'A';
135986 l_segment                     := NULL;
135987 l_ccid                        := NULL;
135988 l_adr_transaction_coa_id      := NULL;
135989 l_adr_accounting_coa_id       := NULL;
135990 l_adr_flexfield_segment_code  := NULL;
135991 l_adr_flex_value_set_id       := NULL;
135992 l_adr_value_type_code         := NULL;
135993 l_adr_value_combination_id    := NULL;
135994 l_adr_value_segment_code      := NULL;
135995 
135996 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
135997 l_bflow_class_code           := '';    -- 4219869 Business Flow
135998 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
135999 l_budgetary_control_flag     := 'N';
136000 
136001 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
136002 l_bflow_applied_to_amt       := NULL; -- 5132302
136003 l_entered_amt_idx            := NULL;          -- 4262811
136004 l_accted_amt_idx             := NULL;          -- 4262811
136005 l_acc_rev_flag               := NULL;          -- 4262811
136006 l_accrual_line_num           := NULL;          -- 4262811
136007 l_tmp_amt                    := NULL;          -- 4262811
136008 --
136009  
136010 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
136011     l_balance_type_code <> 'B' THEN
136012 IF NVL(p_source_24,9E125) =  7
136013  THEN 
136014 
136015    --
136016    XLA_AE_LINES_PKG.SetNewLine;
136017 
136018    p_balance_type_code          := l_balance_type_code;
136019    -- set the flag so later we will know whether the gain loss line needs to be created
136020    
136021    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
136022      p_actual_flag :='A';
136023    END IF;
136024 
136025    --
136026    -- bulk performance
136027    --
136028    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
136029                                       p_header_num   => 0); -- 4262811
136030    --
136031    -- set accounting line options
136032    --
136033    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
136034            p_natural_side_code          => 'D'
136035          , p_gain_or_loss_flag          => 'N'
136036          , p_gl_transfer_mode_code      => 'S'
136037          , p_acct_entry_type_code       => 'A'
136038          , p_switch_side_flag           => 'Y'
136039          , p_merge_duplicate_code       => 'N'
136040          );
136041    --
136042    l_acc_rev_natural_side_code := 'C';  -- 4262811
136043    -- 
136044    --
136045    -- set accounting line type info
136046    --
136047    xla_ae_lines_pkg.SetAcctLineType
136048       (p_component_type             => l_component_type
136049       ,p_event_type_code            => l_event_type_code
136050       ,p_line_definition_owner_code => l_line_definition_owner_code
136051       ,p_line_definition_code       => l_line_definition_code
136052       ,p_accounting_line_code       => l_component_code
136053       ,p_accounting_line_type_code  => l_component_type_code
136054       ,p_accounting_line_appl_id    => l_component_appl_id
136055       ,p_amb_context_code           => l_amb_context_code
136056       ,p_entity_code                => l_entity_code
136057       ,p_event_class_code           => l_event_class_code);
136058    --
136059    -- set accounting class
136060    --
136061    xla_ae_lines_pkg.SetAcctClass(
136062            p_accounting_class_code  => 'WIP_VALUATION'
136063          , p_ae_header_id           => l_ae_header_id
136064          );
136065 
136066    --
136067    -- set rounding class
136068    --
136069    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
136070                       'WIP_VALUATION';
136071 
136072    --
136073    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
136074    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
136075    --
136076    -- bulk performance
136077    --
136078    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
136079 
136080    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
136081       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
136082 
136083    -- 4955764
136084    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136085       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
136086 
136087    -- 4458381 Public Sector Enh
136088    
136089    --
136090    -- set accounting attributes for the line type
136091    --
136092    l_entered_amt_idx := 3;
136093    l_accted_amt_idx  := 8;
136094    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
136095    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
136096    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
136097    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
136098    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
136099    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
136100    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
136101    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
136102    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
136103    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
136104    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
136105    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
136106    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
136107    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
136108    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_20);
136109    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
136110    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
136111 
136112    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
136113    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
136114 
136115    ---------------------------------------------------------------------------------------------------------------
136116    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
136117    ---------------------------------------------------------------------------------------------------------------
136118    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
136119 
136120    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136121    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136122 
136123    IF xla_accounting_cache_pkg.GetValueChar
136124          (p_source_code         => 'LEDGER_CATEGORY_CODE'
136125          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
136126    AND l_bflow_method_code = 'PRIOR_ENTRY'
136127 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
136128    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
136129          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
136130        )
136131    THEN
136132          xla_ae_lines_pkg.BflowUpgEntry
136133            (p_business_method_code    => l_bflow_method_code
136134            ,p_business_class_code     => l_bflow_class_code
136135            ,p_balance_type            => l_balance_type_code);
136136    ELSE
136137       NULL;
136138 -- No business flow processing for business flow method of NONE.
136139    END IF;
136140 
136141    --
136142    -- call analytical criteria
136143    --
136144    
136145    --
136146    -- call description
136147    --
136148    -- No description or it is inherited.
136149    --
136150    -- call ADRs
136151    -- Bug 4922099
136152    --
136153    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136154         (NVL(l_actual_upg_option, 'N') = 'O') OR
136155         (NVL(l_enc_upg_option, 'N') = 'O')
136156       )
136157    THEN
136158    NULL;
136159    --
136160    --
136161    
136162   l_ccid := AcctDerRule_4(
136163            p_application_id           => p_application_id
136164          , p_ae_header_id             => l_ae_header_id 
136165 , p_source_4 => p_source_4
136166          , x_transaction_coa_id       => l_adr_transaction_coa_id
136167          , x_accounting_coa_id        => l_adr_accounting_coa_id
136168          , x_value_type_code          => l_adr_value_type_code
136169          , p_side                     => 'NA'
136170    );
136171 
136172    xla_ae_lines_pkg.set_ccid(
136173     p_code_combination_id          => l_ccid
136174   , p_value_type_code              => l_adr_value_type_code
136175   , p_transaction_coa_id           => l_adr_transaction_coa_id
136176   , p_accounting_coa_id            => l_adr_accounting_coa_id
136177   , p_adr_code                     => 'CST_DEFAULT'
136178   , p_adr_type_code                => 'S'
136179   , p_component_type               => l_component_type
136180   , p_component_code               => l_component_code
136181   , p_component_type_code          => l_component_type_code
136182   , p_component_appl_id            => l_component_appl_id
136183   , p_amb_context_code             => l_amb_context_code
136184   , p_side                         => 'NA'
136185   );
136186 
136187 
136188    --
136189    --
136190    END IF;
136191    --
136192    -- Bug 4922099
136193    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
136194           (NVL(l_enc_upg_option, 'N') = 'O')
136195         ) AND
136196         (l_bflow_method_code = 'PRIOR_ENTRY')
136197       )
136198    THEN
136199       IF
136200       --
136201       1 = 2
136202       --
136203       THEN
136204       xla_accounting_err_pkg.build_message
136205                                     (p_appli_s_name            => 'XLA'
136206                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136207                                     ,p_token_1                 => 'LINE_NUMBER'
136208                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
136209                                     ,p_token_2                 => 'LINE_TYPE_NAME'
136210                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
136211                                                                              l_component_type
136212                                                                             ,l_component_code
136213                                                                             ,l_component_type_code
136214                                                                             ,l_component_appl_id
136215                                                                             ,l_amb_context_code
136216                                                                             ,l_entity_code
136217                                                                             ,l_event_class_code
136218                                                                            )
136219                                     ,p_token_3                 => 'OWNER'
136220                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
136221                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
136222                                                                           ,p_lookup_code    => l_component_type_code
136223                                                                          )
136224                                     ,p_token_4                 => 'PRODUCT_NAME'
136225                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
136226                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
136227                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
136228                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
136229                                     ,p_ae_header_id            =>  NULL
136230                                        );
136231 
136232         IF (C_LEVEL_ERROR>= g_log_level) THEN
136233                  trace
136234                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136235                       ,p_level    => C_LEVEL_ERROR
136236                       ,p_module   => l_log_module);
136237         END IF;
136238       END IF;
136239    END IF;
136240    --
136241    --
136242    ------------------------------------------------------------------------------------------------
136243    -- 4219869 Business Flow
136244    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
136245    -- Prior Entry.  Currently, the following code is always generated.
136246    ------------------------------------------------------------------------------------------------
136247    XLA_AE_LINES_PKG.ValidateCurrentLine;
136248 
136249    ------------------------------------------------------------------------------------
136250    -- 4219869 Business Flow
136251    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
136252    ------------------------------------------------------------------------------------
136253    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136254 
136255    ----------------------------------------------------------------------------------
136256    -- 4219869 Business Flow
136257    -- Update journal entry status -- Need to generate this within IF <condition>
136258    ----------------------------------------------------------------------------------
136259    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136260          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
136261          ,p_balance_type_code => l_balance_type_code
136262          );
136263 
136264    -------------------------------------------------------------------------------------------
136265    -- 4262811 - Generate the Accrual Reversal lines
136266    -------------------------------------------------------------------------------------------
136267    BEGIN
136268       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
136269                               (g_array_event(p_event_id).array_value_num('header_index'));
136270       IF l_acc_rev_flag IS NULL THEN
136271          l_acc_rev_flag := 'N';
136272       END IF;
136273    EXCEPTION
136274       WHEN OTHERS THEN
136275          l_acc_rev_flag := 'N';
136276    END;
136277    --
136278    IF (l_acc_rev_flag = 'Y') THEN
136279 
136280        -- 4645092  ------------------------------------------------------------------------------
136281        -- To allow MPA report to determine if it should generate report process
136282        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
136283        ------------------------------------------------------------------------------------------
136284 
136285        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
136286        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
136287    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
136288    -- call ADRs
136289    -- Bug 4922099
136290    --
136291    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136292         (NVL(l_actual_upg_option, 'N') = 'O') OR
136293         (NVL(l_enc_upg_option, 'N') = 'O')
136294       )
136295    THEN
136296    NULL;
136297    --
136298    --
136299    
136300   l_ccid := AcctDerRule_4(
136301            p_application_id           => p_application_id
136302          , p_ae_header_id             => l_ae_header_id 
136303 , p_source_4 => p_source_4
136304          , x_transaction_coa_id       => l_adr_transaction_coa_id
136305          , x_accounting_coa_id        => l_adr_accounting_coa_id
136306          , x_value_type_code          => l_adr_value_type_code
136307          , p_side                     => 'NA'
136308    );
136309 
136310    xla_ae_lines_pkg.set_ccid(
136311     p_code_combination_id          => l_ccid
136312   , p_value_type_code              => l_adr_value_type_code
136313   , p_transaction_coa_id           => l_adr_transaction_coa_id
136314   , p_accounting_coa_id            => l_adr_accounting_coa_id
136315   , p_adr_code                     => 'CST_DEFAULT'
136316   , p_adr_type_code                => 'S'
136317   , p_component_type               => l_component_type
136318   , p_component_code               => l_component_code
136319   , p_component_type_code          => l_component_type_code
136320   , p_component_appl_id            => l_component_appl_id
136321   , p_amb_context_code             => l_amb_context_code
136322   , p_side                         => 'NA'
136323   );
136324 
136325 
136326    --
136327    --
136328    END IF;
136329 
136330        --
136331        -- Update the line information that should be overwritten
136332        --
136333        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
136334                                          p_header_num   => 1);
136335        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
136336 
136337        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
136338 
136339        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
136340           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
136341        END IF;
136342 
136343       --
136344       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
136345       --
136346       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
136347           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
136348       ELSE
136349           ---------------------------------------------------------------------------------------------------
136350           -- 4262811a Switch Sign
136351           ---------------------------------------------------------------------------------------------------
136352           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
136353           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136354                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136355           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136356                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136357           -- 5132302
136358           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
136359                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136360 
136361       END IF;
136362 
136363       -- 4955764
136364       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136365       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
136366 
136367 
136368       XLA_AE_LINES_PKG.ValidateCurrentLine;
136369       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136370 
136371       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136372                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
136373                ,p_balance_type_code => l_balance_type_code);
136374 
136375    END IF;
136376 
136377    -----------------------------------------------------------------------------------------
136378    -- 4262811 Multiperiod Accounting
136379    -----------------------------------------------------------------------------------------
136380      -- No MPA option is assigned.
136381 
136382 
136383 END IF;
136384 END IF;
136385 --
136386 
136387 --
136388 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136389    trace
136390       (p_msg      => 'END of AcctLineType_246'
136391       ,p_level    => C_LEVEL_PROCEDURE
136392       ,p_module   => l_log_module);
136393 END IF;
136394 --
136395 EXCEPTION
136396   WHEN xla_exceptions_pkg.application_exception THEN
136397       RAISE;
136398   WHEN OTHERS THEN
136399        xla_exceptions_pkg.raise_message
136400            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_246');
136401 END AcctLineType_246;
136402 --
136403 
136404 ---------------------------------------
136405 --
136406 -- PRIVATE FUNCTION
136407 --         AcctLineType_247
136408 --
136409 ---------------------------------------
136410 PROCEDURE AcctLineType_247 (
136411   p_application_id        IN NUMBER
136412  ,p_event_id              IN NUMBER
136413  ,p_calculate_acctd_flag  IN VARCHAR2
136414  ,p_calculate_g_l_flag    IN VARCHAR2
136415  ,p_actual_flag           IN OUT VARCHAR2
136416  ,p_balance_type_code     OUT VARCHAR2
136417  ,p_gain_or_loss_ref      OUT VARCHAR2
136418  
136419 --Cost Management Default Account
136420  , p_source_4            IN NUMBER
136421 --DISTRIBUTION_IDENTIFIER
136422  , p_source_11            IN NUMBER
136423 --Distribution Type
136424  , p_source_12            IN VARCHAR2
136425  , p_source_12_meaning    IN VARCHAR2
136426 --Entered Currency Code
136427  , p_source_15            IN VARCHAR2
136428 --Entered Amount
136429  , p_source_18            IN NUMBER
136430 --Currency Conversion Date
136431  , p_source_19            IN DATE
136432 --Currency Conversion Rate
136433  , p_source_20            IN NUMBER
136434 --Currency Conversion Type
136435  , p_source_21            IN VARCHAR2
136436 --Accounted Amount
136437  , p_source_22            IN NUMBER
136438 --Accounting Line Type
136439  , p_source_24            IN NUMBER
136440 )
136441 IS
136442 
136443 l_component_type              VARCHAR2(80);
136444 l_component_code              VARCHAR2(30);
136445 l_component_type_code         VARCHAR2(1);
136446 l_component_appl_id           INTEGER;
136447 l_amb_context_code            VARCHAR2(30);
136448 l_entity_code                 VARCHAR2(30);
136449 l_event_class_code            VARCHAR2(30);
136450 l_ae_header_id                NUMBER;
136451 l_event_type_code             VARCHAR2(30);
136452 l_line_definition_code        VARCHAR2(30);
136453 l_line_definition_owner_code  VARCHAR2(1);
136454 --
136455 -- adr variables
136456 l_segment                     VARCHAR2(30);
136457 l_ccid                        NUMBER;
136458 l_adr_transaction_coa_id      NUMBER;
136459 l_adr_accounting_coa_id       NUMBER;
136460 l_adr_flexfield_segment_code  VARCHAR2(30);
136461 l_adr_flex_value_set_id       NUMBER;
136462 l_adr_value_type_code         VARCHAR2(30);
136463 l_adr_value_combination_id    NUMBER;
136464 l_adr_value_segment_code      VARCHAR2(30);
136465 
136466 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
136467 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
136468 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
136469 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
136470 
136471 -- 4262811 Variables ------------------------------------------------------------------------------------------
136472 l_entered_amt_idx             NUMBER;
136473 l_accted_amt_idx              NUMBER;
136474 l_acc_rev_flag                VARCHAR2(1);
136475 l_accrual_line_num            NUMBER;
136476 l_tmp_amt                     NUMBER;
136477 l_acc_rev_natural_side_code   VARCHAR2(1);
136478 
136479 l_num_entries                 NUMBER;
136480 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
136481 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
136482 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
136483 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
136484 l_recog_line_1                NUMBER;
136485 l_recog_line_2                NUMBER;
136486 
136487 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
136488 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
136489 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
136490 
136491 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
136492 
136493 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
136494 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
136495 
136496 ---------------------------------------------------------------------------------------------------------------
136497 
136498 
136499 --
136500 -- bulk performance
136501 --
136502 l_balance_type_code           VARCHAR2(1);
136503 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
136504 l_log_module                  VARCHAR2(240);
136505 
136506 --
136507 -- Upgrade strategy
136508 --
136509 l_actual_upg_option           VARCHAR2(1);
136510 l_enc_upg_option           VARCHAR2(1);
136511 
136512 --
136513 BEGIN
136514 --
136515 IF g_log_enabled THEN
136516       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_247';
136517 END IF;
136518 --
136519 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136520 
136521       trace
136522          (p_msg      => 'BEGIN of AcctLineType_247'
136523          ,p_level    => C_LEVEL_PROCEDURE
136524          ,p_module   => l_log_module);
136525 
136526 END IF;
136527 --
136528 l_component_type             := 'AMB_JLT';
136529 l_component_code             := 'WIP_VARIANCE';
136530 l_component_type_code        := 'S';
136531 l_component_appl_id          :=  707;
136532 l_amb_context_code           := 'DEFAULT';
136533 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
136534 l_event_class_code           := 'VARIANCE';
136535 l_event_type_code            := 'VARIANCE_ALL';
136536 l_line_definition_owner_code := 'S';
136537 l_line_definition_code       := 'VARIANCE';
136538 --
136539 l_balance_type_code          := 'A';
136540 l_segment                     := NULL;
136541 l_ccid                        := NULL;
136542 l_adr_transaction_coa_id      := NULL;
136543 l_adr_accounting_coa_id       := NULL;
136544 l_adr_flexfield_segment_code  := NULL;
136545 l_adr_flex_value_set_id       := NULL;
136546 l_adr_value_type_code         := NULL;
136547 l_adr_value_combination_id    := NULL;
136548 l_adr_value_segment_code      := NULL;
136549 
136550 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
136551 l_bflow_class_code           := '';    -- 4219869 Business Flow
136552 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
136553 l_budgetary_control_flag     := 'N';
136554 
136555 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
136556 l_bflow_applied_to_amt       := NULL; -- 5132302
136557 l_entered_amt_idx            := NULL;          -- 4262811
136558 l_accted_amt_idx             := NULL;          -- 4262811
136559 l_acc_rev_flag               := NULL;          -- 4262811
136560 l_accrual_line_num           := NULL;          -- 4262811
136561 l_tmp_amt                    := NULL;          -- 4262811
136562 --
136563  
136564 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
136565     l_balance_type_code <> 'B' THEN
136566 IF NVL(p_source_24,9E125) =  8
136567  THEN 
136568 
136569    --
136570    XLA_AE_LINES_PKG.SetNewLine;
136571 
136572    p_balance_type_code          := l_balance_type_code;
136573    -- set the flag so later we will know whether the gain loss line needs to be created
136574    
136575    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
136576      p_actual_flag :='A';
136577    END IF;
136578 
136579    --
136580    -- bulk performance
136581    --
136582    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
136583                                       p_header_num   => 0); -- 4262811
136584    --
136585    -- set accounting line options
136586    --
136587    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
136588            p_natural_side_code          => 'D'
136589          , p_gain_or_loss_flag          => 'N'
136590          , p_gl_transfer_mode_code      => 'S'
136591          , p_acct_entry_type_code       => 'A'
136592          , p_switch_side_flag           => 'Y'
136593          , p_merge_duplicate_code       => 'N'
136594          );
136595    --
136596    l_acc_rev_natural_side_code := 'C';  -- 4262811
136597    -- 
136598    --
136599    -- set accounting line type info
136600    --
136601    xla_ae_lines_pkg.SetAcctLineType
136602       (p_component_type             => l_component_type
136603       ,p_event_type_code            => l_event_type_code
136604       ,p_line_definition_owner_code => l_line_definition_owner_code
136605       ,p_line_definition_code       => l_line_definition_code
136606       ,p_accounting_line_code       => l_component_code
136607       ,p_accounting_line_type_code  => l_component_type_code
136608       ,p_accounting_line_appl_id    => l_component_appl_id
136609       ,p_amb_context_code           => l_amb_context_code
136610       ,p_entity_code                => l_entity_code
136611       ,p_event_class_code           => l_event_class_code);
136612    --
136613    -- set accounting class
136614    --
136615    xla_ae_lines_pkg.SetAcctClass(
136616            p_accounting_class_code  => 'WIP_VARIANCE'
136617          , p_ae_header_id           => l_ae_header_id
136618          );
136619 
136620    --
136621    -- set rounding class
136622    --
136623    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
136624                       'WIP_VARIANCE';
136625 
136626    --
136627    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
136628    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
136629    --
136630    -- bulk performance
136631    --
136632    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
136633 
136634    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
136635       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
136636 
136637    -- 4955764
136638    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136639       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
136640 
136641    -- 4458381 Public Sector Enh
136642    
136643    --
136644    -- set accounting attributes for the line type
136645    --
136646    l_entered_amt_idx := 3;
136647    l_accted_amt_idx  := 8;
136648    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
136649    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
136650    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_11);
136651    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
136652    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
136653    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
136654    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
136655    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
136656    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
136657    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
136658    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
136659    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
136660    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
136661    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
136662    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
136663    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
136664    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
136665 
136666    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
136667    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
136668 
136669    ---------------------------------------------------------------------------------------------------------------
136670    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
136671    ---------------------------------------------------------------------------------------------------------------
136672    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
136673 
136674    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136675    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136676 
136677    IF xla_accounting_cache_pkg.GetValueChar
136678          (p_source_code         => 'LEDGER_CATEGORY_CODE'
136679          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
136680    AND l_bflow_method_code = 'PRIOR_ENTRY'
136681 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
136682    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
136683          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
136684        )
136685    THEN
136686          xla_ae_lines_pkg.BflowUpgEntry
136687            (p_business_method_code    => l_bflow_method_code
136688            ,p_business_class_code     => l_bflow_class_code
136689            ,p_balance_type            => l_balance_type_code);
136690    ELSE
136691       NULL;
136692 -- No business flow processing for business flow method of NONE.
136693    END IF;
136694 
136695    --
136696    -- call analytical criteria
136697    --
136698    
136699    --
136700    -- call description
136701    --
136702    -- No description or it is inherited.
136703    --
136704    -- call ADRs
136705    -- Bug 4922099
136706    --
136707    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136708         (NVL(l_actual_upg_option, 'N') = 'O') OR
136709         (NVL(l_enc_upg_option, 'N') = 'O')
136710       )
136711    THEN
136712    NULL;
136713    --
136714    --
136715    
136716   l_ccid := AcctDerRule_4(
136717            p_application_id           => p_application_id
136718          , p_ae_header_id             => l_ae_header_id 
136719 , p_source_4 => p_source_4
136720          , x_transaction_coa_id       => l_adr_transaction_coa_id
136721          , x_accounting_coa_id        => l_adr_accounting_coa_id
136722          , x_value_type_code          => l_adr_value_type_code
136723          , p_side                     => 'NA'
136724    );
136725 
136726    xla_ae_lines_pkg.set_ccid(
136727     p_code_combination_id          => l_ccid
136728   , p_value_type_code              => l_adr_value_type_code
136729   , p_transaction_coa_id           => l_adr_transaction_coa_id
136730   , p_accounting_coa_id            => l_adr_accounting_coa_id
136731   , p_adr_code                     => 'CST_DEFAULT'
136732   , p_adr_type_code                => 'S'
136733   , p_component_type               => l_component_type
136734   , p_component_code               => l_component_code
136735   , p_component_type_code          => l_component_type_code
136736   , p_component_appl_id            => l_component_appl_id
136737   , p_amb_context_code             => l_amb_context_code
136738   , p_side                         => 'NA'
136739   );
136740 
136741 
136742    --
136743    --
136744    END IF;
136745    --
136746    -- Bug 4922099
136747    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
136748           (NVL(l_enc_upg_option, 'N') = 'O')
136749         ) AND
136750         (l_bflow_method_code = 'PRIOR_ENTRY')
136751       )
136752    THEN
136753       IF
136754       --
136755       1 = 2
136756       --
136757       THEN
136758       xla_accounting_err_pkg.build_message
136759                                     (p_appli_s_name            => 'XLA'
136760                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136761                                     ,p_token_1                 => 'LINE_NUMBER'
136762                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
136763                                     ,p_token_2                 => 'LINE_TYPE_NAME'
136764                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
136765                                                                              l_component_type
136766                                                                             ,l_component_code
136767                                                                             ,l_component_type_code
136768                                                                             ,l_component_appl_id
136769                                                                             ,l_amb_context_code
136770                                                                             ,l_entity_code
136771                                                                             ,l_event_class_code
136772                                                                            )
136773                                     ,p_token_3                 => 'OWNER'
136774                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
136775                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
136776                                                                           ,p_lookup_code    => l_component_type_code
136777                                                                          )
136778                                     ,p_token_4                 => 'PRODUCT_NAME'
136779                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
136780                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
136781                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
136782                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
136783                                     ,p_ae_header_id            =>  NULL
136784                                        );
136785 
136786         IF (C_LEVEL_ERROR>= g_log_level) THEN
136787                  trace
136788                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136789                       ,p_level    => C_LEVEL_ERROR
136790                       ,p_module   => l_log_module);
136791         END IF;
136792       END IF;
136793    END IF;
136794    --
136795    --
136796    ------------------------------------------------------------------------------------------------
136797    -- 4219869 Business Flow
136798    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
136799    -- Prior Entry.  Currently, the following code is always generated.
136800    ------------------------------------------------------------------------------------------------
136801    XLA_AE_LINES_PKG.ValidateCurrentLine;
136802 
136803    ------------------------------------------------------------------------------------
136804    -- 4219869 Business Flow
136805    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
136806    ------------------------------------------------------------------------------------
136807    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136808 
136809    ----------------------------------------------------------------------------------
136810    -- 4219869 Business Flow
136811    -- Update journal entry status -- Need to generate this within IF <condition>
136812    ----------------------------------------------------------------------------------
136813    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136814          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
136815          ,p_balance_type_code => l_balance_type_code
136816          );
136817 
136818    -------------------------------------------------------------------------------------------
136819    -- 4262811 - Generate the Accrual Reversal lines
136820    -------------------------------------------------------------------------------------------
136821    BEGIN
136822       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
136823                               (g_array_event(p_event_id).array_value_num('header_index'));
136824       IF l_acc_rev_flag IS NULL THEN
136825          l_acc_rev_flag := 'N';
136826       END IF;
136827    EXCEPTION
136828       WHEN OTHERS THEN
136829          l_acc_rev_flag := 'N';
136830    END;
136831    --
136832    IF (l_acc_rev_flag = 'Y') THEN
136833 
136834        -- 4645092  ------------------------------------------------------------------------------
136835        -- To allow MPA report to determine if it should generate report process
136836        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
136837        ------------------------------------------------------------------------------------------
136838 
136839        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
136840        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
136841    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
136842    -- call ADRs
136843    -- Bug 4922099
136844    --
136845    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136846         (NVL(l_actual_upg_option, 'N') = 'O') OR
136847         (NVL(l_enc_upg_option, 'N') = 'O')
136848       )
136849    THEN
136850    NULL;
136851    --
136852    --
136853    
136854   l_ccid := AcctDerRule_4(
136855            p_application_id           => p_application_id
136856          , p_ae_header_id             => l_ae_header_id 
136857 , p_source_4 => p_source_4
136858          , x_transaction_coa_id       => l_adr_transaction_coa_id
136859          , x_accounting_coa_id        => l_adr_accounting_coa_id
136860          , x_value_type_code          => l_adr_value_type_code
136861          , p_side                     => 'NA'
136862    );
136863 
136864    xla_ae_lines_pkg.set_ccid(
136865     p_code_combination_id          => l_ccid
136866   , p_value_type_code              => l_adr_value_type_code
136867   , p_transaction_coa_id           => l_adr_transaction_coa_id
136868   , p_accounting_coa_id            => l_adr_accounting_coa_id
136869   , p_adr_code                     => 'CST_DEFAULT'
136870   , p_adr_type_code                => 'S'
136871   , p_component_type               => l_component_type
136872   , p_component_code               => l_component_code
136873   , p_component_type_code          => l_component_type_code
136874   , p_component_appl_id            => l_component_appl_id
136875   , p_amb_context_code             => l_amb_context_code
136876   , p_side                         => 'NA'
136877   );
136878 
136879 
136880    --
136881    --
136882    END IF;
136883 
136884        --
136885        -- Update the line information that should be overwritten
136886        --
136887        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
136888                                          p_header_num   => 1);
136889        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
136890 
136891        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
136892 
136893        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
136894           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
136895        END IF;
136896 
136897       --
136898       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
136899       --
136900       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
136901           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
136902       ELSE
136903           ---------------------------------------------------------------------------------------------------
136904           -- 4262811a Switch Sign
136905           ---------------------------------------------------------------------------------------------------
136906           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
136907           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136908                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136909           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136910                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136911           -- 5132302
136912           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
136913                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136914 
136915       END IF;
136916 
136917       -- 4955764
136918       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136919       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
136920 
136921 
136922       XLA_AE_LINES_PKG.ValidateCurrentLine;
136923       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136924 
136925       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136926                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
136927                ,p_balance_type_code => l_balance_type_code);
136928 
136929    END IF;
136930 
136931    -----------------------------------------------------------------------------------------
136932    -- 4262811 Multiperiod Accounting
136933    -----------------------------------------------------------------------------------------
136934      -- No MPA option is assigned.
136935 
136936 
136937 END IF;
136938 END IF;
136939 --
136940 
136941 --
136942 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136943    trace
136944       (p_msg      => 'END of AcctLineType_247'
136945       ,p_level    => C_LEVEL_PROCEDURE
136946       ,p_module   => l_log_module);
136947 END IF;
136948 --
136949 EXCEPTION
136950   WHEN xla_exceptions_pkg.application_exception THEN
136951       RAISE;
136952   WHEN OTHERS THEN
136953        xla_exceptions_pkg.raise_message
136954            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_247');
136955 END AcctLineType_247;
136956 --
136957 
136958 ---------------------------------------
136959 --
136960 -- PRIVATE FUNCTION
136961 --         AcctLineType_248
136962 --
136963 ---------------------------------------
136964 PROCEDURE AcctLineType_248 (
136965   p_application_id        IN NUMBER
136966  ,p_event_id              IN NUMBER
136967  ,p_calculate_acctd_flag  IN VARCHAR2
136968  ,p_calculate_g_l_flag    IN VARCHAR2
136969  ,p_actual_flag           IN OUT VARCHAR2
136970  ,p_balance_type_code     OUT VARCHAR2
136971  ,p_gain_or_loss_ref      OUT VARCHAR2
136972  
136973 --Write-Off Variance Account
136974  , p_source_2            IN NUMBER
136975 --Distribution Type
136976  , p_source_12            IN VARCHAR2
136977  , p_source_12_meaning    IN VARCHAR2
136978 --Entered Currency Code
136979  , p_source_15            IN VARCHAR2
136980 --Entered Amount
136981  , p_source_18            IN NUMBER
136982 --Currency Conversion Date
136983  , p_source_19            IN DATE
136984 --Currency Conversion Rate
136985  , p_source_20            IN NUMBER
136986 --Currency Conversion Type
136987  , p_source_21            IN VARCHAR2
136988 --Accounted Amount
136989  , p_source_22            IN NUMBER
136990 --Line Number
136991  , p_source_25            IN NUMBER
136992 --WRITE_OFF_ID
136993  , p_source_26            IN NUMBER
136994 )
136995 IS
136996 
136997 l_component_type              VARCHAR2(80);
136998 l_component_code              VARCHAR2(30);
136999 l_component_type_code         VARCHAR2(1);
137000 l_component_appl_id           INTEGER;
137001 l_amb_context_code            VARCHAR2(30);
137002 l_entity_code                 VARCHAR2(30);
137003 l_event_class_code            VARCHAR2(30);
137004 l_ae_header_id                NUMBER;
137005 l_event_type_code             VARCHAR2(30);
137006 l_line_definition_code        VARCHAR2(30);
137007 l_line_definition_owner_code  VARCHAR2(1);
137008 --
137009 -- adr variables
137010 l_segment                     VARCHAR2(30);
137011 l_ccid                        NUMBER;
137012 l_adr_transaction_coa_id      NUMBER;
137013 l_adr_accounting_coa_id       NUMBER;
137014 l_adr_flexfield_segment_code  VARCHAR2(30);
137015 l_adr_flex_value_set_id       NUMBER;
137016 l_adr_value_type_code         VARCHAR2(30);
137017 l_adr_value_combination_id    NUMBER;
137018 l_adr_value_segment_code      VARCHAR2(30);
137019 
137020 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
137021 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
137022 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
137023 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
137024 
137025 -- 4262811 Variables ------------------------------------------------------------------------------------------
137026 l_entered_amt_idx             NUMBER;
137027 l_accted_amt_idx              NUMBER;
137028 l_acc_rev_flag                VARCHAR2(1);
137029 l_accrual_line_num            NUMBER;
137030 l_tmp_amt                     NUMBER;
137031 l_acc_rev_natural_side_code   VARCHAR2(1);
137032 
137033 l_num_entries                 NUMBER;
137034 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
137035 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
137036 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
137037 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
137038 l_recog_line_1                NUMBER;
137039 l_recog_line_2                NUMBER;
137040 
137041 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
137042 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
137043 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
137044 
137045 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
137046 
137047 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
137048 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
137049 
137050 ---------------------------------------------------------------------------------------------------------------
137051 
137052 
137053 --
137054 -- bulk performance
137055 --
137056 l_balance_type_code           VARCHAR2(1);
137057 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
137058 l_log_module                  VARCHAR2(240);
137059 
137060 --
137061 -- Upgrade strategy
137062 --
137063 l_actual_upg_option           VARCHAR2(1);
137064 l_enc_upg_option           VARCHAR2(1);
137065 
137066 --
137067 BEGIN
137068 --
137069 IF g_log_enabled THEN
137070       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_248';
137071 END IF;
137072 --
137073 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137074 
137075       trace
137076          (p_msg      => 'BEGIN of AcctLineType_248'
137077          ,p_level    => C_LEVEL_PROCEDURE
137078          ,p_module   => l_log_module);
137079 
137080 END IF;
137081 --
137082 l_component_type             := 'AMB_JLT';
137083 l_component_code             := 'WO_VARIANCE';
137084 l_component_type_code        := 'S';
137085 l_component_appl_id          :=  707;
137086 l_amb_context_code           := 'DEFAULT';
137087 l_entity_code                := 'WO_ACCOUNTING_EVENTS';
137088 l_event_class_code           := 'ACCRUAL_WRITE_OFF';
137089 l_event_type_code            := 'ACCRUAL_WRITE_OFF_ALL';
137090 l_line_definition_owner_code := 'S';
137091 l_line_definition_code       := 'ACCRUAL_WRITE_OFF';
137092 --
137093 l_balance_type_code          := 'A';
137094 l_segment                     := NULL;
137095 l_ccid                        := NULL;
137096 l_adr_transaction_coa_id      := NULL;
137097 l_adr_accounting_coa_id       := NULL;
137098 l_adr_flexfield_segment_code  := NULL;
137099 l_adr_flex_value_set_id       := NULL;
137100 l_adr_value_type_code         := NULL;
137101 l_adr_value_combination_id    := NULL;
137102 l_adr_value_segment_code      := NULL;
137103 
137104 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
137105 l_bflow_class_code           := '';    -- 4219869 Business Flow
137106 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
137107 l_budgetary_control_flag     := 'N';
137108 
137109 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
137110 l_bflow_applied_to_amt       := NULL; -- 5132302
137111 l_entered_amt_idx            := NULL;          -- 4262811
137112 l_accted_amt_idx             := NULL;          -- 4262811
137113 l_acc_rev_flag               := NULL;          -- 4262811
137114 l_accrual_line_num           := NULL;          -- 4262811
137115 l_tmp_amt                    := NULL;          -- 4262811
137116 --
137117  
137118 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
137119     l_balance_type_code <> 'B' THEN
137120 IF NVL(p_source_25,9E125) =  2
137121  THEN 
137122 
137123    --
137124    XLA_AE_LINES_PKG.SetNewLine;
137125 
137126    p_balance_type_code          := l_balance_type_code;
137127    -- set the flag so later we will know whether the gain loss line needs to be created
137128    
137129    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
137130      p_actual_flag :='A';
137131    END IF;
137132 
137133    --
137134    -- bulk performance
137135    --
137136    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
137137                                       p_header_num   => 0); -- 4262811
137138    --
137139    -- set accounting line options
137140    --
137141    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
137142            p_natural_side_code          => 'D'
137143          , p_gain_or_loss_flag          => 'N'
137144          , p_gl_transfer_mode_code      => 'S'
137145          , p_acct_entry_type_code       => 'A'
137146          , p_switch_side_flag           => 'Y'
137147          , p_merge_duplicate_code       => 'N'
137148          );
137149    --
137150    l_acc_rev_natural_side_code := 'C';  -- 4262811
137151    -- 
137152    --
137153    -- set accounting line type info
137154    --
137155    xla_ae_lines_pkg.SetAcctLineType
137156       (p_component_type             => l_component_type
137157       ,p_event_type_code            => l_event_type_code
137158       ,p_line_definition_owner_code => l_line_definition_owner_code
137159       ,p_line_definition_code       => l_line_definition_code
137160       ,p_accounting_line_code       => l_component_code
137161       ,p_accounting_line_type_code  => l_component_type_code
137162       ,p_accounting_line_appl_id    => l_component_appl_id
137163       ,p_amb_context_code           => l_amb_context_code
137164       ,p_entity_code                => l_entity_code
137165       ,p_event_class_code           => l_event_class_code);
137166    --
137167    -- set accounting class
137168    --
137169    xla_ae_lines_pkg.SetAcctClass(
137170            p_accounting_class_code  => 'WRITE_OFF_VARIANCE'
137171          , p_ae_header_id           => l_ae_header_id
137172          );
137173 
137174    --
137175    -- set rounding class
137176    --
137177    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
137178                       'WRITE_OFF_VARIANCE';
137179 
137180    --
137181    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
137182    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
137183    --
137184    -- bulk performance
137185    --
137186    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
137187 
137188    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
137189       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
137190 
137191    -- 4955764
137192    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
137193       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
137194 
137195    -- 4458381 Public Sector Enh
137196    
137197    --
137198    -- set accounting attributes for the line type
137199    --
137200    l_entered_amt_idx := 3;
137201    l_accted_amt_idx  := 8;
137202    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
137203    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
137204    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_26);
137205    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
137206    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
137207    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
137208    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
137209    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
137210    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
137211    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
137212    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
137213    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
137214    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
137215    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
137216    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
137217    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
137218    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
137219 
137220    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
137221    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
137222 
137223    ---------------------------------------------------------------------------------------------------------------
137224    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
137225    ---------------------------------------------------------------------------------------------------------------
137226    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
137227 
137228    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137229    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137230 
137231    IF xla_accounting_cache_pkg.GetValueChar
137232          (p_source_code         => 'LEDGER_CATEGORY_CODE'
137233          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
137234    AND l_bflow_method_code = 'PRIOR_ENTRY'
137235 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
137236    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
137237          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
137238        )
137239    THEN
137240          xla_ae_lines_pkg.BflowUpgEntry
137241            (p_business_method_code    => l_bflow_method_code
137242            ,p_business_class_code     => l_bflow_class_code
137243            ,p_balance_type            => l_balance_type_code);
137244    ELSE
137245       NULL;
137246 -- No business flow processing for business flow method of NONE.
137247    END IF;
137248 
137249    --
137250    -- call analytical criteria
137251    --
137252    
137253    --
137254    -- call description
137255    --
137256    -- No description or it is inherited.
137257    --
137258    -- call ADRs
137259    -- Bug 4922099
137260    --
137261    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137262         (NVL(l_actual_upg_option, 'N') = 'O') OR
137263         (NVL(l_enc_upg_option, 'N') = 'O')
137264       )
137265    THEN
137266    NULL;
137267    --
137268    --
137269    
137270   l_ccid := AcctDerRule_2(
137271            p_application_id           => p_application_id
137272          , p_ae_header_id             => l_ae_header_id 
137273 , p_source_2 => p_source_2
137274          , x_transaction_coa_id       => l_adr_transaction_coa_id
137275          , x_accounting_coa_id        => l_adr_accounting_coa_id
137276          , x_value_type_code          => l_adr_value_type_code
137277          , p_side                     => 'NA'
137278    );
137279 
137280    xla_ae_lines_pkg.set_ccid(
137281     p_code_combination_id          => l_ccid
137282   , p_value_type_code              => l_adr_value_type_code
137283   , p_transaction_coa_id           => l_adr_transaction_coa_id
137284   , p_accounting_coa_id            => l_adr_accounting_coa_id
137285   , p_adr_code                     => 'CST_AWO_ERV'
137286   , p_adr_type_code                => 'S'
137287   , p_component_type               => l_component_type
137288   , p_component_code               => l_component_code
137289   , p_component_type_code          => l_component_type_code
137290   , p_component_appl_id            => l_component_appl_id
137291   , p_amb_context_code             => l_amb_context_code
137292   , p_side                         => 'NA'
137293   );
137294 
137295 
137296    --
137297    --
137298    END IF;
137299    --
137300    -- Bug 4922099
137301    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
137302           (NVL(l_enc_upg_option, 'N') = 'O')
137303         ) AND
137304         (l_bflow_method_code = 'PRIOR_ENTRY')
137305       )
137306    THEN
137307       IF
137308       --
137309       1 = 2
137310       --
137311       THEN
137312       xla_accounting_err_pkg.build_message
137313                                     (p_appli_s_name            => 'XLA'
137314                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137315                                     ,p_token_1                 => 'LINE_NUMBER'
137316                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
137317                                     ,p_token_2                 => 'LINE_TYPE_NAME'
137318                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
137319                                                                              l_component_type
137320                                                                             ,l_component_code
137321                                                                             ,l_component_type_code
137322                                                                             ,l_component_appl_id
137323                                                                             ,l_amb_context_code
137324                                                                             ,l_entity_code
137325                                                                             ,l_event_class_code
137326                                                                            )
137327                                     ,p_token_3                 => 'OWNER'
137328                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
137329                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
137330                                                                           ,p_lookup_code    => l_component_type_code
137331                                                                          )
137332                                     ,p_token_4                 => 'PRODUCT_NAME'
137333                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
137334                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
137335                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
137336                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
137337                                     ,p_ae_header_id            =>  NULL
137338                                        );
137339 
137340         IF (C_LEVEL_ERROR>= g_log_level) THEN
137341                  trace
137342                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137343                       ,p_level    => C_LEVEL_ERROR
137344                       ,p_module   => l_log_module);
137345         END IF;
137346       END IF;
137347    END IF;
137348    --
137349    --
137350    ------------------------------------------------------------------------------------------------
137351    -- 4219869 Business Flow
137352    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
137353    -- Prior Entry.  Currently, the following code is always generated.
137354    ------------------------------------------------------------------------------------------------
137355    XLA_AE_LINES_PKG.ValidateCurrentLine;
137356 
137357    ------------------------------------------------------------------------------------
137358    -- 4219869 Business Flow
137359    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
137360    ------------------------------------------------------------------------------------
137361    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
137362 
137363    ----------------------------------------------------------------------------------
137364    -- 4219869 Business Flow
137365    -- Update journal entry status -- Need to generate this within IF <condition>
137366    ----------------------------------------------------------------------------------
137367    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
137368          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
137369          ,p_balance_type_code => l_balance_type_code
137370          );
137371 
137372    -------------------------------------------------------------------------------------------
137373    -- 4262811 - Generate the Accrual Reversal lines
137374    -------------------------------------------------------------------------------------------
137375    BEGIN
137376       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
137377                               (g_array_event(p_event_id).array_value_num('header_index'));
137378       IF l_acc_rev_flag IS NULL THEN
137379          l_acc_rev_flag := 'N';
137380       END IF;
137381    EXCEPTION
137382       WHEN OTHERS THEN
137383          l_acc_rev_flag := 'N';
137384    END;
137385    --
137386    IF (l_acc_rev_flag = 'Y') THEN
137387 
137388        -- 4645092  ------------------------------------------------------------------------------
137389        -- To allow MPA report to determine if it should generate report process
137390        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
137391        ------------------------------------------------------------------------------------------
137392 
137393        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
137394        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
137395    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
137396    -- call ADRs
137397    -- Bug 4922099
137398    --
137399    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137400         (NVL(l_actual_upg_option, 'N') = 'O') OR
137401         (NVL(l_enc_upg_option, 'N') = 'O')
137402       )
137403    THEN
137404    NULL;
137405    --
137406    --
137407    
137408   l_ccid := AcctDerRule_2(
137409            p_application_id           => p_application_id
137410          , p_ae_header_id             => l_ae_header_id 
137411 , p_source_2 => p_source_2
137412          , x_transaction_coa_id       => l_adr_transaction_coa_id
137413          , x_accounting_coa_id        => l_adr_accounting_coa_id
137414          , x_value_type_code          => l_adr_value_type_code
137415          , p_side                     => 'NA'
137416    );
137417 
137418    xla_ae_lines_pkg.set_ccid(
137419     p_code_combination_id          => l_ccid
137420   , p_value_type_code              => l_adr_value_type_code
137421   , p_transaction_coa_id           => l_adr_transaction_coa_id
137422   , p_accounting_coa_id            => l_adr_accounting_coa_id
137423   , p_adr_code                     => 'CST_AWO_ERV'
137424   , p_adr_type_code                => 'S'
137425   , p_component_type               => l_component_type
137426   , p_component_code               => l_component_code
137427   , p_component_type_code          => l_component_type_code
137428   , p_component_appl_id            => l_component_appl_id
137429   , p_amb_context_code             => l_amb_context_code
137430   , p_side                         => 'NA'
137431   );
137432 
137433 
137434    --
137435    --
137436    END IF;
137437 
137438        --
137439        -- Update the line information that should be overwritten
137440        --
137441        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
137442                                          p_header_num   => 1);
137443        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
137444 
137445        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
137446 
137447        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
137448           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
137449        END IF;
137450 
137451       --
137452       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
137453       --
137454       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
137455           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
137456       ELSE
137457           ---------------------------------------------------------------------------------------------------
137458           -- 4262811a Switch Sign
137459           ---------------------------------------------------------------------------------------------------
137460           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
137461           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
137462                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137463           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
137464                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137465           -- 5132302
137466           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
137467                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137468 
137469       END IF;
137470 
137471       -- 4955764
137472       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
137473       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
137474 
137475 
137476       XLA_AE_LINES_PKG.ValidateCurrentLine;
137477       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
137478 
137479       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
137480                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
137481                ,p_balance_type_code => l_balance_type_code);
137482 
137483    END IF;
137484 
137485    -----------------------------------------------------------------------------------------
137486    -- 4262811 Multiperiod Accounting
137487    -----------------------------------------------------------------------------------------
137488      -- No MPA option is assigned.
137489 
137490 
137491 END IF;
137492 END IF;
137493 --
137494 
137495 --
137496 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137497    trace
137498       (p_msg      => 'END of AcctLineType_248'
137499       ,p_level    => C_LEVEL_PROCEDURE
137500       ,p_module   => l_log_module);
137501 END IF;
137502 --
137503 EXCEPTION
137504   WHEN xla_exceptions_pkg.application_exception THEN
137505       RAISE;
137506   WHEN OTHERS THEN
137507        xla_exceptions_pkg.raise_message
137508            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_248');
137509 END AcctLineType_248;
137510 --
137511 
137512 ---------------------------------------
137513 --
137514 -- PRIVATE FUNCTION
137515 --         AcctLineType_249
137516 --
137517 ---------------------------------------
137518 PROCEDURE AcctLineType_249 (
137519   p_application_id        IN NUMBER
137520  ,p_event_id              IN NUMBER
137521  ,p_calculate_acctd_flag  IN VARCHAR2
137522  ,p_calculate_g_l_flag    IN VARCHAR2
137523  ,p_actual_flag           IN OUT VARCHAR2
137524  ,p_balance_type_code     OUT VARCHAR2
137525  ,p_gain_or_loss_ref      OUT VARCHAR2
137526  
137527 --Accrual Account for the Write Off
137528  , p_source_1            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 --Line Number
137545  , p_source_25            IN NUMBER
137546 --WRITE_OFF_ID
137547  , p_source_26            IN NUMBER
137548 )
137549 IS
137550 
137551 l_component_type              VARCHAR2(80);
137552 l_component_code              VARCHAR2(30);
137553 l_component_type_code         VARCHAR2(1);
137554 l_component_appl_id           INTEGER;
137555 l_amb_context_code            VARCHAR2(30);
137556 l_entity_code                 VARCHAR2(30);
137557 l_event_class_code            VARCHAR2(30);
137558 l_ae_header_id                NUMBER;
137559 l_event_type_code             VARCHAR2(30);
137560 l_line_definition_code        VARCHAR2(30);
137561 l_line_definition_owner_code  VARCHAR2(1);
137562 --
137563 -- adr variables
137564 l_segment                     VARCHAR2(30);
137565 l_ccid                        NUMBER;
137566 l_adr_transaction_coa_id      NUMBER;
137567 l_adr_accounting_coa_id       NUMBER;
137568 l_adr_flexfield_segment_code  VARCHAR2(30);
137569 l_adr_flex_value_set_id       NUMBER;
137570 l_adr_value_type_code         VARCHAR2(30);
137571 l_adr_value_combination_id    NUMBER;
137572 l_adr_value_segment_code      VARCHAR2(30);
137573 
137574 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
137575 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
137576 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
137577 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
137578 
137579 -- 4262811 Variables ------------------------------------------------------------------------------------------
137580 l_entered_amt_idx             NUMBER;
137581 l_accted_amt_idx              NUMBER;
137582 l_acc_rev_flag                VARCHAR2(1);
137583 l_accrual_line_num            NUMBER;
137584 l_tmp_amt                     NUMBER;
137585 l_acc_rev_natural_side_code   VARCHAR2(1);
137586 
137587 l_num_entries                 NUMBER;
137588 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
137589 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
137590 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
137591 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
137592 l_recog_line_1                NUMBER;
137593 l_recog_line_2                NUMBER;
137594 
137595 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
137596 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
137597 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
137598 
137599 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
137600 
137601 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
137602 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
137603 
137604 ---------------------------------------------------------------------------------------------------------------
137605 
137606 
137607 --
137608 -- bulk performance
137609 --
137610 l_balance_type_code           VARCHAR2(1);
137611 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
137612 l_log_module                  VARCHAR2(240);
137613 
137614 --
137615 -- Upgrade strategy
137616 --
137617 l_actual_upg_option           VARCHAR2(1);
137618 l_enc_upg_option           VARCHAR2(1);
137619 
137620 --
137621 BEGIN
137622 --
137623 IF g_log_enabled THEN
137624       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_249';
137625 END IF;
137626 --
137627 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137628 
137629       trace
137630          (p_msg      => 'BEGIN of AcctLineType_249'
137631          ,p_level    => C_LEVEL_PROCEDURE
137632          ,p_module   => l_log_module);
137633 
137634 END IF;
137635 --
137636 l_component_type             := 'AMB_JLT';
137637 l_component_code             := 'WO_VAR_OFFSET_ACCRUAL';
137638 l_component_type_code        := 'S';
137639 l_component_appl_id          :=  707;
137640 l_amb_context_code           := 'DEFAULT';
137641 l_entity_code                := 'WO_ACCOUNTING_EVENTS';
137642 l_event_class_code           := 'ACCRUAL_WRITE_OFF';
137643 l_event_type_code            := 'ACCRUAL_WRITE_OFF_ALL';
137644 l_line_definition_owner_code := 'S';
137645 l_line_definition_code       := 'ACCRUAL_WRITE_OFF';
137646 --
137647 l_balance_type_code          := 'A';
137648 l_segment                     := NULL;
137649 l_ccid                        := NULL;
137650 l_adr_transaction_coa_id      := NULL;
137651 l_adr_accounting_coa_id       := NULL;
137652 l_adr_flexfield_segment_code  := NULL;
137653 l_adr_flex_value_set_id       := NULL;
137654 l_adr_value_type_code         := NULL;
137655 l_adr_value_combination_id    := NULL;
137656 l_adr_value_segment_code      := NULL;
137657 
137658 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
137659 l_bflow_class_code           := '';    -- 4219869 Business Flow
137660 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
137661 l_budgetary_control_flag     := 'N';
137662 
137663 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
137664 l_bflow_applied_to_amt       := NULL; -- 5132302
137665 l_entered_amt_idx            := NULL;          -- 4262811
137666 l_accted_amt_idx             := NULL;          -- 4262811
137667 l_acc_rev_flag               := NULL;          -- 4262811
137668 l_accrual_line_num           := NULL;          -- 4262811
137669 l_tmp_amt                    := NULL;          -- 4262811
137670 --
137671  
137672 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
137673     l_balance_type_code <> 'B' THEN
137674 IF NVL(p_source_25,9E125) =  2
137675  THEN 
137676 
137677    --
137678    XLA_AE_LINES_PKG.SetNewLine;
137679 
137680    p_balance_type_code          := l_balance_type_code;
137681    -- set the flag so later we will know whether the gain loss line needs to be created
137682    
137683    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
137684      p_actual_flag :='A';
137685    END IF;
137686 
137687    --
137688    -- bulk performance
137689    --
137690    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
137691                                       p_header_num   => 0); -- 4262811
137692    --
137693    -- set accounting line options
137694    --
137695    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
137696            p_natural_side_code          => 'C'
137697          , p_gain_or_loss_flag          => 'N'
137698          , p_gl_transfer_mode_code      => 'S'
137699          , p_acct_entry_type_code       => 'A'
137700          , p_switch_side_flag           => 'Y'
137701          , p_merge_duplicate_code       => 'N'
137702          );
137703    --
137704    l_acc_rev_natural_side_code := 'D';  -- 4262811
137705    -- 
137706    --
137707    -- set accounting line type info
137708    --
137709    xla_ae_lines_pkg.SetAcctLineType
137710       (p_component_type             => l_component_type
137711       ,p_event_type_code            => l_event_type_code
137712       ,p_line_definition_owner_code => l_line_definition_owner_code
137713       ,p_line_definition_code       => l_line_definition_code
137714       ,p_accounting_line_code       => l_component_code
137715       ,p_accounting_line_type_code  => l_component_type_code
137716       ,p_accounting_line_appl_id    => l_component_appl_id
137717       ,p_amb_context_code           => l_amb_context_code
137718       ,p_entity_code                => l_entity_code
137719       ,p_event_class_code           => l_event_class_code);
137720    --
137721    -- set accounting class
137722    --
137723    xla_ae_lines_pkg.SetAcctClass(
137724            p_accounting_class_code  => 'ACCRUAL'
137725          , p_ae_header_id           => l_ae_header_id
137726          );
137727 
137728    --
137729    -- set rounding class
137730    --
137731    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
137732                       'ACCRUAL';
137733 
137734    --
137735    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
137736    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
137737    --
137738    -- bulk performance
137739    --
137740    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
137741 
137742    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
137743       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
137744 
137745    -- 4955764
137746    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
137747       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
137748 
137749    -- 4458381 Public Sector Enh
137750    
137751    --
137752    -- set accounting attributes for the line type
137753    --
137754    l_entered_amt_idx := 3;
137755    l_accted_amt_idx  := 8;
137756    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
137757    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
137758    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_26);
137759    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
137760    l_rec_acct_attrs.array_char_value(2)  := p_source_12;
137761    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
137762    l_rec_acct_attrs.array_num_value(3)  := p_source_18;
137763    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
137764    l_rec_acct_attrs.array_char_value(4)  := p_source_15;
137765    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
137766    l_rec_acct_attrs.array_date_value(5)  := p_source_19;
137767    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
137768    l_rec_acct_attrs.array_num_value(6)  := p_source_20;
137769    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
137770    l_rec_acct_attrs.array_char_value(7)  := p_source_21;
137771    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
137772    l_rec_acct_attrs.array_num_value(8)  := p_source_22;
137773 
137774    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
137775    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
137776 
137777    ---------------------------------------------------------------------------------------------------------------
137778    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
137779    ---------------------------------------------------------------------------------------------------------------
137780    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
137781 
137782    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137783    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137784 
137785    IF xla_accounting_cache_pkg.GetValueChar
137786          (p_source_code         => 'LEDGER_CATEGORY_CODE'
137787          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
137788    AND l_bflow_method_code = 'PRIOR_ENTRY'
137789 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
137790    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
137791          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
137792        )
137793    THEN
137794          xla_ae_lines_pkg.BflowUpgEntry
137795            (p_business_method_code    => l_bflow_method_code
137796            ,p_business_class_code     => l_bflow_class_code
137797            ,p_balance_type            => l_balance_type_code);
137798    ELSE
137799       NULL;
137800 -- No business flow processing for business flow method of NONE.
137801    END IF;
137802 
137803    --
137804    -- call analytical criteria
137805    --
137806    
137807    --
137808    -- call description
137809    --
137810    -- No description or it is inherited.
137811    --
137812    -- call ADRs
137813    -- Bug 4922099
137814    --
137815    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137816         (NVL(l_actual_upg_option, 'N') = 'O') OR
137817         (NVL(l_enc_upg_option, 'N') = 'O')
137818       )
137819    THEN
137820    NULL;
137821    --
137822    --
137823    
137824   l_ccid := AcctDerRule_1(
137825            p_application_id           => p_application_id
137826          , p_ae_header_id             => l_ae_header_id 
137827 , p_source_1 => p_source_1
137828          , x_transaction_coa_id       => l_adr_transaction_coa_id
137829          , x_accounting_coa_id        => l_adr_accounting_coa_id
137830          , x_value_type_code          => l_adr_value_type_code
137831          , p_side                     => 'NA'
137832    );
137833 
137834    xla_ae_lines_pkg.set_ccid(
137835     p_code_combination_id          => l_ccid
137836   , p_value_type_code              => l_adr_value_type_code
137837   , p_transaction_coa_id           => l_adr_transaction_coa_id
137838   , p_accounting_coa_id            => l_adr_accounting_coa_id
137839   , p_adr_code                     => 'CST_AWO_ACCRUAL'
137840   , p_adr_type_code                => 'S'
137841   , p_component_type               => l_component_type
137842   , p_component_code               => l_component_code
137843   , p_component_type_code          => l_component_type_code
137844   , p_component_appl_id            => l_component_appl_id
137845   , p_amb_context_code             => l_amb_context_code
137846   , p_side                         => 'NA'
137847   );
137848 
137849 
137850    --
137851    --
137852    END IF;
137853    --
137854    -- Bug 4922099
137855    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
137856           (NVL(l_enc_upg_option, 'N') = 'O')
137857         ) AND
137858         (l_bflow_method_code = 'PRIOR_ENTRY')
137859       )
137860    THEN
137861       IF
137862       --
137863       1 = 2
137864       --
137865       THEN
137866       xla_accounting_err_pkg.build_message
137867                                     (p_appli_s_name            => 'XLA'
137868                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137869                                     ,p_token_1                 => 'LINE_NUMBER'
137870                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
137871                                     ,p_token_2                 => 'LINE_TYPE_NAME'
137872                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
137873                                                                              l_component_type
137874                                                                             ,l_component_code
137875                                                                             ,l_component_type_code
137876                                                                             ,l_component_appl_id
137877                                                                             ,l_amb_context_code
137878                                                                             ,l_entity_code
137879                                                                             ,l_event_class_code
137880                                                                            )
137881                                     ,p_token_3                 => 'OWNER'
137882                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
137883                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
137884                                                                           ,p_lookup_code    => l_component_type_code
137885                                                                          )
137886                                     ,p_token_4                 => 'PRODUCT_NAME'
137887                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
137888                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
137889                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
137890                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
137891                                     ,p_ae_header_id            =>  NULL
137892                                        );
137893 
137894         IF (C_LEVEL_ERROR>= g_log_level) THEN
137895                  trace
137896                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137897                       ,p_level    => C_LEVEL_ERROR
137898                       ,p_module   => l_log_module);
137899         END IF;
137900       END IF;
137901    END IF;
137902    --
137903    --
137904    ------------------------------------------------------------------------------------------------
137905    -- 4219869 Business Flow
137906    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
137907    -- Prior Entry.  Currently, the following code is always generated.
137908    ------------------------------------------------------------------------------------------------
137909    XLA_AE_LINES_PKG.ValidateCurrentLine;
137910 
137911    ------------------------------------------------------------------------------------
137912    -- 4219869 Business Flow
137913    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
137914    ------------------------------------------------------------------------------------
137915    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
137916 
137917    ----------------------------------------------------------------------------------
137918    -- 4219869 Business Flow
137919    -- Update journal entry status -- Need to generate this within IF <condition>
137920    ----------------------------------------------------------------------------------
137921    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
137922          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
137923          ,p_balance_type_code => l_balance_type_code
137924          );
137925 
137926    -------------------------------------------------------------------------------------------
137927    -- 4262811 - Generate the Accrual Reversal lines
137928    -------------------------------------------------------------------------------------------
137929    BEGIN
137930       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
137931                               (g_array_event(p_event_id).array_value_num('header_index'));
137932       IF l_acc_rev_flag IS NULL THEN
137933          l_acc_rev_flag := 'N';
137934       END IF;
137935    EXCEPTION
137936       WHEN OTHERS THEN
137937          l_acc_rev_flag := 'N';
137938    END;
137939    --
137940    IF (l_acc_rev_flag = 'Y') THEN
137941 
137942        -- 4645092  ------------------------------------------------------------------------------
137943        -- To allow MPA report to determine if it should generate report process
137944        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
137945        ------------------------------------------------------------------------------------------
137946 
137947        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
137948        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
137949    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
137950    -- call ADRs
137951    -- Bug 4922099
137952    --
137953    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137954         (NVL(l_actual_upg_option, 'N') = 'O') OR
137955         (NVL(l_enc_upg_option, 'N') = 'O')
137956       )
137957    THEN
137958    NULL;
137959    --
137960    --
137961    
137962   l_ccid := AcctDerRule_1(
137963            p_application_id           => p_application_id
137964          , p_ae_header_id             => l_ae_header_id 
137965 , p_source_1 => p_source_1
137966          , x_transaction_coa_id       => l_adr_transaction_coa_id
137967          , x_accounting_coa_id        => l_adr_accounting_coa_id
137968          , x_value_type_code          => l_adr_value_type_code
137969          , p_side                     => 'NA'
137970    );
137971 
137972    xla_ae_lines_pkg.set_ccid(
137973     p_code_combination_id          => l_ccid
137974   , p_value_type_code              => l_adr_value_type_code
137975   , p_transaction_coa_id           => l_adr_transaction_coa_id
137976   , p_accounting_coa_id            => l_adr_accounting_coa_id
137977   , p_adr_code                     => 'CST_AWO_ACCRUAL'
137978   , p_adr_type_code                => 'S'
137979   , p_component_type               => l_component_type
137980   , p_component_code               => l_component_code
137981   , p_component_type_code          => l_component_type_code
137982   , p_component_appl_id            => l_component_appl_id
137983   , p_amb_context_code             => l_amb_context_code
137984   , p_side                         => 'NA'
137985   );
137986 
137987 
137988    --
137989    --
137990    END IF;
137991 
137992        --
137993        -- Update the line information that should be overwritten
137994        --
137995        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
137996                                          p_header_num   => 1);
137997        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
137998 
137999        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
138000 
138001        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
138002           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
138003        END IF;
138004 
138005       --
138006       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
138007       --
138008       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
138009           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
138010       ELSE
138011           ---------------------------------------------------------------------------------------------------
138012           -- 4262811a Switch Sign
138013           ---------------------------------------------------------------------------------------------------
138014           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
138015           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
138016                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138017           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
138018                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138019           -- 5132302
138020           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
138021                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138022 
138023       END IF;
138024 
138025       -- 4955764
138026       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
138027       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
138028 
138029 
138030       XLA_AE_LINES_PKG.ValidateCurrentLine;
138031       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
138032 
138033       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
138034                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
138035                ,p_balance_type_code => l_balance_type_code);
138036 
138037    END IF;
138038 
138039    -----------------------------------------------------------------------------------------
138040    -- 4262811 Multiperiod Accounting
138041    -----------------------------------------------------------------------------------------
138042      -- No MPA option is assigned.
138043 
138044 
138045 END IF;
138046 END IF;
138047 --
138048 
138049 --
138050 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138051    trace
138052       (p_msg      => 'END of AcctLineType_249'
138053       ,p_level    => C_LEVEL_PROCEDURE
138054       ,p_module   => l_log_module);
138055 END IF;
138056 --
138057 EXCEPTION
138058   WHEN xla_exceptions_pkg.application_exception THEN
138059       RAISE;
138060   WHEN OTHERS THEN
138061        xla_exceptions_pkg.raise_message
138062            (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_249');
138063 END AcctLineType_249;
138064 --
138065 
138066 ---------------------------------------
138067 --
138068 -- PRIVATE PROCEDURE
138069 --         insert_sources_250
138070 --
138071 ----------------------------------------
138072 --
138073 PROCEDURE insert_sources_250(
138074                                 p_target_ledger_id       IN NUMBER
138075                               , p_language               IN VARCHAR2
138076                               , p_sla_ledger_id          IN NUMBER
138077                               , p_pad_start_date         IN DATE
138078                               , p_pad_end_date           IN DATE
138079                          )
138080 IS
138081 
138082 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ABSORPTION_ALL';
138083 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'ABSORPTION';
138084 p_apps_owner                   VARCHAR2(30);
138085 l_log_module                   VARCHAR2(240);
138086 BEGIN
138087 IF g_log_enabled THEN
138088       l_log_module := C_DEFAULT_MODULE||'.insert_sources_250';
138089 END IF;
138090 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138091 
138092       trace
138093          (p_msg      => 'BEGIN of insert_sources_250'
138094          ,p_level    => C_LEVEL_PROCEDURE
138095          ,p_module   => l_log_module);
138096 
138097 END IF;
138098 
138099 -- select APPS owner
138100 SELECT oracle_username
138101   INTO p_apps_owner
138102   FROM fnd_oracle_userid
138103  WHERE read_only_flag = 'U'
138104 ;
138105 
138106 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138107       trace
138108          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
138109                         ' - p_language = '||p_language||
138110                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
138111                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
138112                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
138113                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
138114          ,p_level    => C_LEVEL_STATEMENT
138115          ,p_module   => l_log_module);
138116 END IF;
138117 
138118 
138119 --
138120 INSERT INTO xla_diag_sources --hdr2
138121 (
138122         event_id
138123       , ledger_id
138124       , sla_ledger_id
138125       , description_language
138126       , object_name
138127       , object_type_code
138128       , line_number
138129       , source_application_id
138130       , source_type_code
138131       , source_code
138132       , source_value
138133       , source_meaning
138134       , created_by
138135       , creation_date
138136       , last_update_date
138137       , last_updated_by
138138       , last_update_login
138139       , program_update_date
138140       , program_application_id
138141       , program_id
138142       , request_id
138143 )
138144 SELECT
138145         event_id
138146       , p_target_ledger_id
138147       , p_sla_ledger_id
138148       , p_language
138149       , object_name
138150       , object_type_code
138151       , line_number
138152       , source_application_id
138153       , source_type_code
138154       , source_code
138155       , SUBSTR(source_value ,1,1996)
138156       , SUBSTR(source_meaning ,1,200)
138157       , xla_environment_pkg.g_Usr_Id
138158       , TRUNC(SYSDATE)
138159       , TRUNC(SYSDATE)
138160       , xla_environment_pkg.g_Usr_Id
138161       , xla_environment_pkg.g_Login_Id
138162       , TRUNC(SYSDATE)
138163       , xla_environment_pkg.g_Prog_Appl_Id
138164       , xla_environment_pkg.g_Prog_Id
138165       , xla_environment_pkg.g_Req_Id
138166   FROM (
138167        SELECT xet.event_id                  event_id
138168             , 0                          line_number
138169             , CASE r
138170                WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V' 
138171                 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V' 
138172                 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V' 
138173                 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V' 
138174                 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V' 
138175                 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V' 
138176                 
138177                ELSE null
138178               END                           object_name
138179             , CASE r
138180                 WHEN 1 THEN 'HEADER' 
138181                 WHEN 2 THEN 'HEADER' 
138182                 WHEN 3 THEN 'HEADER' 
138183                 WHEN 4 THEN 'HEADER' 
138184                 WHEN 5 THEN 'HEADER' 
138185                 WHEN 6 THEN 'HEADER' 
138186                 
138187                 ELSE null
138188               END                           object_type_code
138189             , CASE r
138190                 WHEN 1 THEN '707' 
138191                 WHEN 2 THEN '707' 
138192                 WHEN 3 THEN '707' 
138193                 WHEN 4 THEN '707' 
138194                 WHEN 5 THEN '707' 
138195                 WHEN 6 THEN '707' 
138196                 
138197                 ELSE null
138198               END                           source_application_id
138199             , 'S'             source_type_code
138200             , CASE r
138201                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
138202                 WHEN 2 THEN 'CURRENCY_CODE' 
138203                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
138204                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
138205                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
138206                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
138207                 
138208                 ELSE null
138209               END                           source_code
138210             , CASE r
138211                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
138212                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
138213                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
138214                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
138215                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
138216                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
138217                 
138218                 ELSE null
138219               END                           source_value
138220             , CASE r
138221                 WHEN 1 THEN fvl12.meaning
138222                 WHEN 6 THEN fvl38.meaning
138223                 
138224                 ELSE null
138225               END               source_meaning
138226          FROM xla_events_gt     xet  
138227       , CST_XLA_WIP_HEADERS_V  h1
138228   , fnd_lookup_values    fvl12
138229   , fnd_lookup_values    fvl38
138230              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
138231          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
138232            AND xet.event_class_code = C_EVENT_CLASS_CODE
138233               AND h1.event_id = xet.event_id
138234    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
138235   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
138236   AND fvl12.view_application_id(+) = 700
138237   AND fvl12.language(+)            = USERENV('LANG')
138238      AND fvl38.lookup_type(+)         = 'YES_NO'
138239   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
138240   AND fvl38.view_application_id(+) = 0
138241   AND fvl38.language(+)            = USERENV('LANG')
138242   
138243 )
138244 ;
138245 --
138246 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138247 
138248       trace
138249          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
138250          ,p_level    => C_LEVEL_STATEMENT
138251          ,p_module   => l_log_module);
138252 
138253 END IF;
138254 --
138255 
138256 
138257 
138258 --
138259 INSERT INTO xla_diag_sources  --line2
138260 (
138261         event_id
138262       , ledger_id
138263       , sla_ledger_id
138264       , description_language
138265       , object_name
138266       , object_type_code
138267       , line_number
138268       , source_application_id
138269       , source_type_code
138270       , source_code
138271       , source_value
138272       , source_meaning
138273       , created_by
138274       , creation_date
138275       , last_update_date
138276       , last_updated_by
138277       , last_update_login
138278       , program_update_date
138279       , program_application_id
138280       , program_id
138281       , request_id
138282 )
138283 SELECT  event_id
138284       , p_target_ledger_id
138285       , p_sla_ledger_id
138286       , p_language
138287       , object_name
138288       , object_type_code
138289       , line_number
138290       , source_application_id
138291       , source_type_code
138292       , source_code
138293       , SUBSTR(source_value,1,1996)
138294       , SUBSTR(source_meaning ,1,200)
138295       , xla_environment_pkg.g_Usr_Id
138296       , TRUNC(SYSDATE)
138297       , TRUNC(SYSDATE)
138298       , xla_environment_pkg.g_Usr_Id
138299       , xla_environment_pkg.g_Login_Id
138300       , TRUNC(SYSDATE)
138301       , xla_environment_pkg.g_Prog_Appl_Id
138302       , xla_environment_pkg.g_Prog_Id
138303       , xla_environment_pkg.g_Req_Id
138304   FROM (
138305        SELECT xet.event_id                  event_id
138306             , l2.line_number                 line_number
138307             , CASE r
138308                WHEN 1 THEN 'CST_XLA_WIP_LINES_V' 
138309                 WHEN 2 THEN 'CST_XLA_WIP_LINES_V' 
138310                 WHEN 3 THEN 'CST_XLA_WIP_LINES_V' 
138311                 WHEN 4 THEN 'CST_XLA_WIP_LINES_V' 
138312                 WHEN 5 THEN 'CST_XLA_WIP_LINES_V' 
138313                 
138314                ELSE null
138315               END                           object_name
138316             , CASE r
138317                 WHEN 1 THEN 'LINE' 
138318                 WHEN 2 THEN 'LINE' 
138319                 WHEN 3 THEN 'LINE' 
138320                 WHEN 4 THEN 'LINE' 
138321                 WHEN 5 THEN 'LINE' 
138322                 
138323                 ELSE null
138324               END                           object_type_code
138325             , CASE r
138326                 WHEN 1 THEN '707' 
138327                 WHEN 2 THEN '707' 
138328                 WHEN 3 THEN '707' 
138329                 WHEN 4 THEN '707' 
138330                 WHEN 5 THEN '707' 
138331                 
138332                 ELSE null
138333               END                           source_application_id
138334             , 'S'             source_type_code
138335             , CASE r
138336                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
138337                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
138338                 WHEN 3 THEN 'ENTERED_AMOUNT' 
138339                 WHEN 4 THEN 'ACCOUNTED_AMOUNT' 
138340                 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
138341                 
138342                 ELSE null
138343               END                           source_code
138344             , CASE r
138345                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
138346                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
138347                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
138348                 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
138349                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
138350                 
138351                 ELSE null
138352               END                           source_value
138353             , null              source_meaning
138354          FROM  xla_events_gt     xet  
138355         , CST_XLA_WIP_LINES_V  l2
138356             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
138357         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
138358           AND xet.event_class_code = C_EVENT_CLASS_CODE
138359             AND l2.event_id          = xet.event_id
138360 
138361 )
138362 ;
138363 --
138364 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138365 
138366       trace
138367          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
138368          ,p_level    => C_LEVEL_STATEMENT
138369          ,p_module   => l_log_module);
138370 
138371 END IF;
138372 
138373 
138374 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138375       trace
138376          (p_msg      => 'END of insert_sources_250'
138377          ,p_level    => C_LEVEL_PROCEDURE
138378          ,p_module   => l_log_module);
138379 END IF;
138380 EXCEPTION
138381   WHEN xla_exceptions_pkg.application_exception THEN
138382       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
138383             trace
138384                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
138385                ,p_level    => C_LEVEL_EXCEPTION
138386                ,p_module   => l_log_module);
138387       END IF;
138388       RAISE;
138389   WHEN OTHERS THEN
138390       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
138391             trace
138392                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
138393                ,p_level    => C_LEVEL_EXCEPTION
138394                ,p_module   => l_log_module);
138395        END IF;
138396        xla_exceptions_pkg.raise_message
138397            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_250');
138398 END insert_sources_250;
138399 --
138400 
138401 ---------------------------------------
138402 --
138403 -- PRIVATE FUNCTION
138404 --         EventClass_250
138405 --
138406 ----------------------------------------
138407 --
138408 FUNCTION EventClass_250
138409        (p_application_id         IN NUMBER
138410        ,p_base_ledger_id         IN NUMBER
138411        ,p_target_ledger_id       IN NUMBER
138412        ,p_language               IN VARCHAR2
138413        ,p_currency_code          IN VARCHAR2
138414        ,p_sla_ledger_id          IN NUMBER
138415        ,p_pad_start_date         IN DATE
138416        ,p_pad_end_date           IN DATE
138417        ,p_primary_ledger_id      IN NUMBER)
138418 RETURN BOOLEAN IS
138419 --
138420 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ABSORPTION_ALL';
138421 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'ABSORPTION';
138422 
138423 l_calculate_acctd_flag   VARCHAR2(1) :='N';
138424 l_calculate_g_l_flag     VARCHAR2(1) :='N';
138425 --
138426 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138427 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138428 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
138429 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138430 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138431 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
138432 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
138433 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138434 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138435 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138436 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138437 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138438 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138439 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138440 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138441 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138442 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138443 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138444 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138445 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138446 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138447 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138448 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
138449 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
138450 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
138451 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
138452 
138453 l_event_id                             NUMBER;
138454 l_previous_event_id                    NUMBER;
138455 l_first_event_id                       NUMBER;
138456 l_last_event_id                        NUMBER;
138457 
138458 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
138459 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
138460 --
138461 --
138462 l_result                    BOOLEAN := TRUE;
138463 l_rows                      NUMBER  := 1000;
138464 l_event_type_name           VARCHAR2(80) := 'All';
138465 l_event_class_name          VARCHAR2(80) := 'WIP Absorption';
138466 l_description               VARCHAR2(4000);
138467 l_transaction_reversal      NUMBER;
138468 l_ae_header_id              NUMBER;
138469 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
138470 l_log_module                VARCHAR2(240);
138471 --
138472 l_acct_reversal_source      VARCHAR2(30);
138473 l_trx_reversal_source       VARCHAR2(30);
138474 
138475 l_continue_with_lines       BOOLEAN := TRUE;
138476 --
138477 l_acc_rev_gl_date_source    DATE;                      -- 4262811
138478 --
138479 type t_array_event_id is table of number index by binary_integer;
138480 
138481 l_rec_array_event                    t_rec_array_event;
138482 l_null_rec_array_event               t_rec_array_event;
138483 l_array_ae_header_id                 xla_number_array_type;
138484 l_actual_flag                        VARCHAR2(1) := NULL;
138485 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
138486 l_balance_type_code                  VARCHAR2(1) :=NULL;
138487 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
138488 
138489 --
138490 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
138491 --
138492 
138493 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
138494 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
138495 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
138496 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
138497 TYPE t_array_source_21 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
138498 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
138499 
138500 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
138501 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
138502 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
138503 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
138504 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
138505 
138506 l_array_source_12              t_array_source_12;
138507 l_array_source_12_meaning      t_array_lookup_meaning;
138508 l_array_source_15              t_array_source_15;
138509 l_array_source_19              t_array_source_19;
138510 l_array_source_20              t_array_source_20;
138511 l_array_source_21              t_array_source_21;
138512 l_array_source_38              t_array_source_38;
138513 l_array_source_38_meaning      t_array_lookup_meaning;
138514 
138515 l_array_source_4      t_array_source_4;
138516 l_array_source_11      t_array_source_11;
138517 l_array_source_18      t_array_source_18;
138518 l_array_source_22      t_array_source_22;
138519 l_array_source_24      t_array_source_24;
138520 
138521 --
138522 CURSOR header_cur
138523 IS
138524 SELECT /*+ leading(xet) cardinality(xet,1) */
138525 -- Event Class Code: ABSORPTION
138526     xet.entity_id
138527    ,xet.legal_entity_id
138528    ,xet.entity_code
138529    ,xet.transaction_number
138530    ,xet.event_id
138531    ,xet.event_class_code
138532    ,xet.event_type_code
138533    ,xet.event_number
138534    ,xet.event_date
138535    ,xet.transaction_date
138536    ,xet.reference_num_1
138537    ,xet.reference_num_2
138538    ,xet.reference_num_3
138539    ,xet.reference_num_4
138540    ,xet.reference_char_1
138541    ,xet.reference_char_2
138542    ,xet.reference_char_3
138543    ,xet.reference_char_4
138544    ,xet.reference_date_1
138545    ,xet.reference_date_2
138546    ,xet.reference_date_3
138547    ,xet.reference_date_4
138548    ,xet.event_created_by
138549    ,xet.budgetary_control_flag 
138550   , h1.DISTRIBUTION_TYPE    source_12
138551   , fvl12.meaning   source_12_meaning
138552   , h1.CURRENCY_CODE    source_15
138553   , h1.CURRENCY_CONVERSION_DATE    source_19
138554   , h1.CURRENCY_CONVERSION_RATE    source_20
138555   , h1.CURRENCY_CONVERSION_TYPE    source_21
138556   , h1.TRANSFER_TO_GL_INDICATOR    source_38
138557   , fvl38.meaning   source_38_meaning
138558   FROM xla_events_gt     xet 
138559   , CST_XLA_WIP_HEADERS_V  h1
138560   , fnd_lookup_values    fvl12
138561   , fnd_lookup_values    fvl38
138562  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
138563    and xet.event_class_code = C_EVENT_CLASS_CODE
138564    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
138565    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
138566   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
138567   AND fvl12.view_application_id(+) = 700
138568   AND fvl12.language(+)            = USERENV('LANG')
138569      AND fvl38.lookup_type(+)         = 'YES_NO'
138570   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
138571   AND fvl38.view_application_id(+) = 0
138572   AND fvl38.language(+)            = USERENV('LANG')
138573   
138574  ORDER BY event_id
138575 ;
138576 
138577 
138578 --
138579 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
138580 IS
138581 SELECT  /*+ leading(xet) cardinality(xet,1) */
138582 -- Event Class Code: ABSORPTION
138583     xet.entity_id
138584    ,xet.legal_entity_id
138585    ,xet.entity_code
138586    ,xet.transaction_number
138587    ,xet.event_id
138588    ,xet.event_class_code
138589    ,xet.event_type_code
138590    ,xet.event_number
138591    ,xet.event_date
138592    ,xet.transaction_date
138593    ,xet.reference_num_1
138594    ,xet.reference_num_2
138595    ,xet.reference_num_3
138596    ,xet.reference_num_4
138597    ,xet.reference_char_1
138598    ,xet.reference_char_2
138599    ,xet.reference_char_3
138600    ,xet.reference_char_4
138601    ,xet.reference_date_1
138602    ,xet.reference_date_2
138603    ,xet.reference_date_3
138604    ,xet.reference_date_4
138605    ,xet.event_created_by
138606    ,xet.budgetary_control_flag
138607  , l2.LINE_NUMBER  
138608   , l2.CODE_COMBINATION_ID    source_4
138609   , l2.DISTRIBUTION_IDENTIFIER    source_11
138610   , l2.ENTERED_AMOUNT    source_18
138611   , l2.ACCOUNTED_AMOUNT    source_22
138612   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
138613   FROM xla_events_gt     xet 
138614   , CST_XLA_WIP_LINES_V  l2
138615  WHERE xet.event_id between x_first_event_id and x_last_event_id
138616    and xet.event_date between p_pad_start_date and p_pad_end_date
138617    and xet.event_class_code = C_EVENT_CLASS_CODE
138618    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
138619 ;
138620 
138621 --
138622 BEGIN
138623 IF g_log_enabled THEN
138624    l_log_module := C_DEFAULT_MODULE||'.EventClass_250';
138625 END IF;
138626 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138627    trace
138628       (p_msg      => 'BEGIN of EventClass_250'
138629       ,p_level    => C_LEVEL_PROCEDURE
138630       ,p_module   => l_log_module);
138631 END IF;
138632 
138633 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138634    trace
138635       (p_msg      => 'p_application_id = '||p_application_id||
138636                      ' - p_base_ledger_id = '||p_base_ledger_id||
138637                      ' - p_target_ledger_id  = '||p_target_ledger_id||
138638                      ' - p_language = '||p_language||
138639                      ' - p_currency_code = '||p_currency_code||
138640                      ' - p_sla_ledger_id = '||p_sla_ledger_id
138641       ,p_level    => C_LEVEL_STATEMENT
138642       ,p_module   => l_log_module);
138643 END IF;
138644 --
138645 -- initialze arrays
138646 --
138647 g_array_event.DELETE;
138648 l_rec_array_event := l_null_rec_array_event;
138649 --
138650 --------------------------------------
138651 -- 4262811 Initialze MPA Line Number
138652 --------------------------------------
138653 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
138654 
138655 --
138656 
138657 --
138658 OPEN header_cur;
138659 --
138660 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138661    trace
138662    (p_msg      => 'SQL - FETCH header_cur'
138663    ,p_level    => C_LEVEL_STATEMENT
138664    ,p_module   => l_log_module);
138665 END IF;
138666 --
138667 LOOP
138668 FETCH header_cur BULK COLLECT INTO
138669         l_array_entity_id
138670       , l_array_legal_entity_id
138671       , l_array_entity_code
138672       , l_array_transaction_num
138673       , l_array_event_id
138674       , l_array_class_code
138675       , l_array_event_type
138676       , l_array_event_number
138677       , l_array_event_date
138678       , l_array_transaction_date
138679       , l_array_reference_num_1
138680       , l_array_reference_num_2
138681       , l_array_reference_num_3
138682       , l_array_reference_num_4
138683       , l_array_reference_char_1
138684       , l_array_reference_char_2
138685       , l_array_reference_char_3
138686       , l_array_reference_char_4
138687       , l_array_reference_date_1
138688       , l_array_reference_date_2
138689       , l_array_reference_date_3
138690       , l_array_reference_date_4
138691       , l_array_event_created_by
138692       , l_array_budgetary_control_flag 
138693       , l_array_source_12
138694       , l_array_source_12_meaning
138695       , l_array_source_15
138696       , l_array_source_19
138697       , l_array_source_20
138698       , l_array_source_21
138699       , l_array_source_38
138700       , l_array_source_38_meaning
138701       LIMIT l_rows;
138702 --
138703 IF (C_LEVEL_EVENT >= g_log_level) THEN
138704    trace
138705    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
138706    ,p_level    => C_LEVEL_EVENT
138707    ,p_module   => l_log_module);
138708 END IF;
138709 --
138710 EXIT WHEN l_array_entity_id.COUNT = 0;
138711 
138712 -- initialize arrays
138713 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
138714 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
138715 
138716 --
138717 -- Bug 4458708
138718 --
138719 XLA_AE_LINES_PKG.g_LineNumber := 0;
138720 
138721 
138722 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
138723 g_last_hdr_idx := l_array_event_id.LAST;
138724 --
138725 -- loop for the headers. Each iteration is for each header extract row
138726 -- fetched in header cursor
138727 --
138728 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
138729 
138730 --
138731 -- set event info as cache for other routines to refer event attributes
138732 --
138733 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
138734    (p_application_id           => p_application_id
138735    ,p_primary_ledger_id        => p_primary_ledger_id
138736    ,p_base_ledger_id           => p_base_ledger_id
138737    ,p_target_ledger_id         => p_target_ledger_id
138738    ,p_entity_id                => l_array_entity_id(hdr_idx)
138739    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
138740    ,p_entity_code              => l_array_entity_code(hdr_idx)
138741    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
138742    ,p_event_id                 => l_array_event_id(hdr_idx)
138743    ,p_event_class_code         => l_array_class_code(hdr_idx)
138744    ,p_event_type_code          => l_array_event_type(hdr_idx)
138745    ,p_event_number             => l_array_event_number(hdr_idx)
138746    ,p_event_date               => l_array_event_date(hdr_idx)
138747    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
138748    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
138749    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
138750    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
138751    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
138752    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
138753    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
138754    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
138755    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
138756    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
138757    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
138758    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
138759    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
138760    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
138761    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
138762 
138763 --
138764 -- set the status of entry to C_VALID (0)
138765 --
138766 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
138767 
138768 --
138769 -- initialize a row for ae header
138770 --
138771 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
138772 
138773 l_event_id := l_array_event_id(hdr_idx);
138774 
138775 --
138776 -- storing the hdr_idx for event. May be used by line cursor.
138777 --
138778 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
138779 
138780 --
138781 -- store sources from header extract. This can be improved to
138782 -- store only those sources from header extract that may be used in lines
138783 --
138784 
138785 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
138786 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
138787 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
138788 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
138789 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
138790 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
138791 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
138792 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
138793 
138794 --
138795 -- initilaize the status of ae headers for diffrent balance types
138796 -- the status is initialised to C_NOT_CREATED (2)
138797 --
138798 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
138799 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
138800 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
138801 
138802 --
138803 -- call api to validate and store accounting attributes for header
138804 --
138805 
138806 ------------------------------------------------------------
138807 -- Accrual Reversal : to get date for Standard Source (NONE)
138808 ------------------------------------------------------------
138809 l_acc_rev_gl_date_source := NULL;
138810 
138811      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
138812       l_rec_acct_attrs.array_date_value(1) := 
138813 xla_ae_sources_pkg.GetSystemSourceDate(
138814    p_source_code           => 'XLA_REFERENCE_DATE_1'
138815  , p_source_type_code      => 'Y'
138816  , p_source_application_id =>  602
138817 );
138818      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
138819       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
138820 
138821 
138822 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
138823 
138824 XLA_AE_HEADER_PKG.SetJeCategoryName;
138825 
138826 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
138827 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
138828 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
138829 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
138830 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
138831 
138832 
138833 -- No header level analytical criteria
138834 
138835 --
138836 --accounting attribute enhancement, bug 3612931
138837 --
138838 l_trx_reversal_source := SUBSTR(NULL, 1,30);
138839 
138840 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
138841    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
138842 
138843    xla_accounting_err_pkg.build_message
138844       (p_appli_s_name            => 'XLA'
138845       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
138846       ,p_token_1                 => 'ACCT_ATTR_NAME'
138847       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
138848       ,p_token_2                 => 'PRODUCT_NAME'
138849       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
138850       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
138851       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
138852       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
138853 
138854 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
138855    --
138856    -- following sets the accounting attributes needed to reverse
138857    -- accounting for a distributeion
138858    --
138859    xla_ae_lines_pkg.SetTrxReversalAttrs
138860       (p_event_id              => l_event_id
138861       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
138862       ,p_trx_reversal_source   => l_trx_reversal_source);
138863 
138864 END IF;
138865 
138866 
138867 ----------------------------------------------------------------
138868 -- 4262811 -  update the header statuses to invalid in need be
138869 ----------------------------------------------------------------
138870 --
138871 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
138872 
138873 
138874   -----------------------------------------------
138875   -- No accrual reversal for the event class/type
138876   -----------------------------------------------
138877 ----------------------------------------------------------------
138878 
138879 --
138880 -- this ends the header loop iteration for one bulk fetch
138881 --
138882 END LOOP;
138883 
138884 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
138885 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
138886 
138887 --
138888 -- insert dummy rows into lines gt table that were created due to
138889 -- transaction reversals
138890 --
138891 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
138892    l_result := XLA_AE_LINES_PKG.InsertLines;
138893 END IF;
138894 
138895 --
138896 -- reset the temp_line_num for each set of events fetched from header
138897 -- cursor rather than doing it for each new event in line cursor
138898 -- Bug 3939231
138899 --
138900 xla_ae_lines_pkg.g_temp_line_num := 0;
138901 
138902 
138903 
138904 --
138905 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
138906 --
138907 --
138908 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138909 
138910       trace
138911          (p_msg      => 'SQL - FETCH line_cur'
138912          ,p_level    => C_LEVEL_STATEMENT
138913          ,p_module   => l_log_module);
138914 
138915 END IF;
138916 --
138917 --
138918 LOOP
138919   --
138920   FETCH line_cur BULK COLLECT INTO
138921         l_array_entity_id
138922       , l_array_legal_entity_id
138923       , l_array_entity_code
138924       , l_array_transaction_num
138925       , l_array_event_id
138926       , l_array_class_code
138927       , l_array_event_type
138928       , l_array_event_number
138929       , l_array_event_date
138930       , l_array_transaction_date
138931       , l_array_reference_num_1
138932       , l_array_reference_num_2
138933       , l_array_reference_num_3
138934       , l_array_reference_num_4
138935       , l_array_reference_char_1
138936       , l_array_reference_char_2
138937       , l_array_reference_char_3
138938       , l_array_reference_char_4
138939       , l_array_reference_date_1
138940       , l_array_reference_date_2
138941       , l_array_reference_date_3
138942       , l_array_reference_date_4
138943       , l_array_event_created_by
138944       , l_array_budgetary_control_flag
138945       , l_array_extract_line_num 
138946       , l_array_source_4
138947       , l_array_source_11
138948       , l_array_source_18
138949       , l_array_source_22
138950       , l_array_source_24
138951       LIMIT l_rows;
138952 
138953   --
138954   IF (C_LEVEL_EVENT >= g_log_level) THEN
138955             trace
138956                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
138957                ,p_level    => C_LEVEL_EVENT
138958                ,p_module   => l_log_module);
138959   END IF;
138960   --
138961   EXIT WHEN l_array_entity_id.count = 0;
138962 
138963   XLA_AE_LINES_PKG.g_rec_lines := null;
138964 
138965 --
138966 -- Bug 4458708
138967 --
138968 XLA_AE_LINES_PKG.g_LineNumber := 0;
138969 --
138970 --
138971 
138972 FOR Idx IN 1..l_array_event_id.count LOOP
138973    --
138974    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
138975    --
138976    l_event_id := l_array_event_id(idx);  -- 5648433
138977 
138978    --
138979    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
138980    --
138981 
138982    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
138983              (g_array_event(l_event_id).array_value_num('header_index'))
138984          ,'N'
138985          ) <> 'Y'
138986    THEN
138987       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138988          trace
138989             (p_msg      => 'Trancaction revesal option is not Y '
138990             ,p_level    => C_LEVEL_STATEMENT
138991             ,p_module   => l_log_module);
138992       END IF;
138993 
138994 --
138995 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
138996 --
138997 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
138998 --
138999 -- set event info as cache for other routines to refer event attributes
139000 --
139001 
139002 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
139003    l_previous_event_id := l_event_id;
139004 
139005    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
139006       (p_application_id           => p_application_id
139007       ,p_primary_ledger_id        => p_primary_ledger_id
139008       ,p_base_ledger_id           => p_base_ledger_id
139009       ,p_target_ledger_id         => p_target_ledger_id
139010       ,p_entity_id                => l_array_entity_id(Idx)
139011       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
139012       ,p_entity_code              => l_array_entity_code(Idx)
139013       ,p_transaction_num          => l_array_transaction_num(Idx)
139014       ,p_event_id                 => l_array_event_id(Idx)
139015       ,p_event_class_code         => l_array_class_code(Idx)
139016       ,p_event_type_code          => l_array_event_type(Idx)
139017       ,p_event_number             => l_array_event_number(Idx)
139018       ,p_event_date               => l_array_event_date(Idx)
139019       ,p_transaction_date         => l_array_transaction_date(Idx)
139020       ,p_reference_num_1          => l_array_reference_num_1(Idx)
139021       ,p_reference_num_2          => l_array_reference_num_2(Idx)
139022       ,p_reference_num_3          => l_array_reference_num_3(Idx)
139023       ,p_reference_num_4          => l_array_reference_num_4(Idx)
139024       ,p_reference_char_1         => l_array_reference_char_1(Idx)
139025       ,p_reference_char_2         => l_array_reference_char_2(Idx)
139026       ,p_reference_char_3         => l_array_reference_char_3(Idx)
139027       ,p_reference_char_4         => l_array_reference_char_4(Idx)
139028       ,p_reference_date_1         => l_array_reference_date_1(Idx)
139029       ,p_reference_date_2         => l_array_reference_date_2(Idx)
139030       ,p_reference_date_3         => l_array_reference_date_3(Idx)
139031       ,p_reference_date_4         => l_array_reference_date_4(Idx)
139032       ,p_event_created_by         => l_array_event_created_by(Idx)
139033       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
139034        --
139035 END IF;
139036 
139037 
139038 
139039 --
139040 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
139041 
139042 l_acct_reversal_source := SUBSTR(NULL, 1,30);
139043 
139044 IF l_continue_with_lines THEN
139045    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
139046       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
139047 
139048       xla_accounting_err_pkg.build_message
139049          (p_appli_s_name            => 'XLA'
139050          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
139051          ,p_token_1                 => 'LINE_NUMBER'
139052          ,p_value_1                 => l_array_extract_line_num(Idx)
139053          ,p_token_2                 => 'PRODUCT_NAME'
139054          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
139055          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
139056          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
139057          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
139058 
139059    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
139060       --
139061       -- following sets the accounting attributes needed to reverse
139062       -- accounting for a distributeion
139063       --
139064 
139065       --
139066       -- 5217187
139067       --
139068       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
139069       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
139070                                        g_array_event(l_event_id).array_value_num('header_index'));
139071       --
139072       --
139073 
139074       -- No reversal code generated
139075 
139076       xla_ae_lines_pkg.SetAcctReversalAttrs
139077          (p_event_id             => l_event_id
139078          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
139079          ,p_calculate_acctd_flag => l_calculate_acctd_flag
139080          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
139081    END IF;
139082 
139083    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
139084        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
139085 
139086 --
139087 AcctLineType_46 (
139088  p_application_id  => p_application_id
139089  ,p_event_id     => l_event_id
139090  ,p_calculate_acctd_flag => l_calculate_acctd_flag
139091  ,p_calculate_g_l_flag => l_calculate_g_l_flag
139092  ,p_actual_flag => l_actual_flag
139093  ,p_balance_type_code => l_balance_type_code
139094  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
139095  
139096  , p_source_4 => l_array_source_4(Idx)
139097  , p_source_11 => l_array_source_11(Idx)
139098  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
139099  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
139100  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
139101  , p_source_18 => l_array_source_18(Idx)
139102  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
139103  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
139104  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
139105  , p_source_22 => l_array_source_22(Idx)
139106  , p_source_24 => l_array_source_24(Idx)
139107  );
139108 If(l_balance_type_code = 'A') THEN
139109   l_actual_gain_loss_ref := l_gain_or_loss_ref;
139110 END IF;
139111 
139112 --
139113 
139114 
139115 --
139116 AcctLineType_205 (
139117  p_application_id  => p_application_id
139118  ,p_event_id     => l_event_id
139119  ,p_calculate_acctd_flag => l_calculate_acctd_flag
139120  ,p_calculate_g_l_flag => l_calculate_g_l_flag
139121  ,p_actual_flag => l_actual_flag
139122  ,p_balance_type_code => l_balance_type_code
139123  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
139124  
139125  , p_source_4 => l_array_source_4(Idx)
139126  , p_source_11 => l_array_source_11(Idx)
139127  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
139128  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
139129  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
139130  , p_source_18 => l_array_source_18(Idx)
139131  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
139132  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
139133  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
139134  , p_source_22 => l_array_source_22(Idx)
139135  , p_source_24 => l_array_source_24(Idx)
139136  );
139137 If(l_balance_type_code = 'A') THEN
139138   l_actual_gain_loss_ref := l_gain_or_loss_ref;
139139 END IF;
139140 
139141 --
139142 
139143 
139144 --
139145 AcctLineType_236 (
139146  p_application_id  => p_application_id
139147  ,p_event_id     => l_event_id
139148  ,p_calculate_acctd_flag => l_calculate_acctd_flag
139149  ,p_calculate_g_l_flag => l_calculate_g_l_flag
139150  ,p_actual_flag => l_actual_flag
139151  ,p_balance_type_code => l_balance_type_code
139152  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
139153  
139154  , p_source_4 => l_array_source_4(Idx)
139155  , p_source_11 => l_array_source_11(Idx)
139156  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
139157  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
139158  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
139159  , p_source_18 => l_array_source_18(Idx)
139160  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
139161  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
139162  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
139163  , p_source_22 => l_array_source_22(Idx)
139164  , p_source_24 => l_array_source_24(Idx)
139165  );
139166 If(l_balance_type_code = 'A') THEN
139167   l_actual_gain_loss_ref := l_gain_or_loss_ref;
139168 END IF;
139169 
139170 --
139171 
139172 
139173 --
139174 AcctLineType_237 (
139175  p_application_id  => p_application_id
139176  ,p_event_id     => l_event_id
139177  ,p_calculate_acctd_flag => l_calculate_acctd_flag
139178  ,p_calculate_g_l_flag => l_calculate_g_l_flag
139179  ,p_actual_flag => l_actual_flag
139180  ,p_balance_type_code => l_balance_type_code
139181  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
139182  
139183  , p_source_4 => l_array_source_4(Idx)
139184  , p_source_11 => l_array_source_11(Idx)
139185  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
139186  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
139187  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
139188  , p_source_18 => l_array_source_18(Idx)
139189  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
139190  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
139191  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
139192  , p_source_22 => l_array_source_22(Idx)
139193  , p_source_24 => l_array_source_24(Idx)
139194  );
139195 If(l_balance_type_code = 'A') THEN
139196   l_actual_gain_loss_ref := l_gain_or_loss_ref;
139197 END IF;
139198 
139199 --
139200 
139201 
139202 --
139203 AcctLineType_241 (
139204  p_application_id  => p_application_id
139205  ,p_event_id     => l_event_id
139206  ,p_calculate_acctd_flag => l_calculate_acctd_flag
139207  ,p_calculate_g_l_flag => l_calculate_g_l_flag
139208  ,p_actual_flag => l_actual_flag
139209  ,p_balance_type_code => l_balance_type_code
139210  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
139211  
139212  , p_source_4 => l_array_source_4(Idx)
139213  , p_source_11 => l_array_source_11(Idx)
139214  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
139215  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
139216  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
139217  , p_source_18 => l_array_source_18(Idx)
139218  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
139219  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
139220  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
139221  , p_source_22 => l_array_source_22(Idx)
139222  , p_source_24 => l_array_source_24(Idx)
139223  );
139224 If(l_balance_type_code = 'A') THEN
139225   l_actual_gain_loss_ref := l_gain_or_loss_ref;
139226 END IF;
139227 
139228 --
139229 
139230       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
139231       -- or secondary ledger that has different currency with primary
139232       -- or alc that is calculated by sla
139233       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
139234             (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'))
139235 
139236 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
139237 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
139238           AND (l_actual_flag = 'A')) THEN
139239         XLA_AE_LINES_PKG.CreateGainOrLossLines(
139240           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
139241          ,p_application_id   => p_application_id
139242          ,p_amb_context_code => 'DEFAULT'
139243          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
139244          ,p_event_class_code => C_EVENT_CLASS_CODE
139245          ,p_event_type_code  => C_EVENT_TYPE_CODE
139246          
139247          ,p_gain_ccid        => -1
139248          ,p_loss_ccid        => -1
139249 
139250          ,p_actual_flag      => l_actual_flag
139251          ,p_enc_flag         => null
139252          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
139253          ,p_enc_g_l_ref      => null
139254          );
139255       END IF;
139256    END IF;
139257 END IF;
139258 
139259    ELSE
139260       --
139261       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
139262       --
139263       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139264          trace
139265             (p_msg      => 'Trancaction revesal option is Y'
139266             ,p_level    => C_LEVEL_STATEMENT
139267             ,p_module   => l_log_module);
139268       END IF;
139269    END IF;
139270 
139271 END LOOP;
139272 l_result := XLA_AE_LINES_PKG.InsertLines ;
139273 end loop;
139274 close line_cur;
139275 
139276 
139277 --
139278 -- insert headers into xla_ae_headers_gt table
139279 --
139280 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
139281 
139282 -- insert into errors table here.
139283 
139284 END LOOP;
139285 
139286 --
139287 -- 4865292
139288 --
139289 -- Compare g_hdr_extract_count with event count in
139290 -- CreateHeadersAndLines.
139291 --
139292 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
139293 
139294 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139295    trace (p_msg     => '# rows extracted from header extract objects '
139296                     || ' (running total): '
139297                     || g_hdr_extract_count
139298          ,p_level   => C_LEVEL_STATEMENT
139299          ,p_module  => l_log_module);
139300 END IF;
139301 
139302 CLOSE header_cur;
139303 --
139304 
139305 --
139306 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139307    trace
139308       (p_msg      => 'END of EventClass_250'
139309       ,p_level    => C_LEVEL_PROCEDURE
139310       ,p_module   => l_log_module);
139311 END IF;
139312 --
139313 RETURN l_result;
139314 EXCEPTION
139315 WHEN xla_exceptions_pkg.application_exception THEN
139316    
139317 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
139318 
139319    
139320 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
139321 
139322    RAISE;
139323 
139324 WHEN NO_DATA_FOUND THEN
139325 
139326 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
139327 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
139328 
139329 FOR header_record IN header_cur
139330 LOOP
139331     l_array_header_events(header_record.event_id) := header_record.event_id;
139332 END LOOP;
139333 
139334 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
139335 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
139336 
139337 fnd_file.put_line(fnd_file.LOG, '                    ');
139338 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
139339 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
139340 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
139341 
139342 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
139343 LOOP
139344 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
139345 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
139346         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
139347 	END IF;
139348 END LOOP;
139349 
139350 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
139351 fnd_file.put_line(fnd_file.LOG, '                    ');
139352 
139353 
139354 xla_exceptions_pkg.raise_message
139355       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_250');
139356 
139357 
139358 WHEN OTHERS THEN
139359    xla_exceptions_pkg.raise_message
139360       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_250');
139361 END EventClass_250;
139362 --
139363 
139364 ---------------------------------------
139365 --
139366 -- PRIVATE PROCEDURE
139367 --         insert_sources_251
139368 --
139369 ----------------------------------------
139370 --
139371 PROCEDURE insert_sources_251(
139372                                 p_target_ledger_id       IN NUMBER
139373                               , p_language               IN VARCHAR2
139374                               , p_sla_ledger_id          IN NUMBER
139375                               , p_pad_start_date         IN DATE
139376                               , p_pad_end_date           IN DATE
139377                          )
139378 IS
139379 
139380 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ACCRUAL_WRITE_OFF_ALL';
139381 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'ACCRUAL_WRITE_OFF';
139382 p_apps_owner                   VARCHAR2(30);
139383 l_log_module                   VARCHAR2(240);
139384 BEGIN
139385 IF g_log_enabled THEN
139386       l_log_module := C_DEFAULT_MODULE||'.insert_sources_251';
139387 END IF;
139388 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139389 
139390       trace
139391          (p_msg      => 'BEGIN of insert_sources_251'
139392          ,p_level    => C_LEVEL_PROCEDURE
139393          ,p_module   => l_log_module);
139394 
139395 END IF;
139396 
139397 -- select APPS owner
139398 SELECT oracle_username
139399   INTO p_apps_owner
139400   FROM fnd_oracle_userid
139401  WHERE read_only_flag = 'U'
139402 ;
139403 
139404 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139405       trace
139406          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
139407                         ' - p_language = '||p_language||
139408                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
139409                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
139410                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
139411                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
139412          ,p_level    => C_LEVEL_STATEMENT
139413          ,p_module   => l_log_module);
139414 END IF;
139415 
139416 
139417 --
139418 INSERT INTO xla_diag_sources --hdr2
139419 (
139420         event_id
139421       , ledger_id
139422       , sla_ledger_id
139423       , description_language
139424       , object_name
139425       , object_type_code
139426       , line_number
139427       , source_application_id
139428       , source_type_code
139429       , source_code
139430       , source_value
139431       , source_meaning
139432       , created_by
139433       , creation_date
139434       , last_update_date
139435       , last_updated_by
139436       , last_update_login
139437       , program_update_date
139438       , program_application_id
139439       , program_id
139440       , request_id
139441 )
139442 SELECT
139443         event_id
139444       , p_target_ledger_id
139445       , p_sla_ledger_id
139446       , p_language
139447       , object_name
139448       , object_type_code
139449       , line_number
139450       , source_application_id
139451       , source_type_code
139452       , source_code
139453       , SUBSTR(source_value ,1,1996)
139454       , SUBSTR(source_meaning ,1,200)
139455       , xla_environment_pkg.g_Usr_Id
139456       , TRUNC(SYSDATE)
139457       , TRUNC(SYSDATE)
139458       , xla_environment_pkg.g_Usr_Id
139459       , xla_environment_pkg.g_Login_Id
139460       , TRUNC(SYSDATE)
139461       , xla_environment_pkg.g_Prog_Appl_Id
139462       , xla_environment_pkg.g_Prog_Id
139463       , xla_environment_pkg.g_Req_Id
139464   FROM (
139465        SELECT xet.event_id                  event_id
139466             , 0                          line_number
139467             , CASE r
139468                WHEN 1 THEN 'CST_XLA_AWO_HEADERS_V' 
139469                 WHEN 2 THEN 'CST_XLA_AWO_HEADERS_V' 
139470                 WHEN 3 THEN 'CST_XLA_AWO_HEADERS_V' 
139471                 WHEN 4 THEN 'CST_XLA_AWO_HEADERS_V' 
139472                 WHEN 5 THEN 'CST_XLA_AWO_HEADERS_V' 
139473                 WHEN 6 THEN 'CST_XLA_AWO_HEADERS_V' 
139474                 
139475                ELSE null
139476               END                           object_name
139477             , CASE r
139478                 WHEN 1 THEN 'HEADER' 
139479                 WHEN 2 THEN 'HEADER' 
139480                 WHEN 3 THEN 'HEADER' 
139481                 WHEN 4 THEN 'HEADER' 
139482                 WHEN 5 THEN 'HEADER' 
139483                 WHEN 6 THEN 'HEADER' 
139484                 
139485                 ELSE null
139486               END                           object_type_code
139487             , CASE r
139488                 WHEN 1 THEN '707' 
139489                 WHEN 2 THEN '707' 
139490                 WHEN 3 THEN '707' 
139491                 WHEN 4 THEN '707' 
139492                 WHEN 5 THEN '707' 
139493                 WHEN 6 THEN '707' 
139494                 
139495                 ELSE null
139496               END                           source_application_id
139497             , 'S'             source_type_code
139498             , CASE r
139499                 WHEN 1 THEN 'WO_ACCRUAL_ACCOUNT_ID' 
139500                 WHEN 2 THEN 'WO_ERV_ACCOUNT_ID' 
139501                 WHEN 3 THEN 'WO_OFFSET_ACCOUNT_ID' 
139502                 WHEN 4 THEN 'DISTRIBUTION_TYPE' 
139503                 WHEN 5 THEN 'WRITE_OFF_ID' 
139504                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
139505                 
139506                 ELSE null
139507               END                           source_code
139508             , CASE r
139509                 WHEN 1 THEN TO_CHAR(h1.WO_ACCRUAL_ACCOUNT_ID)
139510                 WHEN 2 THEN TO_CHAR(h1.WO_ERV_ACCOUNT_ID)
139511                 WHEN 3 THEN TO_CHAR(h1.WO_OFFSET_ACCOUNT_ID)
139512                 WHEN 4 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
139513                 WHEN 5 THEN TO_CHAR(h1.WRITE_OFF_ID)
139514                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
139515                 
139516                 ELSE null
139517               END                           source_value
139518             , CASE r
139519                 WHEN 4 THEN fvl12.meaning
139520                 WHEN 6 THEN fvl38.meaning
139521                 
139522                 ELSE null
139523               END               source_meaning
139524          FROM xla_events_gt     xet  
139525       , CST_XLA_AWO_HEADERS_V  h1
139526   , fnd_lookup_values    fvl12
139527   , fnd_lookup_values    fvl38
139528              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
139529          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
139530            AND xet.event_class_code = C_EVENT_CLASS_CODE
139531               AND h1.event_id = xet.event_id
139532    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
139533   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
139534   AND fvl12.view_application_id(+) = 700
139535   AND fvl12.language(+)            = USERENV('LANG')
139536      AND fvl38.lookup_type(+)         = 'YES_NO'
139537   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
139538   AND fvl38.view_application_id(+) = 0
139539   AND fvl38.language(+)            = USERENV('LANG')
139540   
139541 )
139542 ;
139543 --
139544 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139545 
139546       trace
139547          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
139548          ,p_level    => C_LEVEL_STATEMENT
139549          ,p_module   => l_log_module);
139550 
139551 END IF;
139552 --
139553 
139554 
139555 
139556 --
139557 INSERT INTO xla_diag_sources  --line2
139558 (
139559         event_id
139560       , ledger_id
139561       , sla_ledger_id
139562       , description_language
139563       , object_name
139564       , object_type_code
139565       , line_number
139566       , source_application_id
139567       , source_type_code
139568       , source_code
139569       , source_value
139570       , source_meaning
139571       , created_by
139572       , creation_date
139573       , last_update_date
139574       , last_updated_by
139575       , last_update_login
139576       , program_update_date
139577       , program_application_id
139578       , program_id
139579       , request_id
139580 )
139581 SELECT  event_id
139582       , p_target_ledger_id
139583       , p_sla_ledger_id
139584       , p_language
139585       , object_name
139586       , object_type_code
139587       , line_number
139588       , source_application_id
139589       , source_type_code
139590       , source_code
139591       , SUBSTR(source_value,1,1996)
139592       , SUBSTR(source_meaning ,1,200)
139593       , xla_environment_pkg.g_Usr_Id
139594       , TRUNC(SYSDATE)
139595       , TRUNC(SYSDATE)
139596       , xla_environment_pkg.g_Usr_Id
139597       , xla_environment_pkg.g_Login_Id
139598       , TRUNC(SYSDATE)
139599       , xla_environment_pkg.g_Prog_Appl_Id
139600       , xla_environment_pkg.g_Prog_Id
139601       , xla_environment_pkg.g_Req_Id
139602   FROM (
139603        SELECT xet.event_id                  event_id
139604             , l2.line_number                 line_number
139605             , CASE r
139606                WHEN 1 THEN 'CST_XLA_AWO_LINES_V' 
139607                 WHEN 2 THEN 'CST_XLA_AWO_LINES_V' 
139608                 WHEN 3 THEN 'CST_XLA_AWO_LINES_V' 
139609                 WHEN 4 THEN 'CST_XLA_AWO_LINES_V' 
139610                 WHEN 5 THEN 'CST_XLA_AWO_LINES_V' 
139611                 WHEN 6 THEN 'CST_XLA_AWO_LINES_V' 
139612                 WHEN 7 THEN 'CST_XLA_AWO_LINES_V' 
139613                 
139614                ELSE null
139615               END                           object_name
139616             , CASE r
139617                 WHEN 1 THEN 'LINE' 
139618                 WHEN 2 THEN 'LINE' 
139619                 WHEN 3 THEN 'LINE' 
139620                 WHEN 4 THEN 'LINE' 
139621                 WHEN 5 THEN 'LINE' 
139622                 WHEN 6 THEN 'LINE' 
139623                 WHEN 7 THEN 'LINE' 
139624                 
139625                 ELSE null
139626               END                           object_type_code
139627             , CASE r
139628                 WHEN 1 THEN '707' 
139629                 WHEN 2 THEN '707' 
139630                 WHEN 3 THEN '707' 
139631                 WHEN 4 THEN '707' 
139632                 WHEN 5 THEN '707' 
139633                 WHEN 6 THEN '707' 
139634                 WHEN 7 THEN '707' 
139635                 
139636                 ELSE null
139637               END                           source_application_id
139638             , 'S'             source_type_code
139639             , CASE r
139640                 WHEN 1 THEN 'CURRENCY_CODE' 
139641                 WHEN 2 THEN 'ENTERED_AMOUNT' 
139642                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
139643                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
139644                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
139645                 WHEN 6 THEN 'ACCOUNTED_AMOUNT' 
139646                 WHEN 7 THEN 'LINE_NUMBER' 
139647                 
139648                 ELSE null
139649               END                           source_code
139650             , CASE r
139651                 WHEN 1 THEN TO_CHAR(l2.CURRENCY_CODE)
139652                 WHEN 2 THEN TO_CHAR(l2.ENTERED_AMOUNT)
139653                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
139654                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
139655                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
139656                 WHEN 6 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
139657                 WHEN 7 THEN TO_CHAR(l2.LINE_NUMBER)
139658                 
139659                 ELSE null
139660               END                           source_value
139661             , null              source_meaning
139662          FROM  xla_events_gt     xet  
139663         , CST_XLA_AWO_LINES_V  l2
139664             , (select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
139665         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
139666           AND xet.event_class_code = C_EVENT_CLASS_CODE
139667             AND l2.event_id          = xet.event_id
139668 
139669 )
139670 ;
139671 --
139672 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139673 
139674       trace
139675          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
139676          ,p_level    => C_LEVEL_STATEMENT
139677          ,p_module   => l_log_module);
139678 
139679 END IF;
139680 
139681 
139682 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139683       trace
139684          (p_msg      => 'END of insert_sources_251'
139685          ,p_level    => C_LEVEL_PROCEDURE
139686          ,p_module   => l_log_module);
139687 END IF;
139688 EXCEPTION
139689   WHEN xla_exceptions_pkg.application_exception THEN
139690       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
139691             trace
139692                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
139693                ,p_level    => C_LEVEL_EXCEPTION
139694                ,p_module   => l_log_module);
139695       END IF;
139696       RAISE;
139697   WHEN OTHERS THEN
139698       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
139699             trace
139700                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
139701                ,p_level    => C_LEVEL_EXCEPTION
139702                ,p_module   => l_log_module);
139703        END IF;
139704        xla_exceptions_pkg.raise_message
139705            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_251');
139706 END insert_sources_251;
139707 --
139708 
139709 ---------------------------------------
139710 --
139711 -- PRIVATE FUNCTION
139712 --         EventClass_251
139713 --
139714 ----------------------------------------
139715 --
139716 FUNCTION EventClass_251
139717        (p_application_id         IN NUMBER
139718        ,p_base_ledger_id         IN NUMBER
139719        ,p_target_ledger_id       IN NUMBER
139720        ,p_language               IN VARCHAR2
139721        ,p_currency_code          IN VARCHAR2
139722        ,p_sla_ledger_id          IN NUMBER
139723        ,p_pad_start_date         IN DATE
139724        ,p_pad_end_date           IN DATE
139725        ,p_primary_ledger_id      IN NUMBER)
139726 RETURN BOOLEAN IS
139727 --
139728 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ACCRUAL_WRITE_OFF_ALL';
139729 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'ACCRUAL_WRITE_OFF';
139730 
139731 l_calculate_acctd_flag   VARCHAR2(1) :='N';
139732 l_calculate_g_l_flag     VARCHAR2(1) :='N';
139733 --
139734 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139735 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139736 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
139737 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139738 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139739 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
139740 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
139741 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139742 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139743 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139744 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139745 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139746 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139747 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139748 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139749 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139750 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139751 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139752 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139753 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139754 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139755 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139756 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
139757 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
139758 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
139759 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
139760 
139761 l_event_id                             NUMBER;
139762 l_previous_event_id                    NUMBER;
139763 l_first_event_id                       NUMBER;
139764 l_last_event_id                        NUMBER;
139765 
139766 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
139767 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
139768 --
139769 --
139770 l_result                    BOOLEAN := TRUE;
139771 l_rows                      NUMBER  := 1000;
139772 l_event_type_name           VARCHAR2(80) := 'All';
139773 l_event_class_name          VARCHAR2(80) := 'Accrual Write Off';
139774 l_description               VARCHAR2(4000);
139775 l_transaction_reversal      NUMBER;
139776 l_ae_header_id              NUMBER;
139777 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
139778 l_log_module                VARCHAR2(240);
139779 --
139780 l_acct_reversal_source      VARCHAR2(30);
139781 l_trx_reversal_source       VARCHAR2(30);
139782 
139783 l_continue_with_lines       BOOLEAN := TRUE;
139784 --
139785 l_acc_rev_gl_date_source    DATE;                      -- 4262811
139786 --
139787 type t_array_event_id is table of number index by binary_integer;
139788 
139789 l_rec_array_event                    t_rec_array_event;
139790 l_null_rec_array_event               t_rec_array_event;
139791 l_array_ae_header_id                 xla_number_array_type;
139792 l_actual_flag                        VARCHAR2(1) := NULL;
139793 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
139794 l_balance_type_code                  VARCHAR2(1) :=NULL;
139795 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
139796 
139797 --
139798 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
139799 --
139800 
139801 TYPE t_array_source_1 IS TABLE OF CST_XLA_AWO_HEADERS_V.WO_ACCRUAL_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
139802 TYPE t_array_source_2 IS TABLE OF CST_XLA_AWO_HEADERS_V.WO_ERV_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
139803 TYPE t_array_source_3 IS TABLE OF CST_XLA_AWO_HEADERS_V.WO_OFFSET_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
139804 TYPE t_array_source_12 IS TABLE OF CST_XLA_AWO_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
139805 TYPE t_array_source_26 IS TABLE OF CST_XLA_AWO_HEADERS_V.WRITE_OFF_ID%TYPE INDEX BY BINARY_INTEGER;
139806 TYPE t_array_source_38 IS TABLE OF CST_XLA_AWO_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
139807 
139808 TYPE t_array_source_15 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
139809 TYPE t_array_source_18 IS TABLE OF CST_XLA_AWO_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
139810 TYPE t_array_source_19 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
139811 TYPE t_array_source_20 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
139812 TYPE t_array_source_21 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
139813 TYPE t_array_source_22 IS TABLE OF CST_XLA_AWO_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
139814 TYPE t_array_source_25 IS TABLE OF CST_XLA_AWO_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
139815 
139816 l_array_source_1              t_array_source_1;
139817 l_array_source_2              t_array_source_2;
139818 l_array_source_3              t_array_source_3;
139819 l_array_source_12              t_array_source_12;
139820 l_array_source_12_meaning      t_array_lookup_meaning;
139821 l_array_source_26              t_array_source_26;
139822 l_array_source_38              t_array_source_38;
139823 l_array_source_38_meaning      t_array_lookup_meaning;
139824 
139825 l_array_source_15      t_array_source_15;
139826 l_array_source_18      t_array_source_18;
139827 l_array_source_19      t_array_source_19;
139828 l_array_source_20      t_array_source_20;
139829 l_array_source_21      t_array_source_21;
139830 l_array_source_22      t_array_source_22;
139831 l_array_source_25      t_array_source_25;
139832 
139833 --
139834 CURSOR header_cur
139835 IS
139836 SELECT /*+ leading(xet) cardinality(xet,1) */
139837 -- Event Class Code: ACCRUAL_WRITE_OFF
139838     xet.entity_id
139839    ,xet.legal_entity_id
139840    ,xet.entity_code
139841    ,xet.transaction_number
139842    ,xet.event_id
139843    ,xet.event_class_code
139844    ,xet.event_type_code
139845    ,xet.event_number
139846    ,xet.event_date
139847    ,xet.transaction_date
139848    ,xet.reference_num_1
139849    ,xet.reference_num_2
139850    ,xet.reference_num_3
139851    ,xet.reference_num_4
139852    ,xet.reference_char_1
139853    ,xet.reference_char_2
139854    ,xet.reference_char_3
139855    ,xet.reference_char_4
139856    ,xet.reference_date_1
139857    ,xet.reference_date_2
139858    ,xet.reference_date_3
139859    ,xet.reference_date_4
139860    ,xet.event_created_by
139861    ,xet.budgetary_control_flag 
139862   , h1.WO_ACCRUAL_ACCOUNT_ID    source_1
139863   , h1.WO_ERV_ACCOUNT_ID    source_2
139864   , h1.WO_OFFSET_ACCOUNT_ID    source_3
139865   , h1.DISTRIBUTION_TYPE    source_12
139866   , fvl12.meaning   source_12_meaning
139867   , h1.WRITE_OFF_ID    source_26
139868   , h1.TRANSFER_TO_GL_INDICATOR    source_38
139869   , fvl38.meaning   source_38_meaning
139870   FROM xla_events_gt     xet 
139871   , CST_XLA_AWO_HEADERS_V  h1
139872   , fnd_lookup_values    fvl12
139873   , fnd_lookup_values    fvl38
139874  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
139875    and xet.event_class_code = C_EVENT_CLASS_CODE
139876    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
139877    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
139878   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
139879   AND fvl12.view_application_id(+) = 700
139880   AND fvl12.language(+)            = USERENV('LANG')
139881      AND fvl38.lookup_type(+)         = 'YES_NO'
139882   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
139883   AND fvl38.view_application_id(+) = 0
139884   AND fvl38.language(+)            = USERENV('LANG')
139885   
139886  ORDER BY event_id
139887 ;
139888 
139889 
139890 --
139891 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
139892 IS
139893 SELECT  /*+ leading(xet) cardinality(xet,1) */
139894 -- Event Class Code: ACCRUAL_WRITE_OFF
139895     xet.entity_id
139896    ,xet.legal_entity_id
139897    ,xet.entity_code
139898    ,xet.transaction_number
139899    ,xet.event_id
139900    ,xet.event_class_code
139901    ,xet.event_type_code
139902    ,xet.event_number
139903    ,xet.event_date
139904    ,xet.transaction_date
139905    ,xet.reference_num_1
139906    ,xet.reference_num_2
139907    ,xet.reference_num_3
139908    ,xet.reference_num_4
139909    ,xet.reference_char_1
139910    ,xet.reference_char_2
139911    ,xet.reference_char_3
139912    ,xet.reference_char_4
139913    ,xet.reference_date_1
139914    ,xet.reference_date_2
139915    ,xet.reference_date_3
139916    ,xet.reference_date_4
139917    ,xet.event_created_by
139918    ,xet.budgetary_control_flag
139919  , l2.LINE_NUMBER  
139920   , l2.CURRENCY_CODE    source_15
139921   , l2.ENTERED_AMOUNT    source_18
139922   , l2.CURRENCY_CONVERSION_DATE    source_19
139923   , l2.CURRENCY_CONVERSION_RATE    source_20
139924   , l2.CURRENCY_CONVERSION_TYPE    source_21
139925   , l2.ACCOUNTED_AMOUNT    source_22
139926   , l2.LINE_NUMBER    source_25
139927   FROM xla_events_gt     xet 
139928   , CST_XLA_AWO_LINES_V  l2
139929  WHERE xet.event_id between x_first_event_id and x_last_event_id
139930    and xet.event_date between p_pad_start_date and p_pad_end_date
139931    and xet.event_class_code = C_EVENT_CLASS_CODE
139932    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
139933 ;
139934 
139935 --
139936 BEGIN
139937 IF g_log_enabled THEN
139938    l_log_module := C_DEFAULT_MODULE||'.EventClass_251';
139939 END IF;
139940 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139941    trace
139942       (p_msg      => 'BEGIN of EventClass_251'
139943       ,p_level    => C_LEVEL_PROCEDURE
139944       ,p_module   => l_log_module);
139945 END IF;
139946 
139947 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139948    trace
139949       (p_msg      => 'p_application_id = '||p_application_id||
139950                      ' - p_base_ledger_id = '||p_base_ledger_id||
139951                      ' - p_target_ledger_id  = '||p_target_ledger_id||
139952                      ' - p_language = '||p_language||
139953                      ' - p_currency_code = '||p_currency_code||
139954                      ' - p_sla_ledger_id = '||p_sla_ledger_id
139955       ,p_level    => C_LEVEL_STATEMENT
139956       ,p_module   => l_log_module);
139957 END IF;
139958 --
139959 -- initialze arrays
139960 --
139961 g_array_event.DELETE;
139962 l_rec_array_event := l_null_rec_array_event;
139963 --
139964 --------------------------------------
139965 -- 4262811 Initialze MPA Line Number
139966 --------------------------------------
139967 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
139968 
139969 --
139970 
139971 --
139972 OPEN header_cur;
139973 --
139974 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139975    trace
139976    (p_msg      => 'SQL - FETCH header_cur'
139977    ,p_level    => C_LEVEL_STATEMENT
139978    ,p_module   => l_log_module);
139979 END IF;
139980 --
139981 LOOP
139982 FETCH header_cur BULK COLLECT INTO
139983         l_array_entity_id
139984       , l_array_legal_entity_id
139985       , l_array_entity_code
139986       , l_array_transaction_num
139987       , l_array_event_id
139988       , l_array_class_code
139989       , l_array_event_type
139990       , l_array_event_number
139991       , l_array_event_date
139992       , l_array_transaction_date
139993       , l_array_reference_num_1
139994       , l_array_reference_num_2
139995       , l_array_reference_num_3
139996       , l_array_reference_num_4
139997       , l_array_reference_char_1
139998       , l_array_reference_char_2
139999       , l_array_reference_char_3
140000       , l_array_reference_char_4
140001       , l_array_reference_date_1
140002       , l_array_reference_date_2
140003       , l_array_reference_date_3
140004       , l_array_reference_date_4
140005       , l_array_event_created_by
140006       , l_array_budgetary_control_flag 
140007       , l_array_source_1
140008       , l_array_source_2
140009       , l_array_source_3
140010       , l_array_source_12
140011       , l_array_source_12_meaning
140012       , l_array_source_26
140013       , l_array_source_38
140014       , l_array_source_38_meaning
140015       LIMIT l_rows;
140016 --
140017 IF (C_LEVEL_EVENT >= g_log_level) THEN
140018    trace
140019    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
140020    ,p_level    => C_LEVEL_EVENT
140021    ,p_module   => l_log_module);
140022 END IF;
140023 --
140024 EXIT WHEN l_array_entity_id.COUNT = 0;
140025 
140026 -- initialize arrays
140027 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
140028 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
140029 
140030 --
140031 -- Bug 4458708
140032 --
140033 XLA_AE_LINES_PKG.g_LineNumber := 0;
140034 
140035 
140036 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
140037 g_last_hdr_idx := l_array_event_id.LAST;
140038 --
140039 -- loop for the headers. Each iteration is for each header extract row
140040 -- fetched in header cursor
140041 --
140042 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
140043 
140044 --
140045 -- set event info as cache for other routines to refer event attributes
140046 --
140047 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
140048    (p_application_id           => p_application_id
140049    ,p_primary_ledger_id        => p_primary_ledger_id
140050    ,p_base_ledger_id           => p_base_ledger_id
140051    ,p_target_ledger_id         => p_target_ledger_id
140052    ,p_entity_id                => l_array_entity_id(hdr_idx)
140053    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
140054    ,p_entity_code              => l_array_entity_code(hdr_idx)
140055    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
140056    ,p_event_id                 => l_array_event_id(hdr_idx)
140057    ,p_event_class_code         => l_array_class_code(hdr_idx)
140058    ,p_event_type_code          => l_array_event_type(hdr_idx)
140059    ,p_event_number             => l_array_event_number(hdr_idx)
140060    ,p_event_date               => l_array_event_date(hdr_idx)
140061    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
140062    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
140063    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
140064    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
140065    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
140066    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
140067    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
140068    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
140069    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
140070    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
140071    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
140072    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
140073    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
140074    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
140075    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
140076 
140077 --
140078 -- set the status of entry to C_VALID (0)
140079 --
140080 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
140081 
140082 --
140083 -- initialize a row for ae header
140084 --
140085 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
140086 
140087 l_event_id := l_array_event_id(hdr_idx);
140088 
140089 --
140090 -- storing the hdr_idx for event. May be used by line cursor.
140091 --
140092 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
140093 
140094 --
140095 -- store sources from header extract. This can be improved to
140096 -- store only those sources from header extract that may be used in lines
140097 --
140098 
140099 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
140100 g_array_event(l_event_id).array_value_num('source_2') := l_array_source_2(hdr_idx);
140101 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
140102 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
140103 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
140104 g_array_event(l_event_id).array_value_num('source_26') := l_array_source_26(hdr_idx);
140105 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
140106 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
140107 
140108 --
140109 -- initilaize the status of ae headers for diffrent balance types
140110 -- the status is initialised to C_NOT_CREATED (2)
140111 --
140112 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
140113 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
140114 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
140115 
140116 --
140117 -- call api to validate and store accounting attributes for header
140118 --
140119 
140120 ------------------------------------------------------------
140121 -- Accrual Reversal : to get date for Standard Source (NONE)
140122 ------------------------------------------------------------
140123 l_acc_rev_gl_date_source := NULL;
140124 
140125      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
140126       l_rec_acct_attrs.array_date_value(1) := 
140127 xla_ae_sources_pkg.GetSystemSourceDate(
140128    p_source_code           => 'XLA_REFERENCE_DATE_1'
140129  , p_source_type_code      => 'Y'
140130  , p_source_application_id =>  602
140131 );
140132      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
140133       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
140134 
140135 
140136 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
140137 
140138 XLA_AE_HEADER_PKG.SetJeCategoryName;
140139 
140140 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
140141 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
140142 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
140143 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
140144 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
140145 
140146 
140147 -- No header level analytical criteria
140148 
140149 --
140150 --accounting attribute enhancement, bug 3612931
140151 --
140152 l_trx_reversal_source := SUBSTR(NULL, 1,30);
140153 
140154 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
140155    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
140156 
140157    xla_accounting_err_pkg.build_message
140158       (p_appli_s_name            => 'XLA'
140159       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
140160       ,p_token_1                 => 'ACCT_ATTR_NAME'
140161       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
140162       ,p_token_2                 => 'PRODUCT_NAME'
140163       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
140164       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
140165       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
140166       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
140167 
140168 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
140169    --
140170    -- following sets the accounting attributes needed to reverse
140171    -- accounting for a distributeion
140172    --
140173    xla_ae_lines_pkg.SetTrxReversalAttrs
140174       (p_event_id              => l_event_id
140175       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
140176       ,p_trx_reversal_source   => l_trx_reversal_source);
140177 
140178 END IF;
140179 
140180 
140181 ----------------------------------------------------------------
140182 -- 4262811 -  update the header statuses to invalid in need be
140183 ----------------------------------------------------------------
140184 --
140185 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
140186 
140187 
140188   -----------------------------------------------
140189   -- No accrual reversal for the event class/type
140190   -----------------------------------------------
140191 ----------------------------------------------------------------
140192 
140193 --
140194 -- this ends the header loop iteration for one bulk fetch
140195 --
140196 END LOOP;
140197 
140198 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
140199 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
140200 
140201 --
140202 -- insert dummy rows into lines gt table that were created due to
140203 -- transaction reversals
140204 --
140205 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
140206    l_result := XLA_AE_LINES_PKG.InsertLines;
140207 END IF;
140208 
140209 --
140210 -- reset the temp_line_num for each set of events fetched from header
140211 -- cursor rather than doing it for each new event in line cursor
140212 -- Bug 3939231
140213 --
140214 xla_ae_lines_pkg.g_temp_line_num := 0;
140215 
140216 
140217 
140218 --
140219 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
140220 --
140221 --
140222 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140223 
140224       trace
140225          (p_msg      => 'SQL - FETCH line_cur'
140226          ,p_level    => C_LEVEL_STATEMENT
140227          ,p_module   => l_log_module);
140228 
140229 END IF;
140230 --
140231 --
140232 LOOP
140233   --
140234   FETCH line_cur BULK COLLECT INTO
140235         l_array_entity_id
140236       , l_array_legal_entity_id
140237       , l_array_entity_code
140238       , l_array_transaction_num
140239       , l_array_event_id
140240       , l_array_class_code
140241       , l_array_event_type
140242       , l_array_event_number
140243       , l_array_event_date
140244       , l_array_transaction_date
140245       , l_array_reference_num_1
140246       , l_array_reference_num_2
140247       , l_array_reference_num_3
140248       , l_array_reference_num_4
140249       , l_array_reference_char_1
140250       , l_array_reference_char_2
140251       , l_array_reference_char_3
140252       , l_array_reference_char_4
140253       , l_array_reference_date_1
140254       , l_array_reference_date_2
140255       , l_array_reference_date_3
140256       , l_array_reference_date_4
140257       , l_array_event_created_by
140258       , l_array_budgetary_control_flag
140259       , l_array_extract_line_num 
140260       , l_array_source_15
140261       , l_array_source_18
140262       , l_array_source_19
140263       , l_array_source_20
140264       , l_array_source_21
140265       , l_array_source_22
140266       , l_array_source_25
140267       LIMIT l_rows;
140268 
140269   --
140270   IF (C_LEVEL_EVENT >= g_log_level) THEN
140271             trace
140272                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
140273                ,p_level    => C_LEVEL_EVENT
140274                ,p_module   => l_log_module);
140275   END IF;
140276   --
140277   EXIT WHEN l_array_entity_id.count = 0;
140278 
140279   XLA_AE_LINES_PKG.g_rec_lines := null;
140280 
140281 --
140282 -- Bug 4458708
140283 --
140284 XLA_AE_LINES_PKG.g_LineNumber := 0;
140285 --
140286 --
140287 
140288 FOR Idx IN 1..l_array_event_id.count LOOP
140289    --
140290    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
140291    --
140292    l_event_id := l_array_event_id(idx);  -- 5648433
140293 
140294    --
140295    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
140296    --
140297 
140298    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
140299              (g_array_event(l_event_id).array_value_num('header_index'))
140300          ,'N'
140301          ) <> 'Y'
140302    THEN
140303       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140304          trace
140305             (p_msg      => 'Trancaction revesal option is not Y '
140306             ,p_level    => C_LEVEL_STATEMENT
140307             ,p_module   => l_log_module);
140308       END IF;
140309 
140310 --
140311 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
140312 --
140313 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
140314 --
140315 -- set event info as cache for other routines to refer event attributes
140316 --
140317 
140318 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
140319    l_previous_event_id := l_event_id;
140320 
140321    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
140322       (p_application_id           => p_application_id
140323       ,p_primary_ledger_id        => p_primary_ledger_id
140324       ,p_base_ledger_id           => p_base_ledger_id
140325       ,p_target_ledger_id         => p_target_ledger_id
140326       ,p_entity_id                => l_array_entity_id(Idx)
140327       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
140328       ,p_entity_code              => l_array_entity_code(Idx)
140329       ,p_transaction_num          => l_array_transaction_num(Idx)
140330       ,p_event_id                 => l_array_event_id(Idx)
140331       ,p_event_class_code         => l_array_class_code(Idx)
140332       ,p_event_type_code          => l_array_event_type(Idx)
140333       ,p_event_number             => l_array_event_number(Idx)
140334       ,p_event_date               => l_array_event_date(Idx)
140335       ,p_transaction_date         => l_array_transaction_date(Idx)
140336       ,p_reference_num_1          => l_array_reference_num_1(Idx)
140337       ,p_reference_num_2          => l_array_reference_num_2(Idx)
140338       ,p_reference_num_3          => l_array_reference_num_3(Idx)
140339       ,p_reference_num_4          => l_array_reference_num_4(Idx)
140340       ,p_reference_char_1         => l_array_reference_char_1(Idx)
140341       ,p_reference_char_2         => l_array_reference_char_2(Idx)
140342       ,p_reference_char_3         => l_array_reference_char_3(Idx)
140343       ,p_reference_char_4         => l_array_reference_char_4(Idx)
140344       ,p_reference_date_1         => l_array_reference_date_1(Idx)
140345       ,p_reference_date_2         => l_array_reference_date_2(Idx)
140346       ,p_reference_date_3         => l_array_reference_date_3(Idx)
140347       ,p_reference_date_4         => l_array_reference_date_4(Idx)
140348       ,p_event_created_by         => l_array_event_created_by(Idx)
140349       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
140350        --
140351 END IF;
140352 
140353 
140354 
140355 --
140356 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
140357 
140358 l_acct_reversal_source := SUBSTR(NULL, 1,30);
140359 
140360 IF l_continue_with_lines THEN
140361    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
140362       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
140363 
140364       xla_accounting_err_pkg.build_message
140365          (p_appli_s_name            => 'XLA'
140366          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
140367          ,p_token_1                 => 'LINE_NUMBER'
140368          ,p_value_1                 => l_array_extract_line_num(Idx)
140369          ,p_token_2                 => 'PRODUCT_NAME'
140370          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
140371          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
140372          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
140373          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
140374 
140375    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
140376       --
140377       -- following sets the accounting attributes needed to reverse
140378       -- accounting for a distributeion
140379       --
140380 
140381       --
140382       -- 5217187
140383       --
140384       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
140385       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
140386                                        g_array_event(l_event_id).array_value_num('header_index'));
140387       --
140388       --
140389 
140390       -- No reversal code generated
140391 
140392       xla_ae_lines_pkg.SetAcctReversalAttrs
140393          (p_event_id             => l_event_id
140394          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
140395          ,p_calculate_acctd_flag => l_calculate_acctd_flag
140396          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
140397    END IF;
140398 
140399    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
140400        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
140401 
140402 --
140403 AcctLineType_7 (
140404  p_application_id  => p_application_id
140405  ,p_event_id     => l_event_id
140406  ,p_calculate_acctd_flag => l_calculate_acctd_flag
140407  ,p_calculate_g_l_flag => l_calculate_g_l_flag
140408  ,p_actual_flag => l_actual_flag
140409  ,p_balance_type_code => l_balance_type_code
140410  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
140411  
140412  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
140413  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
140414  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
140415  , p_source_15 => l_array_source_15(Idx)
140416  , p_source_18 => l_array_source_18(Idx)
140417  , p_source_19 => l_array_source_19(Idx)
140418  , p_source_20 => l_array_source_20(Idx)
140419  , p_source_21 => l_array_source_21(Idx)
140420  , p_source_22 => l_array_source_22(Idx)
140421  , p_source_25 => l_array_source_25(Idx)
140422  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
140423  );
140424 If(l_balance_type_code = 'A') THEN
140425   l_actual_gain_loss_ref := l_gain_or_loss_ref;
140426 END IF;
140427 
140428 --
140429 
140430 
140431 --
140432 AcctLineType_203 (
140433  p_application_id  => p_application_id
140434  ,p_event_id     => l_event_id
140435  ,p_calculate_acctd_flag => l_calculate_acctd_flag
140436  ,p_calculate_g_l_flag => l_calculate_g_l_flag
140437  ,p_actual_flag => l_actual_flag
140438  ,p_balance_type_code => l_balance_type_code
140439  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
140440  
140441  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
140442  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
140443  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
140444  , p_source_15 => l_array_source_15(Idx)
140445  , p_source_18 => l_array_source_18(Idx)
140446  , p_source_19 => l_array_source_19(Idx)
140447  , p_source_20 => l_array_source_20(Idx)
140448  , p_source_21 => l_array_source_21(Idx)
140449  , p_source_22 => l_array_source_22(Idx)
140450  , p_source_25 => l_array_source_25(Idx)
140451  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
140452  );
140453 If(l_balance_type_code = 'A') THEN
140454   l_actual_gain_loss_ref := l_gain_or_loss_ref;
140455 END IF;
140456 
140457 --
140458 
140459 
140460 --
140461 AcctLineType_248 (
140462  p_application_id  => p_application_id
140463  ,p_event_id     => l_event_id
140464  ,p_calculate_acctd_flag => l_calculate_acctd_flag
140465  ,p_calculate_g_l_flag => l_calculate_g_l_flag
140466  ,p_actual_flag => l_actual_flag
140467  ,p_balance_type_code => l_balance_type_code
140468  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
140469  
140470  , p_source_2 => g_array_event(l_event_id).array_value_num('source_2')
140471  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
140472  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
140473  , p_source_15 => l_array_source_15(Idx)
140474  , p_source_18 => l_array_source_18(Idx)
140475  , p_source_19 => l_array_source_19(Idx)
140476  , p_source_20 => l_array_source_20(Idx)
140477  , p_source_21 => l_array_source_21(Idx)
140478  , p_source_22 => l_array_source_22(Idx)
140479  , p_source_25 => l_array_source_25(Idx)
140480  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
140481  );
140482 If(l_balance_type_code = 'A') THEN
140483   l_actual_gain_loss_ref := l_gain_or_loss_ref;
140484 END IF;
140485 
140486 --
140487 
140488 
140489 --
140490 AcctLineType_249 (
140491  p_application_id  => p_application_id
140492  ,p_event_id     => l_event_id
140493  ,p_calculate_acctd_flag => l_calculate_acctd_flag
140494  ,p_calculate_g_l_flag => l_calculate_g_l_flag
140495  ,p_actual_flag => l_actual_flag
140496  ,p_balance_type_code => l_balance_type_code
140497  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
140498  
140499  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
140500  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
140501  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
140502  , p_source_15 => l_array_source_15(Idx)
140503  , p_source_18 => l_array_source_18(Idx)
140504  , p_source_19 => l_array_source_19(Idx)
140505  , p_source_20 => l_array_source_20(Idx)
140506  , p_source_21 => l_array_source_21(Idx)
140507  , p_source_22 => l_array_source_22(Idx)
140508  , p_source_25 => l_array_source_25(Idx)
140509  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
140510  );
140511 If(l_balance_type_code = 'A') THEN
140512   l_actual_gain_loss_ref := l_gain_or_loss_ref;
140513 END IF;
140514 
140515 --
140516 
140517       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
140518       -- or secondary ledger that has different currency with primary
140519       -- or alc that is calculated by sla
140520       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
140521             (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'))
140522 
140523 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
140524 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
140525           AND (l_actual_flag = 'A')) THEN
140526         XLA_AE_LINES_PKG.CreateGainOrLossLines(
140527           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
140528          ,p_application_id   => p_application_id
140529          ,p_amb_context_code => 'DEFAULT'
140530          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
140531          ,p_event_class_code => C_EVENT_CLASS_CODE
140532          ,p_event_type_code  => C_EVENT_TYPE_CODE
140533          
140534          ,p_gain_ccid        => -1
140535          ,p_loss_ccid        => -1
140536 
140537          ,p_actual_flag      => l_actual_flag
140538          ,p_enc_flag         => null
140539          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
140540          ,p_enc_g_l_ref      => null
140541          );
140542       END IF;
140543    END IF;
140544 END IF;
140545 
140546    ELSE
140547       --
140548       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
140549       --
140550       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140551          trace
140552             (p_msg      => 'Trancaction revesal option is Y'
140553             ,p_level    => C_LEVEL_STATEMENT
140554             ,p_module   => l_log_module);
140555       END IF;
140556    END IF;
140557 
140558 END LOOP;
140559 l_result := XLA_AE_LINES_PKG.InsertLines ;
140560 end loop;
140561 close line_cur;
140562 
140563 
140564 --
140565 -- insert headers into xla_ae_headers_gt table
140566 --
140567 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
140568 
140569 -- insert into errors table here.
140570 
140571 END LOOP;
140572 
140573 --
140574 -- 4865292
140575 --
140576 -- Compare g_hdr_extract_count with event count in
140577 -- CreateHeadersAndLines.
140578 --
140579 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
140580 
140581 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140582    trace (p_msg     => '# rows extracted from header extract objects '
140583                     || ' (running total): '
140584                     || g_hdr_extract_count
140585          ,p_level   => C_LEVEL_STATEMENT
140586          ,p_module  => l_log_module);
140587 END IF;
140588 
140589 CLOSE header_cur;
140590 --
140591 
140592 --
140593 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140594    trace
140595       (p_msg      => 'END of EventClass_251'
140596       ,p_level    => C_LEVEL_PROCEDURE
140597       ,p_module   => l_log_module);
140598 END IF;
140599 --
140600 RETURN l_result;
140601 EXCEPTION
140602 WHEN xla_exceptions_pkg.application_exception THEN
140603    
140604 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
140605 
140606    
140607 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
140608 
140609    RAISE;
140610 
140611 WHEN NO_DATA_FOUND THEN
140612 
140613 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
140614 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
140615 
140616 FOR header_record IN header_cur
140617 LOOP
140618     l_array_header_events(header_record.event_id) := header_record.event_id;
140619 END LOOP;
140620 
140621 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
140622 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
140623 
140624 fnd_file.put_line(fnd_file.LOG, '                    ');
140625 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
140626 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
140627 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
140628 
140629 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
140630 LOOP
140631 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
140632 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
140633         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
140634 	END IF;
140635 END LOOP;
140636 
140637 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
140638 fnd_file.put_line(fnd_file.LOG, '                    ');
140639 
140640 
140641 xla_exceptions_pkg.raise_message
140642       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_251');
140643 
140644 
140645 WHEN OTHERS THEN
140646    xla_exceptions_pkg.raise_message
140647       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_251');
140648 END EventClass_251;
140649 --
140650 
140651 ---------------------------------------
140652 --
140653 -- PRIVATE PROCEDURE
140654 --         insert_sources_252
140655 --
140656 ----------------------------------------
140657 --
140658 PROCEDURE insert_sources_252(
140659                                 p_target_ledger_id       IN NUMBER
140660                               , p_language               IN VARCHAR2
140661                               , p_sla_ledger_id          IN NUMBER
140662                               , p_pad_start_date         IN DATE
140663                               , p_pad_end_date           IN DATE
140664                          )
140665 IS
140666 
140667 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CON_INV_OWNR_TXFR_ALL';
140668 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'CON_INV_OWNR_TXFR';
140669 p_apps_owner                   VARCHAR2(30);
140670 l_log_module                   VARCHAR2(240);
140671 BEGIN
140672 IF g_log_enabled THEN
140673       l_log_module := C_DEFAULT_MODULE||'.insert_sources_252';
140674 END IF;
140675 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140676 
140677       trace
140678          (p_msg      => 'BEGIN of insert_sources_252'
140679          ,p_level    => C_LEVEL_PROCEDURE
140680          ,p_module   => l_log_module);
140681 
140682 END IF;
140683 
140684 -- select APPS owner
140685 SELECT oracle_username
140686   INTO p_apps_owner
140687   FROM fnd_oracle_userid
140688  WHERE read_only_flag = 'U'
140689 ;
140690 
140691 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140692       trace
140693          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
140694                         ' - p_language = '||p_language||
140695                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
140696                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
140697                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
140698                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
140699          ,p_level    => C_LEVEL_STATEMENT
140700          ,p_module   => l_log_module);
140701 END IF;
140702 
140703 
140704 --
140705 INSERT INTO xla_diag_sources --hdr2
140706 (
140707         event_id
140708       , ledger_id
140709       , sla_ledger_id
140710       , description_language
140711       , object_name
140712       , object_type_code
140713       , line_number
140714       , source_application_id
140715       , source_type_code
140716       , source_code
140717       , source_value
140718       , source_meaning
140719       , created_by
140720       , creation_date
140721       , last_update_date
140722       , last_updated_by
140723       , last_update_login
140724       , program_update_date
140725       , program_application_id
140726       , program_id
140727       , request_id
140728 )
140729 SELECT
140730         event_id
140731       , p_target_ledger_id
140732       , p_sla_ledger_id
140733       , p_language
140734       , object_name
140735       , object_type_code
140736       , line_number
140737       , source_application_id
140738       , source_type_code
140739       , source_code
140740       , SUBSTR(source_value ,1,1996)
140741       , SUBSTR(source_meaning ,1,200)
140742       , xla_environment_pkg.g_Usr_Id
140743       , TRUNC(SYSDATE)
140744       , TRUNC(SYSDATE)
140745       , xla_environment_pkg.g_Usr_Id
140746       , xla_environment_pkg.g_Login_Id
140747       , TRUNC(SYSDATE)
140748       , xla_environment_pkg.g_Prog_Appl_Id
140749       , xla_environment_pkg.g_Prog_Id
140750       , xla_environment_pkg.g_Req_Id
140751   FROM (
140752        SELECT xet.event_id                  event_id
140753             , 0                          line_number
140754             , CASE r
140755                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
140756                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
140757                 
140758                ELSE null
140759               END                           object_name
140760             , CASE r
140761                 WHEN 1 THEN 'HEADER' 
140762                 WHEN 2 THEN 'HEADER' 
140763                 
140764                 ELSE null
140765               END                           object_type_code
140766             , CASE r
140767                 WHEN 1 THEN '707' 
140768                 WHEN 2 THEN '707' 
140769                 
140770                 ELSE null
140771               END                           source_application_id
140772             , 'S'             source_type_code
140773             , CASE r
140774                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
140775                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
140776                 
140777                 ELSE null
140778               END                           source_code
140779             , CASE r
140780                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
140781                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
140782                 
140783                 ELSE null
140784               END                           source_value
140785             , CASE r
140786                 WHEN 1 THEN fvl12.meaning
140787                 WHEN 2 THEN fvl38.meaning
140788                 
140789                 ELSE null
140790               END               source_meaning
140791          FROM xla_events_gt     xet  
140792       , CST_XLA_INV_HEADERS_V  h1
140793   , fnd_lookup_values    fvl12
140794   , fnd_lookup_values    fvl38
140795              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
140796          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
140797            AND xet.event_class_code = C_EVENT_CLASS_CODE
140798               AND h1.event_id = xet.event_id
140799    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
140800   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
140801   AND fvl12.view_application_id(+) = 700
140802   AND fvl12.language(+)            = USERENV('LANG')
140803      AND fvl38.lookup_type(+)         = 'YES_NO'
140804   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
140805   AND fvl38.view_application_id(+) = 0
140806   AND fvl38.language(+)            = USERENV('LANG')
140807   
140808 )
140809 ;
140810 --
140811 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140812 
140813       trace
140814          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
140815          ,p_level    => C_LEVEL_STATEMENT
140816          ,p_module   => l_log_module);
140817 
140818 END IF;
140819 --
140820 
140821 
140822 
140823 --
140824 INSERT INTO xla_diag_sources  --line2
140825 (
140826         event_id
140827       , ledger_id
140828       , sla_ledger_id
140829       , description_language
140830       , object_name
140831       , object_type_code
140832       , line_number
140833       , source_application_id
140834       , source_type_code
140835       , source_code
140836       , source_value
140837       , source_meaning
140838       , created_by
140839       , creation_date
140840       , last_update_date
140841       , last_updated_by
140842       , last_update_login
140843       , program_update_date
140844       , program_application_id
140845       , program_id
140846       , request_id
140847 )
140848 SELECT  event_id
140849       , p_target_ledger_id
140850       , p_sla_ledger_id
140851       , p_language
140852       , object_name
140853       , object_type_code
140854       , line_number
140855       , source_application_id
140856       , source_type_code
140857       , source_code
140858       , SUBSTR(source_value,1,1996)
140859       , SUBSTR(source_meaning ,1,200)
140860       , xla_environment_pkg.g_Usr_Id
140861       , TRUNC(SYSDATE)
140862       , TRUNC(SYSDATE)
140863       , xla_environment_pkg.g_Usr_Id
140864       , xla_environment_pkg.g_Login_Id
140865       , TRUNC(SYSDATE)
140866       , xla_environment_pkg.g_Prog_Appl_Id
140867       , xla_environment_pkg.g_Prog_Id
140868       , xla_environment_pkg.g_Req_Id
140869   FROM (
140870        SELECT xet.event_id                  event_id
140871             , l2.line_number                 line_number
140872             , CASE r
140873                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
140874                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
140875                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
140876                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
140877                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
140878                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
140879                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
140880                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
140881                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
140882                 
140883                ELSE null
140884               END                           object_name
140885             , CASE r
140886                 WHEN 1 THEN 'LINE' 
140887                 WHEN 2 THEN 'LINE' 
140888                 WHEN 3 THEN 'LINE' 
140889                 WHEN 4 THEN 'LINE' 
140890                 WHEN 5 THEN 'LINE' 
140891                 WHEN 6 THEN 'LINE' 
140892                 WHEN 7 THEN 'LINE' 
140893                 WHEN 8 THEN 'LINE' 
140894                 WHEN 9 THEN 'LINE' 
140895                 
140896                 ELSE null
140897               END                           object_type_code
140898             , CASE r
140899                 WHEN 1 THEN '707' 
140900                 WHEN 2 THEN '707' 
140901                 WHEN 3 THEN '707' 
140902                 WHEN 4 THEN '707' 
140903                 WHEN 5 THEN '707' 
140904                 WHEN 6 THEN '707' 
140905                 WHEN 7 THEN '707' 
140906                 WHEN 8 THEN '707' 
140907                 WHEN 9 THEN '707' 
140908                 
140909                 ELSE null
140910               END                           source_application_id
140911             , 'S'             source_type_code
140912             , CASE r
140913                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
140914                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
140915                 WHEN 3 THEN 'CURRENCY_CODE' 
140916                 WHEN 4 THEN 'ENTERED_AMOUNT' 
140917                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
140918                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
140919                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
140920                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
140921                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
140922                 
140923                 ELSE null
140924               END                           source_code
140925             , CASE r
140926                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
140927                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
140928                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
140929                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
140930                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
140931                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
140932                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
140933                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
140934                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
140935                 
140936                 ELSE null
140937               END                           source_value
140938             , null              source_meaning
140939          FROM  xla_events_gt     xet  
140940         , CST_XLA_INV_LINES_V  l2
140941             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
140942         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
140943           AND xet.event_class_code = C_EVENT_CLASS_CODE
140944             AND l2.event_id          = xet.event_id
140945 
140946 )
140947 ;
140948 --
140949 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140950 
140951       trace
140952          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
140953          ,p_level    => C_LEVEL_STATEMENT
140954          ,p_module   => l_log_module);
140955 
140956 END IF;
140957 
140958 
140959 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140960       trace
140961          (p_msg      => 'END of insert_sources_252'
140962          ,p_level    => C_LEVEL_PROCEDURE
140963          ,p_module   => l_log_module);
140964 END IF;
140965 EXCEPTION
140966   WHEN xla_exceptions_pkg.application_exception THEN
140967       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
140968             trace
140969                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
140970                ,p_level    => C_LEVEL_EXCEPTION
140971                ,p_module   => l_log_module);
140972       END IF;
140973       RAISE;
140974   WHEN OTHERS THEN
140975       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
140976             trace
140977                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
140978                ,p_level    => C_LEVEL_EXCEPTION
140979                ,p_module   => l_log_module);
140980        END IF;
140981        xla_exceptions_pkg.raise_message
140982            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_252');
140983 END insert_sources_252;
140984 --
140985 
140986 ---------------------------------------
140987 --
140988 -- PRIVATE FUNCTION
140989 --         EventClass_252
140990 --
140991 ----------------------------------------
140992 --
140993 FUNCTION EventClass_252
140994        (p_application_id         IN NUMBER
140995        ,p_base_ledger_id         IN NUMBER
140996        ,p_target_ledger_id       IN NUMBER
140997        ,p_language               IN VARCHAR2
140998        ,p_currency_code          IN VARCHAR2
140999        ,p_sla_ledger_id          IN NUMBER
141000        ,p_pad_start_date         IN DATE
141001        ,p_pad_end_date           IN DATE
141002        ,p_primary_ledger_id      IN NUMBER)
141003 RETURN BOOLEAN IS
141004 --
141005 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CON_INV_OWNR_TXFR_ALL';
141006 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'CON_INV_OWNR_TXFR';
141007 
141008 l_calculate_acctd_flag   VARCHAR2(1) :='N';
141009 l_calculate_g_l_flag     VARCHAR2(1) :='N';
141010 --
141011 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141012 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141013 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
141014 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141015 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141016 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
141017 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
141018 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141019 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141020 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141021 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141022 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141023 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141024 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141025 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141026 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141027 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141028 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141029 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141030 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141031 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141032 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141033 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
141034 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
141035 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
141036 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
141037 
141038 l_event_id                             NUMBER;
141039 l_previous_event_id                    NUMBER;
141040 l_first_event_id                       NUMBER;
141041 l_last_event_id                        NUMBER;
141042 
141043 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
141044 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
141045 --
141046 --
141047 l_result                    BOOLEAN := TRUE;
141048 l_rows                      NUMBER  := 1000;
141049 l_event_type_name           VARCHAR2(80) := 'All';
141050 l_event_class_name          VARCHAR2(80) := 'Consigned Inventory Ownership Transfer';
141051 l_description               VARCHAR2(4000);
141052 l_transaction_reversal      NUMBER;
141053 l_ae_header_id              NUMBER;
141054 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
141055 l_log_module                VARCHAR2(240);
141056 --
141057 l_acct_reversal_source      VARCHAR2(30);
141058 l_trx_reversal_source       VARCHAR2(30);
141059 
141060 l_continue_with_lines       BOOLEAN := TRUE;
141061 --
141062 l_acc_rev_gl_date_source    DATE;                      -- 4262811
141063 --
141064 type t_array_event_id is table of number index by binary_integer;
141065 
141066 l_rec_array_event                    t_rec_array_event;
141067 l_null_rec_array_event               t_rec_array_event;
141068 l_array_ae_header_id                 xla_number_array_type;
141069 l_actual_flag                        VARCHAR2(1) := NULL;
141070 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
141071 l_balance_type_code                  VARCHAR2(1) :=NULL;
141072 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
141073 
141074 --
141075 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
141076 --
141077 
141078 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
141079 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
141080 
141081 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
141082 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
141083 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
141084 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
141085 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
141086 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
141087 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
141088 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
141089 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
141090 
141091 l_array_source_12              t_array_source_12;
141092 l_array_source_12_meaning      t_array_lookup_meaning;
141093 l_array_source_38              t_array_source_38;
141094 l_array_source_38_meaning      t_array_lookup_meaning;
141095 
141096 l_array_source_4      t_array_source_4;
141097 l_array_source_11      t_array_source_11;
141098 l_array_source_15      t_array_source_15;
141099 l_array_source_18      t_array_source_18;
141100 l_array_source_19      t_array_source_19;
141101 l_array_source_20      t_array_source_20;
141102 l_array_source_21      t_array_source_21;
141103 l_array_source_22      t_array_source_22;
141104 l_array_source_24      t_array_source_24;
141105 
141106 --
141107 CURSOR header_cur
141108 IS
141109 SELECT /*+ leading(xet) cardinality(xet,1) */
141110 -- Event Class Code: CON_INV_OWNR_TXFR
141111     xet.entity_id
141112    ,xet.legal_entity_id
141113    ,xet.entity_code
141114    ,xet.transaction_number
141115    ,xet.event_id
141116    ,xet.event_class_code
141117    ,xet.event_type_code
141118    ,xet.event_number
141119    ,xet.event_date
141120    ,xet.transaction_date
141121    ,xet.reference_num_1
141122    ,xet.reference_num_2
141123    ,xet.reference_num_3
141124    ,xet.reference_num_4
141125    ,xet.reference_char_1
141126    ,xet.reference_char_2
141127    ,xet.reference_char_3
141128    ,xet.reference_char_4
141129    ,xet.reference_date_1
141130    ,xet.reference_date_2
141131    ,xet.reference_date_3
141132    ,xet.reference_date_4
141133    ,xet.event_created_by
141134    ,xet.budgetary_control_flag 
141135   , h1.DISTRIBUTION_TYPE    source_12
141136   , fvl12.meaning   source_12_meaning
141137   , h1.TRANSFER_TO_GL_INDICATOR    source_38
141138   , fvl38.meaning   source_38_meaning
141139   FROM xla_events_gt     xet 
141140   , CST_XLA_INV_HEADERS_V  h1
141141   , fnd_lookup_values    fvl12
141142   , fnd_lookup_values    fvl38
141143  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
141144    and xet.event_class_code = C_EVENT_CLASS_CODE
141145    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
141146    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
141147   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
141148   AND fvl12.view_application_id(+) = 700
141149   AND fvl12.language(+)            = USERENV('LANG')
141150      AND fvl38.lookup_type(+)         = 'YES_NO'
141151   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
141152   AND fvl38.view_application_id(+) = 0
141153   AND fvl38.language(+)            = USERENV('LANG')
141154   
141155  ORDER BY event_id
141156 ;
141157 
141158 
141159 --
141160 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
141161 IS
141162 SELECT  /*+ leading(xet) cardinality(xet,1) */
141163 -- Event Class Code: CON_INV_OWNR_TXFR
141164     xet.entity_id
141165    ,xet.legal_entity_id
141166    ,xet.entity_code
141167    ,xet.transaction_number
141168    ,xet.event_id
141169    ,xet.event_class_code
141170    ,xet.event_type_code
141171    ,xet.event_number
141172    ,xet.event_date
141173    ,xet.transaction_date
141174    ,xet.reference_num_1
141175    ,xet.reference_num_2
141176    ,xet.reference_num_3
141177    ,xet.reference_num_4
141178    ,xet.reference_char_1
141179    ,xet.reference_char_2
141180    ,xet.reference_char_3
141181    ,xet.reference_char_4
141182    ,xet.reference_date_1
141183    ,xet.reference_date_2
141184    ,xet.reference_date_3
141185    ,xet.reference_date_4
141186    ,xet.event_created_by
141187    ,xet.budgetary_control_flag
141188  , l2.LINE_NUMBER  
141189   , l2.CODE_COMBINATION_ID    source_4
141190   , l2.DISTRIBUTION_IDENTIFIER    source_11
141191   , l2.CURRENCY_CODE    source_15
141192   , l2.ENTERED_AMOUNT    source_18
141193   , l2.CURRENCY_CONVERSION_DATE    source_19
141194   , l2.CURRENCY_CONVERSION_RATE    source_20
141195   , l2.CURRENCY_CONVERSION_TYPE    source_21
141196   , l2.ACCOUNTED_AMOUNT    source_22
141197   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
141198   FROM xla_events_gt     xet 
141199   , CST_XLA_INV_LINES_V  l2
141200  WHERE xet.event_id between x_first_event_id and x_last_event_id
141201    and xet.event_date between p_pad_start_date and p_pad_end_date
141202    and xet.event_class_code = C_EVENT_CLASS_CODE
141203    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
141204 ;
141205 
141206 --
141207 BEGIN
141208 IF g_log_enabled THEN
141209    l_log_module := C_DEFAULT_MODULE||'.EventClass_252';
141210 END IF;
141211 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141212    trace
141213       (p_msg      => 'BEGIN of EventClass_252'
141214       ,p_level    => C_LEVEL_PROCEDURE
141215       ,p_module   => l_log_module);
141216 END IF;
141217 
141218 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141219    trace
141220       (p_msg      => 'p_application_id = '||p_application_id||
141221                      ' - p_base_ledger_id = '||p_base_ledger_id||
141222                      ' - p_target_ledger_id  = '||p_target_ledger_id||
141223                      ' - p_language = '||p_language||
141224                      ' - p_currency_code = '||p_currency_code||
141225                      ' - p_sla_ledger_id = '||p_sla_ledger_id
141226       ,p_level    => C_LEVEL_STATEMENT
141227       ,p_module   => l_log_module);
141228 END IF;
141229 --
141230 -- initialze arrays
141231 --
141232 g_array_event.DELETE;
141233 l_rec_array_event := l_null_rec_array_event;
141234 --
141235 --------------------------------------
141236 -- 4262811 Initialze MPA Line Number
141237 --------------------------------------
141238 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
141239 
141240 --
141241 
141242 --
141243 OPEN header_cur;
141244 --
141245 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141246    trace
141247    (p_msg      => 'SQL - FETCH header_cur'
141248    ,p_level    => C_LEVEL_STATEMENT
141249    ,p_module   => l_log_module);
141250 END IF;
141251 --
141252 LOOP
141253 FETCH header_cur BULK COLLECT INTO
141254         l_array_entity_id
141255       , l_array_legal_entity_id
141256       , l_array_entity_code
141257       , l_array_transaction_num
141258       , l_array_event_id
141259       , l_array_class_code
141260       , l_array_event_type
141261       , l_array_event_number
141262       , l_array_event_date
141263       , l_array_transaction_date
141264       , l_array_reference_num_1
141265       , l_array_reference_num_2
141266       , l_array_reference_num_3
141267       , l_array_reference_num_4
141268       , l_array_reference_char_1
141269       , l_array_reference_char_2
141270       , l_array_reference_char_3
141271       , l_array_reference_char_4
141272       , l_array_reference_date_1
141273       , l_array_reference_date_2
141274       , l_array_reference_date_3
141275       , l_array_reference_date_4
141276       , l_array_event_created_by
141277       , l_array_budgetary_control_flag 
141278       , l_array_source_12
141279       , l_array_source_12_meaning
141280       , l_array_source_38
141281       , l_array_source_38_meaning
141282       LIMIT l_rows;
141283 --
141284 IF (C_LEVEL_EVENT >= g_log_level) THEN
141285    trace
141286    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
141287    ,p_level    => C_LEVEL_EVENT
141288    ,p_module   => l_log_module);
141289 END IF;
141290 --
141291 EXIT WHEN l_array_entity_id.COUNT = 0;
141292 
141293 -- initialize arrays
141294 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
141295 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
141296 
141297 --
141298 -- Bug 4458708
141299 --
141300 XLA_AE_LINES_PKG.g_LineNumber := 0;
141301 
141302 
141303 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
141304 g_last_hdr_idx := l_array_event_id.LAST;
141305 --
141306 -- loop for the headers. Each iteration is for each header extract row
141307 -- fetched in header cursor
141308 --
141309 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
141310 
141311 --
141312 -- set event info as cache for other routines to refer event attributes
141313 --
141314 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
141315    (p_application_id           => p_application_id
141316    ,p_primary_ledger_id        => p_primary_ledger_id
141317    ,p_base_ledger_id           => p_base_ledger_id
141318    ,p_target_ledger_id         => p_target_ledger_id
141319    ,p_entity_id                => l_array_entity_id(hdr_idx)
141320    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
141321    ,p_entity_code              => l_array_entity_code(hdr_idx)
141322    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
141323    ,p_event_id                 => l_array_event_id(hdr_idx)
141324    ,p_event_class_code         => l_array_class_code(hdr_idx)
141325    ,p_event_type_code          => l_array_event_type(hdr_idx)
141326    ,p_event_number             => l_array_event_number(hdr_idx)
141327    ,p_event_date               => l_array_event_date(hdr_idx)
141328    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
141329    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
141330    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
141331    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
141332    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
141333    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
141334    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
141335    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
141336    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
141337    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
141338    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
141339    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
141340    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
141341    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
141342    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
141343 
141344 --
141345 -- set the status of entry to C_VALID (0)
141346 --
141347 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
141348 
141349 --
141350 -- initialize a row for ae header
141351 --
141352 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
141353 
141354 l_event_id := l_array_event_id(hdr_idx);
141355 
141356 --
141357 -- storing the hdr_idx for event. May be used by line cursor.
141358 --
141359 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
141360 
141361 --
141362 -- store sources from header extract. This can be improved to
141363 -- store only those sources from header extract that may be used in lines
141364 --
141365 
141366 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
141367 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
141368 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
141369 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
141370 
141371 --
141372 -- initilaize the status of ae headers for diffrent balance types
141373 -- the status is initialised to C_NOT_CREATED (2)
141374 --
141375 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
141376 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
141377 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
141378 
141379 --
141380 -- call api to validate and store accounting attributes for header
141381 --
141382 
141383 ------------------------------------------------------------
141384 -- Accrual Reversal : to get date for Standard Source (NONE)
141385 ------------------------------------------------------------
141386 l_acc_rev_gl_date_source := NULL;
141387 
141388      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
141389       l_rec_acct_attrs.array_date_value(1) := 
141390 xla_ae_sources_pkg.GetSystemSourceDate(
141391    p_source_code           => 'XLA_REFERENCE_DATE_1'
141392  , p_source_type_code      => 'Y'
141393  , p_source_application_id =>  602
141394 );
141395      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
141396       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
141397 
141398 
141399 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
141400 
141401 XLA_AE_HEADER_PKG.SetJeCategoryName;
141402 
141403 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
141404 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
141405 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
141406 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
141407 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
141408 
141409 
141410 -- No header level analytical criteria
141411 
141412 --
141413 --accounting attribute enhancement, bug 3612931
141414 --
141415 l_trx_reversal_source := SUBSTR(NULL, 1,30);
141416 
141417 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
141418    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
141419 
141420    xla_accounting_err_pkg.build_message
141421       (p_appli_s_name            => 'XLA'
141422       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
141423       ,p_token_1                 => 'ACCT_ATTR_NAME'
141424       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
141425       ,p_token_2                 => 'PRODUCT_NAME'
141426       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
141427       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
141428       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
141429       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
141430 
141431 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
141432    --
141433    -- following sets the accounting attributes needed to reverse
141434    -- accounting for a distributeion
141435    --
141436    xla_ae_lines_pkg.SetTrxReversalAttrs
141437       (p_event_id              => l_event_id
141438       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
141439       ,p_trx_reversal_source   => l_trx_reversal_source);
141440 
141441 END IF;
141442 
141443 
141444 ----------------------------------------------------------------
141445 -- 4262811 -  update the header statuses to invalid in need be
141446 ----------------------------------------------------------------
141447 --
141448 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
141449 
141450 
141451   -----------------------------------------------
141452   -- No accrual reversal for the event class/type
141453   -----------------------------------------------
141454 ----------------------------------------------------------------
141455 
141456 --
141457 -- this ends the header loop iteration for one bulk fetch
141458 --
141459 END LOOP;
141460 
141461 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
141462 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
141463 
141464 --
141465 -- insert dummy rows into lines gt table that were created due to
141466 -- transaction reversals
141467 --
141468 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
141469    l_result := XLA_AE_LINES_PKG.InsertLines;
141470 END IF;
141471 
141472 --
141473 -- reset the temp_line_num for each set of events fetched from header
141474 -- cursor rather than doing it for each new event in line cursor
141475 -- Bug 3939231
141476 --
141477 xla_ae_lines_pkg.g_temp_line_num := 0;
141478 
141479 
141480 
141481 --
141482 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
141483 --
141484 --
141485 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141486 
141487       trace
141488          (p_msg      => 'SQL - FETCH line_cur'
141489          ,p_level    => C_LEVEL_STATEMENT
141490          ,p_module   => l_log_module);
141491 
141492 END IF;
141493 --
141494 --
141495 LOOP
141496   --
141497   FETCH line_cur BULK COLLECT INTO
141498         l_array_entity_id
141499       , l_array_legal_entity_id
141500       , l_array_entity_code
141501       , l_array_transaction_num
141502       , l_array_event_id
141503       , l_array_class_code
141504       , l_array_event_type
141505       , l_array_event_number
141506       , l_array_event_date
141507       , l_array_transaction_date
141508       , l_array_reference_num_1
141509       , l_array_reference_num_2
141510       , l_array_reference_num_3
141511       , l_array_reference_num_4
141512       , l_array_reference_char_1
141513       , l_array_reference_char_2
141514       , l_array_reference_char_3
141515       , l_array_reference_char_4
141516       , l_array_reference_date_1
141517       , l_array_reference_date_2
141518       , l_array_reference_date_3
141519       , l_array_reference_date_4
141520       , l_array_event_created_by
141521       , l_array_budgetary_control_flag
141522       , l_array_extract_line_num 
141523       , l_array_source_4
141524       , l_array_source_11
141525       , l_array_source_15
141526       , l_array_source_18
141527       , l_array_source_19
141528       , l_array_source_20
141529       , l_array_source_21
141530       , l_array_source_22
141531       , l_array_source_24
141532       LIMIT l_rows;
141533 
141534   --
141535   IF (C_LEVEL_EVENT >= g_log_level) THEN
141536             trace
141537                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
141538                ,p_level    => C_LEVEL_EVENT
141539                ,p_module   => l_log_module);
141540   END IF;
141541   --
141542   EXIT WHEN l_array_entity_id.count = 0;
141543 
141544   XLA_AE_LINES_PKG.g_rec_lines := null;
141545 
141546 --
141547 -- Bug 4458708
141548 --
141549 XLA_AE_LINES_PKG.g_LineNumber := 0;
141550 --
141551 --
141552 
141553 FOR Idx IN 1..l_array_event_id.count LOOP
141554    --
141555    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
141556    --
141557    l_event_id := l_array_event_id(idx);  -- 5648433
141558 
141559    --
141560    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
141561    --
141562 
141563    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
141564              (g_array_event(l_event_id).array_value_num('header_index'))
141565          ,'N'
141566          ) <> 'Y'
141567    THEN
141568       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141569          trace
141570             (p_msg      => 'Trancaction revesal option is not Y '
141571             ,p_level    => C_LEVEL_STATEMENT
141572             ,p_module   => l_log_module);
141573       END IF;
141574 
141575 --
141576 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
141577 --
141578 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
141579 --
141580 -- set event info as cache for other routines to refer event attributes
141581 --
141582 
141583 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
141584    l_previous_event_id := l_event_id;
141585 
141586    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
141587       (p_application_id           => p_application_id
141588       ,p_primary_ledger_id        => p_primary_ledger_id
141589       ,p_base_ledger_id           => p_base_ledger_id
141590       ,p_target_ledger_id         => p_target_ledger_id
141591       ,p_entity_id                => l_array_entity_id(Idx)
141592       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
141593       ,p_entity_code              => l_array_entity_code(Idx)
141594       ,p_transaction_num          => l_array_transaction_num(Idx)
141595       ,p_event_id                 => l_array_event_id(Idx)
141596       ,p_event_class_code         => l_array_class_code(Idx)
141597       ,p_event_type_code          => l_array_event_type(Idx)
141598       ,p_event_number             => l_array_event_number(Idx)
141599       ,p_event_date               => l_array_event_date(Idx)
141600       ,p_transaction_date         => l_array_transaction_date(Idx)
141601       ,p_reference_num_1          => l_array_reference_num_1(Idx)
141602       ,p_reference_num_2          => l_array_reference_num_2(Idx)
141603       ,p_reference_num_3          => l_array_reference_num_3(Idx)
141604       ,p_reference_num_4          => l_array_reference_num_4(Idx)
141605       ,p_reference_char_1         => l_array_reference_char_1(Idx)
141606       ,p_reference_char_2         => l_array_reference_char_2(Idx)
141607       ,p_reference_char_3         => l_array_reference_char_3(Idx)
141608       ,p_reference_char_4         => l_array_reference_char_4(Idx)
141609       ,p_reference_date_1         => l_array_reference_date_1(Idx)
141610       ,p_reference_date_2         => l_array_reference_date_2(Idx)
141611       ,p_reference_date_3         => l_array_reference_date_3(Idx)
141612       ,p_reference_date_4         => l_array_reference_date_4(Idx)
141613       ,p_event_created_by         => l_array_event_created_by(Idx)
141614       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
141615        --
141616 END IF;
141617 
141618 
141619 
141620 --
141621 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
141622 
141623 l_acct_reversal_source := SUBSTR(NULL, 1,30);
141624 
141625 IF l_continue_with_lines THEN
141626    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
141627       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
141628 
141629       xla_accounting_err_pkg.build_message
141630          (p_appli_s_name            => 'XLA'
141631          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
141632          ,p_token_1                 => 'LINE_NUMBER'
141633          ,p_value_1                 => l_array_extract_line_num(Idx)
141634          ,p_token_2                 => 'PRODUCT_NAME'
141635          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
141636          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
141637          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
141638          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
141639 
141640    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
141641       --
141642       -- following sets the accounting attributes needed to reverse
141643       -- accounting for a distributeion
141644       --
141645 
141646       --
141647       -- 5217187
141648       --
141649       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
141650       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
141651                                        g_array_event(l_event_id).array_value_num('header_index'));
141652       --
141653       --
141654 
141655       -- No reversal code generated
141656 
141657       xla_ae_lines_pkg.SetAcctReversalAttrs
141658          (p_event_id             => l_event_id
141659          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
141660          ,p_calculate_acctd_flag => l_calculate_acctd_flag
141661          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
141662    END IF;
141663 
141664    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
141665        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
141666 
141667 --
141668 AcctLineType_6 (
141669  p_application_id  => p_application_id
141670  ,p_event_id     => l_event_id
141671  ,p_calculate_acctd_flag => l_calculate_acctd_flag
141672  ,p_calculate_g_l_flag => l_calculate_g_l_flag
141673  ,p_actual_flag => l_actual_flag
141674  ,p_balance_type_code => l_balance_type_code
141675  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141676  
141677  , p_source_4 => l_array_source_4(Idx)
141678  , p_source_11 => l_array_source_11(Idx)
141679  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
141680  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
141681  , p_source_15 => l_array_source_15(Idx)
141682  , p_source_18 => l_array_source_18(Idx)
141683  , p_source_19 => l_array_source_19(Idx)
141684  , p_source_20 => l_array_source_20(Idx)
141685  , p_source_21 => l_array_source_21(Idx)
141686  , p_source_22 => l_array_source_22(Idx)
141687  , p_source_24 => l_array_source_24(Idx)
141688  );
141689 If(l_balance_type_code = 'A') THEN
141690   l_actual_gain_loss_ref := l_gain_or_loss_ref;
141691 END IF;
141692 
141693 --
141694 
141695 
141696 --
141697 AcctLineType_42 (
141698  p_application_id  => p_application_id
141699  ,p_event_id     => l_event_id
141700  ,p_calculate_acctd_flag => l_calculate_acctd_flag
141701  ,p_calculate_g_l_flag => l_calculate_g_l_flag
141702  ,p_actual_flag => l_actual_flag
141703  ,p_balance_type_code => l_balance_type_code
141704  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141705  
141706  , p_source_4 => l_array_source_4(Idx)
141707  , p_source_11 => l_array_source_11(Idx)
141708  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
141709  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
141710  , p_source_15 => l_array_source_15(Idx)
141711  , p_source_18 => l_array_source_18(Idx)
141712  , p_source_19 => l_array_source_19(Idx)
141713  , p_source_20 => l_array_source_20(Idx)
141714  , p_source_21 => l_array_source_21(Idx)
141715  , p_source_22 => l_array_source_22(Idx)
141716  , p_source_24 => l_array_source_24(Idx)
141717  );
141718 If(l_balance_type_code = 'A') THEN
141719   l_actual_gain_loss_ref := l_gain_or_loss_ref;
141720 END IF;
141721 
141722 --
141723 
141724 
141725 --
141726 AcctLineType_129 (
141727  p_application_id  => p_application_id
141728  ,p_event_id     => l_event_id
141729  ,p_calculate_acctd_flag => l_calculate_acctd_flag
141730  ,p_calculate_g_l_flag => l_calculate_g_l_flag
141731  ,p_actual_flag => l_actual_flag
141732  ,p_balance_type_code => l_balance_type_code
141733  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141734  
141735  , p_source_4 => l_array_source_4(Idx)
141736  , p_source_11 => l_array_source_11(Idx)
141737  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
141738  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
141739  , p_source_15 => l_array_source_15(Idx)
141740  , p_source_18 => l_array_source_18(Idx)
141741  , p_source_19 => l_array_source_19(Idx)
141742  , p_source_20 => l_array_source_20(Idx)
141743  , p_source_21 => l_array_source_21(Idx)
141744  , p_source_22 => l_array_source_22(Idx)
141745  , p_source_24 => l_array_source_24(Idx)
141746  );
141747 If(l_balance_type_code = 'A') THEN
141748   l_actual_gain_loss_ref := l_gain_or_loss_ref;
141749 END IF;
141750 
141751 --
141752 
141753 
141754 --
141755 AcctLineType_158 (
141756  p_application_id  => p_application_id
141757  ,p_event_id     => l_event_id
141758  ,p_calculate_acctd_flag => l_calculate_acctd_flag
141759  ,p_calculate_g_l_flag => l_calculate_g_l_flag
141760  ,p_actual_flag => l_actual_flag
141761  ,p_balance_type_code => l_balance_type_code
141762  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141763  
141764  , p_source_4 => l_array_source_4(Idx)
141765  , p_source_11 => l_array_source_11(Idx)
141766  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
141767  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
141768  , p_source_15 => l_array_source_15(Idx)
141769  , p_source_18 => l_array_source_18(Idx)
141770  , p_source_19 => l_array_source_19(Idx)
141771  , p_source_20 => l_array_source_20(Idx)
141772  , p_source_21 => l_array_source_21(Idx)
141773  , p_source_22 => l_array_source_22(Idx)
141774  , p_source_24 => l_array_source_24(Idx)
141775  );
141776 If(l_balance_type_code = 'A') THEN
141777   l_actual_gain_loss_ref := l_gain_or_loss_ref;
141778 END IF;
141779 
141780 --
141781 
141782 
141783 --
141784 AcctLineType_211 (
141785  p_application_id  => p_application_id
141786  ,p_event_id     => l_event_id
141787  ,p_calculate_acctd_flag => l_calculate_acctd_flag
141788  ,p_calculate_g_l_flag => l_calculate_g_l_flag
141789  ,p_actual_flag => l_actual_flag
141790  ,p_balance_type_code => l_balance_type_code
141791  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141792  
141793  , p_source_4 => l_array_source_4(Idx)
141794  , p_source_11 => l_array_source_11(Idx)
141795  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
141796  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
141797  , p_source_15 => l_array_source_15(Idx)
141798  , p_source_18 => l_array_source_18(Idx)
141799  , p_source_19 => l_array_source_19(Idx)
141800  , p_source_20 => l_array_source_20(Idx)
141801  , p_source_21 => l_array_source_21(Idx)
141802  , p_source_22 => l_array_source_22(Idx)
141803  , p_source_24 => l_array_source_24(Idx)
141804  );
141805 If(l_balance_type_code = 'A') THEN
141806   l_actual_gain_loss_ref := l_gain_or_loss_ref;
141807 END IF;
141808 
141809 --
141810 
141811       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
141812       -- or secondary ledger that has different currency with primary
141813       -- or alc that is calculated by sla
141814       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
141815             (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'))
141816 
141817 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
141818 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
141819           AND (l_actual_flag = 'A')) THEN
141820         XLA_AE_LINES_PKG.CreateGainOrLossLines(
141821           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
141822          ,p_application_id   => p_application_id
141823          ,p_amb_context_code => 'DEFAULT'
141824          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
141825          ,p_event_class_code => C_EVENT_CLASS_CODE
141826          ,p_event_type_code  => C_EVENT_TYPE_CODE
141827          
141828          ,p_gain_ccid        => -1
141829          ,p_loss_ccid        => -1
141830 
141831          ,p_actual_flag      => l_actual_flag
141832          ,p_enc_flag         => null
141833          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
141834          ,p_enc_g_l_ref      => null
141835          );
141836       END IF;
141837    END IF;
141838 END IF;
141839 
141840    ELSE
141841       --
141842       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
141843       --
141844       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141845          trace
141846             (p_msg      => 'Trancaction revesal option is Y'
141847             ,p_level    => C_LEVEL_STATEMENT
141848             ,p_module   => l_log_module);
141849       END IF;
141850    END IF;
141851 
141852 END LOOP;
141853 l_result := XLA_AE_LINES_PKG.InsertLines ;
141854 end loop;
141855 close line_cur;
141856 
141857 
141858 --
141859 -- insert headers into xla_ae_headers_gt table
141860 --
141861 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
141862 
141863 -- insert into errors table here.
141864 
141865 END LOOP;
141866 
141867 --
141868 -- 4865292
141869 --
141870 -- Compare g_hdr_extract_count with event count in
141871 -- CreateHeadersAndLines.
141872 --
141873 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
141874 
141875 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141876    trace (p_msg     => '# rows extracted from header extract objects '
141877                     || ' (running total): '
141878                     || g_hdr_extract_count
141879          ,p_level   => C_LEVEL_STATEMENT
141880          ,p_module  => l_log_module);
141881 END IF;
141882 
141883 CLOSE header_cur;
141884 --
141885 
141886 --
141887 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141888    trace
141889       (p_msg      => 'END of EventClass_252'
141890       ,p_level    => C_LEVEL_PROCEDURE
141891       ,p_module   => l_log_module);
141892 END IF;
141893 --
141894 RETURN l_result;
141895 EXCEPTION
141896 WHEN xla_exceptions_pkg.application_exception THEN
141897    
141898 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
141899 
141900    
141901 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
141902 
141903    RAISE;
141904 
141905 WHEN NO_DATA_FOUND THEN
141906 
141907 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
141908 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
141909 
141910 FOR header_record IN header_cur
141911 LOOP
141912     l_array_header_events(header_record.event_id) := header_record.event_id;
141913 END LOOP;
141914 
141915 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
141916 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
141917 
141918 fnd_file.put_line(fnd_file.LOG, '                    ');
141919 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
141920 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
141921 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
141922 
141923 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
141924 LOOP
141925 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
141926 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
141927         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
141928 	END IF;
141929 END LOOP;
141930 
141931 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
141932 fnd_file.put_line(fnd_file.LOG, '                    ');
141933 
141934 
141935 xla_exceptions_pkg.raise_message
141936       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_252');
141937 
141938 
141939 WHEN OTHERS THEN
141940    xla_exceptions_pkg.raise_message
141941       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_252');
141942 END EventClass_252;
141943 --
141944 
141945 ---------------------------------------
141946 --
141947 -- PRIVATE PROCEDURE
141948 --         insert_sources_253
141949 --
141950 ----------------------------------------
141951 --
141952 PROCEDURE insert_sources_253(
141953                                 p_target_ledger_id       IN NUMBER
141954                               , p_language               IN VARCHAR2
141955                               , p_sla_ledger_id          IN NUMBER
141956                               , p_pad_start_date         IN DATE
141957                               , p_pad_end_date           IN DATE
141958                          )
141959 IS
141960 
141961 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DELIVER_EXPENSE_ALL';
141962 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DELIVER_EXPENSE';
141963 p_apps_owner                   VARCHAR2(30);
141964 l_log_module                   VARCHAR2(240);
141965 BEGIN
141966 IF g_log_enabled THEN
141967       l_log_module := C_DEFAULT_MODULE||'.insert_sources_253';
141968 END IF;
141969 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141970 
141971       trace
141972          (p_msg      => 'BEGIN of insert_sources_253'
141973          ,p_level    => C_LEVEL_PROCEDURE
141974          ,p_module   => l_log_module);
141975 
141976 END IF;
141977 
141978 -- select APPS owner
141979 SELECT oracle_username
141980   INTO p_apps_owner
141981   FROM fnd_oracle_userid
141982  WHERE read_only_flag = 'U'
141983 ;
141984 
141985 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141986       trace
141987          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
141988                         ' - p_language = '||p_language||
141989                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
141990                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
141991                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
141992                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
141993          ,p_level    => C_LEVEL_STATEMENT
141994          ,p_module   => l_log_module);
141995 END IF;
141996 
141997 
141998 --
141999 INSERT INTO xla_diag_sources --hdr2
142000 (
142001         event_id
142002       , ledger_id
142003       , sla_ledger_id
142004       , description_language
142005       , object_name
142006       , object_type_code
142007       , line_number
142008       , source_application_id
142009       , source_type_code
142010       , source_code
142011       , source_value
142012       , source_meaning
142013       , created_by
142014       , creation_date
142015       , last_update_date
142016       , last_updated_by
142017       , last_update_login
142018       , program_update_date
142019       , program_application_id
142020       , program_id
142021       , request_id
142022 )
142023 SELECT
142024         event_id
142025       , p_target_ledger_id
142026       , p_sla_ledger_id
142027       , p_language
142028       , object_name
142029       , object_type_code
142030       , line_number
142031       , source_application_id
142032       , source_type_code
142033       , source_code
142034       , SUBSTR(source_value ,1,1996)
142035       , SUBSTR(source_meaning ,1,200)
142036       , xla_environment_pkg.g_Usr_Id
142037       , TRUNC(SYSDATE)
142038       , TRUNC(SYSDATE)
142039       , xla_environment_pkg.g_Usr_Id
142040       , xla_environment_pkg.g_Login_Id
142041       , TRUNC(SYSDATE)
142042       , xla_environment_pkg.g_Prog_Appl_Id
142043       , xla_environment_pkg.g_Prog_Id
142044       , xla_environment_pkg.g_Req_Id
142045   FROM (
142046        SELECT xet.event_id                  event_id
142047             , 0                          line_number
142048             , CASE r
142049                WHEN 1 THEN 'CST_XLA_RCV_REF_V' 
142050                 WHEN 2 THEN 'CST_XLA_RCV_REF_V' 
142051                 WHEN 3 THEN 'CST_XLA_RCV_REF_V' 
142052                 WHEN 4 THEN 'CST_XLA_RCV_REF_V' 
142053                 WHEN 5 THEN 'CST_XLA_RCV_REF_V' 
142054                 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V' 
142055                 WHEN 7 THEN 'PO_DISTS_REF_V' 
142056                 WHEN 8 THEN 'CST_XLA_RCV_REF_V' 
142057                 WHEN 9 THEN 'CST_XLA_RCV_HEADERS_V' 
142058                 WHEN 10 THEN 'CST_XLA_RCV_REF_V' 
142059                 WHEN 11 THEN 'CST_XLA_RCV_HEADERS_V' 
142060                 WHEN 12 THEN 'CST_XLA_RCV_HEADERS_V' 
142061                 WHEN 13 THEN 'CST_XLA_RCV_HEADERS_V' 
142062                 WHEN 14 THEN 'PO_HEADERS_REF_V' 
142063                 WHEN 15 THEN 'PSA_CST_XLA_UPG_V' 
142064                 WHEN 16 THEN 'CST_XLA_RCV_HEADERS_V' 
142065                 
142066                ELSE null
142067               END                           object_name
142068             , CASE r
142069                 WHEN 1 THEN 'HEADER' 
142070                 WHEN 2 THEN 'HEADER' 
142071                 WHEN 3 THEN 'HEADER' 
142072                 WHEN 4 THEN 'HEADER' 
142073                 WHEN 5 THEN 'HEADER' 
142074                 WHEN 6 THEN 'HEADER' 
142075                 WHEN 7 THEN 'HEADER' 
142076                 WHEN 8 THEN 'HEADER' 
142077                 WHEN 9 THEN 'HEADER' 
142078                 WHEN 10 THEN 'HEADER' 
142079                 WHEN 11 THEN 'HEADER' 
142080                 WHEN 12 THEN 'HEADER' 
142081                 WHEN 13 THEN 'HEADER' 
142082                 WHEN 14 THEN 'HEADER' 
142083                 WHEN 15 THEN 'HEADER' 
142084                 WHEN 16 THEN 'HEADER' 
142085                 
142086                 ELSE null
142087               END                           object_type_code
142088             , CASE r
142089                 WHEN 1 THEN '707' 
142090                 WHEN 2 THEN '707' 
142091                 WHEN 3 THEN '707' 
142092                 WHEN 4 THEN '707' 
142093                 WHEN 5 THEN '707' 
142094                 WHEN 6 THEN '707' 
142095                 WHEN 7 THEN '201' 
142096                 WHEN 8 THEN '707' 
142097                 WHEN 9 THEN '707' 
142098                 WHEN 10 THEN '707' 
142099                 WHEN 11 THEN '707' 
142100                 WHEN 12 THEN '707' 
142101                 WHEN 13 THEN '707' 
142102                 WHEN 14 THEN '201' 
142103                 WHEN 15 THEN '707' 
142104                 WHEN 16 THEN '707' 
142105                 
142106                 ELSE null
142107               END                           source_application_id
142108             , 'S'             source_type_code
142109             , CASE r
142110                 WHEN 1 THEN 'APPLIED_TO_APPL_ID' 
142111                 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
142112                 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE' 
142113                 WHEN 4 THEN 'PO_DISTRIBUTION_ID' 
142114                 WHEN 5 THEN 'APPLIED_TO_PO_DOC_ID' 
142115                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
142116                 WHEN 7 THEN 'PO_BUDGET_ACCOUNT' 
142117                 WHEN 8 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
142118                 WHEN 9 THEN 'CURRENCY_CODE' 
142119                 WHEN 10 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
142120                 WHEN 11 THEN 'CURRENCY_CONVERSION_DATE' 
142121                 WHEN 12 THEN 'CURRENCY_CONVERSION_RATE' 
142122                 WHEN 13 THEN 'CURRENCY_CONVERSION_TYPE' 
142123                 WHEN 14 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
142124                 WHEN 15 THEN 'CST_ENCUM_UPG_OPTION' 
142125                 WHEN 16 THEN 'TRANSFER_TO_GL_INDICATOR' 
142126                 
142127                 ELSE null
142128               END                           source_code
142129             , CASE r
142130                 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
142131                 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
142132                 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
142133                 WHEN 4 THEN TO_CHAR(h3.PO_DISTRIBUTION_ID)
142134                 WHEN 5 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
142135                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
142136                 WHEN 7 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
142137                 WHEN 8 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
142138                 WHEN 9 THEN TO_CHAR(h1.CURRENCY_CODE)
142139                 WHEN 10 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
142140                 WHEN 11 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
142141                 WHEN 12 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
142142                 WHEN 13 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
142143                 WHEN 14 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
142144                 WHEN 15 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
142145                 WHEN 16 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
142146                 
142147                 ELSE null
142148               END                           source_value
142149             , CASE r
142150                 WHEN 6 THEN fvl12.meaning
142151                 WHEN 16 THEN fvl38.meaning
142152                 
142153                 ELSE null
142154               END               source_meaning
142155          FROM xla_events_gt     xet  
142156       , CST_XLA_RCV_HEADERS_V  h1
142157       , CST_XLA_RCV_REF_V  h3
142158       , PO_DISTS_REF_V  h4
142159       , PO_HEADERS_REF_V  h5
142160       , PSA_CST_XLA_UPG_V  h6
142161   , fnd_lookup_values    fvl12
142162   , fnd_lookup_values    fvl38
142163              ,(select rownum r from all_objects where rownum <= 16 and owner = p_apps_owner)
142164          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
142165            AND xet.event_class_code = C_EVENT_CLASS_CODE
142166               AND h1.event_id = xet.event_id
142167  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'
142168   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
142169   AND fvl12.view_application_id(+) = 700
142170   AND fvl12.language(+)            = USERENV('LANG')
142171      AND fvl38.lookup_type(+)         = 'YES_NO'
142172   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
142173   AND fvl38.view_application_id(+) = 0
142174   AND fvl38.language(+)            = USERENV('LANG')
142175   
142176 )
142177 ;
142178 --
142179 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142180 
142181       trace
142182          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
142183          ,p_level    => C_LEVEL_STATEMENT
142184          ,p_module   => l_log_module);
142185 
142186 END IF;
142187 --
142188 
142189 
142190 
142191 --
142192 INSERT INTO xla_diag_sources  --line2
142193 (
142194         event_id
142195       , ledger_id
142196       , sla_ledger_id
142197       , description_language
142198       , object_name
142199       , object_type_code
142200       , line_number
142201       , source_application_id
142202       , source_type_code
142203       , source_code
142204       , source_value
142205       , source_meaning
142206       , created_by
142207       , creation_date
142208       , last_update_date
142209       , last_updated_by
142210       , last_update_login
142211       , program_update_date
142212       , program_application_id
142213       , program_id
142214       , request_id
142215 )
142216 SELECT  event_id
142217       , p_target_ledger_id
142218       , p_sla_ledger_id
142219       , p_language
142220       , object_name
142221       , object_type_code
142222       , line_number
142223       , source_application_id
142224       , source_type_code
142225       , source_code
142226       , SUBSTR(source_value,1,1996)
142227       , SUBSTR(source_meaning ,1,200)
142228       , xla_environment_pkg.g_Usr_Id
142229       , TRUNC(SYSDATE)
142230       , TRUNC(SYSDATE)
142231       , xla_environment_pkg.g_Usr_Id
142232       , xla_environment_pkg.g_Login_Id
142233       , TRUNC(SYSDATE)
142234       , xla_environment_pkg.g_Prog_Appl_Id
142235       , xla_environment_pkg.g_Prog_Id
142236       , xla_environment_pkg.g_Req_Id
142237   FROM (
142238        SELECT xet.event_id                  event_id
142239             , l2.line_number                 line_number
142240             , CASE r
142241                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
142242                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
142243                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
142244                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
142245                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
142246                 
142247                ELSE null
142248               END                           object_name
142249             , CASE r
142250                 WHEN 1 THEN 'LINE' 
142251                 WHEN 2 THEN 'LINE' 
142252                 WHEN 3 THEN 'LINE' 
142253                 WHEN 4 THEN 'LINE' 
142254                 WHEN 5 THEN 'LINE' 
142255                 
142256                 ELSE null
142257               END                           object_type_code
142258             , CASE r
142259                 WHEN 1 THEN '707' 
142260                 WHEN 2 THEN '707' 
142261                 WHEN 3 THEN '707' 
142262                 WHEN 4 THEN '707' 
142263                 WHEN 5 THEN '707' 
142264                 
142265                 ELSE null
142266               END                           source_application_id
142267             , 'S'             source_type_code
142268             , CASE r
142269                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
142270                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
142271                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
142272                 WHEN 4 THEN 'ENTERED_AMOUNT' 
142273                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
142274                 
142275                 ELSE null
142276               END                           source_code
142277             , CASE r
142278                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
142279                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
142280                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
142281                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
142282                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
142283                 
142284                 ELSE null
142285               END                           source_value
142286             , null              source_meaning
142287          FROM  xla_events_gt     xet  
142288         , CST_XLA_RCV_LINES_V  l2
142289             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
142290         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
142291           AND xet.event_class_code = C_EVENT_CLASS_CODE
142292             AND l2.event_id          = xet.event_id
142293 
142294 )
142295 ;
142296 --
142297 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142298 
142299       trace
142300          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
142301          ,p_level    => C_LEVEL_STATEMENT
142302          ,p_module   => l_log_module);
142303 
142304 END IF;
142305 
142306 
142307 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142308       trace
142309          (p_msg      => 'END of insert_sources_253'
142310          ,p_level    => C_LEVEL_PROCEDURE
142311          ,p_module   => l_log_module);
142312 END IF;
142313 EXCEPTION
142314   WHEN xla_exceptions_pkg.application_exception THEN
142315       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
142316             trace
142317                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
142318                ,p_level    => C_LEVEL_EXCEPTION
142319                ,p_module   => l_log_module);
142320       END IF;
142321       RAISE;
142322   WHEN OTHERS THEN
142323       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
142324             trace
142325                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
142326                ,p_level    => C_LEVEL_EXCEPTION
142327                ,p_module   => l_log_module);
142328        END IF;
142329        xla_exceptions_pkg.raise_message
142330            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_253');
142331 END insert_sources_253;
142332 --
142333 
142334 ---------------------------------------
142335 --
142336 -- PRIVATE FUNCTION
142337 --         EventClass_253
142338 --
142339 ----------------------------------------
142340 --
142341 FUNCTION EventClass_253
142342        (p_application_id         IN NUMBER
142343        ,p_base_ledger_id         IN NUMBER
142344        ,p_target_ledger_id       IN NUMBER
142345        ,p_language               IN VARCHAR2
142346        ,p_currency_code          IN VARCHAR2
142347        ,p_sla_ledger_id          IN NUMBER
142348        ,p_pad_start_date         IN DATE
142349        ,p_pad_end_date           IN DATE
142350        ,p_primary_ledger_id      IN NUMBER)
142351 RETURN BOOLEAN IS
142352 --
142353 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DELIVER_EXPENSE_ALL';
142354 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DELIVER_EXPENSE';
142355 
142356 l_calculate_acctd_flag   VARCHAR2(1) :='N';
142357 l_calculate_g_l_flag     VARCHAR2(1) :='N';
142358 --
142359 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
142360 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
142361 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
142362 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
142363 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
142364 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
142365 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
142366 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
142367 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
142368 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
142369 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
142370 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
142371 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
142372 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
142373 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
142374 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
142375 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
142376 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
142377 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
142378 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
142379 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
142380 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
142381 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
142382 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
142383 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
142384 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
142385 
142386 l_event_id                             NUMBER;
142387 l_previous_event_id                    NUMBER;
142388 l_first_event_id                       NUMBER;
142389 l_last_event_id                        NUMBER;
142390 
142391 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
142392 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
142393 --
142394 --
142395 l_result                    BOOLEAN := TRUE;
142396 l_rows                      NUMBER  := 1000;
142397 l_event_type_name           VARCHAR2(80) := 'All';
142398 l_event_class_name          VARCHAR2(80) := 'Delivery to Expense Destination';
142399 l_description               VARCHAR2(4000);
142400 l_transaction_reversal      NUMBER;
142401 l_ae_header_id              NUMBER;
142402 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
142403 l_log_module                VARCHAR2(240);
142404 --
142405 l_acct_reversal_source      VARCHAR2(30);
142406 l_trx_reversal_source       VARCHAR2(30);
142407 
142408 l_continue_with_lines       BOOLEAN := TRUE;
142409 --
142410 l_acc_rev_gl_date_source    DATE;                      -- 4262811
142411 --
142412 type t_array_event_id is table of number index by binary_integer;
142413 
142414 l_rec_array_event                    t_rec_array_event;
142415 l_null_rec_array_event               t_rec_array_event;
142416 l_array_ae_header_id                 xla_number_array_type;
142417 l_actual_flag                        VARCHAR2(1) := NULL;
142418 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
142419 l_balance_type_code                  VARCHAR2(1) :=NULL;
142420 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
142421 
142422 --
142423 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
142424 --
142425 
142426 TYPE t_array_source_6 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
142427 TYPE t_array_source_7 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
142428 TYPE t_array_source_8 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
142429 TYPE t_array_source_9 IS TABLE OF CST_XLA_RCV_REF_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
142430 TYPE t_array_source_10 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
142431 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
142432 TYPE t_array_source_13 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
142433 TYPE t_array_source_14 IS TABLE OF CST_XLA_RCV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
142434 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
142435 TYPE t_array_source_16 IS TABLE OF CST_XLA_RCV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
142436 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
142437 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
142438 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
142439 TYPE t_array_source_23 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
142440 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
142441 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
142442 
142443 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
142444 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
142445 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
142446 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
142447 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
142448 
142449 l_array_source_6              t_array_source_6;
142450 l_array_source_7              t_array_source_7;
142451 l_array_source_8              t_array_source_8;
142452 l_array_source_9              t_array_source_9;
142453 l_array_source_10              t_array_source_10;
142454 l_array_source_12              t_array_source_12;
142455 l_array_source_12_meaning      t_array_lookup_meaning;
142456 l_array_source_13              t_array_source_13;
142457 l_array_source_14              t_array_source_14;
142458 l_array_source_15              t_array_source_15;
142459 l_array_source_16              t_array_source_16;
142460 l_array_source_19              t_array_source_19;
142461 l_array_source_20              t_array_source_20;
142462 l_array_source_21              t_array_source_21;
142463 l_array_source_23              t_array_source_23;
142464 l_array_source_27              t_array_source_27;
142465 l_array_source_38              t_array_source_38;
142466 l_array_source_38_meaning      t_array_lookup_meaning;
142467 
142468 l_array_source_4      t_array_source_4;
142469 l_array_source_5      t_array_source_5;
142470 l_array_source_11      t_array_source_11;
142471 l_array_source_18      t_array_source_18;
142472 l_array_source_22      t_array_source_22;
142473 
142474 --
142475 CURSOR header_cur
142476 IS
142477 SELECT /*+ leading(xet) cardinality(xet,1) */
142478 -- Event Class Code: DELIVER_EXPENSE
142479     xet.entity_id
142480    ,xet.legal_entity_id
142481    ,xet.entity_code
142482    ,xet.transaction_number
142483    ,xet.event_id
142484    ,xet.event_class_code
142485    ,xet.event_type_code
142486    ,xet.event_number
142487    ,xet.event_date
142488    ,xet.transaction_date
142489    ,xet.reference_num_1
142490    ,xet.reference_num_2
142491    ,xet.reference_num_3
142492    ,xet.reference_num_4
142493    ,xet.reference_char_1
142494    ,xet.reference_char_2
142495    ,xet.reference_char_3
142496    ,xet.reference_char_4
142497    ,xet.reference_date_1
142498    ,xet.reference_date_2
142499    ,xet.reference_date_3
142500    ,xet.reference_date_4
142501    ,xet.event_created_by
142502    ,xet.budgetary_control_flag 
142503   , h3.APPLIED_TO_APPL_ID    source_6
142504   , h3.APPLIED_TO_DIST_LINK_TYPE    source_7
142505   , h3.APPLIED_TO_ENTITY_CODE    source_8
142506   , h3.PO_DISTRIBUTION_ID    source_9
142507   , h3.APPLIED_TO_PO_DOC_ID    source_10
142508   , h1.DISTRIBUTION_TYPE    source_12
142509   , fvl12.meaning   source_12_meaning
142510   , h4.PO_BUDGET_ACCOUNT    source_13
142511   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_14
142512   , h1.CURRENCY_CODE    source_15
142513   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_16
142514   , h1.CURRENCY_CONVERSION_DATE    source_19
142515   , h1.CURRENCY_CONVERSION_RATE    source_20
142516   , h1.CURRENCY_CONVERSION_TYPE    source_21
142517   , h5.PURCH_ENCUMBRANCE_TYPE_ID    source_23
142518   , h6.CST_ENCUM_UPG_OPTION    source_27
142519   , h1.TRANSFER_TO_GL_INDICATOR    source_38
142520   , fvl38.meaning   source_38_meaning
142521   FROM xla_events_gt     xet 
142522   , CST_XLA_RCV_HEADERS_V  h1
142523   , CST_XLA_RCV_REF_V  h3
142524   , PO_DISTS_REF_V  h4
142525   , PO_HEADERS_REF_V  h5
142526   , PSA_CST_XLA_UPG_V  h6
142527   , fnd_lookup_values    fvl12
142528   , fnd_lookup_values    fvl38
142529  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
142530    and xet.event_class_code = C_EVENT_CLASS_CODE
142531    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
142532  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'
142533   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
142534   AND fvl12.view_application_id(+) = 700
142535   AND fvl12.language(+)            = USERENV('LANG')
142536      AND fvl38.lookup_type(+)         = 'YES_NO'
142537   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
142538   AND fvl38.view_application_id(+) = 0
142539   AND fvl38.language(+)            = USERENV('LANG')
142540   
142541  ORDER BY event_id
142542 ;
142543 
142544 
142545 --
142546 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
142547 IS
142548 SELECT  /*+ leading(xet) cardinality(xet,1) */
142549 -- Event Class Code: DELIVER_EXPENSE
142550     xet.entity_id
142551    ,xet.legal_entity_id
142552    ,xet.entity_code
142553    ,xet.transaction_number
142554    ,xet.event_id
142555    ,xet.event_class_code
142556    ,xet.event_type_code
142557    ,xet.event_number
142558    ,xet.event_date
142559    ,xet.transaction_date
142560    ,xet.reference_num_1
142561    ,xet.reference_num_2
142562    ,xet.reference_num_3
142563    ,xet.reference_num_4
142564    ,xet.reference_char_1
142565    ,xet.reference_char_2
142566    ,xet.reference_char_3
142567    ,xet.reference_char_4
142568    ,xet.reference_date_1
142569    ,xet.reference_date_2
142570    ,xet.reference_date_3
142571    ,xet.reference_date_4
142572    ,xet.event_created_by
142573    ,xet.budgetary_control_flag
142574  , l2.LINE_NUMBER  
142575   , l2.CODE_COMBINATION_ID    source_4
142576   , l2.RCV_ACCOUNTING_LINE_TYPE    source_5
142577   , l2.DISTRIBUTION_IDENTIFIER    source_11
142578   , l2.ENTERED_AMOUNT    source_18
142579   , l2.ACCOUNTED_AMOUNT    source_22
142580   FROM xla_events_gt     xet 
142581   , CST_XLA_RCV_LINES_V  l2
142582  WHERE xet.event_id between x_first_event_id and x_last_event_id
142583    and xet.event_date between p_pad_start_date and p_pad_end_date
142584    and xet.event_class_code = C_EVENT_CLASS_CODE
142585    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
142586 ;
142587 
142588 --
142589 BEGIN
142590 IF g_log_enabled THEN
142591    l_log_module := C_DEFAULT_MODULE||'.EventClass_253';
142592 END IF;
142593 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142594    trace
142595       (p_msg      => 'BEGIN of EventClass_253'
142596       ,p_level    => C_LEVEL_PROCEDURE
142597       ,p_module   => l_log_module);
142598 END IF;
142599 
142600 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142601    trace
142602       (p_msg      => 'p_application_id = '||p_application_id||
142603                      ' - p_base_ledger_id = '||p_base_ledger_id||
142604                      ' - p_target_ledger_id  = '||p_target_ledger_id||
142605                      ' - p_language = '||p_language||
142606                      ' - p_currency_code = '||p_currency_code||
142607                      ' - p_sla_ledger_id = '||p_sla_ledger_id
142608       ,p_level    => C_LEVEL_STATEMENT
142609       ,p_module   => l_log_module);
142610 END IF;
142611 --
142612 -- initialze arrays
142613 --
142614 g_array_event.DELETE;
142615 l_rec_array_event := l_null_rec_array_event;
142616 --
142617 --------------------------------------
142618 -- 4262811 Initialze MPA Line Number
142619 --------------------------------------
142620 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
142621 
142622 --
142623 
142624 --
142625 OPEN header_cur;
142626 --
142627 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142628    trace
142629    (p_msg      => 'SQL - FETCH header_cur'
142630    ,p_level    => C_LEVEL_STATEMENT
142631    ,p_module   => l_log_module);
142632 END IF;
142633 --
142634 LOOP
142635 FETCH header_cur BULK COLLECT INTO
142636         l_array_entity_id
142637       , l_array_legal_entity_id
142638       , l_array_entity_code
142639       , l_array_transaction_num
142640       , l_array_event_id
142641       , l_array_class_code
142642       , l_array_event_type
142643       , l_array_event_number
142644       , l_array_event_date
142645       , l_array_transaction_date
142646       , l_array_reference_num_1
142647       , l_array_reference_num_2
142648       , l_array_reference_num_3
142649       , l_array_reference_num_4
142650       , l_array_reference_char_1
142651       , l_array_reference_char_2
142652       , l_array_reference_char_3
142653       , l_array_reference_char_4
142654       , l_array_reference_date_1
142655       , l_array_reference_date_2
142656       , l_array_reference_date_3
142657       , l_array_reference_date_4
142658       , l_array_event_created_by
142659       , l_array_budgetary_control_flag 
142660       , l_array_source_6
142661       , l_array_source_7
142662       , l_array_source_8
142663       , l_array_source_9
142664       , l_array_source_10
142665       , l_array_source_12
142666       , l_array_source_12_meaning
142667       , l_array_source_13
142668       , l_array_source_14
142669       , l_array_source_15
142670       , l_array_source_16
142671       , l_array_source_19
142672       , l_array_source_20
142673       , l_array_source_21
142674       , l_array_source_23
142675       , l_array_source_27
142676       , l_array_source_38
142677       , l_array_source_38_meaning
142678       LIMIT l_rows;
142679 --
142680 IF (C_LEVEL_EVENT >= g_log_level) THEN
142681    trace
142682    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
142683    ,p_level    => C_LEVEL_EVENT
142684    ,p_module   => l_log_module);
142685 END IF;
142686 --
142687 EXIT WHEN l_array_entity_id.COUNT = 0;
142688 
142689 -- initialize arrays
142690 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
142691 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
142692 
142693 --
142694 -- Bug 4458708
142695 --
142696 XLA_AE_LINES_PKG.g_LineNumber := 0;
142697 
142698 
142699 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
142700 g_last_hdr_idx := l_array_event_id.LAST;
142701 --
142702 -- loop for the headers. Each iteration is for each header extract row
142703 -- fetched in header cursor
142704 --
142705 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
142706 
142707 --
142708 -- set event info as cache for other routines to refer event attributes
142709 --
142710 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
142711    (p_application_id           => p_application_id
142712    ,p_primary_ledger_id        => p_primary_ledger_id
142713    ,p_base_ledger_id           => p_base_ledger_id
142714    ,p_target_ledger_id         => p_target_ledger_id
142715    ,p_entity_id                => l_array_entity_id(hdr_idx)
142716    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
142717    ,p_entity_code              => l_array_entity_code(hdr_idx)
142718    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
142719    ,p_event_id                 => l_array_event_id(hdr_idx)
142720    ,p_event_class_code         => l_array_class_code(hdr_idx)
142721    ,p_event_type_code          => l_array_event_type(hdr_idx)
142722    ,p_event_number             => l_array_event_number(hdr_idx)
142723    ,p_event_date               => l_array_event_date(hdr_idx)
142724    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
142725    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
142726    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
142727    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
142728    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
142729    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
142730    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
142731    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
142732    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
142733    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
142734    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
142735    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
142736    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
142737    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
142738    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
142739 
142740 --
142741 -- set the status of entry to C_VALID (0)
142742 --
142743 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
142744 
142745 --
142746 -- initialize a row for ae header
142747 --
142748 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
142749 
142750 l_event_id := l_array_event_id(hdr_idx);
142751 
142752 --
142753 -- storing the hdr_idx for event. May be used by line cursor.
142754 --
142755 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
142756 
142757 --
142758 -- store sources from header extract. This can be improved to
142759 -- store only those sources from header extract that may be used in lines
142760 --
142761 
142762 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
142763 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
142764 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
142765 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
142766 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
142767 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
142768 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
142769 g_array_event(l_event_id).array_value_num('source_13') := l_array_source_13(hdr_idx);
142770 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
142771 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
142772 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
142773 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
142774 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
142775 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
142776 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
142777 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
142778 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
142779 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
142780 
142781 --
142782 -- initilaize the status of ae headers for diffrent balance types
142783 -- the status is initialised to C_NOT_CREATED (2)
142784 --
142785 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
142786 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
142787 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
142788 
142789 --
142790 -- call api to validate and store accounting attributes for header
142791 --
142792 
142793 ------------------------------------------------------------
142794 -- Accrual Reversal : to get date for Standard Source (NONE)
142795 ------------------------------------------------------------
142796 l_acc_rev_gl_date_source := NULL;
142797 
142798      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
142799       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_23');
142800      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
142801       l_rec_acct_attrs.array_date_value(2) := 
142802 xla_ae_sources_pkg.GetSystemSourceDate(
142803    p_source_code           => 'XLA_REFERENCE_DATE_1'
142804  , p_source_type_code      => 'Y'
142805  , p_source_application_id =>  602
142806 );
142807      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
142808       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
142809 
142810 
142811 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
142812 
142813 XLA_AE_HEADER_PKG.SetJeCategoryName;
142814 
142815 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
142816 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
142817 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
142818 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
142819 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
142820 
142821 
142822 -- No header level analytical criteria
142823 
142824 --
142825 --accounting attribute enhancement, bug 3612931
142826 --
142827 l_trx_reversal_source := SUBSTR(NULL, 1,30);
142828 
142829 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
142830    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
142831 
142832    xla_accounting_err_pkg.build_message
142833       (p_appli_s_name            => 'XLA'
142834       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
142835       ,p_token_1                 => 'ACCT_ATTR_NAME'
142836       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
142837       ,p_token_2                 => 'PRODUCT_NAME'
142838       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
142839       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
142840       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
142841       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
142842 
142843 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
142844    --
142845    -- following sets the accounting attributes needed to reverse
142846    -- accounting for a distributeion
142847    --
142848    xla_ae_lines_pkg.SetTrxReversalAttrs
142849       (p_event_id              => l_event_id
142850       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
142851       ,p_trx_reversal_source   => l_trx_reversal_source);
142852 
142853 END IF;
142854 
142855 
142856 ----------------------------------------------------------------
142857 -- 4262811 -  update the header statuses to invalid in need be
142858 ----------------------------------------------------------------
142859 --
142860 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
142861 
142862 
142863   -----------------------------------------------
142864   -- No accrual reversal for the event class/type
142865   -----------------------------------------------
142866 ----------------------------------------------------------------
142867 
142868 --
142869 -- this ends the header loop iteration for one bulk fetch
142870 --
142871 END LOOP;
142872 
142873 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
142874 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
142875 
142876 --
142877 -- insert dummy rows into lines gt table that were created due to
142878 -- transaction reversals
142879 --
142880 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
142881    l_result := XLA_AE_LINES_PKG.InsertLines;
142882 END IF;
142883 
142884 --
142885 -- reset the temp_line_num for each set of events fetched from header
142886 -- cursor rather than doing it for each new event in line cursor
142887 -- Bug 3939231
142888 --
142889 xla_ae_lines_pkg.g_temp_line_num := 0;
142890 
142891 
142892 
142893 --
142894 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
142895 --
142896 --
142897 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142898 
142899       trace
142900          (p_msg      => 'SQL - FETCH line_cur'
142901          ,p_level    => C_LEVEL_STATEMENT
142902          ,p_module   => l_log_module);
142903 
142904 END IF;
142905 --
142906 --
142907 LOOP
142908   --
142909   FETCH line_cur BULK COLLECT INTO
142910         l_array_entity_id
142911       , l_array_legal_entity_id
142912       , l_array_entity_code
142913       , l_array_transaction_num
142914       , l_array_event_id
142915       , l_array_class_code
142916       , l_array_event_type
142917       , l_array_event_number
142918       , l_array_event_date
142919       , l_array_transaction_date
142920       , l_array_reference_num_1
142921       , l_array_reference_num_2
142922       , l_array_reference_num_3
142923       , l_array_reference_num_4
142924       , l_array_reference_char_1
142925       , l_array_reference_char_2
142926       , l_array_reference_char_3
142927       , l_array_reference_char_4
142928       , l_array_reference_date_1
142929       , l_array_reference_date_2
142930       , l_array_reference_date_3
142931       , l_array_reference_date_4
142932       , l_array_event_created_by
142933       , l_array_budgetary_control_flag
142934       , l_array_extract_line_num 
142935       , l_array_source_4
142936       , l_array_source_5
142937       , l_array_source_11
142938       , l_array_source_18
142939       , l_array_source_22
142940       LIMIT l_rows;
142941 
142942   --
142943   IF (C_LEVEL_EVENT >= g_log_level) THEN
142944             trace
142945                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
142946                ,p_level    => C_LEVEL_EVENT
142947                ,p_module   => l_log_module);
142948   END IF;
142949   --
142950   EXIT WHEN l_array_entity_id.count = 0;
142951 
142952   XLA_AE_LINES_PKG.g_rec_lines := null;
142953 
142954 --
142955 -- Bug 4458708
142956 --
142957 XLA_AE_LINES_PKG.g_LineNumber := 0;
142958 --
142959 --
142960 
142961 FOR Idx IN 1..l_array_event_id.count LOOP
142962    --
142963    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
142964    --
142965    l_event_id := l_array_event_id(idx);  -- 5648433
142966 
142967    --
142968    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
142969    --
142970 
142971    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
142972              (g_array_event(l_event_id).array_value_num('header_index'))
142973          ,'N'
142974          ) <> 'Y'
142975    THEN
142976       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142977          trace
142978             (p_msg      => 'Trancaction revesal option is not Y '
142979             ,p_level    => C_LEVEL_STATEMENT
142980             ,p_module   => l_log_module);
142981       END IF;
142982 
142983 --
142984 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
142985 --
142986 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
142987 --
142988 -- set event info as cache for other routines to refer event attributes
142989 --
142990 
142991 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
142992    l_previous_event_id := l_event_id;
142993 
142994    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
142995       (p_application_id           => p_application_id
142996       ,p_primary_ledger_id        => p_primary_ledger_id
142997       ,p_base_ledger_id           => p_base_ledger_id
142998       ,p_target_ledger_id         => p_target_ledger_id
142999       ,p_entity_id                => l_array_entity_id(Idx)
143000       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
143001       ,p_entity_code              => l_array_entity_code(Idx)
143002       ,p_transaction_num          => l_array_transaction_num(Idx)
143003       ,p_event_id                 => l_array_event_id(Idx)
143004       ,p_event_class_code         => l_array_class_code(Idx)
143005       ,p_event_type_code          => l_array_event_type(Idx)
143006       ,p_event_number             => l_array_event_number(Idx)
143007       ,p_event_date               => l_array_event_date(Idx)
143008       ,p_transaction_date         => l_array_transaction_date(Idx)
143009       ,p_reference_num_1          => l_array_reference_num_1(Idx)
143010       ,p_reference_num_2          => l_array_reference_num_2(Idx)
143011       ,p_reference_num_3          => l_array_reference_num_3(Idx)
143012       ,p_reference_num_4          => l_array_reference_num_4(Idx)
143013       ,p_reference_char_1         => l_array_reference_char_1(Idx)
143014       ,p_reference_char_2         => l_array_reference_char_2(Idx)
143015       ,p_reference_char_3         => l_array_reference_char_3(Idx)
143016       ,p_reference_char_4         => l_array_reference_char_4(Idx)
143017       ,p_reference_date_1         => l_array_reference_date_1(Idx)
143018       ,p_reference_date_2         => l_array_reference_date_2(Idx)
143019       ,p_reference_date_3         => l_array_reference_date_3(Idx)
143020       ,p_reference_date_4         => l_array_reference_date_4(Idx)
143021       ,p_event_created_by         => l_array_event_created_by(Idx)
143022       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
143023        --
143024 END IF;
143025 
143026 
143027 
143028 --
143029 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
143030 
143031 l_acct_reversal_source := SUBSTR(NULL, 1,30);
143032 
143033 IF l_continue_with_lines THEN
143034    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
143035       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
143036 
143037       xla_accounting_err_pkg.build_message
143038          (p_appli_s_name            => 'XLA'
143039          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
143040          ,p_token_1                 => 'LINE_NUMBER'
143041          ,p_value_1                 => l_array_extract_line_num(Idx)
143042          ,p_token_2                 => 'PRODUCT_NAME'
143043          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
143044          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
143045          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
143046          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
143047 
143048    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
143049       --
143050       -- following sets the accounting attributes needed to reverse
143051       -- accounting for a distributeion
143052       --
143053 
143054       --
143055       -- 5217187
143056       --
143057       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
143058       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
143059                                        g_array_event(l_event_id).array_value_num('header_index'));
143060       --
143061       --
143062 
143063       -- No reversal code generated
143064 
143065       xla_ae_lines_pkg.SetAcctReversalAttrs
143066          (p_event_id             => l_event_id
143067          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
143068          ,p_calculate_acctd_flag => l_calculate_acctd_flag
143069          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
143070    END IF;
143071 
143072    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
143073        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
143074 
143075 --
143076 AcctLineType_12 (
143077  p_application_id  => p_application_id
143078  ,p_event_id     => l_event_id
143079  ,p_calculate_acctd_flag => l_calculate_acctd_flag
143080  ,p_calculate_g_l_flag => l_calculate_g_l_flag
143081  ,p_actual_flag => l_actual_flag
143082  ,p_balance_type_code => l_balance_type_code
143083  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
143084  
143085  , p_source_4 => l_array_source_4(Idx)
143086  , p_source_5 => l_array_source_5(Idx)
143087  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
143088  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
143089  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
143090  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
143091  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
143092  , p_source_11 => l_array_source_11(Idx)
143093  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
143094  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
143095  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
143096  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
143097  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
143098  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
143099  , p_source_18 => l_array_source_18(Idx)
143100  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
143101  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
143102  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
143103  , p_source_22 => l_array_source_22(Idx)
143104  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
143105  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
143106  );
143107 If(l_balance_type_code = 'A') THEN
143108   l_actual_gain_loss_ref := l_gain_or_loss_ref;
143109 END IF;
143110 
143111 --
143112 
143113 
143114 --
143115 AcctLineType_233 (
143116  p_application_id  => p_application_id
143117  ,p_event_id     => l_event_id
143118  ,p_calculate_acctd_flag => l_calculate_acctd_flag
143119  ,p_calculate_g_l_flag => l_calculate_g_l_flag
143120  ,p_actual_flag => l_actual_flag
143121  ,p_balance_type_code => l_balance_type_code
143122  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
143123  
143124  , p_source_4 => l_array_source_4(Idx)
143125  , p_source_5 => l_array_source_5(Idx)
143126  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
143127  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
143128  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
143129  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
143130  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
143131  , p_source_11 => l_array_source_11(Idx)
143132  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
143133  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
143134  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
143135  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
143136  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
143137  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
143138  , p_source_18 => l_array_source_18(Idx)
143139  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
143140  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
143141  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
143142  , p_source_22 => l_array_source_22(Idx)
143143  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
143144  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
143145  );
143146 If(l_balance_type_code = 'A') THEN
143147   l_actual_gain_loss_ref := l_gain_or_loss_ref;
143148 END IF;
143149 
143150 --
143151 
143152       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
143153       -- or secondary ledger that has different currency with primary
143154       -- or alc that is calculated by sla
143155       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
143156             (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'))
143157 
143158 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
143159 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
143160           AND (l_actual_flag = 'A')) THEN
143161         XLA_AE_LINES_PKG.CreateGainOrLossLines(
143162           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
143163          ,p_application_id   => p_application_id
143164          ,p_amb_context_code => 'DEFAULT'
143165          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
143166          ,p_event_class_code => C_EVENT_CLASS_CODE
143167          ,p_event_type_code  => C_EVENT_TYPE_CODE
143168          
143169          ,p_gain_ccid        => -1
143170          ,p_loss_ccid        => -1
143171 
143172          ,p_actual_flag      => l_actual_flag
143173          ,p_enc_flag         => null
143174          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
143175          ,p_enc_g_l_ref      => null
143176          );
143177       END IF;
143178    END IF;
143179 END IF;
143180 
143181    ELSE
143182       --
143183       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
143184       --
143185       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143186          trace
143187             (p_msg      => 'Trancaction revesal option is Y'
143188             ,p_level    => C_LEVEL_STATEMENT
143189             ,p_module   => l_log_module);
143190       END IF;
143191    END IF;
143192 
143193 END LOOP;
143194 l_result := XLA_AE_LINES_PKG.InsertLines ;
143195 end loop;
143196 close line_cur;
143197 
143198 
143199 --
143200 -- insert headers into xla_ae_headers_gt table
143201 --
143202 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
143203 
143204 -- insert into errors table here.
143205 
143206 END LOOP;
143207 
143208 --
143209 -- 4865292
143210 --
143211 -- Compare g_hdr_extract_count with event count in
143212 -- CreateHeadersAndLines.
143213 --
143214 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
143215 
143216 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143217    trace (p_msg     => '# rows extracted from header extract objects '
143218                     || ' (running total): '
143219                     || g_hdr_extract_count
143220          ,p_level   => C_LEVEL_STATEMENT
143221          ,p_module  => l_log_module);
143222 END IF;
143223 
143224 CLOSE header_cur;
143225 --
143226 
143227 --
143228 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143229    trace
143230       (p_msg      => 'END of EventClass_253'
143231       ,p_level    => C_LEVEL_PROCEDURE
143232       ,p_module   => l_log_module);
143233 END IF;
143234 --
143235 RETURN l_result;
143236 EXCEPTION
143237 WHEN xla_exceptions_pkg.application_exception THEN
143238    
143239 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
143240 
143241    
143242 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
143243 
143244    RAISE;
143245 
143246 WHEN NO_DATA_FOUND THEN
143247 
143248 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
143249 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
143250 
143251 FOR header_record IN header_cur
143252 LOOP
143253     l_array_header_events(header_record.event_id) := header_record.event_id;
143254 END LOOP;
143255 
143256 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
143257 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
143258 
143259 fnd_file.put_line(fnd_file.LOG, '                    ');
143260 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
143261 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
143262 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
143263 
143264 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
143265 LOOP
143266 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
143267 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
143268         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
143269 	END IF;
143270 END LOOP;
143271 
143272 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
143273 fnd_file.put_line(fnd_file.LOG, '                    ');
143274 
143275 
143276 xla_exceptions_pkg.raise_message
143277       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_253');
143278 
143279 
143280 WHEN OTHERS THEN
143281    xla_exceptions_pkg.raise_message
143282       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_253');
143283 END EventClass_253;
143284 --
143285 
143286 ---------------------------------------
143287 --
143288 -- PRIVATE PROCEDURE
143289 --         insert_sources_254
143290 --
143291 ----------------------------------------
143292 --
143293 PROCEDURE insert_sources_254(
143294                                 p_target_ledger_id       IN NUMBER
143295                               , p_language               IN VARCHAR2
143296                               , p_sla_ledger_id          IN NUMBER
143297                               , p_pad_start_date         IN DATE
143298                               , p_pad_end_date           IN DATE
143299                          )
143300 IS
143301 
143302 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_RCPT_ALL';
143303 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_RCPT';
143304 p_apps_owner                   VARCHAR2(30);
143305 l_log_module                   VARCHAR2(240);
143306 BEGIN
143307 IF g_log_enabled THEN
143308       l_log_module := C_DEFAULT_MODULE||'.insert_sources_254';
143309 END IF;
143310 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143311 
143312       trace
143313          (p_msg      => 'BEGIN of insert_sources_254'
143314          ,p_level    => C_LEVEL_PROCEDURE
143315          ,p_module   => l_log_module);
143316 
143317 END IF;
143318 
143319 -- select APPS owner
143320 SELECT oracle_username
143321   INTO p_apps_owner
143322   FROM fnd_oracle_userid
143323  WHERE read_only_flag = 'U'
143324 ;
143325 
143326 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143327       trace
143328          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
143329                         ' - p_language = '||p_language||
143330                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
143331                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
143332                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
143333                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
143334          ,p_level    => C_LEVEL_STATEMENT
143335          ,p_module   => l_log_module);
143336 END IF;
143337 
143338 
143339 --
143340 INSERT INTO xla_diag_sources --hdr2
143341 (
143342         event_id
143343       , ledger_id
143344       , sla_ledger_id
143345       , description_language
143346       , object_name
143347       , object_type_code
143348       , line_number
143349       , source_application_id
143350       , source_type_code
143351       , source_code
143352       , source_value
143353       , source_meaning
143354       , created_by
143355       , creation_date
143356       , last_update_date
143357       , last_updated_by
143358       , last_update_login
143359       , program_update_date
143360       , program_application_id
143361       , program_id
143362       , request_id
143363 )
143364 SELECT
143365         event_id
143366       , p_target_ledger_id
143367       , p_sla_ledger_id
143368       , p_language
143369       , object_name
143370       , object_type_code
143371       , line_number
143372       , source_application_id
143373       , source_type_code
143374       , source_code
143375       , SUBSTR(source_value ,1,1996)
143376       , SUBSTR(source_meaning ,1,200)
143377       , xla_environment_pkg.g_Usr_Id
143378       , TRUNC(SYSDATE)
143379       , TRUNC(SYSDATE)
143380       , xla_environment_pkg.g_Usr_Id
143381       , xla_environment_pkg.g_Login_Id
143382       , TRUNC(SYSDATE)
143383       , xla_environment_pkg.g_Prog_Appl_Id
143384       , xla_environment_pkg.g_Prog_Id
143385       , xla_environment_pkg.g_Req_Id
143386   FROM (
143387        SELECT xet.event_id                  event_id
143388             , 0                          line_number
143389             , CASE r
143390                WHEN 1 THEN 'CST_XLA_INV_REF_V' 
143391                 WHEN 2 THEN 'CST_XLA_INV_REF_V' 
143392                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
143393                 WHEN 4 THEN 'CST_XLA_INV_HEADERS_V' 
143394                 WHEN 5 THEN 'CST_XLA_INV_REF_V' 
143395                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
143396                 WHEN 7 THEN 'PSA_CST_XLA_UPG_V' 
143397                 WHEN 8 THEN 'CST_XLA_INV_REF_V' 
143398                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
143399                 WHEN 10 THEN 'PO_REQ_DISTS_REF_V' 
143400                 WHEN 11 THEN 'PO_REQ_HEADERS_REF_V' 
143401                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
143402                 
143403                ELSE null
143404               END                           object_name
143405             , CASE r
143406                 WHEN 1 THEN 'HEADER' 
143407                 WHEN 2 THEN 'HEADER' 
143408                 WHEN 3 THEN 'HEADER' 
143409                 WHEN 4 THEN 'HEADER' 
143410                 WHEN 5 THEN 'HEADER' 
143411                 WHEN 6 THEN 'HEADER' 
143412                 WHEN 7 THEN 'HEADER' 
143413                 WHEN 8 THEN 'HEADER' 
143414                 WHEN 9 THEN 'HEADER' 
143415                 WHEN 10 THEN 'HEADER' 
143416                 WHEN 11 THEN 'HEADER' 
143417                 WHEN 12 THEN 'HEADER' 
143418                 
143419                 ELSE null
143420               END                           object_type_code
143421             , CASE r
143422                 WHEN 1 THEN '707' 
143423                 WHEN 2 THEN '707' 
143424                 WHEN 3 THEN '707' 
143425                 WHEN 4 THEN '707' 
143426                 WHEN 5 THEN '707' 
143427                 WHEN 6 THEN '707' 
143428                 WHEN 7 THEN '707' 
143429                 WHEN 8 THEN '707' 
143430                 WHEN 9 THEN '707' 
143431                 WHEN 10 THEN '201' 
143432                 WHEN 11 THEN '201' 
143433                 WHEN 12 THEN '707' 
143434                 
143435                 ELSE null
143436               END                           source_application_id
143437             , 'S'             source_type_code
143438             , CASE r
143439                 WHEN 1 THEN 'APPLIED_TO_APPL_ID' 
143440                 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
143441                 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE' 
143442                 WHEN 4 THEN 'DISTRIBUTION_TYPE' 
143443                 WHEN 5 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
143444                 WHEN 6 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
143445                 WHEN 7 THEN 'CST_ENCUM_UPG_OPTION' 
143446                 WHEN 8 THEN 'TXN_PO_DISTRIBUTION_ID' 
143447                 WHEN 9 THEN 'TXN_PO_HEADER_ID' 
143448                 WHEN 10 THEN 'REQ_BUDGET_ACCOUNT' 
143449                 WHEN 11 THEN 'REQ_ENCUMBRANCE_TYPE_ID' 
143450                 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR' 
143451                 
143452                 ELSE null
143453               END                           source_code
143454             , CASE r
143455                 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
143456                 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
143457                 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
143458                 WHEN 4 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
143459                 WHEN 5 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
143460                 WHEN 6 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
143461                 WHEN 7 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
143462                 WHEN 8 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
143463                 WHEN 9 THEN TO_CHAR(h3.TXN_PO_HEADER_ID)
143464                 WHEN 10 THEN TO_CHAR(h4.REQ_BUDGET_ACCOUNT)
143465                 WHEN 11 THEN TO_CHAR(h5.REQ_ENCUMBRANCE_TYPE_ID)
143466                 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
143467                 
143468                 ELSE null
143469               END                           source_value
143470             , CASE r
143471                 WHEN 4 THEN fvl12.meaning
143472                 WHEN 12 THEN fvl38.meaning
143473                 
143474                 ELSE null
143475               END               source_meaning
143476          FROM xla_events_gt     xet  
143477       , CST_XLA_INV_HEADERS_V  h1
143478       , CST_XLA_INV_REF_V  h3
143479       , PO_REQ_DISTS_REF_V  h4
143480       , PO_REQ_HEADERS_REF_V  h5
143481       , PSA_CST_XLA_UPG_V  h6
143482   , fnd_lookup_values    fvl12
143483   , fnd_lookup_values    fvl38
143484              ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
143485          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
143486            AND xet.event_class_code = C_EVENT_CLASS_CODE
143487               AND h1.event_id = xet.event_id
143488  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'
143489   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
143490   AND fvl12.view_application_id(+) = 700
143491   AND fvl12.language(+)            = USERENV('LANG')
143492      AND fvl38.lookup_type(+)         = 'YES_NO'
143493   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
143494   AND fvl38.view_application_id(+) = 0
143495   AND fvl38.language(+)            = USERENV('LANG')
143496   
143497 )
143498 ;
143499 --
143500 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143501 
143502       trace
143503          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
143504          ,p_level    => C_LEVEL_STATEMENT
143505          ,p_module   => l_log_module);
143506 
143507 END IF;
143508 --
143509 
143510 
143511 
143512 --
143513 INSERT INTO xla_diag_sources  --line2
143514 (
143515         event_id
143516       , ledger_id
143517       , sla_ledger_id
143518       , description_language
143519       , object_name
143520       , object_type_code
143521       , line_number
143522       , source_application_id
143523       , source_type_code
143524       , source_code
143525       , source_value
143526       , source_meaning
143527       , created_by
143528       , creation_date
143529       , last_update_date
143530       , last_updated_by
143531       , last_update_login
143532       , program_update_date
143533       , program_application_id
143534       , program_id
143535       , request_id
143536 )
143537 SELECT  event_id
143538       , p_target_ledger_id
143539       , p_sla_ledger_id
143540       , p_language
143541       , object_name
143542       , object_type_code
143543       , line_number
143544       , source_application_id
143545       , source_type_code
143546       , source_code
143547       , SUBSTR(source_value,1,1996)
143548       , SUBSTR(source_meaning ,1,200)
143549       , xla_environment_pkg.g_Usr_Id
143550       , TRUNC(SYSDATE)
143551       , TRUNC(SYSDATE)
143552       , xla_environment_pkg.g_Usr_Id
143553       , xla_environment_pkg.g_Login_Id
143554       , TRUNC(SYSDATE)
143555       , xla_environment_pkg.g_Prog_Appl_Id
143556       , xla_environment_pkg.g_Prog_Id
143557       , xla_environment_pkg.g_Req_Id
143558   FROM (
143559        SELECT xet.event_id                  event_id
143560             , l2.line_number                 line_number
143561             , CASE r
143562                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
143563                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
143564                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
143565                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
143566                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
143567                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
143568                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
143569                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
143570                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
143571                 
143572                ELSE null
143573               END                           object_name
143574             , CASE r
143575                 WHEN 1 THEN 'LINE' 
143576                 WHEN 2 THEN 'LINE' 
143577                 WHEN 3 THEN 'LINE' 
143578                 WHEN 4 THEN 'LINE' 
143579                 WHEN 5 THEN 'LINE' 
143580                 WHEN 6 THEN 'LINE' 
143581                 WHEN 7 THEN 'LINE' 
143582                 WHEN 8 THEN 'LINE' 
143583                 WHEN 9 THEN 'LINE' 
143584                 
143585                 ELSE null
143586               END                           object_type_code
143587             , CASE r
143588                 WHEN 1 THEN '707' 
143589                 WHEN 2 THEN '707' 
143590                 WHEN 3 THEN '707' 
143591                 WHEN 4 THEN '707' 
143592                 WHEN 5 THEN '707' 
143593                 WHEN 6 THEN '707' 
143594                 WHEN 7 THEN '707' 
143595                 WHEN 8 THEN '707' 
143596                 WHEN 9 THEN '707' 
143597                 
143598                 ELSE null
143599               END                           source_application_id
143600             , 'S'             source_type_code
143601             , CASE r
143602                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
143603                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
143604                 WHEN 3 THEN 'CURRENCY_CODE' 
143605                 WHEN 4 THEN 'ENTERED_AMOUNT' 
143606                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
143607                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
143608                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
143609                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
143610                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
143611                 
143612                 ELSE null
143613               END                           source_code
143614             , CASE r
143615                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
143616                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
143617                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
143618                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
143619                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
143620                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
143621                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
143622                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
143623                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
143624                 
143625                 ELSE null
143626               END                           source_value
143627             , null              source_meaning
143628          FROM  xla_events_gt     xet  
143629         , CST_XLA_INV_LINES_V  l2
143630             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
143631         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
143632           AND xet.event_class_code = C_EVENT_CLASS_CODE
143633             AND l2.event_id          = xet.event_id
143634 
143635 )
143636 ;
143637 --
143638 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143639 
143640       trace
143641          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
143642          ,p_level    => C_LEVEL_STATEMENT
143643          ,p_module   => l_log_module);
143644 
143645 END IF;
143646 
143647 
143648 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143649       trace
143650          (p_msg      => 'END of insert_sources_254'
143651          ,p_level    => C_LEVEL_PROCEDURE
143652          ,p_module   => l_log_module);
143653 END IF;
143654 EXCEPTION
143655   WHEN xla_exceptions_pkg.application_exception THEN
143656       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
143657             trace
143658                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
143659                ,p_level    => C_LEVEL_EXCEPTION
143660                ,p_module   => l_log_module);
143661       END IF;
143662       RAISE;
143663   WHEN OTHERS THEN
143664       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
143665             trace
143666                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
143667                ,p_level    => C_LEVEL_EXCEPTION
143668                ,p_module   => l_log_module);
143669        END IF;
143670        xla_exceptions_pkg.raise_message
143671            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_254');
143672 END insert_sources_254;
143673 --
143674 
143675 ---------------------------------------
143676 --
143677 -- PRIVATE FUNCTION
143678 --         EventClass_254
143679 --
143680 ----------------------------------------
143681 --
143682 FUNCTION EventClass_254
143683        (p_application_id         IN NUMBER
143684        ,p_base_ledger_id         IN NUMBER
143685        ,p_target_ledger_id       IN NUMBER
143686        ,p_language               IN VARCHAR2
143687        ,p_currency_code          IN VARCHAR2
143688        ,p_sla_ledger_id          IN NUMBER
143689        ,p_pad_start_date         IN DATE
143690        ,p_pad_end_date           IN DATE
143691        ,p_primary_ledger_id      IN NUMBER)
143692 RETURN BOOLEAN IS
143693 --
143694 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_RCPT_ALL';
143695 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_RCPT';
143696 
143697 l_calculate_acctd_flag   VARCHAR2(1) :='N';
143698 l_calculate_g_l_flag     VARCHAR2(1) :='N';
143699 --
143700 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143701 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143702 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143703 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143704 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143705 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143706 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143707 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143708 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143709 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143710 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143711 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143712 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143713 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143714 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143715 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143716 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143717 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143718 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143719 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143720 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143721 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143722 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
143723 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143724 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
143725 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
143726 
143727 l_event_id                             NUMBER;
143728 l_previous_event_id                    NUMBER;
143729 l_first_event_id                       NUMBER;
143730 l_last_event_id                        NUMBER;
143731 
143732 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
143733 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
143734 --
143735 --
143736 l_result                    BOOLEAN := TRUE;
143737 l_rows                      NUMBER  := 1000;
143738 l_event_type_name           VARCHAR2(80) := 'All';
143739 l_event_class_name          VARCHAR2(80) := 'Direct Interorg Receipt';
143740 l_description               VARCHAR2(4000);
143741 l_transaction_reversal      NUMBER;
143742 l_ae_header_id              NUMBER;
143743 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
143744 l_log_module                VARCHAR2(240);
143745 --
143746 l_acct_reversal_source      VARCHAR2(30);
143747 l_trx_reversal_source       VARCHAR2(30);
143748 
143749 l_continue_with_lines       BOOLEAN := TRUE;
143750 --
143751 l_acc_rev_gl_date_source    DATE;                      -- 4262811
143752 --
143753 type t_array_event_id is table of number index by binary_integer;
143754 
143755 l_rec_array_event                    t_rec_array_event;
143756 l_null_rec_array_event               t_rec_array_event;
143757 l_array_ae_header_id                 xla_number_array_type;
143758 l_actual_flag                        VARCHAR2(1) := NULL;
143759 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
143760 l_balance_type_code                  VARCHAR2(1) :=NULL;
143761 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
143762 
143763 --
143764 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
143765 --
143766 
143767 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
143768 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
143769 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
143770 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
143771 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
143772 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
143773 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
143774 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
143775 TYPE t_array_source_29 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
143776 TYPE t_array_source_30 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
143777 TYPE t_array_source_31 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
143778 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
143779 
143780 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
143781 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
143782 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
143783 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
143784 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
143785 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
143786 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
143787 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
143788 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
143789 
143790 l_array_source_6              t_array_source_6;
143791 l_array_source_7              t_array_source_7;
143792 l_array_source_8              t_array_source_8;
143793 l_array_source_12              t_array_source_12;
143794 l_array_source_12_meaning      t_array_lookup_meaning;
143795 l_array_source_14              t_array_source_14;
143796 l_array_source_16              t_array_source_16;
143797 l_array_source_27              t_array_source_27;
143798 l_array_source_28              t_array_source_28;
143799 l_array_source_29              t_array_source_29;
143800 l_array_source_30              t_array_source_30;
143801 l_array_source_31              t_array_source_31;
143802 l_array_source_38              t_array_source_38;
143803 l_array_source_38_meaning      t_array_lookup_meaning;
143804 
143805 l_array_source_4      t_array_source_4;
143806 l_array_source_11      t_array_source_11;
143807 l_array_source_15      t_array_source_15;
143808 l_array_source_18      t_array_source_18;
143809 l_array_source_19      t_array_source_19;
143810 l_array_source_20      t_array_source_20;
143811 l_array_source_21      t_array_source_21;
143812 l_array_source_22      t_array_source_22;
143813 l_array_source_24      t_array_source_24;
143814 
143815 --
143816 CURSOR header_cur
143817 IS
143818 SELECT /*+ leading(xet) cardinality(xet,1) */
143819 -- Event Class Code: DIR_INTERORG_RCPT
143820     xet.entity_id
143821    ,xet.legal_entity_id
143822    ,xet.entity_code
143823    ,xet.transaction_number
143824    ,xet.event_id
143825    ,xet.event_class_code
143826    ,xet.event_type_code
143827    ,xet.event_number
143828    ,xet.event_date
143829    ,xet.transaction_date
143830    ,xet.reference_num_1
143831    ,xet.reference_num_2
143832    ,xet.reference_num_3
143833    ,xet.reference_num_4
143834    ,xet.reference_char_1
143835    ,xet.reference_char_2
143836    ,xet.reference_char_3
143837    ,xet.reference_char_4
143838    ,xet.reference_date_1
143839    ,xet.reference_date_2
143840    ,xet.reference_date_3
143841    ,xet.reference_date_4
143842    ,xet.event_created_by
143843    ,xet.budgetary_control_flag 
143844   , h3.APPLIED_TO_APPL_ID    source_6
143845   , h3.APPLIED_TO_DIST_LINK_TYPE    source_7
143846   , h3.APPLIED_TO_ENTITY_CODE    source_8
143847   , h1.DISTRIBUTION_TYPE    source_12
143848   , fvl12.meaning   source_12_meaning
143849   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_14
143850   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_16
143851   , h6.CST_ENCUM_UPG_OPTION    source_27
143852   , h3.TXN_PO_DISTRIBUTION_ID    source_28
143853   , h3.TXN_PO_HEADER_ID    source_29
143854   , h4.REQ_BUDGET_ACCOUNT    source_30
143855   , h5.REQ_ENCUMBRANCE_TYPE_ID    source_31
143856   , h1.TRANSFER_TO_GL_INDICATOR    source_38
143857   , fvl38.meaning   source_38_meaning
143858   FROM xla_events_gt     xet 
143859   , CST_XLA_INV_HEADERS_V  h1
143860   , CST_XLA_INV_REF_V  h3
143861   , PO_REQ_DISTS_REF_V  h4
143862   , PO_REQ_HEADERS_REF_V  h5
143863   , PSA_CST_XLA_UPG_V  h6
143864   , fnd_lookup_values    fvl12
143865   , fnd_lookup_values    fvl38
143866  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
143867    and xet.event_class_code = C_EVENT_CLASS_CODE
143868    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
143869  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'
143870   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
143871   AND fvl12.view_application_id(+) = 700
143872   AND fvl12.language(+)            = USERENV('LANG')
143873      AND fvl38.lookup_type(+)         = 'YES_NO'
143874   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
143875   AND fvl38.view_application_id(+) = 0
143876   AND fvl38.language(+)            = USERENV('LANG')
143877   
143878  ORDER BY event_id
143879 ;
143880 
143881 
143882 --
143883 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
143884 IS
143885 SELECT  /*+ leading(xet) cardinality(xet,1) */
143886 -- Event Class Code: DIR_INTERORG_RCPT
143887     xet.entity_id
143888    ,xet.legal_entity_id
143889    ,xet.entity_code
143890    ,xet.transaction_number
143891    ,xet.event_id
143892    ,xet.event_class_code
143893    ,xet.event_type_code
143894    ,xet.event_number
143895    ,xet.event_date
143896    ,xet.transaction_date
143897    ,xet.reference_num_1
143898    ,xet.reference_num_2
143899    ,xet.reference_num_3
143900    ,xet.reference_num_4
143901    ,xet.reference_char_1
143902    ,xet.reference_char_2
143903    ,xet.reference_char_3
143904    ,xet.reference_char_4
143905    ,xet.reference_date_1
143906    ,xet.reference_date_2
143907    ,xet.reference_date_3
143908    ,xet.reference_date_4
143909    ,xet.event_created_by
143910    ,xet.budgetary_control_flag
143911  , l2.LINE_NUMBER  
143912   , l2.CODE_COMBINATION_ID    source_4
143913   , l2.DISTRIBUTION_IDENTIFIER    source_11
143914   , l2.CURRENCY_CODE    source_15
143915   , l2.ENTERED_AMOUNT    source_18
143916   , l2.CURRENCY_CONVERSION_DATE    source_19
143917   , l2.CURRENCY_CONVERSION_RATE    source_20
143918   , l2.CURRENCY_CONVERSION_TYPE    source_21
143919   , l2.ACCOUNTED_AMOUNT    source_22
143920   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
143921   FROM xla_events_gt     xet 
143922   , CST_XLA_INV_LINES_V  l2
143923  WHERE xet.event_id between x_first_event_id and x_last_event_id
143924    and xet.event_date between p_pad_start_date and p_pad_end_date
143925    and xet.event_class_code = C_EVENT_CLASS_CODE
143926    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
143927 ;
143928 
143929 --
143930 BEGIN
143931 IF g_log_enabled THEN
143932    l_log_module := C_DEFAULT_MODULE||'.EventClass_254';
143933 END IF;
143934 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143935    trace
143936       (p_msg      => 'BEGIN of EventClass_254'
143937       ,p_level    => C_LEVEL_PROCEDURE
143938       ,p_module   => l_log_module);
143939 END IF;
143940 
143941 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143942    trace
143943       (p_msg      => 'p_application_id = '||p_application_id||
143944                      ' - p_base_ledger_id = '||p_base_ledger_id||
143945                      ' - p_target_ledger_id  = '||p_target_ledger_id||
143946                      ' - p_language = '||p_language||
143947                      ' - p_currency_code = '||p_currency_code||
143948                      ' - p_sla_ledger_id = '||p_sla_ledger_id
143949       ,p_level    => C_LEVEL_STATEMENT
143950       ,p_module   => l_log_module);
143951 END IF;
143952 --
143953 -- initialze arrays
143954 --
143955 g_array_event.DELETE;
143956 l_rec_array_event := l_null_rec_array_event;
143957 --
143958 --------------------------------------
143959 -- 4262811 Initialze MPA Line Number
143960 --------------------------------------
143961 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
143962 
143963 --
143964 
143965 --
143966 OPEN header_cur;
143967 --
143968 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143969    trace
143970    (p_msg      => 'SQL - FETCH header_cur'
143971    ,p_level    => C_LEVEL_STATEMENT
143972    ,p_module   => l_log_module);
143973 END IF;
143974 --
143975 LOOP
143976 FETCH header_cur BULK COLLECT INTO
143977         l_array_entity_id
143978       , l_array_legal_entity_id
143979       , l_array_entity_code
143980       , l_array_transaction_num
143981       , l_array_event_id
143982       , l_array_class_code
143983       , l_array_event_type
143984       , l_array_event_number
143985       , l_array_event_date
143986       , l_array_transaction_date
143987       , l_array_reference_num_1
143988       , l_array_reference_num_2
143989       , l_array_reference_num_3
143990       , l_array_reference_num_4
143991       , l_array_reference_char_1
143992       , l_array_reference_char_2
143993       , l_array_reference_char_3
143994       , l_array_reference_char_4
143995       , l_array_reference_date_1
143996       , l_array_reference_date_2
143997       , l_array_reference_date_3
143998       , l_array_reference_date_4
143999       , l_array_event_created_by
144000       , l_array_budgetary_control_flag 
144001       , l_array_source_6
144002       , l_array_source_7
144003       , l_array_source_8
144004       , l_array_source_12
144005       , l_array_source_12_meaning
144006       , l_array_source_14
144007       , l_array_source_16
144008       , l_array_source_27
144009       , l_array_source_28
144010       , l_array_source_29
144011       , l_array_source_30
144012       , l_array_source_31
144013       , l_array_source_38
144014       , l_array_source_38_meaning
144015       LIMIT l_rows;
144016 --
144017 IF (C_LEVEL_EVENT >= g_log_level) THEN
144018    trace
144019    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
144020    ,p_level    => C_LEVEL_EVENT
144021    ,p_module   => l_log_module);
144022 END IF;
144023 --
144024 EXIT WHEN l_array_entity_id.COUNT = 0;
144025 
144026 -- initialize arrays
144027 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
144028 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
144029 
144030 --
144031 -- Bug 4458708
144032 --
144033 XLA_AE_LINES_PKG.g_LineNumber := 0;
144034 
144035 
144036 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
144037 g_last_hdr_idx := l_array_event_id.LAST;
144038 --
144039 -- loop for the headers. Each iteration is for each header extract row
144040 -- fetched in header cursor
144041 --
144042 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
144043 
144044 --
144045 -- set event info as cache for other routines to refer event attributes
144046 --
144047 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
144048    (p_application_id           => p_application_id
144049    ,p_primary_ledger_id        => p_primary_ledger_id
144050    ,p_base_ledger_id           => p_base_ledger_id
144051    ,p_target_ledger_id         => p_target_ledger_id
144052    ,p_entity_id                => l_array_entity_id(hdr_idx)
144053    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
144054    ,p_entity_code              => l_array_entity_code(hdr_idx)
144055    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
144056    ,p_event_id                 => l_array_event_id(hdr_idx)
144057    ,p_event_class_code         => l_array_class_code(hdr_idx)
144058    ,p_event_type_code          => l_array_event_type(hdr_idx)
144059    ,p_event_number             => l_array_event_number(hdr_idx)
144060    ,p_event_date               => l_array_event_date(hdr_idx)
144061    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
144062    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
144063    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
144064    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
144065    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
144066    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
144067    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
144068    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
144069    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
144070    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
144071    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
144072    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
144073    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
144074    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
144075    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
144076 
144077 --
144078 -- set the status of entry to C_VALID (0)
144079 --
144080 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
144081 
144082 --
144083 -- initialize a row for ae header
144084 --
144085 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
144086 
144087 l_event_id := l_array_event_id(hdr_idx);
144088 
144089 --
144090 -- storing the hdr_idx for event. May be used by line cursor.
144091 --
144092 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
144093 
144094 --
144095 -- store sources from header extract. This can be improved to
144096 -- store only those sources from header extract that may be used in lines
144097 --
144098 
144099 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
144100 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
144101 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
144102 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
144103 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
144104 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
144105 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
144106 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
144107 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
144108 g_array_event(l_event_id).array_value_num('source_29') := l_array_source_29(hdr_idx);
144109 g_array_event(l_event_id).array_value_num('source_30') := l_array_source_30(hdr_idx);
144110 g_array_event(l_event_id).array_value_num('source_31') := l_array_source_31(hdr_idx);
144111 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
144112 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
144113 
144114 --
144115 -- initilaize the status of ae headers for diffrent balance types
144116 -- the status is initialised to C_NOT_CREATED (2)
144117 --
144118 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
144119 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
144120 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
144121 
144122 --
144123 -- call api to validate and store accounting attributes for header
144124 --
144125 
144126 ------------------------------------------------------------
144127 -- Accrual Reversal : to get date for Standard Source (NONE)
144128 ------------------------------------------------------------
144129 l_acc_rev_gl_date_source := NULL;
144130 
144131      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
144132       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_31');
144133      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
144134       l_rec_acct_attrs.array_date_value(2) := 
144135 xla_ae_sources_pkg.GetSystemSourceDate(
144136    p_source_code           => 'XLA_REFERENCE_DATE_1'
144137  , p_source_type_code      => 'Y'
144138  , p_source_application_id =>  602
144139 );
144140      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
144141       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
144142 
144143 
144144 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
144145 
144146 XLA_AE_HEADER_PKG.SetJeCategoryName;
144147 
144148 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
144149 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
144150 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
144151 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
144152 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
144153 
144154 
144155 -- No header level analytical criteria
144156 
144157 --
144158 --accounting attribute enhancement, bug 3612931
144159 --
144160 l_trx_reversal_source := SUBSTR(NULL, 1,30);
144161 
144162 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
144163    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
144164 
144165    xla_accounting_err_pkg.build_message
144166       (p_appli_s_name            => 'XLA'
144167       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
144168       ,p_token_1                 => 'ACCT_ATTR_NAME'
144169       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
144170       ,p_token_2                 => 'PRODUCT_NAME'
144171       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
144172       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
144173       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
144174       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
144175 
144176 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
144177    --
144178    -- following sets the accounting attributes needed to reverse
144179    -- accounting for a distributeion
144180    --
144181    xla_ae_lines_pkg.SetTrxReversalAttrs
144182       (p_event_id              => l_event_id
144183       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
144184       ,p_trx_reversal_source   => l_trx_reversal_source);
144185 
144186 END IF;
144187 
144188 
144189 ----------------------------------------------------------------
144190 -- 4262811 -  update the header statuses to invalid in need be
144191 ----------------------------------------------------------------
144192 --
144193 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
144194 
144195 
144196   -----------------------------------------------
144197   -- No accrual reversal for the event class/type
144198   -----------------------------------------------
144199 ----------------------------------------------------------------
144200 
144201 --
144202 -- this ends the header loop iteration for one bulk fetch
144203 --
144204 END LOOP;
144205 
144206 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
144207 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
144208 
144209 --
144210 -- insert dummy rows into lines gt table that were created due to
144211 -- transaction reversals
144212 --
144213 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
144214    l_result := XLA_AE_LINES_PKG.InsertLines;
144215 END IF;
144216 
144217 --
144218 -- reset the temp_line_num for each set of events fetched from header
144219 -- cursor rather than doing it for each new event in line cursor
144220 -- Bug 3939231
144221 --
144222 xla_ae_lines_pkg.g_temp_line_num := 0;
144223 
144224 
144225 
144226 --
144227 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
144228 --
144229 --
144230 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144231 
144232       trace
144233          (p_msg      => 'SQL - FETCH line_cur'
144234          ,p_level    => C_LEVEL_STATEMENT
144235          ,p_module   => l_log_module);
144236 
144237 END IF;
144238 --
144239 --
144240 LOOP
144241   --
144242   FETCH line_cur BULK COLLECT INTO
144243         l_array_entity_id
144244       , l_array_legal_entity_id
144245       , l_array_entity_code
144246       , l_array_transaction_num
144247       , l_array_event_id
144248       , l_array_class_code
144249       , l_array_event_type
144250       , l_array_event_number
144251       , l_array_event_date
144252       , l_array_transaction_date
144253       , l_array_reference_num_1
144254       , l_array_reference_num_2
144255       , l_array_reference_num_3
144256       , l_array_reference_num_4
144257       , l_array_reference_char_1
144258       , l_array_reference_char_2
144259       , l_array_reference_char_3
144260       , l_array_reference_char_4
144261       , l_array_reference_date_1
144262       , l_array_reference_date_2
144263       , l_array_reference_date_3
144264       , l_array_reference_date_4
144265       , l_array_event_created_by
144266       , l_array_budgetary_control_flag
144267       , l_array_extract_line_num 
144268       , l_array_source_4
144269       , l_array_source_11
144270       , l_array_source_15
144271       , l_array_source_18
144272       , l_array_source_19
144273       , l_array_source_20
144274       , l_array_source_21
144275       , l_array_source_22
144276       , l_array_source_24
144277       LIMIT l_rows;
144278 
144279   --
144280   IF (C_LEVEL_EVENT >= g_log_level) THEN
144281             trace
144282                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
144283                ,p_level    => C_LEVEL_EVENT
144284                ,p_module   => l_log_module);
144285   END IF;
144286   --
144287   EXIT WHEN l_array_entity_id.count = 0;
144288 
144289   XLA_AE_LINES_PKG.g_rec_lines := null;
144290 
144291 --
144292 -- Bug 4458708
144293 --
144294 XLA_AE_LINES_PKG.g_LineNumber := 0;
144295 --
144296 --
144297 
144298 FOR Idx IN 1..l_array_event_id.count LOOP
144299    --
144300    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
144301    --
144302    l_event_id := l_array_event_id(idx);  -- 5648433
144303 
144304    --
144305    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
144306    --
144307 
144308    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
144309              (g_array_event(l_event_id).array_value_num('header_index'))
144310          ,'N'
144311          ) <> 'Y'
144312    THEN
144313       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144314          trace
144315             (p_msg      => 'Trancaction revesal option is not Y '
144316             ,p_level    => C_LEVEL_STATEMENT
144317             ,p_module   => l_log_module);
144318       END IF;
144319 
144320 --
144321 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
144322 --
144323 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
144324 --
144325 -- set event info as cache for other routines to refer event attributes
144326 --
144327 
144328 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
144329    l_previous_event_id := l_event_id;
144330 
144331    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
144332       (p_application_id           => p_application_id
144333       ,p_primary_ledger_id        => p_primary_ledger_id
144334       ,p_base_ledger_id           => p_base_ledger_id
144335       ,p_target_ledger_id         => p_target_ledger_id
144336       ,p_entity_id                => l_array_entity_id(Idx)
144337       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
144338       ,p_entity_code              => l_array_entity_code(Idx)
144339       ,p_transaction_num          => l_array_transaction_num(Idx)
144340       ,p_event_id                 => l_array_event_id(Idx)
144341       ,p_event_class_code         => l_array_class_code(Idx)
144342       ,p_event_type_code          => l_array_event_type(Idx)
144343       ,p_event_number             => l_array_event_number(Idx)
144344       ,p_event_date               => l_array_event_date(Idx)
144345       ,p_transaction_date         => l_array_transaction_date(Idx)
144346       ,p_reference_num_1          => l_array_reference_num_1(Idx)
144347       ,p_reference_num_2          => l_array_reference_num_2(Idx)
144348       ,p_reference_num_3          => l_array_reference_num_3(Idx)
144349       ,p_reference_num_4          => l_array_reference_num_4(Idx)
144350       ,p_reference_char_1         => l_array_reference_char_1(Idx)
144351       ,p_reference_char_2         => l_array_reference_char_2(Idx)
144352       ,p_reference_char_3         => l_array_reference_char_3(Idx)
144353       ,p_reference_char_4         => l_array_reference_char_4(Idx)
144354       ,p_reference_date_1         => l_array_reference_date_1(Idx)
144355       ,p_reference_date_2         => l_array_reference_date_2(Idx)
144356       ,p_reference_date_3         => l_array_reference_date_3(Idx)
144357       ,p_reference_date_4         => l_array_reference_date_4(Idx)
144358       ,p_event_created_by         => l_array_event_created_by(Idx)
144359       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
144360        --
144361 END IF;
144362 
144363 
144364 
144365 --
144366 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
144367 
144368 l_acct_reversal_source := SUBSTR(NULL, 1,30);
144369 
144370 IF l_continue_with_lines THEN
144371    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
144372       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
144373 
144374       xla_accounting_err_pkg.build_message
144375          (p_appli_s_name            => 'XLA'
144376          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
144377          ,p_token_1                 => 'LINE_NUMBER'
144378          ,p_value_1                 => l_array_extract_line_num(Idx)
144379          ,p_token_2                 => 'PRODUCT_NAME'
144380          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
144381          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
144382          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
144383          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
144384 
144385    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
144386       --
144387       -- following sets the accounting attributes needed to reverse
144388       -- accounting for a distributeion
144389       --
144390 
144391       --
144392       -- 5217187
144393       --
144394       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
144395       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
144396                                        g_array_event(l_event_id).array_value_num('header_index'));
144397       --
144398       --
144399 
144400       -- No reversal code generated
144401 
144402       xla_ae_lines_pkg.SetAcctReversalAttrs
144403          (p_event_id             => l_event_id
144404          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
144405          ,p_calculate_acctd_flag => l_calculate_acctd_flag
144406          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
144407    END IF;
144408 
144409    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
144410        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
144411 
144412 --
144413 AcctLineType_27 (
144414  p_application_id  => p_application_id
144415  ,p_event_id     => l_event_id
144416  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144417  ,p_calculate_g_l_flag => l_calculate_g_l_flag
144418  ,p_actual_flag => l_actual_flag
144419  ,p_balance_type_code => l_balance_type_code
144420  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144421  
144422  , p_source_4 => l_array_source_4(Idx)
144423  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144424  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144425  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144426  , p_source_11 => l_array_source_11(Idx)
144427  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144428  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144429  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144430  , p_source_15 => l_array_source_15(Idx)
144431  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144432  , p_source_18 => l_array_source_18(Idx)
144433  , p_source_19 => l_array_source_19(Idx)
144434  , p_source_20 => l_array_source_20(Idx)
144435  , p_source_21 => l_array_source_21(Idx)
144436  , p_source_22 => l_array_source_22(Idx)
144437  , p_source_24 => l_array_source_24(Idx)
144438  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144439  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144440  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144441  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144442  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144443  );
144444 If(l_balance_type_code = 'A') THEN
144445   l_actual_gain_loss_ref := l_gain_or_loss_ref;
144446 END IF;
144447 
144448 --
144449 
144450 
144451 --
144452 AcctLineType_69 (
144453  p_application_id  => p_application_id
144454  ,p_event_id     => l_event_id
144455  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144456  ,p_calculate_g_l_flag => l_calculate_g_l_flag
144457  ,p_actual_flag => l_actual_flag
144458  ,p_balance_type_code => l_balance_type_code
144459  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144460  
144461  , p_source_4 => l_array_source_4(Idx)
144462  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144463  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144464  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144465  , p_source_11 => l_array_source_11(Idx)
144466  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144467  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144468  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144469  , p_source_15 => l_array_source_15(Idx)
144470  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144471  , p_source_18 => l_array_source_18(Idx)
144472  , p_source_19 => l_array_source_19(Idx)
144473  , p_source_20 => l_array_source_20(Idx)
144474  , p_source_21 => l_array_source_21(Idx)
144475  , p_source_22 => l_array_source_22(Idx)
144476  , p_source_24 => l_array_source_24(Idx)
144477  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144478  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144479  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144480  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144481  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144482  );
144483 If(l_balance_type_code = 'A') THEN
144484   l_actual_gain_loss_ref := l_gain_or_loss_ref;
144485 END IF;
144486 
144487 --
144488 
144489 
144490 --
144491 AcctLineType_73 (
144492  p_application_id  => p_application_id
144493  ,p_event_id     => l_event_id
144494  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144495  ,p_calculate_g_l_flag => l_calculate_g_l_flag
144496  ,p_actual_flag => l_actual_flag
144497  ,p_balance_type_code => l_balance_type_code
144498  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144499  
144500  , p_source_4 => l_array_source_4(Idx)
144501  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144502  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144503  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144504  , p_source_11 => l_array_source_11(Idx)
144505  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144506  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144507  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144508  , p_source_15 => l_array_source_15(Idx)
144509  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144510  , p_source_18 => l_array_source_18(Idx)
144511  , p_source_19 => l_array_source_19(Idx)
144512  , p_source_20 => l_array_source_20(Idx)
144513  , p_source_21 => l_array_source_21(Idx)
144514  , p_source_22 => l_array_source_22(Idx)
144515  , p_source_24 => l_array_source_24(Idx)
144516  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144517  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144518  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144519  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144520  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144521  );
144522 If(l_balance_type_code = 'A') THEN
144523   l_actual_gain_loss_ref := l_gain_or_loss_ref;
144524 END IF;
144525 
144526 --
144527 
144528 
144529 --
144530 AcctLineType_100 (
144531  p_application_id  => p_application_id
144532  ,p_event_id     => l_event_id
144533  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144534  ,p_calculate_g_l_flag => l_calculate_g_l_flag
144535  ,p_actual_flag => l_actual_flag
144536  ,p_balance_type_code => l_balance_type_code
144537  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144538  
144539  , p_source_4 => l_array_source_4(Idx)
144540  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144541  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144542  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144543  , p_source_11 => l_array_source_11(Idx)
144544  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144545  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144546  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144547  , p_source_15 => l_array_source_15(Idx)
144548  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144549  , p_source_18 => l_array_source_18(Idx)
144550  , p_source_19 => l_array_source_19(Idx)
144551  , p_source_20 => l_array_source_20(Idx)
144552  , p_source_21 => l_array_source_21(Idx)
144553  , p_source_22 => l_array_source_22(Idx)
144554  , p_source_24 => l_array_source_24(Idx)
144555  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144556  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144557  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144558  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144559  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144560  );
144561 If(l_balance_type_code = 'A') THEN
144562   l_actual_gain_loss_ref := l_gain_or_loss_ref;
144563 END IF;
144564 
144565 --
144566 
144567 
144568 --
144569 AcctLineType_113 (
144570  p_application_id  => p_application_id
144571  ,p_event_id     => l_event_id
144572  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144573  ,p_calculate_g_l_flag => l_calculate_g_l_flag
144574  ,p_actual_flag => l_actual_flag
144575  ,p_balance_type_code => l_balance_type_code
144576  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144577  
144578  , p_source_4 => l_array_source_4(Idx)
144579  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144580  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144581  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144582  , p_source_11 => l_array_source_11(Idx)
144583  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144584  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144585  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144586  , p_source_15 => l_array_source_15(Idx)
144587  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144588  , p_source_18 => l_array_source_18(Idx)
144589  , p_source_19 => l_array_source_19(Idx)
144590  , p_source_20 => l_array_source_20(Idx)
144591  , p_source_21 => l_array_source_21(Idx)
144592  , p_source_22 => l_array_source_22(Idx)
144593  , p_source_24 => l_array_source_24(Idx)
144594  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144595  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144596  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144597  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144598  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144599  );
144600 If(l_balance_type_code = 'A') THEN
144601   l_actual_gain_loss_ref := l_gain_or_loss_ref;
144602 END IF;
144603 
144604 --
144605 
144606 
144607 --
144608 AcctLineType_151 (
144609  p_application_id  => p_application_id
144610  ,p_event_id     => l_event_id
144611  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144612  ,p_calculate_g_l_flag => l_calculate_g_l_flag
144613  ,p_actual_flag => l_actual_flag
144614  ,p_balance_type_code => l_balance_type_code
144615  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144616  
144617  , p_source_4 => l_array_source_4(Idx)
144618  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144619  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144620  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144621  , p_source_11 => l_array_source_11(Idx)
144622  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144623  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144624  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144625  , p_source_15 => l_array_source_15(Idx)
144626  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144627  , p_source_18 => l_array_source_18(Idx)
144628  , p_source_19 => l_array_source_19(Idx)
144629  , p_source_20 => l_array_source_20(Idx)
144630  , p_source_21 => l_array_source_21(Idx)
144631  , p_source_22 => l_array_source_22(Idx)
144632  , p_source_24 => l_array_source_24(Idx)
144633  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144634  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144635  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144636  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144637  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144638  );
144639 If(l_balance_type_code = 'A') THEN
144640   l_actual_gain_loss_ref := l_gain_or_loss_ref;
144641 END IF;
144642 
144643 --
144644 
144645 
144646 --
144647 AcctLineType_160 (
144648  p_application_id  => p_application_id
144649  ,p_event_id     => l_event_id
144650  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144651  ,p_calculate_g_l_flag => l_calculate_g_l_flag
144652  ,p_actual_flag => l_actual_flag
144653  ,p_balance_type_code => l_balance_type_code
144654  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144655  
144656  , p_source_4 => l_array_source_4(Idx)
144657  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144658  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144659  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144660  , p_source_11 => l_array_source_11(Idx)
144661  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144662  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144663  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144664  , p_source_15 => l_array_source_15(Idx)
144665  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144666  , p_source_18 => l_array_source_18(Idx)
144667  , p_source_19 => l_array_source_19(Idx)
144668  , p_source_20 => l_array_source_20(Idx)
144669  , p_source_21 => l_array_source_21(Idx)
144670  , p_source_22 => l_array_source_22(Idx)
144671  , p_source_24 => l_array_source_24(Idx)
144672  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144673  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144674  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144675  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144676  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144677  );
144678 If(l_balance_type_code = 'A') THEN
144679   l_actual_gain_loss_ref := l_gain_or_loss_ref;
144680 END IF;
144681 
144682 --
144683 
144684 
144685 --
144686 AcctLineType_204 (
144687  p_application_id  => p_application_id
144688  ,p_event_id     => l_event_id
144689  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144690  ,p_calculate_g_l_flag => l_calculate_g_l_flag
144691  ,p_actual_flag => l_actual_flag
144692  ,p_balance_type_code => l_balance_type_code
144693  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144694  
144695  , p_source_4 => l_array_source_4(Idx)
144696  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144697  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144698  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144699  , p_source_11 => l_array_source_11(Idx)
144700  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144701  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144702  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144703  , p_source_15 => l_array_source_15(Idx)
144704  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144705  , p_source_18 => l_array_source_18(Idx)
144706  , p_source_19 => l_array_source_19(Idx)
144707  , p_source_20 => l_array_source_20(Idx)
144708  , p_source_21 => l_array_source_21(Idx)
144709  , p_source_22 => l_array_source_22(Idx)
144710  , p_source_24 => l_array_source_24(Idx)
144711  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144712  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144713  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144714  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144715  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144716  );
144717 If(l_balance_type_code = 'A') THEN
144718   l_actual_gain_loss_ref := l_gain_or_loss_ref;
144719 END IF;
144720 
144721 --
144722 
144723 
144724 --
144725 AcctLineType_223 (
144726  p_application_id  => p_application_id
144727  ,p_event_id     => l_event_id
144728  ,p_calculate_acctd_flag => l_calculate_acctd_flag
144729  ,p_calculate_g_l_flag => l_calculate_g_l_flag
144730  ,p_actual_flag => l_actual_flag
144731  ,p_balance_type_code => l_balance_type_code
144732  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144733  
144734  , p_source_4 => l_array_source_4(Idx)
144735  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144736  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144737  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144738  , p_source_11 => l_array_source_11(Idx)
144739  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144740  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144741  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144742  , p_source_15 => l_array_source_15(Idx)
144743  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144744  , p_source_18 => l_array_source_18(Idx)
144745  , p_source_19 => l_array_source_19(Idx)
144746  , p_source_20 => l_array_source_20(Idx)
144747  , p_source_21 => l_array_source_21(Idx)
144748  , p_source_22 => l_array_source_22(Idx)
144749  , p_source_24 => l_array_source_24(Idx)
144750  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144751  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144752  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144753  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144754  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144755  );
144756 If(l_balance_type_code = 'A') THEN
144757   l_actual_gain_loss_ref := l_gain_or_loss_ref;
144758 END IF;
144759 
144760 --
144761 
144762       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
144763       -- or secondary ledger that has different currency with primary
144764       -- or alc that is calculated by sla
144765       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
144766             (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'))
144767 
144768 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
144769 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
144770           AND (l_actual_flag = 'A')) THEN
144771         XLA_AE_LINES_PKG.CreateGainOrLossLines(
144772           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
144773          ,p_application_id   => p_application_id
144774          ,p_amb_context_code => 'DEFAULT'
144775          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
144776          ,p_event_class_code => C_EVENT_CLASS_CODE
144777          ,p_event_type_code  => C_EVENT_TYPE_CODE
144778          
144779          ,p_gain_ccid        => -1
144780          ,p_loss_ccid        => -1
144781 
144782          ,p_actual_flag      => l_actual_flag
144783          ,p_enc_flag         => null
144784          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
144785          ,p_enc_g_l_ref      => null
144786          );
144787       END IF;
144788    END IF;
144789 END IF;
144790 
144791    ELSE
144792       --
144793       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
144794       --
144795       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144796          trace
144797             (p_msg      => 'Trancaction revesal option is Y'
144798             ,p_level    => C_LEVEL_STATEMENT
144799             ,p_module   => l_log_module);
144800       END IF;
144801    END IF;
144802 
144803 END LOOP;
144804 l_result := XLA_AE_LINES_PKG.InsertLines ;
144805 end loop;
144806 close line_cur;
144807 
144808 
144809 --
144810 -- insert headers into xla_ae_headers_gt table
144811 --
144812 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
144813 
144814 -- insert into errors table here.
144815 
144816 END LOOP;
144817 
144818 --
144819 -- 4865292
144820 --
144821 -- Compare g_hdr_extract_count with event count in
144822 -- CreateHeadersAndLines.
144823 --
144824 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
144825 
144826 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144827    trace (p_msg     => '# rows extracted from header extract objects '
144828                     || ' (running total): '
144829                     || g_hdr_extract_count
144830          ,p_level   => C_LEVEL_STATEMENT
144831          ,p_module  => l_log_module);
144832 END IF;
144833 
144834 CLOSE header_cur;
144835 --
144836 
144837 --
144838 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144839    trace
144840       (p_msg      => 'END of EventClass_254'
144841       ,p_level    => C_LEVEL_PROCEDURE
144842       ,p_module   => l_log_module);
144843 END IF;
144844 --
144845 RETURN l_result;
144846 EXCEPTION
144847 WHEN xla_exceptions_pkg.application_exception THEN
144848    
144849 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
144850 
144851    
144852 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
144853 
144854    RAISE;
144855 
144856 WHEN NO_DATA_FOUND THEN
144857 
144858 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
144859 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
144860 
144861 FOR header_record IN header_cur
144862 LOOP
144863     l_array_header_events(header_record.event_id) := header_record.event_id;
144864 END LOOP;
144865 
144866 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
144867 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
144868 
144869 fnd_file.put_line(fnd_file.LOG, '                    ');
144870 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
144871 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
144872 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
144873 
144874 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
144875 LOOP
144876 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
144877 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
144878         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
144879 	END IF;
144880 END LOOP;
144881 
144882 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
144883 fnd_file.put_line(fnd_file.LOG, '                    ');
144884 
144885 
144886 xla_exceptions_pkg.raise_message
144887       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_254');
144888 
144889 
144890 WHEN OTHERS THEN
144891    xla_exceptions_pkg.raise_message
144892       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_254');
144893 END EventClass_254;
144894 --
144895 
144896 ---------------------------------------
144897 --
144898 -- PRIVATE PROCEDURE
144899 --         insert_sources_255
144900 --
144901 ----------------------------------------
144902 --
144903 PROCEDURE insert_sources_255(
144904                                 p_target_ledger_id       IN NUMBER
144905                               , p_language               IN VARCHAR2
144906                               , p_sla_ledger_id          IN NUMBER
144907                               , p_pad_start_date         IN DATE
144908                               , p_pad_end_date           IN DATE
144909                          )
144910 IS
144911 
144912 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_SHIP_ALL';
144913 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_SHIP';
144914 p_apps_owner                   VARCHAR2(30);
144915 l_log_module                   VARCHAR2(240);
144916 BEGIN
144917 IF g_log_enabled THEN
144918       l_log_module := C_DEFAULT_MODULE||'.insert_sources_255';
144919 END IF;
144920 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144921 
144922       trace
144923          (p_msg      => 'BEGIN of insert_sources_255'
144924          ,p_level    => C_LEVEL_PROCEDURE
144925          ,p_module   => l_log_module);
144926 
144927 END IF;
144928 
144929 -- select APPS owner
144930 SELECT oracle_username
144931   INTO p_apps_owner
144932   FROM fnd_oracle_userid
144933  WHERE read_only_flag = 'U'
144934 ;
144935 
144936 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144937       trace
144938          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
144939                         ' - p_language = '||p_language||
144940                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
144941                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
144942                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
144943                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
144944          ,p_level    => C_LEVEL_STATEMENT
144945          ,p_module   => l_log_module);
144946 END IF;
144947 
144948 
144949 --
144950 INSERT INTO xla_diag_sources --hdr2
144951 (
144952         event_id
144953       , ledger_id
144954       , sla_ledger_id
144955       , description_language
144956       , object_name
144957       , object_type_code
144958       , line_number
144959       , source_application_id
144960       , source_type_code
144961       , source_code
144962       , source_value
144963       , source_meaning
144964       , created_by
144965       , creation_date
144966       , last_update_date
144967       , last_updated_by
144968       , last_update_login
144969       , program_update_date
144970       , program_application_id
144971       , program_id
144972       , request_id
144973 )
144974 SELECT
144975         event_id
144976       , p_target_ledger_id
144977       , p_sla_ledger_id
144978       , p_language
144979       , object_name
144980       , object_type_code
144981       , line_number
144982       , source_application_id
144983       , source_type_code
144984       , source_code
144985       , SUBSTR(source_value ,1,1996)
144986       , SUBSTR(source_meaning ,1,200)
144987       , xla_environment_pkg.g_Usr_Id
144988       , TRUNC(SYSDATE)
144989       , TRUNC(SYSDATE)
144990       , xla_environment_pkg.g_Usr_Id
144991       , xla_environment_pkg.g_Login_Id
144992       , TRUNC(SYSDATE)
144993       , xla_environment_pkg.g_Prog_Appl_Id
144994       , xla_environment_pkg.g_Prog_Id
144995       , xla_environment_pkg.g_Req_Id
144996   FROM (
144997        SELECT xet.event_id                  event_id
144998             , 0                          line_number
144999             , CASE r
145000                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
145001                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
145002                 
145003                ELSE null
145004               END                           object_name
145005             , CASE r
145006                 WHEN 1 THEN 'HEADER' 
145007                 WHEN 2 THEN 'HEADER' 
145008                 
145009                 ELSE null
145010               END                           object_type_code
145011             , CASE r
145012                 WHEN 1 THEN '707' 
145013                 WHEN 2 THEN '707' 
145014                 
145015                 ELSE null
145016               END                           source_application_id
145017             , 'S'             source_type_code
145018             , CASE r
145019                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
145020                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
145021                 
145022                 ELSE null
145023               END                           source_code
145024             , CASE r
145025                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
145026                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
145027                 
145028                 ELSE null
145029               END                           source_value
145030             , CASE r
145031                 WHEN 1 THEN fvl12.meaning
145032                 WHEN 2 THEN fvl38.meaning
145033                 
145034                 ELSE null
145035               END               source_meaning
145036          FROM xla_events_gt     xet  
145037       , CST_XLA_INV_HEADERS_V  h1
145038   , fnd_lookup_values    fvl12
145039   , fnd_lookup_values    fvl38
145040              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
145041          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
145042            AND xet.event_class_code = C_EVENT_CLASS_CODE
145043               AND h1.event_id = xet.event_id
145044    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
145045   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
145046   AND fvl12.view_application_id(+) = 700
145047   AND fvl12.language(+)            = USERENV('LANG')
145048      AND fvl38.lookup_type(+)         = 'YES_NO'
145049   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
145050   AND fvl38.view_application_id(+) = 0
145051   AND fvl38.language(+)            = USERENV('LANG')
145052   
145053 )
145054 ;
145055 --
145056 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145057 
145058       trace
145059          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
145060          ,p_level    => C_LEVEL_STATEMENT
145061          ,p_module   => l_log_module);
145062 
145063 END IF;
145064 --
145065 
145066 
145067 
145068 --
145069 INSERT INTO xla_diag_sources  --line2
145070 (
145071         event_id
145072       , ledger_id
145073       , sla_ledger_id
145074       , description_language
145075       , object_name
145076       , object_type_code
145077       , line_number
145078       , source_application_id
145079       , source_type_code
145080       , source_code
145081       , source_value
145082       , source_meaning
145083       , created_by
145084       , creation_date
145085       , last_update_date
145086       , last_updated_by
145087       , last_update_login
145088       , program_update_date
145089       , program_application_id
145090       , program_id
145091       , request_id
145092 )
145093 SELECT  event_id
145094       , p_target_ledger_id
145095       , p_sla_ledger_id
145096       , p_language
145097       , object_name
145098       , object_type_code
145099       , line_number
145100       , source_application_id
145101       , source_type_code
145102       , source_code
145103       , SUBSTR(source_value,1,1996)
145104       , SUBSTR(source_meaning ,1,200)
145105       , xla_environment_pkg.g_Usr_Id
145106       , TRUNC(SYSDATE)
145107       , TRUNC(SYSDATE)
145108       , xla_environment_pkg.g_Usr_Id
145109       , xla_environment_pkg.g_Login_Id
145110       , TRUNC(SYSDATE)
145111       , xla_environment_pkg.g_Prog_Appl_Id
145112       , xla_environment_pkg.g_Prog_Id
145113       , xla_environment_pkg.g_Req_Id
145114   FROM (
145115        SELECT xet.event_id                  event_id
145116             , l2.line_number                 line_number
145117             , CASE r
145118                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
145119                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
145120                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
145121                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
145122                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
145123                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
145124                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
145125                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
145126                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
145127                 
145128                ELSE null
145129               END                           object_name
145130             , CASE r
145131                 WHEN 1 THEN 'LINE' 
145132                 WHEN 2 THEN 'LINE' 
145133                 WHEN 3 THEN 'LINE' 
145134                 WHEN 4 THEN 'LINE' 
145135                 WHEN 5 THEN 'LINE' 
145136                 WHEN 6 THEN 'LINE' 
145137                 WHEN 7 THEN 'LINE' 
145138                 WHEN 8 THEN 'LINE' 
145139                 WHEN 9 THEN 'LINE' 
145140                 
145141                 ELSE null
145142               END                           object_type_code
145143             , CASE r
145144                 WHEN 1 THEN '707' 
145145                 WHEN 2 THEN '707' 
145146                 WHEN 3 THEN '707' 
145147                 WHEN 4 THEN '707' 
145148                 WHEN 5 THEN '707' 
145149                 WHEN 6 THEN '707' 
145150                 WHEN 7 THEN '707' 
145151                 WHEN 8 THEN '707' 
145152                 WHEN 9 THEN '707' 
145153                 
145154                 ELSE null
145155               END                           source_application_id
145156             , 'S'             source_type_code
145157             , CASE r
145158                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
145159                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
145160                 WHEN 3 THEN 'CURRENCY_CODE' 
145161                 WHEN 4 THEN 'ENTERED_AMOUNT' 
145162                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
145163                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
145164                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
145165                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
145166                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
145167                 
145168                 ELSE null
145169               END                           source_code
145170             , CASE r
145171                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
145172                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
145173                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
145174                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
145175                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
145176                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
145177                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
145178                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
145179                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
145180                 
145181                 ELSE null
145182               END                           source_value
145183             , null              source_meaning
145184          FROM  xla_events_gt     xet  
145185         , CST_XLA_INV_LINES_V  l2
145186             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
145187         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
145188           AND xet.event_class_code = C_EVENT_CLASS_CODE
145189             AND l2.event_id          = xet.event_id
145190 
145191 )
145192 ;
145193 --
145194 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145195 
145196       trace
145197          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
145198          ,p_level    => C_LEVEL_STATEMENT
145199          ,p_module   => l_log_module);
145200 
145201 END IF;
145202 
145203 
145204 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145205       trace
145206          (p_msg      => 'END of insert_sources_255'
145207          ,p_level    => C_LEVEL_PROCEDURE
145208          ,p_module   => l_log_module);
145209 END IF;
145210 EXCEPTION
145211   WHEN xla_exceptions_pkg.application_exception THEN
145212       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
145213             trace
145214                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
145215                ,p_level    => C_LEVEL_EXCEPTION
145216                ,p_module   => l_log_module);
145217       END IF;
145218       RAISE;
145219   WHEN OTHERS THEN
145220       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
145221             trace
145222                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
145223                ,p_level    => C_LEVEL_EXCEPTION
145224                ,p_module   => l_log_module);
145225        END IF;
145226        xla_exceptions_pkg.raise_message
145227            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_255');
145228 END insert_sources_255;
145229 --
145230 
145231 ---------------------------------------
145232 --
145233 -- PRIVATE FUNCTION
145234 --         EventClass_255
145235 --
145236 ----------------------------------------
145237 --
145238 FUNCTION EventClass_255
145239        (p_application_id         IN NUMBER
145240        ,p_base_ledger_id         IN NUMBER
145241        ,p_target_ledger_id       IN NUMBER
145242        ,p_language               IN VARCHAR2
145243        ,p_currency_code          IN VARCHAR2
145244        ,p_sla_ledger_id          IN NUMBER
145245        ,p_pad_start_date         IN DATE
145246        ,p_pad_end_date           IN DATE
145247        ,p_primary_ledger_id      IN NUMBER)
145248 RETURN BOOLEAN IS
145249 --
145250 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_SHIP_ALL';
145251 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_SHIP';
145252 
145253 l_calculate_acctd_flag   VARCHAR2(1) :='N';
145254 l_calculate_g_l_flag     VARCHAR2(1) :='N';
145255 --
145256 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145257 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145258 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
145259 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145260 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145261 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
145262 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
145263 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145264 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145265 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145266 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145267 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145268 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145269 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145270 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145271 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145272 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145273 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145274 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145275 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145276 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145277 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145278 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
145279 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
145280 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
145281 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
145282 
145283 l_event_id                             NUMBER;
145284 l_previous_event_id                    NUMBER;
145285 l_first_event_id                       NUMBER;
145286 l_last_event_id                        NUMBER;
145287 
145288 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
145289 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
145290 --
145291 --
145292 l_result                    BOOLEAN := TRUE;
145293 l_rows                      NUMBER  := 1000;
145294 l_event_type_name           VARCHAR2(80) := 'All';
145295 l_event_class_name          VARCHAR2(80) := 'Direct Interorg Shipment';
145296 l_description               VARCHAR2(4000);
145297 l_transaction_reversal      NUMBER;
145298 l_ae_header_id              NUMBER;
145299 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
145300 l_log_module                VARCHAR2(240);
145301 --
145302 l_acct_reversal_source      VARCHAR2(30);
145303 l_trx_reversal_source       VARCHAR2(30);
145304 
145305 l_continue_with_lines       BOOLEAN := TRUE;
145306 --
145307 l_acc_rev_gl_date_source    DATE;                      -- 4262811
145308 --
145309 type t_array_event_id is table of number index by binary_integer;
145310 
145311 l_rec_array_event                    t_rec_array_event;
145312 l_null_rec_array_event               t_rec_array_event;
145313 l_array_ae_header_id                 xla_number_array_type;
145314 l_actual_flag                        VARCHAR2(1) := NULL;
145315 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
145316 l_balance_type_code                  VARCHAR2(1) :=NULL;
145317 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
145318 
145319 --
145320 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
145321 --
145322 
145323 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
145324 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
145325 
145326 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
145327 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
145328 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
145329 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
145330 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
145331 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
145332 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
145333 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
145334 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
145335 
145336 l_array_source_12              t_array_source_12;
145337 l_array_source_12_meaning      t_array_lookup_meaning;
145338 l_array_source_38              t_array_source_38;
145339 l_array_source_38_meaning      t_array_lookup_meaning;
145340 
145341 l_array_source_4      t_array_source_4;
145342 l_array_source_11      t_array_source_11;
145343 l_array_source_15      t_array_source_15;
145344 l_array_source_18      t_array_source_18;
145345 l_array_source_19      t_array_source_19;
145346 l_array_source_20      t_array_source_20;
145347 l_array_source_21      t_array_source_21;
145348 l_array_source_22      t_array_source_22;
145349 l_array_source_24      t_array_source_24;
145350 
145351 --
145352 CURSOR header_cur
145353 IS
145354 SELECT /*+ leading(xet) cardinality(xet,1) */
145355 -- Event Class Code: DIR_INTERORG_SHIP
145356     xet.entity_id
145357    ,xet.legal_entity_id
145358    ,xet.entity_code
145359    ,xet.transaction_number
145360    ,xet.event_id
145361    ,xet.event_class_code
145362    ,xet.event_type_code
145363    ,xet.event_number
145364    ,xet.event_date
145365    ,xet.transaction_date
145366    ,xet.reference_num_1
145367    ,xet.reference_num_2
145368    ,xet.reference_num_3
145369    ,xet.reference_num_4
145370    ,xet.reference_char_1
145371    ,xet.reference_char_2
145372    ,xet.reference_char_3
145373    ,xet.reference_char_4
145374    ,xet.reference_date_1
145375    ,xet.reference_date_2
145376    ,xet.reference_date_3
145377    ,xet.reference_date_4
145378    ,xet.event_created_by
145379    ,xet.budgetary_control_flag 
145380   , h1.DISTRIBUTION_TYPE    source_12
145381   , fvl12.meaning   source_12_meaning
145382   , h1.TRANSFER_TO_GL_INDICATOR    source_38
145383   , fvl38.meaning   source_38_meaning
145384   FROM xla_events_gt     xet 
145385   , CST_XLA_INV_HEADERS_V  h1
145386   , fnd_lookup_values    fvl12
145387   , fnd_lookup_values    fvl38
145388  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
145389    and xet.event_class_code = C_EVENT_CLASS_CODE
145390    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
145391    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
145392   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
145393   AND fvl12.view_application_id(+) = 700
145394   AND fvl12.language(+)            = USERENV('LANG')
145395      AND fvl38.lookup_type(+)         = 'YES_NO'
145396   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
145397   AND fvl38.view_application_id(+) = 0
145398   AND fvl38.language(+)            = USERENV('LANG')
145399   
145400  ORDER BY event_id
145401 ;
145402 
145403 
145404 --
145405 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
145406 IS
145407 SELECT  /*+ leading(xet) cardinality(xet,1) */
145408 -- Event Class Code: DIR_INTERORG_SHIP
145409     xet.entity_id
145410    ,xet.legal_entity_id
145411    ,xet.entity_code
145412    ,xet.transaction_number
145413    ,xet.event_id
145414    ,xet.event_class_code
145415    ,xet.event_type_code
145416    ,xet.event_number
145417    ,xet.event_date
145418    ,xet.transaction_date
145419    ,xet.reference_num_1
145420    ,xet.reference_num_2
145421    ,xet.reference_num_3
145422    ,xet.reference_num_4
145423    ,xet.reference_char_1
145424    ,xet.reference_char_2
145425    ,xet.reference_char_3
145426    ,xet.reference_char_4
145427    ,xet.reference_date_1
145428    ,xet.reference_date_2
145429    ,xet.reference_date_3
145430    ,xet.reference_date_4
145431    ,xet.event_created_by
145432    ,xet.budgetary_control_flag
145433  , l2.LINE_NUMBER  
145434   , l2.CODE_COMBINATION_ID    source_4
145435   , l2.DISTRIBUTION_IDENTIFIER    source_11
145436   , l2.CURRENCY_CODE    source_15
145437   , l2.ENTERED_AMOUNT    source_18
145438   , l2.CURRENCY_CONVERSION_DATE    source_19
145439   , l2.CURRENCY_CONVERSION_RATE    source_20
145440   , l2.CURRENCY_CONVERSION_TYPE    source_21
145441   , l2.ACCOUNTED_AMOUNT    source_22
145442   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
145443   FROM xla_events_gt     xet 
145444   , CST_XLA_INV_LINES_V  l2
145445  WHERE xet.event_id between x_first_event_id and x_last_event_id
145446    and xet.event_date between p_pad_start_date and p_pad_end_date
145447    and xet.event_class_code = C_EVENT_CLASS_CODE
145448    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
145449 ;
145450 
145451 --
145452 BEGIN
145453 IF g_log_enabled THEN
145454    l_log_module := C_DEFAULT_MODULE||'.EventClass_255';
145455 END IF;
145456 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145457    trace
145458       (p_msg      => 'BEGIN of EventClass_255'
145459       ,p_level    => C_LEVEL_PROCEDURE
145460       ,p_module   => l_log_module);
145461 END IF;
145462 
145463 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145464    trace
145465       (p_msg      => 'p_application_id = '||p_application_id||
145466                      ' - p_base_ledger_id = '||p_base_ledger_id||
145467                      ' - p_target_ledger_id  = '||p_target_ledger_id||
145468                      ' - p_language = '||p_language||
145469                      ' - p_currency_code = '||p_currency_code||
145470                      ' - p_sla_ledger_id = '||p_sla_ledger_id
145471       ,p_level    => C_LEVEL_STATEMENT
145472       ,p_module   => l_log_module);
145473 END IF;
145474 --
145475 -- initialze arrays
145476 --
145477 g_array_event.DELETE;
145478 l_rec_array_event := l_null_rec_array_event;
145479 --
145480 --------------------------------------
145481 -- 4262811 Initialze MPA Line Number
145482 --------------------------------------
145483 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
145484 
145485 --
145486 
145487 --
145488 OPEN header_cur;
145489 --
145490 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145491    trace
145492    (p_msg      => 'SQL - FETCH header_cur'
145493    ,p_level    => C_LEVEL_STATEMENT
145494    ,p_module   => l_log_module);
145495 END IF;
145496 --
145497 LOOP
145498 FETCH header_cur BULK COLLECT INTO
145499         l_array_entity_id
145500       , l_array_legal_entity_id
145501       , l_array_entity_code
145502       , l_array_transaction_num
145503       , l_array_event_id
145504       , l_array_class_code
145505       , l_array_event_type
145506       , l_array_event_number
145507       , l_array_event_date
145508       , l_array_transaction_date
145509       , l_array_reference_num_1
145510       , l_array_reference_num_2
145511       , l_array_reference_num_3
145512       , l_array_reference_num_4
145513       , l_array_reference_char_1
145514       , l_array_reference_char_2
145515       , l_array_reference_char_3
145516       , l_array_reference_char_4
145517       , l_array_reference_date_1
145518       , l_array_reference_date_2
145519       , l_array_reference_date_3
145520       , l_array_reference_date_4
145521       , l_array_event_created_by
145522       , l_array_budgetary_control_flag 
145523       , l_array_source_12
145524       , l_array_source_12_meaning
145525       , l_array_source_38
145526       , l_array_source_38_meaning
145527       LIMIT l_rows;
145528 --
145529 IF (C_LEVEL_EVENT >= g_log_level) THEN
145530    trace
145531    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
145532    ,p_level    => C_LEVEL_EVENT
145533    ,p_module   => l_log_module);
145534 END IF;
145535 --
145536 EXIT WHEN l_array_entity_id.COUNT = 0;
145537 
145538 -- initialize arrays
145539 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
145540 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
145541 
145542 --
145543 -- Bug 4458708
145544 --
145545 XLA_AE_LINES_PKG.g_LineNumber := 0;
145546 
145547 
145548 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
145549 g_last_hdr_idx := l_array_event_id.LAST;
145550 --
145551 -- loop for the headers. Each iteration is for each header extract row
145552 -- fetched in header cursor
145553 --
145554 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
145555 
145556 --
145557 -- set event info as cache for other routines to refer event attributes
145558 --
145559 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
145560    (p_application_id           => p_application_id
145561    ,p_primary_ledger_id        => p_primary_ledger_id
145562    ,p_base_ledger_id           => p_base_ledger_id
145563    ,p_target_ledger_id         => p_target_ledger_id
145564    ,p_entity_id                => l_array_entity_id(hdr_idx)
145565    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
145566    ,p_entity_code              => l_array_entity_code(hdr_idx)
145567    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
145568    ,p_event_id                 => l_array_event_id(hdr_idx)
145569    ,p_event_class_code         => l_array_class_code(hdr_idx)
145570    ,p_event_type_code          => l_array_event_type(hdr_idx)
145571    ,p_event_number             => l_array_event_number(hdr_idx)
145572    ,p_event_date               => l_array_event_date(hdr_idx)
145573    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
145574    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
145575    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
145576    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
145577    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
145578    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
145579    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
145580    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
145581    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
145582    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
145583    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
145584    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
145585    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
145586    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
145587    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
145588 
145589 --
145590 -- set the status of entry to C_VALID (0)
145591 --
145592 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
145593 
145594 --
145595 -- initialize a row for ae header
145596 --
145597 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
145598 
145599 l_event_id := l_array_event_id(hdr_idx);
145600 
145601 --
145602 -- storing the hdr_idx for event. May be used by line cursor.
145603 --
145604 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
145605 
145606 --
145607 -- store sources from header extract. This can be improved to
145608 -- store only those sources from header extract that may be used in lines
145609 --
145610 
145611 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
145612 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
145613 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
145614 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
145615 
145616 --
145617 -- initilaize the status of ae headers for diffrent balance types
145618 -- the status is initialised to C_NOT_CREATED (2)
145619 --
145620 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145621 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145622 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145623 
145624 --
145625 -- call api to validate and store accounting attributes for header
145626 --
145627 
145628 ------------------------------------------------------------
145629 -- Accrual Reversal : to get date for Standard Source (NONE)
145630 ------------------------------------------------------------
145631 l_acc_rev_gl_date_source := NULL;
145632 
145633      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
145634       l_rec_acct_attrs.array_date_value(1) := 
145635 xla_ae_sources_pkg.GetSystemSourceDate(
145636    p_source_code           => 'XLA_REFERENCE_DATE_1'
145637  , p_source_type_code      => 'Y'
145638  , p_source_application_id =>  602
145639 );
145640      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
145641       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
145642 
145643 
145644 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
145645 
145646 XLA_AE_HEADER_PKG.SetJeCategoryName;
145647 
145648 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
145649 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
145650 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
145651 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
145652 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
145653 
145654 
145655 -- No header level analytical criteria
145656 
145657 --
145658 --accounting attribute enhancement, bug 3612931
145659 --
145660 l_trx_reversal_source := SUBSTR(NULL, 1,30);
145661 
145662 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
145663    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
145664 
145665    xla_accounting_err_pkg.build_message
145666       (p_appli_s_name            => 'XLA'
145667       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
145668       ,p_token_1                 => 'ACCT_ATTR_NAME'
145669       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
145670       ,p_token_2                 => 'PRODUCT_NAME'
145671       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
145672       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
145673       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
145674       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
145675 
145676 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
145677    --
145678    -- following sets the accounting attributes needed to reverse
145679    -- accounting for a distributeion
145680    --
145681    xla_ae_lines_pkg.SetTrxReversalAttrs
145682       (p_event_id              => l_event_id
145683       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
145684       ,p_trx_reversal_source   => l_trx_reversal_source);
145685 
145686 END IF;
145687 
145688 
145689 ----------------------------------------------------------------
145690 -- 4262811 -  update the header statuses to invalid in need be
145691 ----------------------------------------------------------------
145692 --
145693 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
145694 
145695 
145696   -----------------------------------------------
145697   -- No accrual reversal for the event class/type
145698   -----------------------------------------------
145699 ----------------------------------------------------------------
145700 
145701 --
145702 -- this ends the header loop iteration for one bulk fetch
145703 --
145704 END LOOP;
145705 
145706 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
145707 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
145708 
145709 --
145710 -- insert dummy rows into lines gt table that were created due to
145711 -- transaction reversals
145712 --
145713 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
145714    l_result := XLA_AE_LINES_PKG.InsertLines;
145715 END IF;
145716 
145717 --
145718 -- reset the temp_line_num for each set of events fetched from header
145719 -- cursor rather than doing it for each new event in line cursor
145720 -- Bug 3939231
145721 --
145722 xla_ae_lines_pkg.g_temp_line_num := 0;
145723 
145724 
145725 
145726 --
145727 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
145728 --
145729 --
145730 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145731 
145732       trace
145733          (p_msg      => 'SQL - FETCH line_cur'
145734          ,p_level    => C_LEVEL_STATEMENT
145735          ,p_module   => l_log_module);
145736 
145737 END IF;
145738 --
145739 --
145740 LOOP
145741   --
145742   FETCH line_cur BULK COLLECT INTO
145743         l_array_entity_id
145744       , l_array_legal_entity_id
145745       , l_array_entity_code
145746       , l_array_transaction_num
145747       , l_array_event_id
145748       , l_array_class_code
145749       , l_array_event_type
145750       , l_array_event_number
145751       , l_array_event_date
145752       , l_array_transaction_date
145753       , l_array_reference_num_1
145754       , l_array_reference_num_2
145755       , l_array_reference_num_3
145756       , l_array_reference_num_4
145757       , l_array_reference_char_1
145758       , l_array_reference_char_2
145759       , l_array_reference_char_3
145760       , l_array_reference_char_4
145761       , l_array_reference_date_1
145762       , l_array_reference_date_2
145763       , l_array_reference_date_3
145764       , l_array_reference_date_4
145765       , l_array_event_created_by
145766       , l_array_budgetary_control_flag
145767       , l_array_extract_line_num 
145768       , l_array_source_4
145769       , l_array_source_11
145770       , l_array_source_15
145771       , l_array_source_18
145772       , l_array_source_19
145773       , l_array_source_20
145774       , l_array_source_21
145775       , l_array_source_22
145776       , l_array_source_24
145777       LIMIT l_rows;
145778 
145779   --
145780   IF (C_LEVEL_EVENT >= g_log_level) THEN
145781             trace
145782                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
145783                ,p_level    => C_LEVEL_EVENT
145784                ,p_module   => l_log_module);
145785   END IF;
145786   --
145787   EXIT WHEN l_array_entity_id.count = 0;
145788 
145789   XLA_AE_LINES_PKG.g_rec_lines := null;
145790 
145791 --
145792 -- Bug 4458708
145793 --
145794 XLA_AE_LINES_PKG.g_LineNumber := 0;
145795 --
145796 --
145797 
145798 FOR Idx IN 1..l_array_event_id.count LOOP
145799    --
145800    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
145801    --
145802    l_event_id := l_array_event_id(idx);  -- 5648433
145803 
145804    --
145805    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
145806    --
145807 
145808    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
145809              (g_array_event(l_event_id).array_value_num('header_index'))
145810          ,'N'
145811          ) <> 'Y'
145812    THEN
145813       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145814          trace
145815             (p_msg      => 'Trancaction revesal option is not Y '
145816             ,p_level    => C_LEVEL_STATEMENT
145817             ,p_module   => l_log_module);
145818       END IF;
145819 
145820 --
145821 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
145822 --
145823 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
145824 --
145825 -- set event info as cache for other routines to refer event attributes
145826 --
145827 
145828 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
145829    l_previous_event_id := l_event_id;
145830 
145831    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
145832       (p_application_id           => p_application_id
145833       ,p_primary_ledger_id        => p_primary_ledger_id
145834       ,p_base_ledger_id           => p_base_ledger_id
145835       ,p_target_ledger_id         => p_target_ledger_id
145836       ,p_entity_id                => l_array_entity_id(Idx)
145837       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
145838       ,p_entity_code              => l_array_entity_code(Idx)
145839       ,p_transaction_num          => l_array_transaction_num(Idx)
145840       ,p_event_id                 => l_array_event_id(Idx)
145841       ,p_event_class_code         => l_array_class_code(Idx)
145842       ,p_event_type_code          => l_array_event_type(Idx)
145843       ,p_event_number             => l_array_event_number(Idx)
145844       ,p_event_date               => l_array_event_date(Idx)
145845       ,p_transaction_date         => l_array_transaction_date(Idx)
145846       ,p_reference_num_1          => l_array_reference_num_1(Idx)
145847       ,p_reference_num_2          => l_array_reference_num_2(Idx)
145848       ,p_reference_num_3          => l_array_reference_num_3(Idx)
145849       ,p_reference_num_4          => l_array_reference_num_4(Idx)
145850       ,p_reference_char_1         => l_array_reference_char_1(Idx)
145851       ,p_reference_char_2         => l_array_reference_char_2(Idx)
145852       ,p_reference_char_3         => l_array_reference_char_3(Idx)
145853       ,p_reference_char_4         => l_array_reference_char_4(Idx)
145854       ,p_reference_date_1         => l_array_reference_date_1(Idx)
145855       ,p_reference_date_2         => l_array_reference_date_2(Idx)
145856       ,p_reference_date_3         => l_array_reference_date_3(Idx)
145857       ,p_reference_date_4         => l_array_reference_date_4(Idx)
145858       ,p_event_created_by         => l_array_event_created_by(Idx)
145859       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
145860        --
145861 END IF;
145862 
145863 
145864 
145865 --
145866 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
145867 
145868 l_acct_reversal_source := SUBSTR(NULL, 1,30);
145869 
145870 IF l_continue_with_lines THEN
145871    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
145872       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
145873 
145874       xla_accounting_err_pkg.build_message
145875          (p_appli_s_name            => 'XLA'
145876          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
145877          ,p_token_1                 => 'LINE_NUMBER'
145878          ,p_value_1                 => l_array_extract_line_num(Idx)
145879          ,p_token_2                 => 'PRODUCT_NAME'
145880          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
145881          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
145882          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
145883          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
145884 
145885    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
145886       --
145887       -- following sets the accounting attributes needed to reverse
145888       -- accounting for a distributeion
145889       --
145890 
145891       --
145892       -- 5217187
145893       --
145894       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
145895       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
145896                                        g_array_event(l_event_id).array_value_num('header_index'));
145897       --
145898       --
145899 
145900       -- No reversal code generated
145901 
145902       xla_ae_lines_pkg.SetAcctReversalAttrs
145903          (p_event_id             => l_event_id
145904          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
145905          ,p_calculate_acctd_flag => l_calculate_acctd_flag
145906          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
145907    END IF;
145908 
145909    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
145910        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
145911 
145912 --
145913 AcctLineType_60 (
145914  p_application_id  => p_application_id
145915  ,p_event_id     => l_event_id
145916  ,p_calculate_acctd_flag => l_calculate_acctd_flag
145917  ,p_calculate_g_l_flag => l_calculate_g_l_flag
145918  ,p_actual_flag => l_actual_flag
145919  ,p_balance_type_code => l_balance_type_code
145920  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145921  
145922  , p_source_4 => l_array_source_4(Idx)
145923  , p_source_11 => l_array_source_11(Idx)
145924  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
145925  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
145926  , p_source_15 => l_array_source_15(Idx)
145927  , p_source_18 => l_array_source_18(Idx)
145928  , p_source_19 => l_array_source_19(Idx)
145929  , p_source_20 => l_array_source_20(Idx)
145930  , p_source_21 => l_array_source_21(Idx)
145931  , p_source_22 => l_array_source_22(Idx)
145932  , p_source_24 => l_array_source_24(Idx)
145933  );
145934 If(l_balance_type_code = 'A') THEN
145935   l_actual_gain_loss_ref := l_gain_or_loss_ref;
145936 END IF;
145937 
145938 --
145939 
145940 
145941 --
145942 AcctLineType_78 (
145943  p_application_id  => p_application_id
145944  ,p_event_id     => l_event_id
145945  ,p_calculate_acctd_flag => l_calculate_acctd_flag
145946  ,p_calculate_g_l_flag => l_calculate_g_l_flag
145947  ,p_actual_flag => l_actual_flag
145948  ,p_balance_type_code => l_balance_type_code
145949  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145950  
145951  , p_source_4 => l_array_source_4(Idx)
145952  , p_source_11 => l_array_source_11(Idx)
145953  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
145954  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
145955  , p_source_15 => l_array_source_15(Idx)
145956  , p_source_18 => l_array_source_18(Idx)
145957  , p_source_19 => l_array_source_19(Idx)
145958  , p_source_20 => l_array_source_20(Idx)
145959  , p_source_21 => l_array_source_21(Idx)
145960  , p_source_22 => l_array_source_22(Idx)
145961  , p_source_24 => l_array_source_24(Idx)
145962  );
145963 If(l_balance_type_code = 'A') THEN
145964   l_actual_gain_loss_ref := l_gain_or_loss_ref;
145965 END IF;
145966 
145967 --
145968 
145969 
145970 --
145971 AcctLineType_84 (
145972  p_application_id  => p_application_id
145973  ,p_event_id     => l_event_id
145974  ,p_calculate_acctd_flag => l_calculate_acctd_flag
145975  ,p_calculate_g_l_flag => l_calculate_g_l_flag
145976  ,p_actual_flag => l_actual_flag
145977  ,p_balance_type_code => l_balance_type_code
145978  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145979  
145980  , p_source_4 => l_array_source_4(Idx)
145981  , p_source_11 => l_array_source_11(Idx)
145982  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
145983  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
145984  , p_source_15 => l_array_source_15(Idx)
145985  , p_source_18 => l_array_source_18(Idx)
145986  , p_source_19 => l_array_source_19(Idx)
145987  , p_source_20 => l_array_source_20(Idx)
145988  , p_source_21 => l_array_source_21(Idx)
145989  , p_source_22 => l_array_source_22(Idx)
145990  , p_source_24 => l_array_source_24(Idx)
145991  );
145992 If(l_balance_type_code = 'A') THEN
145993   l_actual_gain_loss_ref := l_gain_or_loss_ref;
145994 END IF;
145995 
145996 --
145997 
145998 
145999 --
146000 AcctLineType_93 (
146001  p_application_id  => p_application_id
146002  ,p_event_id     => l_event_id
146003  ,p_calculate_acctd_flag => l_calculate_acctd_flag
146004  ,p_calculate_g_l_flag => l_calculate_g_l_flag
146005  ,p_actual_flag => l_actual_flag
146006  ,p_balance_type_code => l_balance_type_code
146007  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146008  
146009  , p_source_4 => l_array_source_4(Idx)
146010  , p_source_11 => l_array_source_11(Idx)
146011  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146012  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146013  , p_source_15 => l_array_source_15(Idx)
146014  , p_source_18 => l_array_source_18(Idx)
146015  , p_source_19 => l_array_source_19(Idx)
146016  , p_source_20 => l_array_source_20(Idx)
146017  , p_source_21 => l_array_source_21(Idx)
146018  , p_source_22 => l_array_source_22(Idx)
146019  , p_source_24 => l_array_source_24(Idx)
146020  );
146021 If(l_balance_type_code = 'A') THEN
146022   l_actual_gain_loss_ref := l_gain_or_loss_ref;
146023 END IF;
146024 
146025 --
146026 
146027 
146028 --
146029 AcctLineType_116 (
146030  p_application_id  => p_application_id
146031  ,p_event_id     => l_event_id
146032  ,p_calculate_acctd_flag => l_calculate_acctd_flag
146033  ,p_calculate_g_l_flag => l_calculate_g_l_flag
146034  ,p_actual_flag => l_actual_flag
146035  ,p_balance_type_code => l_balance_type_code
146036  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146037  
146038  , p_source_4 => l_array_source_4(Idx)
146039  , p_source_11 => l_array_source_11(Idx)
146040  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146041  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146042  , p_source_15 => l_array_source_15(Idx)
146043  , p_source_18 => l_array_source_18(Idx)
146044  , p_source_19 => l_array_source_19(Idx)
146045  , p_source_20 => l_array_source_20(Idx)
146046  , p_source_21 => l_array_source_21(Idx)
146047  , p_source_22 => l_array_source_22(Idx)
146048  , p_source_24 => l_array_source_24(Idx)
146049  );
146050 If(l_balance_type_code = 'A') THEN
146051   l_actual_gain_loss_ref := l_gain_or_loss_ref;
146052 END IF;
146053 
146054 --
146055 
146056 
146057 --
146058 AcctLineType_130 (
146059  p_application_id  => p_application_id
146060  ,p_event_id     => l_event_id
146061  ,p_calculate_acctd_flag => l_calculate_acctd_flag
146062  ,p_calculate_g_l_flag => l_calculate_g_l_flag
146063  ,p_actual_flag => l_actual_flag
146064  ,p_balance_type_code => l_balance_type_code
146065  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146066  
146067  , p_source_4 => l_array_source_4(Idx)
146068  , p_source_11 => l_array_source_11(Idx)
146069  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146070  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146071  , p_source_15 => l_array_source_15(Idx)
146072  , p_source_18 => l_array_source_18(Idx)
146073  , p_source_19 => l_array_source_19(Idx)
146074  , p_source_20 => l_array_source_20(Idx)
146075  , p_source_21 => l_array_source_21(Idx)
146076  , p_source_22 => l_array_source_22(Idx)
146077  , p_source_24 => l_array_source_24(Idx)
146078  );
146079 If(l_balance_type_code = 'A') THEN
146080   l_actual_gain_loss_ref := l_gain_or_loss_ref;
146081 END IF;
146082 
146083 --
146084 
146085 
146086 --
146087 AcctLineType_164 (
146088  p_application_id  => p_application_id
146089  ,p_event_id     => l_event_id
146090  ,p_calculate_acctd_flag => l_calculate_acctd_flag
146091  ,p_calculate_g_l_flag => l_calculate_g_l_flag
146092  ,p_actual_flag => l_actual_flag
146093  ,p_balance_type_code => l_balance_type_code
146094  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146095  
146096  , p_source_4 => l_array_source_4(Idx)
146097  , p_source_11 => l_array_source_11(Idx)
146098  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146099  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146100  , p_source_15 => l_array_source_15(Idx)
146101  , p_source_18 => l_array_source_18(Idx)
146102  , p_source_19 => l_array_source_19(Idx)
146103  , p_source_20 => l_array_source_20(Idx)
146104  , p_source_21 => l_array_source_21(Idx)
146105  , p_source_22 => l_array_source_22(Idx)
146106  , p_source_24 => l_array_source_24(Idx)
146107  );
146108 If(l_balance_type_code = 'A') THEN
146109   l_actual_gain_loss_ref := l_gain_or_loss_ref;
146110 END IF;
146111 
146112 --
146113 
146114 
146115 --
146116 AcctLineType_178 (
146117  p_application_id  => p_application_id
146118  ,p_event_id     => l_event_id
146119  ,p_calculate_acctd_flag => l_calculate_acctd_flag
146120  ,p_calculate_g_l_flag => l_calculate_g_l_flag
146121  ,p_actual_flag => l_actual_flag
146122  ,p_balance_type_code => l_balance_type_code
146123  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146124  
146125  , p_source_4 => l_array_source_4(Idx)
146126  , p_source_11 => l_array_source_11(Idx)
146127  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146128  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146129  , p_source_15 => l_array_source_15(Idx)
146130  , p_source_18 => l_array_source_18(Idx)
146131  , p_source_19 => l_array_source_19(Idx)
146132  , p_source_20 => l_array_source_20(Idx)
146133  , p_source_21 => l_array_source_21(Idx)
146134  , p_source_22 => l_array_source_22(Idx)
146135  , p_source_24 => l_array_source_24(Idx)
146136  );
146137 If(l_balance_type_code = 'A') THEN
146138   l_actual_gain_loss_ref := l_gain_or_loss_ref;
146139 END IF;
146140 
146141 --
146142 
146143 
146144 --
146145 AcctLineType_218 (
146146  p_application_id  => p_application_id
146147  ,p_event_id     => l_event_id
146148  ,p_calculate_acctd_flag => l_calculate_acctd_flag
146149  ,p_calculate_g_l_flag => l_calculate_g_l_flag
146150  ,p_actual_flag => l_actual_flag
146151  ,p_balance_type_code => l_balance_type_code
146152  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146153  
146154  , p_source_4 => l_array_source_4(Idx)
146155  , p_source_11 => l_array_source_11(Idx)
146156  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146157  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146158  , p_source_15 => l_array_source_15(Idx)
146159  , p_source_18 => l_array_source_18(Idx)
146160  , p_source_19 => l_array_source_19(Idx)
146161  , p_source_20 => l_array_source_20(Idx)
146162  , p_source_21 => l_array_source_21(Idx)
146163  , p_source_22 => l_array_source_22(Idx)
146164  , p_source_24 => l_array_source_24(Idx)
146165  );
146166 If(l_balance_type_code = 'A') THEN
146167   l_actual_gain_loss_ref := l_gain_or_loss_ref;
146168 END IF;
146169 
146170 --
146171 
146172       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
146173       -- or secondary ledger that has different currency with primary
146174       -- or alc that is calculated by sla
146175       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
146176             (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'))
146177 
146178 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
146179 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
146180           AND (l_actual_flag = 'A')) THEN
146181         XLA_AE_LINES_PKG.CreateGainOrLossLines(
146182           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
146183          ,p_application_id   => p_application_id
146184          ,p_amb_context_code => 'DEFAULT'
146185          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
146186          ,p_event_class_code => C_EVENT_CLASS_CODE
146187          ,p_event_type_code  => C_EVENT_TYPE_CODE
146188          
146189          ,p_gain_ccid        => -1
146190          ,p_loss_ccid        => -1
146191 
146192          ,p_actual_flag      => l_actual_flag
146193          ,p_enc_flag         => null
146194          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
146195          ,p_enc_g_l_ref      => null
146196          );
146197       END IF;
146198    END IF;
146199 END IF;
146200 
146201    ELSE
146202       --
146203       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
146204       --
146205       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146206          trace
146207             (p_msg      => 'Trancaction revesal option is Y'
146208             ,p_level    => C_LEVEL_STATEMENT
146209             ,p_module   => l_log_module);
146210       END IF;
146211    END IF;
146212 
146213 END LOOP;
146214 l_result := XLA_AE_LINES_PKG.InsertLines ;
146215 end loop;
146216 close line_cur;
146217 
146218 
146219 --
146220 -- insert headers into xla_ae_headers_gt table
146221 --
146222 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
146223 
146224 -- insert into errors table here.
146225 
146226 END LOOP;
146227 
146228 --
146229 -- 4865292
146230 --
146231 -- Compare g_hdr_extract_count with event count in
146232 -- CreateHeadersAndLines.
146233 --
146234 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
146235 
146236 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146237    trace (p_msg     => '# rows extracted from header extract objects '
146238                     || ' (running total): '
146239                     || g_hdr_extract_count
146240          ,p_level   => C_LEVEL_STATEMENT
146241          ,p_module  => l_log_module);
146242 END IF;
146243 
146244 CLOSE header_cur;
146245 --
146246 
146247 --
146248 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146249    trace
146250       (p_msg      => 'END of EventClass_255'
146251       ,p_level    => C_LEVEL_PROCEDURE
146252       ,p_module   => l_log_module);
146253 END IF;
146254 --
146255 RETURN l_result;
146256 EXCEPTION
146257 WHEN xla_exceptions_pkg.application_exception THEN
146258    
146259 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
146260 
146261    
146262 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
146263 
146264    RAISE;
146265 
146266 WHEN NO_DATA_FOUND THEN
146267 
146268 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
146269 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
146270 
146271 FOR header_record IN header_cur
146272 LOOP
146273     l_array_header_events(header_record.event_id) := header_record.event_id;
146274 END LOOP;
146275 
146276 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
146277 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
146278 
146279 fnd_file.put_line(fnd_file.LOG, '                    ');
146280 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
146281 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
146282 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
146283 
146284 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
146285 LOOP
146286 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
146287 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
146288         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
146289 	END IF;
146290 END LOOP;
146291 
146292 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
146293 fnd_file.put_line(fnd_file.LOG, '                    ');
146294 
146295 
146296 xla_exceptions_pkg.raise_message
146297       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_255');
146298 
146299 
146300 WHEN OTHERS THEN
146301    xla_exceptions_pkg.raise_message
146302       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_255');
146303 END EventClass_255;
146304 --
146305 
146306 ---------------------------------------
146307 --
146308 -- PRIVATE PROCEDURE
146309 --         insert_sources_256
146310 --
146311 ----------------------------------------
146312 --
146313 PROCEDURE insert_sources_256(
146314                                 p_target_ledger_id       IN NUMBER
146315                               , p_language               IN VARCHAR2
146316                               , p_sla_ledger_id          IN NUMBER
146317                               , p_pad_start_date         IN DATE
146318                               , p_pad_end_date           IN DATE
146319                          )
146320 IS
146321 
146322 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
146323 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
146324 p_apps_owner                   VARCHAR2(30);
146325 l_log_module                   VARCHAR2(240);
146326 BEGIN
146327 IF g_log_enabled THEN
146328       l_log_module := C_DEFAULT_MODULE||'.insert_sources_256';
146329 END IF;
146330 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146331 
146332       trace
146333          (p_msg      => 'BEGIN of insert_sources_256'
146334          ,p_level    => C_LEVEL_PROCEDURE
146335          ,p_module   => l_log_module);
146336 
146337 END IF;
146338 
146339 -- select APPS owner
146340 SELECT oracle_username
146341   INTO p_apps_owner
146342   FROM fnd_oracle_userid
146343  WHERE read_only_flag = 'U'
146344 ;
146345 
146346 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146347       trace
146348          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
146349                         ' - p_language = '||p_language||
146350                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
146351                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
146352                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
146353                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
146354          ,p_level    => C_LEVEL_STATEMENT
146355          ,p_module   => l_log_module);
146356 END IF;
146357 
146358 
146359 --
146360 INSERT INTO xla_diag_sources --hdr2
146361 (
146362         event_id
146363       , ledger_id
146364       , sla_ledger_id
146365       , description_language
146366       , object_name
146367       , object_type_code
146368       , line_number
146369       , source_application_id
146370       , source_type_code
146371       , source_code
146372       , source_value
146373       , source_meaning
146374       , created_by
146375       , creation_date
146376       , last_update_date
146377       , last_updated_by
146378       , last_update_login
146379       , program_update_date
146380       , program_application_id
146381       , program_id
146382       , request_id
146383 )
146384 SELECT
146385         event_id
146386       , p_target_ledger_id
146387       , p_sla_ledger_id
146388       , p_language
146389       , object_name
146390       , object_type_code
146391       , line_number
146392       , source_application_id
146393       , source_type_code
146394       , source_code
146395       , SUBSTR(source_value ,1,1996)
146396       , SUBSTR(source_meaning ,1,200)
146397       , xla_environment_pkg.g_Usr_Id
146398       , TRUNC(SYSDATE)
146399       , TRUNC(SYSDATE)
146400       , xla_environment_pkg.g_Usr_Id
146401       , xla_environment_pkg.g_Login_Id
146402       , TRUNC(SYSDATE)
146403       , xla_environment_pkg.g_Prog_Appl_Id
146404       , xla_environment_pkg.g_Prog_Id
146405       , xla_environment_pkg.g_Req_Id
146406   FROM (
146407        SELECT xet.event_id                  event_id
146408             , 0                          line_number
146409             , CASE r
146410                WHEN 1 THEN 'CST_XLA_INV_REF_V' 
146411                 WHEN 2 THEN 'CST_XLA_INV_REF_V' 
146412                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
146413                 WHEN 4 THEN 'CST_XLA_INV_HEADERS_V' 
146414                 WHEN 5 THEN 'CST_XLA_INV_REF_V' 
146415                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
146416                 WHEN 7 THEN 'PSA_CST_XLA_UPG_V' 
146417                 WHEN 8 THEN 'CST_XLA_INV_REF_V' 
146418                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
146419                 WHEN 10 THEN 'PO_REQ_DISTS_REF_V' 
146420                 WHEN 11 THEN 'PO_REQ_HEADERS_REF_V' 
146421                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
146422                 
146423                ELSE null
146424               END                           object_name
146425             , CASE r
146426                 WHEN 1 THEN 'HEADER' 
146427                 WHEN 2 THEN 'HEADER' 
146428                 WHEN 3 THEN 'HEADER' 
146429                 WHEN 4 THEN 'HEADER' 
146430                 WHEN 5 THEN 'HEADER' 
146431                 WHEN 6 THEN 'HEADER' 
146432                 WHEN 7 THEN 'HEADER' 
146433                 WHEN 8 THEN 'HEADER' 
146434                 WHEN 9 THEN 'HEADER' 
146435                 WHEN 10 THEN 'HEADER' 
146436                 WHEN 11 THEN 'HEADER' 
146437                 WHEN 12 THEN 'HEADER' 
146438                 
146439                 ELSE null
146440               END                           object_type_code
146441             , CASE r
146442                 WHEN 1 THEN '707' 
146443                 WHEN 2 THEN '707' 
146444                 WHEN 3 THEN '707' 
146445                 WHEN 4 THEN '707' 
146446                 WHEN 5 THEN '707' 
146447                 WHEN 6 THEN '707' 
146448                 WHEN 7 THEN '707' 
146449                 WHEN 8 THEN '707' 
146450                 WHEN 9 THEN '707' 
146451                 WHEN 10 THEN '201' 
146452                 WHEN 11 THEN '201' 
146453                 WHEN 12 THEN '707' 
146454                 
146455                 ELSE null
146456               END                           source_application_id
146457             , 'S'             source_type_code
146458             , CASE r
146459                 WHEN 1 THEN 'APPLIED_TO_APPL_ID' 
146460                 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
146461                 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE' 
146462                 WHEN 4 THEN 'DISTRIBUTION_TYPE' 
146463                 WHEN 5 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
146464                 WHEN 6 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
146465                 WHEN 7 THEN 'CST_ENCUM_UPG_OPTION' 
146466                 WHEN 8 THEN 'TXN_PO_DISTRIBUTION_ID' 
146467                 WHEN 9 THEN 'TXN_PO_HEADER_ID' 
146468                 WHEN 10 THEN 'REQ_BUDGET_ACCOUNT' 
146469                 WHEN 11 THEN 'REQ_ENCUMBRANCE_TYPE_ID' 
146470                 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR' 
146471                 
146472                 ELSE null
146473               END                           source_code
146474             , CASE r
146475                 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
146476                 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
146477                 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
146478                 WHEN 4 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
146479                 WHEN 5 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
146480                 WHEN 6 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
146481                 WHEN 7 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
146482                 WHEN 8 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
146483                 WHEN 9 THEN TO_CHAR(h3.TXN_PO_HEADER_ID)
146484                 WHEN 10 THEN TO_CHAR(h4.REQ_BUDGET_ACCOUNT)
146485                 WHEN 11 THEN TO_CHAR(h5.REQ_ENCUMBRANCE_TYPE_ID)
146486                 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
146487                 
146488                 ELSE null
146489               END                           source_value
146490             , CASE r
146491                 WHEN 4 THEN fvl12.meaning
146492                 WHEN 12 THEN fvl38.meaning
146493                 
146494                 ELSE null
146495               END               source_meaning
146496          FROM xla_events_gt     xet  
146497       , CST_XLA_INV_HEADERS_V  h1
146498       , CST_XLA_INV_REF_V  h3
146499       , PO_REQ_DISTS_REF_V  h4
146500       , PO_REQ_HEADERS_REF_V  h5
146501       , PSA_CST_XLA_UPG_V  h6
146502   , fnd_lookup_values    fvl12
146503   , fnd_lookup_values    fvl38
146504              ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
146505          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
146506            AND xet.event_class_code = C_EVENT_CLASS_CODE
146507               AND h1.event_id = xet.event_id
146508  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'
146509   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
146510   AND fvl12.view_application_id(+) = 700
146511   AND fvl12.language(+)            = USERENV('LANG')
146512      AND fvl38.lookup_type(+)         = 'YES_NO'
146513   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
146514   AND fvl38.view_application_id(+) = 0
146515   AND fvl38.language(+)            = USERENV('LANG')
146516   
146517 )
146518 ;
146519 --
146520 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146521 
146522       trace
146523          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
146524          ,p_level    => C_LEVEL_STATEMENT
146525          ,p_module   => l_log_module);
146526 
146527 END IF;
146528 --
146529 
146530 
146531 
146532 --
146533 INSERT INTO xla_diag_sources  --line2
146534 (
146535         event_id
146536       , ledger_id
146537       , sla_ledger_id
146538       , description_language
146539       , object_name
146540       , object_type_code
146541       , line_number
146542       , source_application_id
146543       , source_type_code
146544       , source_code
146545       , source_value
146546       , source_meaning
146547       , created_by
146548       , creation_date
146549       , last_update_date
146550       , last_updated_by
146551       , last_update_login
146552       , program_update_date
146553       , program_application_id
146554       , program_id
146555       , request_id
146556 )
146557 SELECT  event_id
146558       , p_target_ledger_id
146559       , p_sla_ledger_id
146560       , p_language
146561       , object_name
146562       , object_type_code
146563       , line_number
146564       , source_application_id
146565       , source_type_code
146566       , source_code
146567       , SUBSTR(source_value,1,1996)
146568       , SUBSTR(source_meaning ,1,200)
146569       , xla_environment_pkg.g_Usr_Id
146570       , TRUNC(SYSDATE)
146571       , TRUNC(SYSDATE)
146572       , xla_environment_pkg.g_Usr_Id
146573       , xla_environment_pkg.g_Login_Id
146574       , TRUNC(SYSDATE)
146575       , xla_environment_pkg.g_Prog_Appl_Id
146576       , xla_environment_pkg.g_Prog_Id
146577       , xla_environment_pkg.g_Req_Id
146578   FROM (
146579        SELECT xet.event_id                  event_id
146580             , l2.line_number                 line_number
146581             , CASE r
146582                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
146583                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
146584                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
146585                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
146586                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
146587                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
146588                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
146589                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
146590                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
146591                 
146592                ELSE null
146593               END                           object_name
146594             , CASE r
146595                 WHEN 1 THEN 'LINE' 
146596                 WHEN 2 THEN 'LINE' 
146597                 WHEN 3 THEN 'LINE' 
146598                 WHEN 4 THEN 'LINE' 
146599                 WHEN 5 THEN 'LINE' 
146600                 WHEN 6 THEN 'LINE' 
146601                 WHEN 7 THEN 'LINE' 
146602                 WHEN 8 THEN 'LINE' 
146603                 WHEN 9 THEN 'LINE' 
146604                 
146605                 ELSE null
146606               END                           object_type_code
146607             , CASE r
146608                 WHEN 1 THEN '707' 
146609                 WHEN 2 THEN '707' 
146610                 WHEN 3 THEN '707' 
146611                 WHEN 4 THEN '707' 
146612                 WHEN 5 THEN '707' 
146613                 WHEN 6 THEN '707' 
146614                 WHEN 7 THEN '707' 
146615                 WHEN 8 THEN '707' 
146616                 WHEN 9 THEN '707' 
146617                 
146618                 ELSE null
146619               END                           source_application_id
146620             , 'S'             source_type_code
146621             , CASE r
146622                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
146623                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
146624                 WHEN 3 THEN 'CURRENCY_CODE' 
146625                 WHEN 4 THEN 'ENTERED_AMOUNT' 
146626                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
146627                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
146628                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
146629                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
146630                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
146631                 
146632                 ELSE null
146633               END                           source_code
146634             , CASE r
146635                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
146636                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
146637                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
146638                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
146639                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
146640                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
146641                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
146642                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
146643                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
146644                 
146645                 ELSE null
146646               END                           source_value
146647             , null              source_meaning
146648          FROM  xla_events_gt     xet  
146649         , CST_XLA_INV_LINES_V  l2
146650             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
146651         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
146652           AND xet.event_class_code = C_EVENT_CLASS_CODE
146653             AND l2.event_id          = xet.event_id
146654 
146655 )
146656 ;
146657 --
146658 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146659 
146660       trace
146661          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
146662          ,p_level    => C_LEVEL_STATEMENT
146663          ,p_module   => l_log_module);
146664 
146665 END IF;
146666 
146667 
146668 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146669       trace
146670          (p_msg      => 'END of insert_sources_256'
146671          ,p_level    => C_LEVEL_PROCEDURE
146672          ,p_module   => l_log_module);
146673 END IF;
146674 EXCEPTION
146675   WHEN xla_exceptions_pkg.application_exception THEN
146676       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
146677             trace
146678                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
146679                ,p_level    => C_LEVEL_EXCEPTION
146680                ,p_module   => l_log_module);
146681       END IF;
146682       RAISE;
146683   WHEN OTHERS THEN
146684       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
146685             trace
146686                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
146687                ,p_level    => C_LEVEL_EXCEPTION
146688                ,p_module   => l_log_module);
146689        END IF;
146690        xla_exceptions_pkg.raise_message
146691            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_256');
146692 END insert_sources_256;
146693 --
146694 
146695 ---------------------------------------
146696 --
146697 -- PRIVATE FUNCTION
146698 --         EventClass_256
146699 --
146700 ----------------------------------------
146701 --
146702 FUNCTION EventClass_256
146703        (p_application_id         IN NUMBER
146704        ,p_base_ledger_id         IN NUMBER
146705        ,p_target_ledger_id       IN NUMBER
146706        ,p_language               IN VARCHAR2
146707        ,p_currency_code          IN VARCHAR2
146708        ,p_sla_ledger_id          IN NUMBER
146709        ,p_pad_start_date         IN DATE
146710        ,p_pad_end_date           IN DATE
146711        ,p_primary_ledger_id      IN NUMBER)
146712 RETURN BOOLEAN IS
146713 --
146714 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
146715 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
146716 
146717 l_calculate_acctd_flag   VARCHAR2(1) :='N';
146718 l_calculate_g_l_flag     VARCHAR2(1) :='N';
146719 --
146720 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146721 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146722 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146723 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146724 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146725 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146726 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146727 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146728 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146729 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146730 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146731 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146732 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146733 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146734 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146735 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146736 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146737 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146738 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146739 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146740 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146741 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146742 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
146743 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146744 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
146745 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
146746 
146747 l_event_id                             NUMBER;
146748 l_previous_event_id                    NUMBER;
146749 l_first_event_id                       NUMBER;
146750 l_last_event_id                        NUMBER;
146751 
146752 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
146753 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
146754 --
146755 --
146756 l_result                    BOOLEAN := TRUE;
146757 l_rows                      NUMBER  := 1000;
146758 l_event_type_name           VARCHAR2(80) := 'All';
146759 l_event_class_name          VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt';
146760 l_description               VARCHAR2(4000);
146761 l_transaction_reversal      NUMBER;
146762 l_ae_header_id              NUMBER;
146763 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
146764 l_log_module                VARCHAR2(240);
146765 --
146766 l_acct_reversal_source      VARCHAR2(30);
146767 l_trx_reversal_source       VARCHAR2(30);
146768 
146769 l_continue_with_lines       BOOLEAN := TRUE;
146770 --
146771 l_acc_rev_gl_date_source    DATE;                      -- 4262811
146772 --
146773 type t_array_event_id is table of number index by binary_integer;
146774 
146775 l_rec_array_event                    t_rec_array_event;
146776 l_null_rec_array_event               t_rec_array_event;
146777 l_array_ae_header_id                 xla_number_array_type;
146778 l_actual_flag                        VARCHAR2(1) := NULL;
146779 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
146780 l_balance_type_code                  VARCHAR2(1) :=NULL;
146781 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
146782 
146783 --
146784 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
146785 --
146786 
146787 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
146788 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
146789 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
146790 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
146791 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
146792 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
146793 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
146794 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
146795 TYPE t_array_source_29 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
146796 TYPE t_array_source_30 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
146797 TYPE t_array_source_31 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
146798 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
146799 
146800 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
146801 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
146802 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
146803 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
146804 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
146805 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
146806 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
146807 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
146808 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
146809 
146810 l_array_source_6              t_array_source_6;
146811 l_array_source_7              t_array_source_7;
146812 l_array_source_8              t_array_source_8;
146813 l_array_source_12              t_array_source_12;
146814 l_array_source_12_meaning      t_array_lookup_meaning;
146815 l_array_source_14              t_array_source_14;
146816 l_array_source_16              t_array_source_16;
146817 l_array_source_27              t_array_source_27;
146818 l_array_source_28              t_array_source_28;
146819 l_array_source_29              t_array_source_29;
146820 l_array_source_30              t_array_source_30;
146821 l_array_source_31              t_array_source_31;
146822 l_array_source_38              t_array_source_38;
146823 l_array_source_38_meaning      t_array_lookup_meaning;
146824 
146825 l_array_source_4      t_array_source_4;
146826 l_array_source_11      t_array_source_11;
146827 l_array_source_15      t_array_source_15;
146828 l_array_source_18      t_array_source_18;
146829 l_array_source_19      t_array_source_19;
146830 l_array_source_20      t_array_source_20;
146831 l_array_source_21      t_array_source_21;
146832 l_array_source_22      t_array_source_22;
146833 l_array_source_24      t_array_source_24;
146834 
146835 --
146836 CURSOR header_cur
146837 IS
146838 SELECT /*+ leading(xet) cardinality(xet,1) */
146839 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
146840     xet.entity_id
146841    ,xet.legal_entity_id
146842    ,xet.entity_code
146843    ,xet.transaction_number
146844    ,xet.event_id
146845    ,xet.event_class_code
146846    ,xet.event_type_code
146847    ,xet.event_number
146848    ,xet.event_date
146849    ,xet.transaction_date
146850    ,xet.reference_num_1
146851    ,xet.reference_num_2
146852    ,xet.reference_num_3
146853    ,xet.reference_num_4
146854    ,xet.reference_char_1
146855    ,xet.reference_char_2
146856    ,xet.reference_char_3
146857    ,xet.reference_char_4
146858    ,xet.reference_date_1
146859    ,xet.reference_date_2
146860    ,xet.reference_date_3
146861    ,xet.reference_date_4
146862    ,xet.event_created_by
146863    ,xet.budgetary_control_flag 
146864   , h3.APPLIED_TO_APPL_ID    source_6
146865   , h3.APPLIED_TO_DIST_LINK_TYPE    source_7
146866   , h3.APPLIED_TO_ENTITY_CODE    source_8
146867   , h1.DISTRIBUTION_TYPE    source_12
146868   , fvl12.meaning   source_12_meaning
146869   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_14
146870   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_16
146871   , h6.CST_ENCUM_UPG_OPTION    source_27
146872   , h3.TXN_PO_DISTRIBUTION_ID    source_28
146873   , h3.TXN_PO_HEADER_ID    source_29
146874   , h4.REQ_BUDGET_ACCOUNT    source_30
146875   , h5.REQ_ENCUMBRANCE_TYPE_ID    source_31
146876   , h1.TRANSFER_TO_GL_INDICATOR    source_38
146877   , fvl38.meaning   source_38_meaning
146878   FROM xla_events_gt     xet 
146879   , CST_XLA_INV_HEADERS_V  h1
146880   , CST_XLA_INV_REF_V  h3
146881   , PO_REQ_DISTS_REF_V  h4
146882   , PO_REQ_HEADERS_REF_V  h5
146883   , PSA_CST_XLA_UPG_V  h6
146884   , fnd_lookup_values    fvl12
146885   , fnd_lookup_values    fvl38
146886  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
146887    and xet.event_class_code = C_EVENT_CLASS_CODE
146888    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
146889  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'
146890   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
146891   AND fvl12.view_application_id(+) = 700
146892   AND fvl12.language(+)            = USERENV('LANG')
146893      AND fvl38.lookup_type(+)         = 'YES_NO'
146894   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
146895   AND fvl38.view_application_id(+) = 0
146896   AND fvl38.language(+)            = USERENV('LANG')
146897   
146898  ORDER BY event_id
146899 ;
146900 
146901 
146902 --
146903 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
146904 IS
146905 SELECT  /*+ leading(xet) cardinality(xet,1) */
146906 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
146907     xet.entity_id
146908    ,xet.legal_entity_id
146909    ,xet.entity_code
146910    ,xet.transaction_number
146911    ,xet.event_id
146912    ,xet.event_class_code
146913    ,xet.event_type_code
146914    ,xet.event_number
146915    ,xet.event_date
146916    ,xet.transaction_date
146917    ,xet.reference_num_1
146918    ,xet.reference_num_2
146919    ,xet.reference_num_3
146920    ,xet.reference_num_4
146921    ,xet.reference_char_1
146922    ,xet.reference_char_2
146923    ,xet.reference_char_3
146924    ,xet.reference_char_4
146925    ,xet.reference_date_1
146926    ,xet.reference_date_2
146927    ,xet.reference_date_3
146928    ,xet.reference_date_4
146929    ,xet.event_created_by
146930    ,xet.budgetary_control_flag
146931  , l2.LINE_NUMBER  
146932   , l2.CODE_COMBINATION_ID    source_4
146933   , l2.DISTRIBUTION_IDENTIFIER    source_11
146934   , l2.CURRENCY_CODE    source_15
146935   , l2.ENTERED_AMOUNT    source_18
146936   , l2.CURRENCY_CONVERSION_DATE    source_19
146937   , l2.CURRENCY_CONVERSION_RATE    source_20
146938   , l2.CURRENCY_CONVERSION_TYPE    source_21
146939   , l2.ACCOUNTED_AMOUNT    source_22
146940   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
146941   FROM xla_events_gt     xet 
146942   , CST_XLA_INV_LINES_V  l2
146943  WHERE xet.event_id between x_first_event_id and x_last_event_id
146944    and xet.event_date between p_pad_start_date and p_pad_end_date
146945    and xet.event_class_code = C_EVENT_CLASS_CODE
146946    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
146947 ;
146948 
146949 --
146950 BEGIN
146951 IF g_log_enabled THEN
146952    l_log_module := C_DEFAULT_MODULE||'.EventClass_256';
146953 END IF;
146954 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146955    trace
146956       (p_msg      => 'BEGIN of EventClass_256'
146957       ,p_level    => C_LEVEL_PROCEDURE
146958       ,p_module   => l_log_module);
146959 END IF;
146960 
146961 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146962    trace
146963       (p_msg      => 'p_application_id = '||p_application_id||
146964                      ' - p_base_ledger_id = '||p_base_ledger_id||
146965                      ' - p_target_ledger_id  = '||p_target_ledger_id||
146966                      ' - p_language = '||p_language||
146967                      ' - p_currency_code = '||p_currency_code||
146968                      ' - p_sla_ledger_id = '||p_sla_ledger_id
146969       ,p_level    => C_LEVEL_STATEMENT
146970       ,p_module   => l_log_module);
146971 END IF;
146972 --
146973 -- initialze arrays
146974 --
146975 g_array_event.DELETE;
146976 l_rec_array_event := l_null_rec_array_event;
146977 --
146978 --------------------------------------
146979 -- 4262811 Initialze MPA Line Number
146980 --------------------------------------
146981 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
146982 
146983 --
146984 
146985 --
146986 OPEN header_cur;
146987 --
146988 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146989    trace
146990    (p_msg      => 'SQL - FETCH header_cur'
146991    ,p_level    => C_LEVEL_STATEMENT
146992    ,p_module   => l_log_module);
146993 END IF;
146994 --
146995 LOOP
146996 FETCH header_cur BULK COLLECT INTO
146997         l_array_entity_id
146998       , l_array_legal_entity_id
146999       , l_array_entity_code
147000       , l_array_transaction_num
147001       , l_array_event_id
147002       , l_array_class_code
147003       , l_array_event_type
147004       , l_array_event_number
147005       , l_array_event_date
147006       , l_array_transaction_date
147007       , l_array_reference_num_1
147008       , l_array_reference_num_2
147009       , l_array_reference_num_3
147010       , l_array_reference_num_4
147011       , l_array_reference_char_1
147012       , l_array_reference_char_2
147013       , l_array_reference_char_3
147014       , l_array_reference_char_4
147015       , l_array_reference_date_1
147016       , l_array_reference_date_2
147017       , l_array_reference_date_3
147018       , l_array_reference_date_4
147019       , l_array_event_created_by
147020       , l_array_budgetary_control_flag 
147021       , l_array_source_6
147022       , l_array_source_7
147023       , l_array_source_8
147024       , l_array_source_12
147025       , l_array_source_12_meaning
147026       , l_array_source_14
147027       , l_array_source_16
147028       , l_array_source_27
147029       , l_array_source_28
147030       , l_array_source_29
147031       , l_array_source_30
147032       , l_array_source_31
147033       , l_array_source_38
147034       , l_array_source_38_meaning
147035       LIMIT l_rows;
147036 --
147037 IF (C_LEVEL_EVENT >= g_log_level) THEN
147038    trace
147039    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
147040    ,p_level    => C_LEVEL_EVENT
147041    ,p_module   => l_log_module);
147042 END IF;
147043 --
147044 EXIT WHEN l_array_entity_id.COUNT = 0;
147045 
147046 -- initialize arrays
147047 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
147048 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
147049 
147050 --
147051 -- Bug 4458708
147052 --
147053 XLA_AE_LINES_PKG.g_LineNumber := 0;
147054 
147055 
147056 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
147057 g_last_hdr_idx := l_array_event_id.LAST;
147058 --
147059 -- loop for the headers. Each iteration is for each header extract row
147060 -- fetched in header cursor
147061 --
147062 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
147063 
147064 --
147065 -- set event info as cache for other routines to refer event attributes
147066 --
147067 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
147068    (p_application_id           => p_application_id
147069    ,p_primary_ledger_id        => p_primary_ledger_id
147070    ,p_base_ledger_id           => p_base_ledger_id
147071    ,p_target_ledger_id         => p_target_ledger_id
147072    ,p_entity_id                => l_array_entity_id(hdr_idx)
147073    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
147074    ,p_entity_code              => l_array_entity_code(hdr_idx)
147075    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
147076    ,p_event_id                 => l_array_event_id(hdr_idx)
147077    ,p_event_class_code         => l_array_class_code(hdr_idx)
147078    ,p_event_type_code          => l_array_event_type(hdr_idx)
147079    ,p_event_number             => l_array_event_number(hdr_idx)
147080    ,p_event_date               => l_array_event_date(hdr_idx)
147081    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
147082    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
147083    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
147084    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
147085    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
147086    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
147087    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
147088    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
147089    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
147090    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
147091    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
147092    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
147093    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
147094    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
147095    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
147096 
147097 --
147098 -- set the status of entry to C_VALID (0)
147099 --
147100 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
147101 
147102 --
147103 -- initialize a row for ae header
147104 --
147105 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
147106 
147107 l_event_id := l_array_event_id(hdr_idx);
147108 
147109 --
147110 -- storing the hdr_idx for event. May be used by line cursor.
147111 --
147112 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
147113 
147114 --
147115 -- store sources from header extract. This can be improved to
147116 -- store only those sources from header extract that may be used in lines
147117 --
147118 
147119 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
147120 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
147121 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
147122 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
147123 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
147124 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
147125 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
147126 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
147127 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
147128 g_array_event(l_event_id).array_value_num('source_29') := l_array_source_29(hdr_idx);
147129 g_array_event(l_event_id).array_value_num('source_30') := l_array_source_30(hdr_idx);
147130 g_array_event(l_event_id).array_value_num('source_31') := l_array_source_31(hdr_idx);
147131 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
147132 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
147133 
147134 --
147135 -- initilaize the status of ae headers for diffrent balance types
147136 -- the status is initialised to C_NOT_CREATED (2)
147137 --
147138 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147139 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147140 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147141 
147142 --
147143 -- call api to validate and store accounting attributes for header
147144 --
147145 
147146 ------------------------------------------------------------
147147 -- Accrual Reversal : to get date for Standard Source (NONE)
147148 ------------------------------------------------------------
147149 l_acc_rev_gl_date_source := NULL;
147150 
147151      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
147152       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_31');
147153      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
147154       l_rec_acct_attrs.array_date_value(2) := 
147155 xla_ae_sources_pkg.GetSystemSourceDate(
147156    p_source_code           => 'XLA_REFERENCE_DATE_1'
147157  , p_source_type_code      => 'Y'
147158  , p_source_application_id =>  602
147159 );
147160      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
147161       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
147162 
147163 
147164 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
147165 
147166 XLA_AE_HEADER_PKG.SetJeCategoryName;
147167 
147168 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
147169 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
147170 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
147171 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
147172 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
147173 
147174 
147175 -- No header level analytical criteria
147176 
147177 --
147178 --accounting attribute enhancement, bug 3612931
147179 --
147180 l_trx_reversal_source := SUBSTR(NULL, 1,30);
147181 
147182 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
147183    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
147184 
147185    xla_accounting_err_pkg.build_message
147186       (p_appli_s_name            => 'XLA'
147187       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
147188       ,p_token_1                 => 'ACCT_ATTR_NAME'
147189       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
147190       ,p_token_2                 => 'PRODUCT_NAME'
147191       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
147192       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
147193       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
147194       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
147195 
147196 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
147197    --
147198    -- following sets the accounting attributes needed to reverse
147199    -- accounting for a distributeion
147200    --
147201    xla_ae_lines_pkg.SetTrxReversalAttrs
147202       (p_event_id              => l_event_id
147203       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
147204       ,p_trx_reversal_source   => l_trx_reversal_source);
147205 
147206 END IF;
147207 
147208 
147209 ----------------------------------------------------------------
147210 -- 4262811 -  update the header statuses to invalid in need be
147211 ----------------------------------------------------------------
147212 --
147213 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
147214 
147215 
147216   -----------------------------------------------
147217   -- No accrual reversal for the event class/type
147218   -----------------------------------------------
147219 ----------------------------------------------------------------
147220 
147221 --
147222 -- this ends the header loop iteration for one bulk fetch
147223 --
147224 END LOOP;
147225 
147226 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
147227 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
147228 
147229 --
147230 -- insert dummy rows into lines gt table that were created due to
147231 -- transaction reversals
147232 --
147233 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
147234    l_result := XLA_AE_LINES_PKG.InsertLines;
147235 END IF;
147236 
147237 --
147238 -- reset the temp_line_num for each set of events fetched from header
147239 -- cursor rather than doing it for each new event in line cursor
147240 -- Bug 3939231
147241 --
147242 xla_ae_lines_pkg.g_temp_line_num := 0;
147243 
147244 
147245 
147246 --
147247 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
147248 --
147249 --
147250 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147251 
147252       trace
147253          (p_msg      => 'SQL - FETCH line_cur'
147254          ,p_level    => C_LEVEL_STATEMENT
147255          ,p_module   => l_log_module);
147256 
147257 END IF;
147258 --
147259 --
147260 LOOP
147261   --
147262   FETCH line_cur BULK COLLECT INTO
147263         l_array_entity_id
147264       , l_array_legal_entity_id
147265       , l_array_entity_code
147266       , l_array_transaction_num
147267       , l_array_event_id
147268       , l_array_class_code
147269       , l_array_event_type
147270       , l_array_event_number
147271       , l_array_event_date
147272       , l_array_transaction_date
147273       , l_array_reference_num_1
147274       , l_array_reference_num_2
147275       , l_array_reference_num_3
147276       , l_array_reference_num_4
147277       , l_array_reference_char_1
147278       , l_array_reference_char_2
147279       , l_array_reference_char_3
147280       , l_array_reference_char_4
147281       , l_array_reference_date_1
147282       , l_array_reference_date_2
147283       , l_array_reference_date_3
147284       , l_array_reference_date_4
147285       , l_array_event_created_by
147286       , l_array_budgetary_control_flag
147287       , l_array_extract_line_num 
147288       , l_array_source_4
147289       , l_array_source_11
147290       , l_array_source_15
147291       , l_array_source_18
147292       , l_array_source_19
147293       , l_array_source_20
147294       , l_array_source_21
147295       , l_array_source_22
147296       , l_array_source_24
147297       LIMIT l_rows;
147298 
147299   --
147300   IF (C_LEVEL_EVENT >= g_log_level) THEN
147301             trace
147302                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
147303                ,p_level    => C_LEVEL_EVENT
147304                ,p_module   => l_log_module);
147305   END IF;
147306   --
147307   EXIT WHEN l_array_entity_id.count = 0;
147308 
147309   XLA_AE_LINES_PKG.g_rec_lines := null;
147310 
147311 --
147312 -- Bug 4458708
147313 --
147314 XLA_AE_LINES_PKG.g_LineNumber := 0;
147315 --
147316 --
147317 
147318 FOR Idx IN 1..l_array_event_id.count LOOP
147319    --
147320    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
147321    --
147322    l_event_id := l_array_event_id(idx);  -- 5648433
147323 
147324    --
147325    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
147326    --
147327 
147328    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
147329              (g_array_event(l_event_id).array_value_num('header_index'))
147330          ,'N'
147331          ) <> 'Y'
147332    THEN
147333       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147334          trace
147335             (p_msg      => 'Trancaction revesal option is not Y '
147336             ,p_level    => C_LEVEL_STATEMENT
147337             ,p_module   => l_log_module);
147338       END IF;
147339 
147340 --
147341 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
147342 --
147343 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
147344 --
147345 -- set event info as cache for other routines to refer event attributes
147346 --
147347 
147348 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
147349    l_previous_event_id := l_event_id;
147350 
147351    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
147352       (p_application_id           => p_application_id
147353       ,p_primary_ledger_id        => p_primary_ledger_id
147354       ,p_base_ledger_id           => p_base_ledger_id
147355       ,p_target_ledger_id         => p_target_ledger_id
147356       ,p_entity_id                => l_array_entity_id(Idx)
147357       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
147358       ,p_entity_code              => l_array_entity_code(Idx)
147359       ,p_transaction_num          => l_array_transaction_num(Idx)
147360       ,p_event_id                 => l_array_event_id(Idx)
147361       ,p_event_class_code         => l_array_class_code(Idx)
147362       ,p_event_type_code          => l_array_event_type(Idx)
147363       ,p_event_number             => l_array_event_number(Idx)
147364       ,p_event_date               => l_array_event_date(Idx)
147365       ,p_transaction_date         => l_array_transaction_date(Idx)
147366       ,p_reference_num_1          => l_array_reference_num_1(Idx)
147367       ,p_reference_num_2          => l_array_reference_num_2(Idx)
147368       ,p_reference_num_3          => l_array_reference_num_3(Idx)
147369       ,p_reference_num_4          => l_array_reference_num_4(Idx)
147370       ,p_reference_char_1         => l_array_reference_char_1(Idx)
147371       ,p_reference_char_2         => l_array_reference_char_2(Idx)
147372       ,p_reference_char_3         => l_array_reference_char_3(Idx)
147373       ,p_reference_char_4         => l_array_reference_char_4(Idx)
147374       ,p_reference_date_1         => l_array_reference_date_1(Idx)
147375       ,p_reference_date_2         => l_array_reference_date_2(Idx)
147376       ,p_reference_date_3         => l_array_reference_date_3(Idx)
147377       ,p_reference_date_4         => l_array_reference_date_4(Idx)
147378       ,p_event_created_by         => l_array_event_created_by(Idx)
147379       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
147380        --
147381 END IF;
147382 
147383 
147384 
147385 --
147386 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
147387 
147388 l_acct_reversal_source := SUBSTR(NULL, 1,30);
147389 
147390 IF l_continue_with_lines THEN
147391    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
147392       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
147393 
147394       xla_accounting_err_pkg.build_message
147395          (p_appli_s_name            => 'XLA'
147396          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
147397          ,p_token_1                 => 'LINE_NUMBER'
147398          ,p_value_1                 => l_array_extract_line_num(Idx)
147399          ,p_token_2                 => 'PRODUCT_NAME'
147400          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
147401          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
147402          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
147403          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
147404 
147405    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
147406       --
147407       -- following sets the accounting attributes needed to reverse
147408       -- accounting for a distributeion
147409       --
147410 
147411       --
147412       -- 5217187
147413       --
147414       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
147415       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
147416                                        g_array_event(l_event_id).array_value_num('header_index'));
147417       --
147418       --
147419 
147420       -- No reversal code generated
147421 
147422       xla_ae_lines_pkg.SetAcctReversalAttrs
147423          (p_event_id             => l_event_id
147424          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
147425          ,p_calculate_acctd_flag => l_calculate_acctd_flag
147426          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
147427    END IF;
147428 
147429    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
147430        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
147431 
147432 --
147433 AcctLineType_34 (
147434  p_application_id  => p_application_id
147435  ,p_event_id     => l_event_id
147436  ,p_calculate_acctd_flag => l_calculate_acctd_flag
147437  ,p_calculate_g_l_flag => l_calculate_g_l_flag
147438  ,p_actual_flag => l_actual_flag
147439  ,p_balance_type_code => l_balance_type_code
147440  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147441  
147442  , p_source_4 => l_array_source_4(Idx)
147443  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
147444  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147445  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
147446  , p_source_11 => l_array_source_11(Idx)
147447  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
147448  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
147449  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
147450  , p_source_15 => l_array_source_15(Idx)
147451  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
147452  , p_source_18 => l_array_source_18(Idx)
147453  , p_source_19 => l_array_source_19(Idx)
147454  , p_source_20 => l_array_source_20(Idx)
147455  , p_source_21 => l_array_source_21(Idx)
147456  , p_source_22 => l_array_source_22(Idx)
147457  , p_source_24 => l_array_source_24(Idx)
147458  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
147459  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
147460  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
147461  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
147462  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
147463  );
147464 If(l_balance_type_code = 'A') THEN
147465   l_actual_gain_loss_ref := l_gain_or_loss_ref;
147466 END IF;
147467 
147468 --
147469 
147470 
147471 --
147472 AcctLineType_54 (
147473  p_application_id  => p_application_id
147474  ,p_event_id     => l_event_id
147475  ,p_calculate_acctd_flag => l_calculate_acctd_flag
147476  ,p_calculate_g_l_flag => l_calculate_g_l_flag
147477  ,p_actual_flag => l_actual_flag
147478  ,p_balance_type_code => l_balance_type_code
147479  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147480  
147481  , p_source_4 => l_array_source_4(Idx)
147482  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
147483  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147484  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
147485  , p_source_11 => l_array_source_11(Idx)
147486  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
147487  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
147488  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
147489  , p_source_15 => l_array_source_15(Idx)
147490  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
147491  , p_source_18 => l_array_source_18(Idx)
147492  , p_source_19 => l_array_source_19(Idx)
147493  , p_source_20 => l_array_source_20(Idx)
147494  , p_source_21 => l_array_source_21(Idx)
147495  , p_source_22 => l_array_source_22(Idx)
147496  , p_source_24 => l_array_source_24(Idx)
147497  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
147498  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
147499  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
147500  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
147501  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
147502  );
147503 If(l_balance_type_code = 'A') THEN
147504   l_actual_gain_loss_ref := l_gain_or_loss_ref;
147505 END IF;
147506 
147507 --
147508 
147509 
147510 --
147511 AcctLineType_72 (
147512  p_application_id  => p_application_id
147513  ,p_event_id     => l_event_id
147514  ,p_calculate_acctd_flag => l_calculate_acctd_flag
147515  ,p_calculate_g_l_flag => l_calculate_g_l_flag
147516  ,p_actual_flag => l_actual_flag
147517  ,p_balance_type_code => l_balance_type_code
147518  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147519  
147520  , p_source_4 => l_array_source_4(Idx)
147521  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
147522  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147523  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
147524  , p_source_11 => l_array_source_11(Idx)
147525  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
147526  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
147527  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
147528  , p_source_15 => l_array_source_15(Idx)
147529  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
147530  , p_source_18 => l_array_source_18(Idx)
147531  , p_source_19 => l_array_source_19(Idx)
147532  , p_source_20 => l_array_source_20(Idx)
147533  , p_source_21 => l_array_source_21(Idx)
147534  , p_source_22 => l_array_source_22(Idx)
147535  , p_source_24 => l_array_source_24(Idx)
147536  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
147537  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
147538  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
147539  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
147540  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
147541  );
147542 If(l_balance_type_code = 'A') THEN
147543   l_actual_gain_loss_ref := l_gain_or_loss_ref;
147544 END IF;
147545 
147546 --
147547 
147548 
147549 --
147550 AcctLineType_152 (
147551  p_application_id  => p_application_id
147552  ,p_event_id     => l_event_id
147553  ,p_calculate_acctd_flag => l_calculate_acctd_flag
147554  ,p_calculate_g_l_flag => l_calculate_g_l_flag
147555  ,p_actual_flag => l_actual_flag
147556  ,p_balance_type_code => l_balance_type_code
147557  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147558  
147559  , p_source_4 => l_array_source_4(Idx)
147560  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
147561  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147562  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
147563  , p_source_11 => l_array_source_11(Idx)
147564  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
147565  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
147566  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
147567  , p_source_15 => l_array_source_15(Idx)
147568  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
147569  , p_source_18 => l_array_source_18(Idx)
147570  , p_source_19 => l_array_source_19(Idx)
147571  , p_source_20 => l_array_source_20(Idx)
147572  , p_source_21 => l_array_source_21(Idx)
147573  , p_source_22 => l_array_source_22(Idx)
147574  , p_source_24 => l_array_source_24(Idx)
147575  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
147576  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
147577  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
147578  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
147579  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
147580  );
147581 If(l_balance_type_code = 'A') THEN
147582   l_actual_gain_loss_ref := l_gain_or_loss_ref;
147583 END IF;
147584 
147585 --
147586 
147587 
147588 --
147589 AcctLineType_171 (
147590  p_application_id  => p_application_id
147591  ,p_event_id     => l_event_id
147592  ,p_calculate_acctd_flag => l_calculate_acctd_flag
147593  ,p_calculate_g_l_flag => l_calculate_g_l_flag
147594  ,p_actual_flag => l_actual_flag
147595  ,p_balance_type_code => l_balance_type_code
147596  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147597  
147598  , p_source_4 => l_array_source_4(Idx)
147599  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
147600  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147601  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
147602  , p_source_11 => l_array_source_11(Idx)
147603  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
147604  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
147605  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
147606  , p_source_15 => l_array_source_15(Idx)
147607  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
147608  , p_source_18 => l_array_source_18(Idx)
147609  , p_source_19 => l_array_source_19(Idx)
147610  , p_source_20 => l_array_source_20(Idx)
147611  , p_source_21 => l_array_source_21(Idx)
147612  , p_source_22 => l_array_source_22(Idx)
147613  , p_source_24 => l_array_source_24(Idx)
147614  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
147615  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
147616  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
147617  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
147618  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
147619  );
147620 If(l_balance_type_code = 'A') THEN
147621   l_actual_gain_loss_ref := l_gain_or_loss_ref;
147622 END IF;
147623 
147624 --
147625 
147626 
147627 --
147628 AcctLineType_184 (
147629  p_application_id  => p_application_id
147630  ,p_event_id     => l_event_id
147631  ,p_calculate_acctd_flag => l_calculate_acctd_flag
147632  ,p_calculate_g_l_flag => l_calculate_g_l_flag
147633  ,p_actual_flag => l_actual_flag
147634  ,p_balance_type_code => l_balance_type_code
147635  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147636  
147637  , p_source_4 => l_array_source_4(Idx)
147638  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
147639  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147640  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
147641  , p_source_11 => l_array_source_11(Idx)
147642  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
147643  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
147644  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
147645  , p_source_15 => l_array_source_15(Idx)
147646  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
147647  , p_source_18 => l_array_source_18(Idx)
147648  , p_source_19 => l_array_source_19(Idx)
147649  , p_source_20 => l_array_source_20(Idx)
147650  , p_source_21 => l_array_source_21(Idx)
147651  , p_source_22 => l_array_source_22(Idx)
147652  , p_source_24 => l_array_source_24(Idx)
147653  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
147654  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
147655  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
147656  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
147657  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
147658  );
147659 If(l_balance_type_code = 'A') THEN
147660   l_actual_gain_loss_ref := l_gain_or_loss_ref;
147661 END IF;
147662 
147663 --
147664 
147665 
147666 --
147667 AcctLineType_209 (
147668  p_application_id  => p_application_id
147669  ,p_event_id     => l_event_id
147670  ,p_calculate_acctd_flag => l_calculate_acctd_flag
147671  ,p_calculate_g_l_flag => l_calculate_g_l_flag
147672  ,p_actual_flag => l_actual_flag
147673  ,p_balance_type_code => l_balance_type_code
147674  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147675  
147676  , p_source_4 => l_array_source_4(Idx)
147677  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
147678  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147679  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
147680  , p_source_11 => l_array_source_11(Idx)
147681  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
147682  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
147683  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
147684  , p_source_15 => l_array_source_15(Idx)
147685  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
147686  , p_source_18 => l_array_source_18(Idx)
147687  , p_source_19 => l_array_source_19(Idx)
147688  , p_source_20 => l_array_source_20(Idx)
147689  , p_source_21 => l_array_source_21(Idx)
147690  , p_source_22 => l_array_source_22(Idx)
147691  , p_source_24 => l_array_source_24(Idx)
147692  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
147693  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
147694  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
147695  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
147696  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
147697  );
147698 If(l_balance_type_code = 'A') THEN
147699   l_actual_gain_loss_ref := l_gain_or_loss_ref;
147700 END IF;
147701 
147702 --
147703 
147704 
147705 --
147706 AcctLineType_216 (
147707  p_application_id  => p_application_id
147708  ,p_event_id     => l_event_id
147709  ,p_calculate_acctd_flag => l_calculate_acctd_flag
147710  ,p_calculate_g_l_flag => l_calculate_g_l_flag
147711  ,p_actual_flag => l_actual_flag
147712  ,p_balance_type_code => l_balance_type_code
147713  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147714  
147715  , p_source_4 => l_array_source_4(Idx)
147716  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
147717  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147718  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
147719  , p_source_11 => l_array_source_11(Idx)
147720  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
147721  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
147722  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
147723  , p_source_15 => l_array_source_15(Idx)
147724  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
147725  , p_source_18 => l_array_source_18(Idx)
147726  , p_source_19 => l_array_source_19(Idx)
147727  , p_source_20 => l_array_source_20(Idx)
147728  , p_source_21 => l_array_source_21(Idx)
147729  , p_source_22 => l_array_source_22(Idx)
147730  , p_source_24 => l_array_source_24(Idx)
147731  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
147732  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
147733  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
147734  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
147735  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
147736  );
147737 If(l_balance_type_code = 'A') THEN
147738   l_actual_gain_loss_ref := l_gain_or_loss_ref;
147739 END IF;
147740 
147741 --
147742 
147743       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
147744       -- or secondary ledger that has different currency with primary
147745       -- or alc that is calculated by sla
147746       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
147747             (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'))
147748 
147749 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
147750 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
147751           AND (l_actual_flag = 'A')) THEN
147752         XLA_AE_LINES_PKG.CreateGainOrLossLines(
147753           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
147754          ,p_application_id   => p_application_id
147755          ,p_amb_context_code => 'DEFAULT'
147756          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
147757          ,p_event_class_code => C_EVENT_CLASS_CODE
147758          ,p_event_type_code  => C_EVENT_TYPE_CODE
147759          
147760          ,p_gain_ccid        => -1
147761          ,p_loss_ccid        => -1
147762 
147763          ,p_actual_flag      => l_actual_flag
147764          ,p_enc_flag         => null
147765          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
147766          ,p_enc_g_l_ref      => null
147767          );
147768       END IF;
147769    END IF;
147770 END IF;
147771 
147772    ELSE
147773       --
147774       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
147775       --
147776       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147777          trace
147778             (p_msg      => 'Trancaction revesal option is Y'
147779             ,p_level    => C_LEVEL_STATEMENT
147780             ,p_module   => l_log_module);
147781       END IF;
147782    END IF;
147783 
147784 END LOOP;
147785 l_result := XLA_AE_LINES_PKG.InsertLines ;
147786 end loop;
147787 close line_cur;
147788 
147789 
147790 --
147791 -- insert headers into xla_ae_headers_gt table
147792 --
147793 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
147794 
147795 -- insert into errors table here.
147796 
147797 END LOOP;
147798 
147799 --
147800 -- 4865292
147801 --
147802 -- Compare g_hdr_extract_count with event count in
147803 -- CreateHeadersAndLines.
147804 --
147805 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
147806 
147807 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147808    trace (p_msg     => '# rows extracted from header extract objects '
147809                     || ' (running total): '
147810                     || g_hdr_extract_count
147811          ,p_level   => C_LEVEL_STATEMENT
147812          ,p_module  => l_log_module);
147813 END IF;
147814 
147815 CLOSE header_cur;
147816 --
147817 
147818 --
147819 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
147820    trace
147821       (p_msg      => 'END of EventClass_256'
147822       ,p_level    => C_LEVEL_PROCEDURE
147823       ,p_module   => l_log_module);
147824 END IF;
147825 --
147826 RETURN l_result;
147827 EXCEPTION
147828 WHEN xla_exceptions_pkg.application_exception THEN
147829    
147830 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
147831 
147832    
147833 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
147834 
147835    RAISE;
147836 
147837 WHEN NO_DATA_FOUND THEN
147838 
147839 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
147840 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
147841 
147842 FOR header_record IN header_cur
147843 LOOP
147844     l_array_header_events(header_record.event_id) := header_record.event_id;
147845 END LOOP;
147846 
147847 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
147848 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
147849 
147850 fnd_file.put_line(fnd_file.LOG, '                    ');
147851 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
147852 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
147853 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
147854 
147855 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
147856 LOOP
147857 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
147858 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
147859         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
147860 	END IF;
147861 END LOOP;
147862 
147863 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
147864 fnd_file.put_line(fnd_file.LOG, '                    ');
147865 
147866 
147867 xla_exceptions_pkg.raise_message
147868       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_256');
147869 
147870 
147871 WHEN OTHERS THEN
147872    xla_exceptions_pkg.raise_message
147873       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_256');
147874 END EventClass_256;
147875 --
147876 
147877 ---------------------------------------
147878 --
147879 -- PRIVATE PROCEDURE
147880 --         insert_sources_257
147881 --
147882 ----------------------------------------
147883 --
147884 PROCEDURE insert_sources_257(
147885                                 p_target_ledger_id       IN NUMBER
147886                               , p_language               IN VARCHAR2
147887                               , p_sla_ledger_id          IN NUMBER
147888                               , p_pad_start_date         IN DATE
147889                               , p_pad_end_date           IN DATE
147890                          )
147891 IS
147892 
147893 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_RCPT_ALL';
147894 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
147895 p_apps_owner                   VARCHAR2(30);
147896 l_log_module                   VARCHAR2(240);
147897 BEGIN
147898 IF g_log_enabled THEN
147899       l_log_module := C_DEFAULT_MODULE||'.insert_sources_257';
147900 END IF;
147901 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
147902 
147903       trace
147904          (p_msg      => 'BEGIN of insert_sources_257'
147905          ,p_level    => C_LEVEL_PROCEDURE
147906          ,p_module   => l_log_module);
147907 
147908 END IF;
147909 
147910 -- select APPS owner
147911 SELECT oracle_username
147912   INTO p_apps_owner
147913   FROM fnd_oracle_userid
147914  WHERE read_only_flag = 'U'
147915 ;
147916 
147917 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147918       trace
147919          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
147920                         ' - p_language = '||p_language||
147921                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
147922                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
147923                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
147924                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
147925          ,p_level    => C_LEVEL_STATEMENT
147926          ,p_module   => l_log_module);
147927 END IF;
147928 
147929 
147930 --
147931 INSERT INTO xla_diag_sources --hdr2
147932 (
147933         event_id
147934       , ledger_id
147935       , sla_ledger_id
147936       , description_language
147937       , object_name
147938       , object_type_code
147939       , line_number
147940       , source_application_id
147941       , source_type_code
147942       , source_code
147943       , source_value
147944       , source_meaning
147945       , created_by
147946       , creation_date
147947       , last_update_date
147948       , last_updated_by
147949       , last_update_login
147950       , program_update_date
147951       , program_application_id
147952       , program_id
147953       , request_id
147954 )
147955 SELECT
147956         event_id
147957       , p_target_ledger_id
147958       , p_sla_ledger_id
147959       , p_language
147960       , object_name
147961       , object_type_code
147962       , line_number
147963       , source_application_id
147964       , source_type_code
147965       , source_code
147966       , SUBSTR(source_value ,1,1996)
147967       , SUBSTR(source_meaning ,1,200)
147968       , xla_environment_pkg.g_Usr_Id
147969       , TRUNC(SYSDATE)
147970       , TRUNC(SYSDATE)
147971       , xla_environment_pkg.g_Usr_Id
147972       , xla_environment_pkg.g_Login_Id
147973       , TRUNC(SYSDATE)
147974       , xla_environment_pkg.g_Prog_Appl_Id
147975       , xla_environment_pkg.g_Prog_Id
147976       , xla_environment_pkg.g_Req_Id
147977   FROM (
147978        SELECT xet.event_id                  event_id
147979             , 0                          line_number
147980             , CASE r
147981                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
147982                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
147983                 
147984                ELSE null
147985               END                           object_name
147986             , CASE r
147987                 WHEN 1 THEN 'HEADER' 
147988                 WHEN 2 THEN 'HEADER' 
147989                 
147990                 ELSE null
147991               END                           object_type_code
147992             , CASE r
147993                 WHEN 1 THEN '707' 
147994                 WHEN 2 THEN '707' 
147995                 
147996                 ELSE null
147997               END                           source_application_id
147998             , 'S'             source_type_code
147999             , CASE r
148000                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
148001                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
148002                 
148003                 ELSE null
148004               END                           source_code
148005             , CASE r
148006                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
148007                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
148008                 
148009                 ELSE null
148010               END                           source_value
148011             , CASE r
148012                 WHEN 1 THEN fvl12.meaning
148013                 WHEN 2 THEN fvl38.meaning
148014                 
148015                 ELSE null
148016               END               source_meaning
148017          FROM xla_events_gt     xet  
148018       , CST_XLA_INV_HEADERS_V  h1
148019   , fnd_lookup_values    fvl12
148020   , fnd_lookup_values    fvl38
148021              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
148022          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
148023            AND xet.event_class_code = C_EVENT_CLASS_CODE
148024               AND h1.event_id = xet.event_id
148025    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
148026   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
148027   AND fvl12.view_application_id(+) = 700
148028   AND fvl12.language(+)            = USERENV('LANG')
148029      AND fvl38.lookup_type(+)         = 'YES_NO'
148030   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
148031   AND fvl38.view_application_id(+) = 0
148032   AND fvl38.language(+)            = USERENV('LANG')
148033   
148034 )
148035 ;
148036 --
148037 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148038 
148039       trace
148040          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
148041          ,p_level    => C_LEVEL_STATEMENT
148042          ,p_module   => l_log_module);
148043 
148044 END IF;
148045 --
148046 
148047 
148048 
148049 --
148050 INSERT INTO xla_diag_sources  --line2
148051 (
148052         event_id
148053       , ledger_id
148054       , sla_ledger_id
148055       , description_language
148056       , object_name
148057       , object_type_code
148058       , line_number
148059       , source_application_id
148060       , source_type_code
148061       , source_code
148062       , source_value
148063       , source_meaning
148064       , created_by
148065       , creation_date
148066       , last_update_date
148067       , last_updated_by
148068       , last_update_login
148069       , program_update_date
148070       , program_application_id
148071       , program_id
148072       , request_id
148073 )
148074 SELECT  event_id
148075       , p_target_ledger_id
148076       , p_sla_ledger_id
148077       , p_language
148078       , object_name
148079       , object_type_code
148080       , line_number
148081       , source_application_id
148082       , source_type_code
148083       , source_code
148084       , SUBSTR(source_value,1,1996)
148085       , SUBSTR(source_meaning ,1,200)
148086       , xla_environment_pkg.g_Usr_Id
148087       , TRUNC(SYSDATE)
148088       , TRUNC(SYSDATE)
148089       , xla_environment_pkg.g_Usr_Id
148090       , xla_environment_pkg.g_Login_Id
148091       , TRUNC(SYSDATE)
148092       , xla_environment_pkg.g_Prog_Appl_Id
148093       , xla_environment_pkg.g_Prog_Id
148094       , xla_environment_pkg.g_Req_Id
148095   FROM (
148096        SELECT xet.event_id                  event_id
148097             , l2.line_number                 line_number
148098             , CASE r
148099                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
148100                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
148101                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
148102                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
148103                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
148104                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
148105                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
148106                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
148107                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
148108                 
148109                ELSE null
148110               END                           object_name
148111             , CASE r
148112                 WHEN 1 THEN 'LINE' 
148113                 WHEN 2 THEN 'LINE' 
148114                 WHEN 3 THEN 'LINE' 
148115                 WHEN 4 THEN 'LINE' 
148116                 WHEN 5 THEN 'LINE' 
148117                 WHEN 6 THEN 'LINE' 
148118                 WHEN 7 THEN 'LINE' 
148119                 WHEN 8 THEN 'LINE' 
148120                 WHEN 9 THEN 'LINE' 
148121                 
148122                 ELSE null
148123               END                           object_type_code
148124             , CASE r
148125                 WHEN 1 THEN '707' 
148126                 WHEN 2 THEN '707' 
148127                 WHEN 3 THEN '707' 
148128                 WHEN 4 THEN '707' 
148129                 WHEN 5 THEN '707' 
148130                 WHEN 6 THEN '707' 
148131                 WHEN 7 THEN '707' 
148132                 WHEN 8 THEN '707' 
148133                 WHEN 9 THEN '707' 
148134                 
148135                 ELSE null
148136               END                           source_application_id
148137             , 'S'             source_type_code
148138             , CASE r
148139                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
148140                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
148141                 WHEN 3 THEN 'CURRENCY_CODE' 
148142                 WHEN 4 THEN 'ENTERED_AMOUNT' 
148143                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
148144                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
148145                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
148146                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
148147                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
148148                 
148149                 ELSE null
148150               END                           source_code
148151             , CASE r
148152                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
148153                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
148154                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
148155                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
148156                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
148157                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
148158                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
148159                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
148160                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
148161                 
148162                 ELSE null
148163               END                           source_value
148164             , null              source_meaning
148165          FROM  xla_events_gt     xet  
148166         , CST_XLA_INV_LINES_V  l2
148167             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
148168         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
148169           AND xet.event_class_code = C_EVENT_CLASS_CODE
148170             AND l2.event_id          = xet.event_id
148171 
148172 )
148173 ;
148174 --
148175 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148176 
148177       trace
148178          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
148179          ,p_level    => C_LEVEL_STATEMENT
148180          ,p_module   => l_log_module);
148181 
148182 END IF;
148183 
148184 
148185 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148186       trace
148187          (p_msg      => 'END of insert_sources_257'
148188          ,p_level    => C_LEVEL_PROCEDURE
148189          ,p_module   => l_log_module);
148190 END IF;
148191 EXCEPTION
148192   WHEN xla_exceptions_pkg.application_exception THEN
148193       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
148194             trace
148195                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
148196                ,p_level    => C_LEVEL_EXCEPTION
148197                ,p_module   => l_log_module);
148198       END IF;
148199       RAISE;
148200   WHEN OTHERS THEN
148201       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
148202             trace
148203                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
148204                ,p_level    => C_LEVEL_EXCEPTION
148205                ,p_module   => l_log_module);
148206        END IF;
148207        xla_exceptions_pkg.raise_message
148208            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_257');
148209 END insert_sources_257;
148210 --
148211 
148212 ---------------------------------------
148213 --
148214 -- PRIVATE FUNCTION
148215 --         EventClass_257
148216 --
148217 ----------------------------------------
148218 --
148219 FUNCTION EventClass_257
148220        (p_application_id         IN NUMBER
148221        ,p_base_ledger_id         IN NUMBER
148222        ,p_target_ledger_id       IN NUMBER
148223        ,p_language               IN VARCHAR2
148224        ,p_currency_code          IN VARCHAR2
148225        ,p_sla_ledger_id          IN NUMBER
148226        ,p_pad_start_date         IN DATE
148227        ,p_pad_end_date           IN DATE
148228        ,p_primary_ledger_id      IN NUMBER)
148229 RETURN BOOLEAN IS
148230 --
148231 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_RCPT_ALL';
148232 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
148233 
148234 l_calculate_acctd_flag   VARCHAR2(1) :='N';
148235 l_calculate_g_l_flag     VARCHAR2(1) :='N';
148236 --
148237 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148238 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148239 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
148240 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148241 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148242 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
148243 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
148244 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148245 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148246 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148247 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148248 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148249 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148250 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148251 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148252 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148253 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148254 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148255 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148256 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148257 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148258 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148259 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
148260 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
148261 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
148262 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
148263 
148264 l_event_id                             NUMBER;
148265 l_previous_event_id                    NUMBER;
148266 l_first_event_id                       NUMBER;
148267 l_last_event_id                        NUMBER;
148268 
148269 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
148270 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
148271 --
148272 --
148273 l_result                    BOOLEAN := TRUE;
148274 l_rows                      NUMBER  := 1000;
148275 l_event_type_name           VARCHAR2(80) := 'All';
148276 l_event_class_name          VARCHAR2(80) := 'Sender-side Intransit Interorg Receipt for FOB Receipt';
148277 l_description               VARCHAR2(4000);
148278 l_transaction_reversal      NUMBER;
148279 l_ae_header_id              NUMBER;
148280 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
148281 l_log_module                VARCHAR2(240);
148282 --
148283 l_acct_reversal_source      VARCHAR2(30);
148284 l_trx_reversal_source       VARCHAR2(30);
148285 
148286 l_continue_with_lines       BOOLEAN := TRUE;
148287 --
148288 l_acc_rev_gl_date_source    DATE;                      -- 4262811
148289 --
148290 type t_array_event_id is table of number index by binary_integer;
148291 
148292 l_rec_array_event                    t_rec_array_event;
148293 l_null_rec_array_event               t_rec_array_event;
148294 l_array_ae_header_id                 xla_number_array_type;
148295 l_actual_flag                        VARCHAR2(1) := NULL;
148296 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
148297 l_balance_type_code                  VARCHAR2(1) :=NULL;
148298 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
148299 
148300 --
148301 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
148302 --
148303 
148304 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
148305 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
148306 
148307 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
148308 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
148309 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
148310 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
148311 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
148312 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
148313 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
148314 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
148315 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
148316 
148317 l_array_source_12              t_array_source_12;
148318 l_array_source_12_meaning      t_array_lookup_meaning;
148319 l_array_source_38              t_array_source_38;
148320 l_array_source_38_meaning      t_array_lookup_meaning;
148321 
148322 l_array_source_4      t_array_source_4;
148323 l_array_source_11      t_array_source_11;
148324 l_array_source_15      t_array_source_15;
148325 l_array_source_18      t_array_source_18;
148326 l_array_source_19      t_array_source_19;
148327 l_array_source_20      t_array_source_20;
148328 l_array_source_21      t_array_source_21;
148329 l_array_source_22      t_array_source_22;
148330 l_array_source_24      t_array_source_24;
148331 
148332 --
148333 CURSOR header_cur
148334 IS
148335 SELECT /*+ leading(xet) cardinality(xet,1) */
148336 -- Event Class Code: FOB_RCPT_SENDER_RCPT
148337     xet.entity_id
148338    ,xet.legal_entity_id
148339    ,xet.entity_code
148340    ,xet.transaction_number
148341    ,xet.event_id
148342    ,xet.event_class_code
148343    ,xet.event_type_code
148344    ,xet.event_number
148345    ,xet.event_date
148346    ,xet.transaction_date
148347    ,xet.reference_num_1
148348    ,xet.reference_num_2
148349    ,xet.reference_num_3
148350    ,xet.reference_num_4
148351    ,xet.reference_char_1
148352    ,xet.reference_char_2
148353    ,xet.reference_char_3
148354    ,xet.reference_char_4
148355    ,xet.reference_date_1
148356    ,xet.reference_date_2
148357    ,xet.reference_date_3
148358    ,xet.reference_date_4
148359    ,xet.event_created_by
148360    ,xet.budgetary_control_flag 
148361   , h1.DISTRIBUTION_TYPE    source_12
148362   , fvl12.meaning   source_12_meaning
148363   , h1.TRANSFER_TO_GL_INDICATOR    source_38
148364   , fvl38.meaning   source_38_meaning
148365   FROM xla_events_gt     xet 
148366   , CST_XLA_INV_HEADERS_V  h1
148367   , fnd_lookup_values    fvl12
148368   , fnd_lookup_values    fvl38
148369  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
148370    and xet.event_class_code = C_EVENT_CLASS_CODE
148371    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
148372    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
148373   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
148374   AND fvl12.view_application_id(+) = 700
148375   AND fvl12.language(+)            = USERENV('LANG')
148376      AND fvl38.lookup_type(+)         = 'YES_NO'
148377   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
148378   AND fvl38.view_application_id(+) = 0
148379   AND fvl38.language(+)            = USERENV('LANG')
148380   
148381  ORDER BY event_id
148382 ;
148383 
148384 
148385 --
148386 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
148387 IS
148388 SELECT  /*+ leading(xet) cardinality(xet,1) */
148389 -- Event Class Code: FOB_RCPT_SENDER_RCPT
148390     xet.entity_id
148391    ,xet.legal_entity_id
148392    ,xet.entity_code
148393    ,xet.transaction_number
148394    ,xet.event_id
148395    ,xet.event_class_code
148396    ,xet.event_type_code
148397    ,xet.event_number
148398    ,xet.event_date
148399    ,xet.transaction_date
148400    ,xet.reference_num_1
148401    ,xet.reference_num_2
148402    ,xet.reference_num_3
148403    ,xet.reference_num_4
148404    ,xet.reference_char_1
148405    ,xet.reference_char_2
148406    ,xet.reference_char_3
148407    ,xet.reference_char_4
148408    ,xet.reference_date_1
148409    ,xet.reference_date_2
148410    ,xet.reference_date_3
148411    ,xet.reference_date_4
148412    ,xet.event_created_by
148413    ,xet.budgetary_control_flag
148414  , l2.LINE_NUMBER  
148415   , l2.CODE_COMBINATION_ID    source_4
148416   , l2.DISTRIBUTION_IDENTIFIER    source_11
148417   , l2.CURRENCY_CODE    source_15
148418   , l2.ENTERED_AMOUNT    source_18
148419   , l2.CURRENCY_CONVERSION_DATE    source_19
148420   , l2.CURRENCY_CONVERSION_RATE    source_20
148421   , l2.CURRENCY_CONVERSION_TYPE    source_21
148422   , l2.ACCOUNTED_AMOUNT    source_22
148423   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
148424   FROM xla_events_gt     xet 
148425   , CST_XLA_INV_LINES_V  l2
148426  WHERE xet.event_id between x_first_event_id and x_last_event_id
148427    and xet.event_date between p_pad_start_date and p_pad_end_date
148428    and xet.event_class_code = C_EVENT_CLASS_CODE
148429    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
148430 ;
148431 
148432 --
148433 BEGIN
148434 IF g_log_enabled THEN
148435    l_log_module := C_DEFAULT_MODULE||'.EventClass_257';
148436 END IF;
148437 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148438    trace
148439       (p_msg      => 'BEGIN of EventClass_257'
148440       ,p_level    => C_LEVEL_PROCEDURE
148441       ,p_module   => l_log_module);
148442 END IF;
148443 
148444 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148445    trace
148446       (p_msg      => 'p_application_id = '||p_application_id||
148447                      ' - p_base_ledger_id = '||p_base_ledger_id||
148448                      ' - p_target_ledger_id  = '||p_target_ledger_id||
148449                      ' - p_language = '||p_language||
148450                      ' - p_currency_code = '||p_currency_code||
148451                      ' - p_sla_ledger_id = '||p_sla_ledger_id
148452       ,p_level    => C_LEVEL_STATEMENT
148453       ,p_module   => l_log_module);
148454 END IF;
148455 --
148456 -- initialze arrays
148457 --
148458 g_array_event.DELETE;
148459 l_rec_array_event := l_null_rec_array_event;
148460 --
148461 --------------------------------------
148462 -- 4262811 Initialze MPA Line Number
148463 --------------------------------------
148464 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
148465 
148466 --
148467 
148468 --
148469 OPEN header_cur;
148470 --
148471 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148472    trace
148473    (p_msg      => 'SQL - FETCH header_cur'
148474    ,p_level    => C_LEVEL_STATEMENT
148475    ,p_module   => l_log_module);
148476 END IF;
148477 --
148478 LOOP
148479 FETCH header_cur BULK COLLECT INTO
148480         l_array_entity_id
148481       , l_array_legal_entity_id
148482       , l_array_entity_code
148483       , l_array_transaction_num
148484       , l_array_event_id
148485       , l_array_class_code
148486       , l_array_event_type
148487       , l_array_event_number
148488       , l_array_event_date
148489       , l_array_transaction_date
148490       , l_array_reference_num_1
148491       , l_array_reference_num_2
148492       , l_array_reference_num_3
148493       , l_array_reference_num_4
148494       , l_array_reference_char_1
148495       , l_array_reference_char_2
148496       , l_array_reference_char_3
148497       , l_array_reference_char_4
148498       , l_array_reference_date_1
148499       , l_array_reference_date_2
148500       , l_array_reference_date_3
148501       , l_array_reference_date_4
148502       , l_array_event_created_by
148503       , l_array_budgetary_control_flag 
148504       , l_array_source_12
148505       , l_array_source_12_meaning
148506       , l_array_source_38
148507       , l_array_source_38_meaning
148508       LIMIT l_rows;
148509 --
148510 IF (C_LEVEL_EVENT >= g_log_level) THEN
148511    trace
148512    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
148513    ,p_level    => C_LEVEL_EVENT
148514    ,p_module   => l_log_module);
148515 END IF;
148516 --
148517 EXIT WHEN l_array_entity_id.COUNT = 0;
148518 
148519 -- initialize arrays
148520 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
148521 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
148522 
148523 --
148524 -- Bug 4458708
148525 --
148526 XLA_AE_LINES_PKG.g_LineNumber := 0;
148527 
148528 
148529 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
148530 g_last_hdr_idx := l_array_event_id.LAST;
148531 --
148532 -- loop for the headers. Each iteration is for each header extract row
148533 -- fetched in header cursor
148534 --
148535 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
148536 
148537 --
148538 -- set event info as cache for other routines to refer event attributes
148539 --
148540 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
148541    (p_application_id           => p_application_id
148542    ,p_primary_ledger_id        => p_primary_ledger_id
148543    ,p_base_ledger_id           => p_base_ledger_id
148544    ,p_target_ledger_id         => p_target_ledger_id
148545    ,p_entity_id                => l_array_entity_id(hdr_idx)
148546    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
148547    ,p_entity_code              => l_array_entity_code(hdr_idx)
148548    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
148549    ,p_event_id                 => l_array_event_id(hdr_idx)
148550    ,p_event_class_code         => l_array_class_code(hdr_idx)
148551    ,p_event_type_code          => l_array_event_type(hdr_idx)
148552    ,p_event_number             => l_array_event_number(hdr_idx)
148553    ,p_event_date               => l_array_event_date(hdr_idx)
148554    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
148555    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
148556    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
148557    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
148558    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
148559    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
148560    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
148561    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
148562    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
148563    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
148564    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
148565    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
148566    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
148567    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
148568    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
148569 
148570 --
148571 -- set the status of entry to C_VALID (0)
148572 --
148573 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
148574 
148575 --
148576 -- initialize a row for ae header
148577 --
148578 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
148579 
148580 l_event_id := l_array_event_id(hdr_idx);
148581 
148582 --
148583 -- storing the hdr_idx for event. May be used by line cursor.
148584 --
148585 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
148586 
148587 --
148588 -- store sources from header extract. This can be improved to
148589 -- store only those sources from header extract that may be used in lines
148590 --
148591 
148592 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
148593 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
148594 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
148595 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
148596 
148597 --
148598 -- initilaize the status of ae headers for diffrent balance types
148599 -- the status is initialised to C_NOT_CREATED (2)
148600 --
148601 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
148602 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
148603 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
148604 
148605 --
148606 -- call api to validate and store accounting attributes for header
148607 --
148608 
148609 ------------------------------------------------------------
148610 -- Accrual Reversal : to get date for Standard Source (NONE)
148611 ------------------------------------------------------------
148612 l_acc_rev_gl_date_source := NULL;
148613 
148614      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
148615       l_rec_acct_attrs.array_date_value(1) := 
148616 xla_ae_sources_pkg.GetSystemSourceDate(
148617    p_source_code           => 'XLA_REFERENCE_DATE_1'
148618  , p_source_type_code      => 'Y'
148619  , p_source_application_id =>  602
148620 );
148621      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
148622       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
148623 
148624 
148625 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
148626 
148627 XLA_AE_HEADER_PKG.SetJeCategoryName;
148628 
148629 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
148630 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
148631 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
148632 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
148633 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
148634 
148635 
148636 -- No header level analytical criteria
148637 
148638 --
148639 --accounting attribute enhancement, bug 3612931
148640 --
148641 l_trx_reversal_source := SUBSTR(NULL, 1,30);
148642 
148643 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
148644    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
148645 
148646    xla_accounting_err_pkg.build_message
148647       (p_appli_s_name            => 'XLA'
148648       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
148649       ,p_token_1                 => 'ACCT_ATTR_NAME'
148650       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
148651       ,p_token_2                 => 'PRODUCT_NAME'
148652       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
148653       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
148654       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
148655       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
148656 
148657 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
148658    --
148659    -- following sets the accounting attributes needed to reverse
148660    -- accounting for a distributeion
148661    --
148662    xla_ae_lines_pkg.SetTrxReversalAttrs
148663       (p_event_id              => l_event_id
148664       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
148665       ,p_trx_reversal_source   => l_trx_reversal_source);
148666 
148667 END IF;
148668 
148669 
148670 ----------------------------------------------------------------
148671 -- 4262811 -  update the header statuses to invalid in need be
148672 ----------------------------------------------------------------
148673 --
148674 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
148675 
148676 
148677   -----------------------------------------------
148678   -- No accrual reversal for the event class/type
148679   -----------------------------------------------
148680 ----------------------------------------------------------------
148681 
148682 --
148683 -- this ends the header loop iteration for one bulk fetch
148684 --
148685 END LOOP;
148686 
148687 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
148688 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
148689 
148690 --
148691 -- insert dummy rows into lines gt table that were created due to
148692 -- transaction reversals
148693 --
148694 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
148695    l_result := XLA_AE_LINES_PKG.InsertLines;
148696 END IF;
148697 
148698 --
148699 -- reset the temp_line_num for each set of events fetched from header
148700 -- cursor rather than doing it for each new event in line cursor
148701 -- Bug 3939231
148702 --
148703 xla_ae_lines_pkg.g_temp_line_num := 0;
148704 
148705 
148706 
148707 --
148708 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
148709 --
148710 --
148711 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148712 
148713       trace
148714          (p_msg      => 'SQL - FETCH line_cur'
148715          ,p_level    => C_LEVEL_STATEMENT
148716          ,p_module   => l_log_module);
148717 
148718 END IF;
148719 --
148720 --
148721 LOOP
148722   --
148723   FETCH line_cur BULK COLLECT INTO
148724         l_array_entity_id
148725       , l_array_legal_entity_id
148726       , l_array_entity_code
148727       , l_array_transaction_num
148728       , l_array_event_id
148729       , l_array_class_code
148730       , l_array_event_type
148731       , l_array_event_number
148732       , l_array_event_date
148733       , l_array_transaction_date
148734       , l_array_reference_num_1
148735       , l_array_reference_num_2
148736       , l_array_reference_num_3
148737       , l_array_reference_num_4
148738       , l_array_reference_char_1
148739       , l_array_reference_char_2
148740       , l_array_reference_char_3
148741       , l_array_reference_char_4
148742       , l_array_reference_date_1
148743       , l_array_reference_date_2
148744       , l_array_reference_date_3
148745       , l_array_reference_date_4
148746       , l_array_event_created_by
148747       , l_array_budgetary_control_flag
148748       , l_array_extract_line_num 
148749       , l_array_source_4
148750       , l_array_source_11
148751       , l_array_source_15
148752       , l_array_source_18
148753       , l_array_source_19
148754       , l_array_source_20
148755       , l_array_source_21
148756       , l_array_source_22
148757       , l_array_source_24
148758       LIMIT l_rows;
148759 
148760   --
148761   IF (C_LEVEL_EVENT >= g_log_level) THEN
148762             trace
148763                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
148764                ,p_level    => C_LEVEL_EVENT
148765                ,p_module   => l_log_module);
148766   END IF;
148767   --
148768   EXIT WHEN l_array_entity_id.count = 0;
148769 
148770   XLA_AE_LINES_PKG.g_rec_lines := null;
148771 
148772 --
148773 -- Bug 4458708
148774 --
148775 XLA_AE_LINES_PKG.g_LineNumber := 0;
148776 --
148777 --
148778 
148779 FOR Idx IN 1..l_array_event_id.count LOOP
148780    --
148781    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
148782    --
148783    l_event_id := l_array_event_id(idx);  -- 5648433
148784 
148785    --
148786    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
148787    --
148788 
148789    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
148790              (g_array_event(l_event_id).array_value_num('header_index'))
148791          ,'N'
148792          ) <> 'Y'
148793    THEN
148794       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148795          trace
148796             (p_msg      => 'Trancaction revesal option is not Y '
148797             ,p_level    => C_LEVEL_STATEMENT
148798             ,p_module   => l_log_module);
148799       END IF;
148800 
148801 --
148802 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
148803 --
148804 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
148805 --
148806 -- set event info as cache for other routines to refer event attributes
148807 --
148808 
148809 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
148810    l_previous_event_id := l_event_id;
148811 
148812    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
148813       (p_application_id           => p_application_id
148814       ,p_primary_ledger_id        => p_primary_ledger_id
148815       ,p_base_ledger_id           => p_base_ledger_id
148816       ,p_target_ledger_id         => p_target_ledger_id
148817       ,p_entity_id                => l_array_entity_id(Idx)
148818       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
148819       ,p_entity_code              => l_array_entity_code(Idx)
148820       ,p_transaction_num          => l_array_transaction_num(Idx)
148821       ,p_event_id                 => l_array_event_id(Idx)
148822       ,p_event_class_code         => l_array_class_code(Idx)
148823       ,p_event_type_code          => l_array_event_type(Idx)
148824       ,p_event_number             => l_array_event_number(Idx)
148825       ,p_event_date               => l_array_event_date(Idx)
148826       ,p_transaction_date         => l_array_transaction_date(Idx)
148827       ,p_reference_num_1          => l_array_reference_num_1(Idx)
148828       ,p_reference_num_2          => l_array_reference_num_2(Idx)
148829       ,p_reference_num_3          => l_array_reference_num_3(Idx)
148830       ,p_reference_num_4          => l_array_reference_num_4(Idx)
148831       ,p_reference_char_1         => l_array_reference_char_1(Idx)
148832       ,p_reference_char_2         => l_array_reference_char_2(Idx)
148833       ,p_reference_char_3         => l_array_reference_char_3(Idx)
148834       ,p_reference_char_4         => l_array_reference_char_4(Idx)
148835       ,p_reference_date_1         => l_array_reference_date_1(Idx)
148836       ,p_reference_date_2         => l_array_reference_date_2(Idx)
148837       ,p_reference_date_3         => l_array_reference_date_3(Idx)
148838       ,p_reference_date_4         => l_array_reference_date_4(Idx)
148839       ,p_event_created_by         => l_array_event_created_by(Idx)
148840       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
148841        --
148842 END IF;
148843 
148844 
148845 
148846 --
148847 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
148848 
148849 l_acct_reversal_source := SUBSTR(NULL, 1,30);
148850 
148851 IF l_continue_with_lines THEN
148852    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
148853       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
148854 
148855       xla_accounting_err_pkg.build_message
148856          (p_appli_s_name            => 'XLA'
148857          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
148858          ,p_token_1                 => 'LINE_NUMBER'
148859          ,p_value_1                 => l_array_extract_line_num(Idx)
148860          ,p_token_2                 => 'PRODUCT_NAME'
148861          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
148862          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
148863          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
148864          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
148865 
148866    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
148867       --
148868       -- following sets the accounting attributes needed to reverse
148869       -- accounting for a distributeion
148870       --
148871 
148872       --
148873       -- 5217187
148874       --
148875       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
148876       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
148877                                        g_array_event(l_event_id).array_value_num('header_index'));
148878       --
148879       --
148880 
148881       -- No reversal code generated
148882 
148883       xla_ae_lines_pkg.SetAcctReversalAttrs
148884          (p_event_id             => l_event_id
148885          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
148886          ,p_calculate_acctd_flag => l_calculate_acctd_flag
148887          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
148888    END IF;
148889 
148890    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
148891        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
148892 
148893 --
148894 AcctLineType_17 (
148895  p_application_id  => p_application_id
148896  ,p_event_id     => l_event_id
148897  ,p_calculate_acctd_flag => l_calculate_acctd_flag
148898  ,p_calculate_g_l_flag => l_calculate_g_l_flag
148899  ,p_actual_flag => l_actual_flag
148900  ,p_balance_type_code => l_balance_type_code
148901  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148902  
148903  , p_source_4 => l_array_source_4(Idx)
148904  , p_source_11 => l_array_source_11(Idx)
148905  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
148906  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
148907  , p_source_15 => l_array_source_15(Idx)
148908  , p_source_18 => l_array_source_18(Idx)
148909  , p_source_19 => l_array_source_19(Idx)
148910  , p_source_20 => l_array_source_20(Idx)
148911  , p_source_21 => l_array_source_21(Idx)
148912  , p_source_22 => l_array_source_22(Idx)
148913  , p_source_24 => l_array_source_24(Idx)
148914  );
148915 If(l_balance_type_code = 'A') THEN
148916   l_actual_gain_loss_ref := l_gain_or_loss_ref;
148917 END IF;
148918 
148919 --
148920 
148921 
148922 --
148923 AcctLineType_62 (
148924  p_application_id  => p_application_id
148925  ,p_event_id     => l_event_id
148926  ,p_calculate_acctd_flag => l_calculate_acctd_flag
148927  ,p_calculate_g_l_flag => l_calculate_g_l_flag
148928  ,p_actual_flag => l_actual_flag
148929  ,p_balance_type_code => l_balance_type_code
148930  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148931  
148932  , p_source_4 => l_array_source_4(Idx)
148933  , p_source_11 => l_array_source_11(Idx)
148934  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
148935  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
148936  , p_source_15 => l_array_source_15(Idx)
148937  , p_source_18 => l_array_source_18(Idx)
148938  , p_source_19 => l_array_source_19(Idx)
148939  , p_source_20 => l_array_source_20(Idx)
148940  , p_source_21 => l_array_source_21(Idx)
148941  , p_source_22 => l_array_source_22(Idx)
148942  , p_source_24 => l_array_source_24(Idx)
148943  );
148944 If(l_balance_type_code = 'A') THEN
148945   l_actual_gain_loss_ref := l_gain_or_loss_ref;
148946 END IF;
148947 
148948 --
148949 
148950 
148951 --
148952 AcctLineType_88 (
148953  p_application_id  => p_application_id
148954  ,p_event_id     => l_event_id
148955  ,p_calculate_acctd_flag => l_calculate_acctd_flag
148956  ,p_calculate_g_l_flag => l_calculate_g_l_flag
148957  ,p_actual_flag => l_actual_flag
148958  ,p_balance_type_code => l_balance_type_code
148959  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148960  
148961  , p_source_4 => l_array_source_4(Idx)
148962  , p_source_11 => l_array_source_11(Idx)
148963  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
148964  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
148965  , p_source_15 => l_array_source_15(Idx)
148966  , p_source_18 => l_array_source_18(Idx)
148967  , p_source_19 => l_array_source_19(Idx)
148968  , p_source_20 => l_array_source_20(Idx)
148969  , p_source_21 => l_array_source_21(Idx)
148970  , p_source_22 => l_array_source_22(Idx)
148971  , p_source_24 => l_array_source_24(Idx)
148972  );
148973 If(l_balance_type_code = 'A') THEN
148974   l_actual_gain_loss_ref := l_gain_or_loss_ref;
148975 END IF;
148976 
148977 --
148978 
148979 
148980 --
148981 AcctLineType_96 (
148982  p_application_id  => p_application_id
148983  ,p_event_id     => l_event_id
148984  ,p_calculate_acctd_flag => l_calculate_acctd_flag
148985  ,p_calculate_g_l_flag => l_calculate_g_l_flag
148986  ,p_actual_flag => l_actual_flag
148987  ,p_balance_type_code => l_balance_type_code
148988  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148989  
148990  , p_source_4 => l_array_source_4(Idx)
148991  , p_source_11 => l_array_source_11(Idx)
148992  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
148993  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
148994  , p_source_15 => l_array_source_15(Idx)
148995  , p_source_18 => l_array_source_18(Idx)
148996  , p_source_19 => l_array_source_19(Idx)
148997  , p_source_20 => l_array_source_20(Idx)
148998  , p_source_21 => l_array_source_21(Idx)
148999  , p_source_22 => l_array_source_22(Idx)
149000  , p_source_24 => l_array_source_24(Idx)
149001  );
149002 If(l_balance_type_code = 'A') THEN
149003   l_actual_gain_loss_ref := l_gain_or_loss_ref;
149004 END IF;
149005 
149006 --
149007 
149008 
149009 --
149010 AcctLineType_107 (
149011  p_application_id  => p_application_id
149012  ,p_event_id     => l_event_id
149013  ,p_calculate_acctd_flag => l_calculate_acctd_flag
149014  ,p_calculate_g_l_flag => l_calculate_g_l_flag
149015  ,p_actual_flag => l_actual_flag
149016  ,p_balance_type_code => l_balance_type_code
149017  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149018  
149019  , p_source_4 => l_array_source_4(Idx)
149020  , p_source_11 => l_array_source_11(Idx)
149021  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149022  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149023  , p_source_15 => l_array_source_15(Idx)
149024  , p_source_18 => l_array_source_18(Idx)
149025  , p_source_19 => l_array_source_19(Idx)
149026  , p_source_20 => l_array_source_20(Idx)
149027  , p_source_21 => l_array_source_21(Idx)
149028  , p_source_22 => l_array_source_22(Idx)
149029  , p_source_24 => l_array_source_24(Idx)
149030  );
149031 If(l_balance_type_code = 'A') THEN
149032   l_actual_gain_loss_ref := l_gain_or_loss_ref;
149033 END IF;
149034 
149035 --
149036 
149037 
149038 --
149039 AcctLineType_122 (
149040  p_application_id  => p_application_id
149041  ,p_event_id     => l_event_id
149042  ,p_calculate_acctd_flag => l_calculate_acctd_flag
149043  ,p_calculate_g_l_flag => l_calculate_g_l_flag
149044  ,p_actual_flag => l_actual_flag
149045  ,p_balance_type_code => l_balance_type_code
149046  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149047  
149048  , p_source_4 => l_array_source_4(Idx)
149049  , p_source_11 => l_array_source_11(Idx)
149050  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149051  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149052  , p_source_15 => l_array_source_15(Idx)
149053  , p_source_18 => l_array_source_18(Idx)
149054  , p_source_19 => l_array_source_19(Idx)
149055  , p_source_20 => l_array_source_20(Idx)
149056  , p_source_21 => l_array_source_21(Idx)
149057  , p_source_22 => l_array_source_22(Idx)
149058  , p_source_24 => l_array_source_24(Idx)
149059  );
149060 If(l_balance_type_code = 'A') THEN
149061   l_actual_gain_loss_ref := l_gain_or_loss_ref;
149062 END IF;
149063 
149064 --
149065 
149066 
149067 --
149068 AcctLineType_189 (
149069  p_application_id  => p_application_id
149070  ,p_event_id     => l_event_id
149071  ,p_calculate_acctd_flag => l_calculate_acctd_flag
149072  ,p_calculate_g_l_flag => l_calculate_g_l_flag
149073  ,p_actual_flag => l_actual_flag
149074  ,p_balance_type_code => l_balance_type_code
149075  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149076  
149077  , p_source_4 => l_array_source_4(Idx)
149078  , p_source_11 => l_array_source_11(Idx)
149079  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149080  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149081  , p_source_15 => l_array_source_15(Idx)
149082  , p_source_18 => l_array_source_18(Idx)
149083  , p_source_19 => l_array_source_19(Idx)
149084  , p_source_20 => l_array_source_20(Idx)
149085  , p_source_21 => l_array_source_21(Idx)
149086  , p_source_22 => l_array_source_22(Idx)
149087  , p_source_24 => l_array_source_24(Idx)
149088  );
149089 If(l_balance_type_code = 'A') THEN
149090   l_actual_gain_loss_ref := l_gain_or_loss_ref;
149091 END IF;
149092 
149093 --
149094 
149095       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
149096       -- or secondary ledger that has different currency with primary
149097       -- or alc that is calculated by sla
149098       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
149099             (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'))
149100 
149101 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
149102 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
149103           AND (l_actual_flag = 'A')) THEN
149104         XLA_AE_LINES_PKG.CreateGainOrLossLines(
149105           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
149106          ,p_application_id   => p_application_id
149107          ,p_amb_context_code => 'DEFAULT'
149108          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
149109          ,p_event_class_code => C_EVENT_CLASS_CODE
149110          ,p_event_type_code  => C_EVENT_TYPE_CODE
149111          
149112          ,p_gain_ccid        => -1
149113          ,p_loss_ccid        => -1
149114 
149115          ,p_actual_flag      => l_actual_flag
149116          ,p_enc_flag         => null
149117          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
149118          ,p_enc_g_l_ref      => null
149119          );
149120       END IF;
149121    END IF;
149122 END IF;
149123 
149124    ELSE
149125       --
149126       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
149127       --
149128       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149129          trace
149130             (p_msg      => 'Trancaction revesal option is Y'
149131             ,p_level    => C_LEVEL_STATEMENT
149132             ,p_module   => l_log_module);
149133       END IF;
149134    END IF;
149135 
149136 END LOOP;
149137 l_result := XLA_AE_LINES_PKG.InsertLines ;
149138 end loop;
149139 close line_cur;
149140 
149141 
149142 --
149143 -- insert headers into xla_ae_headers_gt table
149144 --
149145 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
149146 
149147 -- insert into errors table here.
149148 
149149 END LOOP;
149150 
149151 --
149152 -- 4865292
149153 --
149154 -- Compare g_hdr_extract_count with event count in
149155 -- CreateHeadersAndLines.
149156 --
149157 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
149158 
149159 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149160    trace (p_msg     => '# rows extracted from header extract objects '
149161                     || ' (running total): '
149162                     || g_hdr_extract_count
149163          ,p_level   => C_LEVEL_STATEMENT
149164          ,p_module  => l_log_module);
149165 END IF;
149166 
149167 CLOSE header_cur;
149168 --
149169 
149170 --
149171 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149172    trace
149173       (p_msg      => 'END of EventClass_257'
149174       ,p_level    => C_LEVEL_PROCEDURE
149175       ,p_module   => l_log_module);
149176 END IF;
149177 --
149178 RETURN l_result;
149179 EXCEPTION
149180 WHEN xla_exceptions_pkg.application_exception THEN
149181    
149182 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
149183 
149184    
149185 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
149186 
149187    RAISE;
149188 
149189 WHEN NO_DATA_FOUND THEN
149190 
149191 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
149192 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
149193 
149194 FOR header_record IN header_cur
149195 LOOP
149196     l_array_header_events(header_record.event_id) := header_record.event_id;
149197 END LOOP;
149198 
149199 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
149200 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
149201 
149202 fnd_file.put_line(fnd_file.LOG, '                    ');
149203 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
149204 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
149205 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
149206 
149207 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
149208 LOOP
149209 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
149210 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
149211         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
149212 	END IF;
149213 END LOOP;
149214 
149215 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
149216 fnd_file.put_line(fnd_file.LOG, '                    ');
149217 
149218 
149219 xla_exceptions_pkg.raise_message
149220       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_257');
149221 
149222 
149223 WHEN OTHERS THEN
149224    xla_exceptions_pkg.raise_message
149225       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_257');
149226 END EventClass_257;
149227 --
149228 
149229 ---------------------------------------
149230 --
149231 -- PRIVATE PROCEDURE
149232 --         insert_sources_258
149233 --
149234 ----------------------------------------
149235 --
149236 PROCEDURE insert_sources_258(
149237                                 p_target_ledger_id       IN NUMBER
149238                               , p_language               IN VARCHAR2
149239                               , p_sla_ledger_id          IN NUMBER
149240                               , p_pad_start_date         IN DATE
149241                               , p_pad_end_date           IN DATE
149242                          )
149243 IS
149244 
149245 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_SHIP_ALL';
149246 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP';
149247 p_apps_owner                   VARCHAR2(30);
149248 l_log_module                   VARCHAR2(240);
149249 BEGIN
149250 IF g_log_enabled THEN
149251       l_log_module := C_DEFAULT_MODULE||'.insert_sources_258';
149252 END IF;
149253 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149254 
149255       trace
149256          (p_msg      => 'BEGIN of insert_sources_258'
149257          ,p_level    => C_LEVEL_PROCEDURE
149258          ,p_module   => l_log_module);
149259 
149260 END IF;
149261 
149262 -- select APPS owner
149263 SELECT oracle_username
149264   INTO p_apps_owner
149265   FROM fnd_oracle_userid
149266  WHERE read_only_flag = 'U'
149267 ;
149268 
149269 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149270       trace
149271          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
149272                         ' - p_language = '||p_language||
149273                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
149274                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
149275                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
149276                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
149277          ,p_level    => C_LEVEL_STATEMENT
149278          ,p_module   => l_log_module);
149279 END IF;
149280 
149281 
149282 --
149283 INSERT INTO xla_diag_sources --hdr2
149284 (
149285         event_id
149286       , ledger_id
149287       , sla_ledger_id
149288       , description_language
149289       , object_name
149290       , object_type_code
149291       , line_number
149292       , source_application_id
149293       , source_type_code
149294       , source_code
149295       , source_value
149296       , source_meaning
149297       , created_by
149298       , creation_date
149299       , last_update_date
149300       , last_updated_by
149301       , last_update_login
149302       , program_update_date
149303       , program_application_id
149304       , program_id
149305       , request_id
149306 )
149307 SELECT
149308         event_id
149309       , p_target_ledger_id
149310       , p_sla_ledger_id
149311       , p_language
149312       , object_name
149313       , object_type_code
149314       , line_number
149315       , source_application_id
149316       , source_type_code
149317       , source_code
149318       , SUBSTR(source_value ,1,1996)
149319       , SUBSTR(source_meaning ,1,200)
149320       , xla_environment_pkg.g_Usr_Id
149321       , TRUNC(SYSDATE)
149322       , TRUNC(SYSDATE)
149323       , xla_environment_pkg.g_Usr_Id
149324       , xla_environment_pkg.g_Login_Id
149325       , TRUNC(SYSDATE)
149326       , xla_environment_pkg.g_Prog_Appl_Id
149327       , xla_environment_pkg.g_Prog_Id
149328       , xla_environment_pkg.g_Req_Id
149329   FROM (
149330        SELECT xet.event_id                  event_id
149331             , 0                          line_number
149332             , CASE r
149333                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
149334                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
149335                 
149336                ELSE null
149337               END                           object_name
149338             , CASE r
149339                 WHEN 1 THEN 'HEADER' 
149340                 WHEN 2 THEN 'HEADER' 
149341                 
149342                 ELSE null
149343               END                           object_type_code
149344             , CASE r
149345                 WHEN 1 THEN '707' 
149346                 WHEN 2 THEN '707' 
149347                 
149348                 ELSE null
149349               END                           source_application_id
149350             , 'S'             source_type_code
149351             , CASE r
149352                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
149353                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
149354                 
149355                 ELSE null
149356               END                           source_code
149357             , CASE r
149358                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
149359                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
149360                 
149361                 ELSE null
149362               END                           source_value
149363             , CASE r
149364                 WHEN 1 THEN fvl12.meaning
149365                 WHEN 2 THEN fvl38.meaning
149366                 
149367                 ELSE null
149368               END               source_meaning
149369          FROM xla_events_gt     xet  
149370       , CST_XLA_INV_HEADERS_V  h1
149371   , fnd_lookup_values    fvl12
149372   , fnd_lookup_values    fvl38
149373              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
149374          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
149375            AND xet.event_class_code = C_EVENT_CLASS_CODE
149376               AND h1.event_id = xet.event_id
149377    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
149378   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
149379   AND fvl12.view_application_id(+) = 700
149380   AND fvl12.language(+)            = USERENV('LANG')
149381      AND fvl38.lookup_type(+)         = 'YES_NO'
149382   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
149383   AND fvl38.view_application_id(+) = 0
149384   AND fvl38.language(+)            = USERENV('LANG')
149385   
149386 )
149387 ;
149388 --
149389 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149390 
149391       trace
149392          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
149393          ,p_level    => C_LEVEL_STATEMENT
149394          ,p_module   => l_log_module);
149395 
149396 END IF;
149397 --
149398 
149399 
149400 
149401 --
149402 INSERT INTO xla_diag_sources  --line2
149403 (
149404         event_id
149405       , ledger_id
149406       , sla_ledger_id
149407       , description_language
149408       , object_name
149409       , object_type_code
149410       , line_number
149411       , source_application_id
149412       , source_type_code
149413       , source_code
149414       , source_value
149415       , source_meaning
149416       , created_by
149417       , creation_date
149418       , last_update_date
149419       , last_updated_by
149420       , last_update_login
149421       , program_update_date
149422       , program_application_id
149423       , program_id
149424       , request_id
149425 )
149426 SELECT  event_id
149427       , p_target_ledger_id
149428       , p_sla_ledger_id
149429       , p_language
149430       , object_name
149431       , object_type_code
149432       , line_number
149433       , source_application_id
149434       , source_type_code
149435       , source_code
149436       , SUBSTR(source_value,1,1996)
149437       , SUBSTR(source_meaning ,1,200)
149438       , xla_environment_pkg.g_Usr_Id
149439       , TRUNC(SYSDATE)
149440       , TRUNC(SYSDATE)
149441       , xla_environment_pkg.g_Usr_Id
149442       , xla_environment_pkg.g_Login_Id
149443       , TRUNC(SYSDATE)
149444       , xla_environment_pkg.g_Prog_Appl_Id
149445       , xla_environment_pkg.g_Prog_Id
149446       , xla_environment_pkg.g_Req_Id
149447   FROM (
149448        SELECT xet.event_id                  event_id
149449             , l2.line_number                 line_number
149450             , CASE r
149451                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
149452                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
149453                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
149454                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
149455                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
149456                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
149457                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
149458                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
149459                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
149460                 
149461                ELSE null
149462               END                           object_name
149463             , CASE r
149464                 WHEN 1 THEN 'LINE' 
149465                 WHEN 2 THEN 'LINE' 
149466                 WHEN 3 THEN 'LINE' 
149467                 WHEN 4 THEN 'LINE' 
149468                 WHEN 5 THEN 'LINE' 
149469                 WHEN 6 THEN 'LINE' 
149470                 WHEN 7 THEN 'LINE' 
149471                 WHEN 8 THEN 'LINE' 
149472                 WHEN 9 THEN 'LINE' 
149473                 
149474                 ELSE null
149475               END                           object_type_code
149476             , CASE r
149477                 WHEN 1 THEN '707' 
149478                 WHEN 2 THEN '707' 
149479                 WHEN 3 THEN '707' 
149480                 WHEN 4 THEN '707' 
149481                 WHEN 5 THEN '707' 
149482                 WHEN 6 THEN '707' 
149483                 WHEN 7 THEN '707' 
149484                 WHEN 8 THEN '707' 
149485                 WHEN 9 THEN '707' 
149486                 
149487                 ELSE null
149488               END                           source_application_id
149489             , 'S'             source_type_code
149490             , CASE r
149491                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
149492                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
149493                 WHEN 3 THEN 'CURRENCY_CODE' 
149494                 WHEN 4 THEN 'ENTERED_AMOUNT' 
149495                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
149496                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
149497                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
149498                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
149499                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
149500                 
149501                 ELSE null
149502               END                           source_code
149503             , CASE r
149504                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
149505                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
149506                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
149507                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
149508                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
149509                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
149510                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
149511                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
149512                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
149513                 
149514                 ELSE null
149515               END                           source_value
149516             , null              source_meaning
149517          FROM  xla_events_gt     xet  
149518         , CST_XLA_INV_LINES_V  l2
149519             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
149520         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
149521           AND xet.event_class_code = C_EVENT_CLASS_CODE
149522             AND l2.event_id          = xet.event_id
149523 
149524 )
149525 ;
149526 --
149527 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149528 
149529       trace
149530          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
149531          ,p_level    => C_LEVEL_STATEMENT
149532          ,p_module   => l_log_module);
149533 
149534 END IF;
149535 
149536 
149537 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149538       trace
149539          (p_msg      => 'END of insert_sources_258'
149540          ,p_level    => C_LEVEL_PROCEDURE
149541          ,p_module   => l_log_module);
149542 END IF;
149543 EXCEPTION
149544   WHEN xla_exceptions_pkg.application_exception THEN
149545       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
149546             trace
149547                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
149548                ,p_level    => C_LEVEL_EXCEPTION
149549                ,p_module   => l_log_module);
149550       END IF;
149551       RAISE;
149552   WHEN OTHERS THEN
149553       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
149554             trace
149555                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
149556                ,p_level    => C_LEVEL_EXCEPTION
149557                ,p_module   => l_log_module);
149558        END IF;
149559        xla_exceptions_pkg.raise_message
149560            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_258');
149561 END insert_sources_258;
149562 --
149563 
149564 ---------------------------------------
149565 --
149566 -- PRIVATE FUNCTION
149567 --         EventClass_258
149568 --
149569 ----------------------------------------
149570 --
149571 FUNCTION EventClass_258
149572        (p_application_id         IN NUMBER
149573        ,p_base_ledger_id         IN NUMBER
149574        ,p_target_ledger_id       IN NUMBER
149575        ,p_language               IN VARCHAR2
149576        ,p_currency_code          IN VARCHAR2
149577        ,p_sla_ledger_id          IN NUMBER
149578        ,p_pad_start_date         IN DATE
149579        ,p_pad_end_date           IN DATE
149580        ,p_primary_ledger_id      IN NUMBER)
149581 RETURN BOOLEAN IS
149582 --
149583 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_SHIP_ALL';
149584 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP';
149585 
149586 l_calculate_acctd_flag   VARCHAR2(1) :='N';
149587 l_calculate_g_l_flag     VARCHAR2(1) :='N';
149588 --
149589 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149590 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149591 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
149592 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149593 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149594 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
149595 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
149596 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149597 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149598 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149599 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149600 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149601 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149602 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149603 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149604 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149605 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149606 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149607 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149608 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149609 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149610 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149611 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
149612 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
149613 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
149614 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
149615 
149616 l_event_id                             NUMBER;
149617 l_previous_event_id                    NUMBER;
149618 l_first_event_id                       NUMBER;
149619 l_last_event_id                        NUMBER;
149620 
149621 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
149622 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
149623 --
149624 --
149625 l_result                    BOOLEAN := TRUE;
149626 l_rows                      NUMBER  := 1000;
149627 l_event_type_name           VARCHAR2(80) := 'All';
149628 l_event_class_name          VARCHAR2(80) := 'Intransit Interorg Shipment for FOB Receipt';
149629 l_description               VARCHAR2(4000);
149630 l_transaction_reversal      NUMBER;
149631 l_ae_header_id              NUMBER;
149632 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
149633 l_log_module                VARCHAR2(240);
149634 --
149635 l_acct_reversal_source      VARCHAR2(30);
149636 l_trx_reversal_source       VARCHAR2(30);
149637 
149638 l_continue_with_lines       BOOLEAN := TRUE;
149639 --
149640 l_acc_rev_gl_date_source    DATE;                      -- 4262811
149641 --
149642 type t_array_event_id is table of number index by binary_integer;
149643 
149644 l_rec_array_event                    t_rec_array_event;
149645 l_null_rec_array_event               t_rec_array_event;
149646 l_array_ae_header_id                 xla_number_array_type;
149647 l_actual_flag                        VARCHAR2(1) := NULL;
149648 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
149649 l_balance_type_code                  VARCHAR2(1) :=NULL;
149650 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
149651 
149652 --
149653 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
149654 --
149655 
149656 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
149657 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
149658 
149659 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
149660 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
149661 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
149662 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
149663 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
149664 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
149665 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
149666 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
149667 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
149668 
149669 l_array_source_12              t_array_source_12;
149670 l_array_source_12_meaning      t_array_lookup_meaning;
149671 l_array_source_38              t_array_source_38;
149672 l_array_source_38_meaning      t_array_lookup_meaning;
149673 
149674 l_array_source_4      t_array_source_4;
149675 l_array_source_11      t_array_source_11;
149676 l_array_source_15      t_array_source_15;
149677 l_array_source_18      t_array_source_18;
149678 l_array_source_19      t_array_source_19;
149679 l_array_source_20      t_array_source_20;
149680 l_array_source_21      t_array_source_21;
149681 l_array_source_22      t_array_source_22;
149682 l_array_source_24      t_array_source_24;
149683 
149684 --
149685 CURSOR header_cur
149686 IS
149687 SELECT /*+ leading(xet) cardinality(xet,1) */
149688 -- Event Class Code: FOB_RCPT_SENDER_SHIP
149689     xet.entity_id
149690    ,xet.legal_entity_id
149691    ,xet.entity_code
149692    ,xet.transaction_number
149693    ,xet.event_id
149694    ,xet.event_class_code
149695    ,xet.event_type_code
149696    ,xet.event_number
149697    ,xet.event_date
149698    ,xet.transaction_date
149699    ,xet.reference_num_1
149700    ,xet.reference_num_2
149701    ,xet.reference_num_3
149702    ,xet.reference_num_4
149703    ,xet.reference_char_1
149704    ,xet.reference_char_2
149705    ,xet.reference_char_3
149706    ,xet.reference_char_4
149707    ,xet.reference_date_1
149708    ,xet.reference_date_2
149709    ,xet.reference_date_3
149710    ,xet.reference_date_4
149711    ,xet.event_created_by
149712    ,xet.budgetary_control_flag 
149713   , h1.DISTRIBUTION_TYPE    source_12
149714   , fvl12.meaning   source_12_meaning
149715   , h1.TRANSFER_TO_GL_INDICATOR    source_38
149716   , fvl38.meaning   source_38_meaning
149717   FROM xla_events_gt     xet 
149718   , CST_XLA_INV_HEADERS_V  h1
149719   , fnd_lookup_values    fvl12
149720   , fnd_lookup_values    fvl38
149721  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
149722    and xet.event_class_code = C_EVENT_CLASS_CODE
149723    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
149724    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
149725   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
149726   AND fvl12.view_application_id(+) = 700
149727   AND fvl12.language(+)            = USERENV('LANG')
149728      AND fvl38.lookup_type(+)         = 'YES_NO'
149729   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
149730   AND fvl38.view_application_id(+) = 0
149731   AND fvl38.language(+)            = USERENV('LANG')
149732   
149733  ORDER BY event_id
149734 ;
149735 
149736 
149737 --
149738 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
149739 IS
149740 SELECT  /*+ leading(xet) cardinality(xet,1) */
149741 -- Event Class Code: FOB_RCPT_SENDER_SHIP
149742     xet.entity_id
149743    ,xet.legal_entity_id
149744    ,xet.entity_code
149745    ,xet.transaction_number
149746    ,xet.event_id
149747    ,xet.event_class_code
149748    ,xet.event_type_code
149749    ,xet.event_number
149750    ,xet.event_date
149751    ,xet.transaction_date
149752    ,xet.reference_num_1
149753    ,xet.reference_num_2
149754    ,xet.reference_num_3
149755    ,xet.reference_num_4
149756    ,xet.reference_char_1
149757    ,xet.reference_char_2
149758    ,xet.reference_char_3
149759    ,xet.reference_char_4
149760    ,xet.reference_date_1
149761    ,xet.reference_date_2
149762    ,xet.reference_date_3
149763    ,xet.reference_date_4
149764    ,xet.event_created_by
149765    ,xet.budgetary_control_flag
149766  , l2.LINE_NUMBER  
149767   , l2.CODE_COMBINATION_ID    source_4
149768   , l2.DISTRIBUTION_IDENTIFIER    source_11
149769   , l2.CURRENCY_CODE    source_15
149770   , l2.ENTERED_AMOUNT    source_18
149771   , l2.CURRENCY_CONVERSION_DATE    source_19
149772   , l2.CURRENCY_CONVERSION_RATE    source_20
149773   , l2.CURRENCY_CONVERSION_TYPE    source_21
149774   , l2.ACCOUNTED_AMOUNT    source_22
149775   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
149776   FROM xla_events_gt     xet 
149777   , CST_XLA_INV_LINES_V  l2
149778  WHERE xet.event_id between x_first_event_id and x_last_event_id
149779    and xet.event_date between p_pad_start_date and p_pad_end_date
149780    and xet.event_class_code = C_EVENT_CLASS_CODE
149781    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
149782 ;
149783 
149784 --
149785 BEGIN
149786 IF g_log_enabled THEN
149787    l_log_module := C_DEFAULT_MODULE||'.EventClass_258';
149788 END IF;
149789 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149790    trace
149791       (p_msg      => 'BEGIN of EventClass_258'
149792       ,p_level    => C_LEVEL_PROCEDURE
149793       ,p_module   => l_log_module);
149794 END IF;
149795 
149796 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149797    trace
149798       (p_msg      => 'p_application_id = '||p_application_id||
149799                      ' - p_base_ledger_id = '||p_base_ledger_id||
149800                      ' - p_target_ledger_id  = '||p_target_ledger_id||
149801                      ' - p_language = '||p_language||
149802                      ' - p_currency_code = '||p_currency_code||
149803                      ' - p_sla_ledger_id = '||p_sla_ledger_id
149804       ,p_level    => C_LEVEL_STATEMENT
149805       ,p_module   => l_log_module);
149806 END IF;
149807 --
149808 -- initialze arrays
149809 --
149810 g_array_event.DELETE;
149811 l_rec_array_event := l_null_rec_array_event;
149812 --
149813 --------------------------------------
149814 -- 4262811 Initialze MPA Line Number
149815 --------------------------------------
149816 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
149817 
149818 --
149819 
149820 --
149821 OPEN header_cur;
149822 --
149823 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149824    trace
149825    (p_msg      => 'SQL - FETCH header_cur'
149826    ,p_level    => C_LEVEL_STATEMENT
149827    ,p_module   => l_log_module);
149828 END IF;
149829 --
149830 LOOP
149831 FETCH header_cur BULK COLLECT INTO
149832         l_array_entity_id
149833       , l_array_legal_entity_id
149834       , l_array_entity_code
149835       , l_array_transaction_num
149836       , l_array_event_id
149837       , l_array_class_code
149838       , l_array_event_type
149839       , l_array_event_number
149840       , l_array_event_date
149841       , l_array_transaction_date
149842       , l_array_reference_num_1
149843       , l_array_reference_num_2
149844       , l_array_reference_num_3
149845       , l_array_reference_num_4
149846       , l_array_reference_char_1
149847       , l_array_reference_char_2
149848       , l_array_reference_char_3
149849       , l_array_reference_char_4
149850       , l_array_reference_date_1
149851       , l_array_reference_date_2
149852       , l_array_reference_date_3
149853       , l_array_reference_date_4
149854       , l_array_event_created_by
149855       , l_array_budgetary_control_flag 
149856       , l_array_source_12
149857       , l_array_source_12_meaning
149858       , l_array_source_38
149859       , l_array_source_38_meaning
149860       LIMIT l_rows;
149861 --
149862 IF (C_LEVEL_EVENT >= g_log_level) THEN
149863    trace
149864    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
149865    ,p_level    => C_LEVEL_EVENT
149866    ,p_module   => l_log_module);
149867 END IF;
149868 --
149869 EXIT WHEN l_array_entity_id.COUNT = 0;
149870 
149871 -- initialize arrays
149872 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
149873 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
149874 
149875 --
149876 -- Bug 4458708
149877 --
149878 XLA_AE_LINES_PKG.g_LineNumber := 0;
149879 
149880 
149881 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
149882 g_last_hdr_idx := l_array_event_id.LAST;
149883 --
149884 -- loop for the headers. Each iteration is for each header extract row
149885 -- fetched in header cursor
149886 --
149887 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
149888 
149889 --
149890 -- set event info as cache for other routines to refer event attributes
149891 --
149892 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
149893    (p_application_id           => p_application_id
149894    ,p_primary_ledger_id        => p_primary_ledger_id
149895    ,p_base_ledger_id           => p_base_ledger_id
149896    ,p_target_ledger_id         => p_target_ledger_id
149897    ,p_entity_id                => l_array_entity_id(hdr_idx)
149898    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
149899    ,p_entity_code              => l_array_entity_code(hdr_idx)
149900    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
149901    ,p_event_id                 => l_array_event_id(hdr_idx)
149902    ,p_event_class_code         => l_array_class_code(hdr_idx)
149903    ,p_event_type_code          => l_array_event_type(hdr_idx)
149904    ,p_event_number             => l_array_event_number(hdr_idx)
149905    ,p_event_date               => l_array_event_date(hdr_idx)
149906    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
149907    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
149908    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
149909    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
149910    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
149911    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
149912    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
149913    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
149914    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
149915    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
149916    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
149917    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
149918    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
149919    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
149920    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
149921 
149922 --
149923 -- set the status of entry to C_VALID (0)
149924 --
149925 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
149926 
149927 --
149928 -- initialize a row for ae header
149929 --
149930 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
149931 
149932 l_event_id := l_array_event_id(hdr_idx);
149933 
149934 --
149935 -- storing the hdr_idx for event. May be used by line cursor.
149936 --
149937 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
149938 
149939 --
149940 -- store sources from header extract. This can be improved to
149941 -- store only those sources from header extract that may be used in lines
149942 --
149943 
149944 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
149945 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
149946 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
149947 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
149948 
149949 --
149950 -- initilaize the status of ae headers for diffrent balance types
149951 -- the status is initialised to C_NOT_CREATED (2)
149952 --
149953 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149954 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149955 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149956 
149957 --
149958 -- call api to validate and store accounting attributes for header
149959 --
149960 
149961 ------------------------------------------------------------
149962 -- Accrual Reversal : to get date for Standard Source (NONE)
149963 ------------------------------------------------------------
149964 l_acc_rev_gl_date_source := NULL;
149965 
149966      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
149967       l_rec_acct_attrs.array_date_value(1) := 
149968 xla_ae_sources_pkg.GetSystemSourceDate(
149969    p_source_code           => 'XLA_REFERENCE_DATE_1'
149970  , p_source_type_code      => 'Y'
149971  , p_source_application_id =>  602
149972 );
149973      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
149974       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
149975 
149976 
149977 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
149978 
149979 XLA_AE_HEADER_PKG.SetJeCategoryName;
149980 
149981 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
149982 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
149983 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
149984 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
149985 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
149986 
149987 
149988 -- No header level analytical criteria
149989 
149990 --
149991 --accounting attribute enhancement, bug 3612931
149992 --
149993 l_trx_reversal_source := SUBSTR(NULL, 1,30);
149994 
149995 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
149996    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
149997 
149998    xla_accounting_err_pkg.build_message
149999       (p_appli_s_name            => 'XLA'
150000       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
150001       ,p_token_1                 => 'ACCT_ATTR_NAME'
150002       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
150003       ,p_token_2                 => 'PRODUCT_NAME'
150004       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
150005       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
150006       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
150007       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
150008 
150009 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
150010    --
150011    -- following sets the accounting attributes needed to reverse
150012    -- accounting for a distributeion
150013    --
150014    xla_ae_lines_pkg.SetTrxReversalAttrs
150015       (p_event_id              => l_event_id
150016       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
150017       ,p_trx_reversal_source   => l_trx_reversal_source);
150018 
150019 END IF;
150020 
150021 
150022 ----------------------------------------------------------------
150023 -- 4262811 -  update the header statuses to invalid in need be
150024 ----------------------------------------------------------------
150025 --
150026 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
150027 
150028 
150029   -----------------------------------------------
150030   -- No accrual reversal for the event class/type
150031   -----------------------------------------------
150032 ----------------------------------------------------------------
150033 
150034 --
150035 -- this ends the header loop iteration for one bulk fetch
150036 --
150037 END LOOP;
150038 
150039 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
150040 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
150041 
150042 --
150043 -- insert dummy rows into lines gt table that were created due to
150044 -- transaction reversals
150045 --
150046 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
150047    l_result := XLA_AE_LINES_PKG.InsertLines;
150048 END IF;
150049 
150050 --
150051 -- reset the temp_line_num for each set of events fetched from header
150052 -- cursor rather than doing it for each new event in line cursor
150053 -- Bug 3939231
150054 --
150055 xla_ae_lines_pkg.g_temp_line_num := 0;
150056 
150057 
150058 
150059 --
150060 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
150061 --
150062 --
150063 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150064 
150065       trace
150066          (p_msg      => 'SQL - FETCH line_cur'
150067          ,p_level    => C_LEVEL_STATEMENT
150068          ,p_module   => l_log_module);
150069 
150070 END IF;
150071 --
150072 --
150073 LOOP
150074   --
150075   FETCH line_cur BULK COLLECT INTO
150076         l_array_entity_id
150077       , l_array_legal_entity_id
150078       , l_array_entity_code
150079       , l_array_transaction_num
150080       , l_array_event_id
150081       , l_array_class_code
150082       , l_array_event_type
150083       , l_array_event_number
150084       , l_array_event_date
150085       , l_array_transaction_date
150086       , l_array_reference_num_1
150087       , l_array_reference_num_2
150088       , l_array_reference_num_3
150089       , l_array_reference_num_4
150090       , l_array_reference_char_1
150091       , l_array_reference_char_2
150092       , l_array_reference_char_3
150093       , l_array_reference_char_4
150094       , l_array_reference_date_1
150095       , l_array_reference_date_2
150096       , l_array_reference_date_3
150097       , l_array_reference_date_4
150098       , l_array_event_created_by
150099       , l_array_budgetary_control_flag
150100       , l_array_extract_line_num 
150101       , l_array_source_4
150102       , l_array_source_11
150103       , l_array_source_15
150104       , l_array_source_18
150105       , l_array_source_19
150106       , l_array_source_20
150107       , l_array_source_21
150108       , l_array_source_22
150109       , l_array_source_24
150110       LIMIT l_rows;
150111 
150112   --
150113   IF (C_LEVEL_EVENT >= g_log_level) THEN
150114             trace
150115                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
150116                ,p_level    => C_LEVEL_EVENT
150117                ,p_module   => l_log_module);
150118   END IF;
150119   --
150120   EXIT WHEN l_array_entity_id.count = 0;
150121 
150122   XLA_AE_LINES_PKG.g_rec_lines := null;
150123 
150124 --
150125 -- Bug 4458708
150126 --
150127 XLA_AE_LINES_PKG.g_LineNumber := 0;
150128 --
150129 --
150130 
150131 FOR Idx IN 1..l_array_event_id.count LOOP
150132    --
150133    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
150134    --
150135    l_event_id := l_array_event_id(idx);  -- 5648433
150136 
150137    --
150138    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
150139    --
150140 
150141    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
150142              (g_array_event(l_event_id).array_value_num('header_index'))
150143          ,'N'
150144          ) <> 'Y'
150145    THEN
150146       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150147          trace
150148             (p_msg      => 'Trancaction revesal option is not Y '
150149             ,p_level    => C_LEVEL_STATEMENT
150150             ,p_module   => l_log_module);
150151       END IF;
150152 
150153 --
150154 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
150155 --
150156 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
150157 --
150158 -- set event info as cache for other routines to refer event attributes
150159 --
150160 
150161 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
150162    l_previous_event_id := l_event_id;
150163 
150164    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
150165       (p_application_id           => p_application_id
150166       ,p_primary_ledger_id        => p_primary_ledger_id
150167       ,p_base_ledger_id           => p_base_ledger_id
150168       ,p_target_ledger_id         => p_target_ledger_id
150169       ,p_entity_id                => l_array_entity_id(Idx)
150170       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
150171       ,p_entity_code              => l_array_entity_code(Idx)
150172       ,p_transaction_num          => l_array_transaction_num(Idx)
150173       ,p_event_id                 => l_array_event_id(Idx)
150174       ,p_event_class_code         => l_array_class_code(Idx)
150175       ,p_event_type_code          => l_array_event_type(Idx)
150176       ,p_event_number             => l_array_event_number(Idx)
150177       ,p_event_date               => l_array_event_date(Idx)
150178       ,p_transaction_date         => l_array_transaction_date(Idx)
150179       ,p_reference_num_1          => l_array_reference_num_1(Idx)
150180       ,p_reference_num_2          => l_array_reference_num_2(Idx)
150181       ,p_reference_num_3          => l_array_reference_num_3(Idx)
150182       ,p_reference_num_4          => l_array_reference_num_4(Idx)
150183       ,p_reference_char_1         => l_array_reference_char_1(Idx)
150184       ,p_reference_char_2         => l_array_reference_char_2(Idx)
150185       ,p_reference_char_3         => l_array_reference_char_3(Idx)
150186       ,p_reference_char_4         => l_array_reference_char_4(Idx)
150187       ,p_reference_date_1         => l_array_reference_date_1(Idx)
150188       ,p_reference_date_2         => l_array_reference_date_2(Idx)
150189       ,p_reference_date_3         => l_array_reference_date_3(Idx)
150190       ,p_reference_date_4         => l_array_reference_date_4(Idx)
150191       ,p_event_created_by         => l_array_event_created_by(Idx)
150192       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
150193        --
150194 END IF;
150195 
150196 
150197 
150198 --
150199 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
150200 
150201 l_acct_reversal_source := SUBSTR(NULL, 1,30);
150202 
150203 IF l_continue_with_lines THEN
150204    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
150205       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
150206 
150207       xla_accounting_err_pkg.build_message
150208          (p_appli_s_name            => 'XLA'
150209          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
150210          ,p_token_1                 => 'LINE_NUMBER'
150211          ,p_value_1                 => l_array_extract_line_num(Idx)
150212          ,p_token_2                 => 'PRODUCT_NAME'
150213          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
150214          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
150215          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
150216          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
150217 
150218    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
150219       --
150220       -- following sets the accounting attributes needed to reverse
150221       -- accounting for a distributeion
150222       --
150223 
150224       --
150225       -- 5217187
150226       --
150227       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
150228       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
150229                                        g_array_event(l_event_id).array_value_num('header_index'));
150230       --
150231       --
150232 
150233       -- No reversal code generated
150234 
150235       xla_ae_lines_pkg.SetAcctReversalAttrs
150236          (p_event_id             => l_event_id
150237          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
150238          ,p_calculate_acctd_flag => l_calculate_acctd_flag
150239          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
150240    END IF;
150241 
150242    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
150243        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
150244 
150245 --
150246 AcctLineType_120 (
150247  p_application_id  => p_application_id
150248  ,p_event_id     => l_event_id
150249  ,p_calculate_acctd_flag => l_calculate_acctd_flag
150250  ,p_calculate_g_l_flag => l_calculate_g_l_flag
150251  ,p_actual_flag => l_actual_flag
150252  ,p_balance_type_code => l_balance_type_code
150253  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
150254  
150255  , p_source_4 => l_array_source_4(Idx)
150256  , p_source_11 => l_array_source_11(Idx)
150257  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
150258  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
150259  , p_source_15 => l_array_source_15(Idx)
150260  , p_source_18 => l_array_source_18(Idx)
150261  , p_source_19 => l_array_source_19(Idx)
150262  , p_source_20 => l_array_source_20(Idx)
150263  , p_source_21 => l_array_source_21(Idx)
150264  , p_source_22 => l_array_source_22(Idx)
150265  , p_source_24 => l_array_source_24(Idx)
150266  );
150267 If(l_balance_type_code = 'A') THEN
150268   l_actual_gain_loss_ref := l_gain_or_loss_ref;
150269 END IF;
150270 
150271 --
150272 
150273 
150274 --
150275 AcctLineType_153 (
150276  p_application_id  => p_application_id
150277  ,p_event_id     => l_event_id
150278  ,p_calculate_acctd_flag => l_calculate_acctd_flag
150279  ,p_calculate_g_l_flag => l_calculate_g_l_flag
150280  ,p_actual_flag => l_actual_flag
150281  ,p_balance_type_code => l_balance_type_code
150282  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
150283  
150284  , p_source_4 => l_array_source_4(Idx)
150285  , p_source_11 => l_array_source_11(Idx)
150286  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
150287  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
150288  , p_source_15 => l_array_source_15(Idx)
150289  , p_source_18 => l_array_source_18(Idx)
150290  , p_source_19 => l_array_source_19(Idx)
150291  , p_source_20 => l_array_source_20(Idx)
150292  , p_source_21 => l_array_source_21(Idx)
150293  , p_source_22 => l_array_source_22(Idx)
150294  , p_source_24 => l_array_source_24(Idx)
150295  );
150296 If(l_balance_type_code = 'A') THEN
150297   l_actual_gain_loss_ref := l_gain_or_loss_ref;
150298 END IF;
150299 
150300 --
150301 
150302 
150303 --
150304 AcctLineType_190 (
150305  p_application_id  => p_application_id
150306  ,p_event_id     => l_event_id
150307  ,p_calculate_acctd_flag => l_calculate_acctd_flag
150308  ,p_calculate_g_l_flag => l_calculate_g_l_flag
150309  ,p_actual_flag => l_actual_flag
150310  ,p_balance_type_code => l_balance_type_code
150311  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
150312  
150313  , p_source_4 => l_array_source_4(Idx)
150314  , p_source_11 => l_array_source_11(Idx)
150315  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
150316  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
150317  , p_source_15 => l_array_source_15(Idx)
150318  , p_source_18 => l_array_source_18(Idx)
150319  , p_source_19 => l_array_source_19(Idx)
150320  , p_source_20 => l_array_source_20(Idx)
150321  , p_source_21 => l_array_source_21(Idx)
150322  , p_source_22 => l_array_source_22(Idx)
150323  , p_source_24 => l_array_source_24(Idx)
150324  );
150325 If(l_balance_type_code = 'A') THEN
150326   l_actual_gain_loss_ref := l_gain_or_loss_ref;
150327 END IF;
150328 
150329 --
150330 
150331       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
150332       -- or secondary ledger that has different currency with primary
150333       -- or alc that is calculated by sla
150334       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
150335             (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'))
150336 
150337 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
150338 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
150339           AND (l_actual_flag = 'A')) THEN
150340         XLA_AE_LINES_PKG.CreateGainOrLossLines(
150341           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
150342          ,p_application_id   => p_application_id
150343          ,p_amb_context_code => 'DEFAULT'
150344          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
150345          ,p_event_class_code => C_EVENT_CLASS_CODE
150346          ,p_event_type_code  => C_EVENT_TYPE_CODE
150347          
150348          ,p_gain_ccid        => -1
150349          ,p_loss_ccid        => -1
150350 
150351          ,p_actual_flag      => l_actual_flag
150352          ,p_enc_flag         => null
150353          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
150354          ,p_enc_g_l_ref      => null
150355          );
150356       END IF;
150357    END IF;
150358 END IF;
150359 
150360    ELSE
150361       --
150362       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
150363       --
150364       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150365          trace
150366             (p_msg      => 'Trancaction revesal option is Y'
150367             ,p_level    => C_LEVEL_STATEMENT
150368             ,p_module   => l_log_module);
150369       END IF;
150370    END IF;
150371 
150372 END LOOP;
150373 l_result := XLA_AE_LINES_PKG.InsertLines ;
150374 end loop;
150375 close line_cur;
150376 
150377 
150378 --
150379 -- insert headers into xla_ae_headers_gt table
150380 --
150381 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
150382 
150383 -- insert into errors table here.
150384 
150385 END LOOP;
150386 
150387 --
150388 -- 4865292
150389 --
150390 -- Compare g_hdr_extract_count with event count in
150391 -- CreateHeadersAndLines.
150392 --
150393 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
150394 
150395 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150396    trace (p_msg     => '# rows extracted from header extract objects '
150397                     || ' (running total): '
150398                     || g_hdr_extract_count
150399          ,p_level   => C_LEVEL_STATEMENT
150400          ,p_module  => l_log_module);
150401 END IF;
150402 
150403 CLOSE header_cur;
150404 --
150405 
150406 --
150407 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150408    trace
150409       (p_msg      => 'END of EventClass_258'
150410       ,p_level    => C_LEVEL_PROCEDURE
150411       ,p_module   => l_log_module);
150412 END IF;
150413 --
150414 RETURN l_result;
150415 EXCEPTION
150416 WHEN xla_exceptions_pkg.application_exception THEN
150417    
150418 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
150419 
150420    
150421 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
150422 
150423    RAISE;
150424 
150425 WHEN NO_DATA_FOUND THEN
150426 
150427 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
150428 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
150429 
150430 FOR header_record IN header_cur
150431 LOOP
150432     l_array_header_events(header_record.event_id) := header_record.event_id;
150433 END LOOP;
150434 
150435 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
150436 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
150437 
150438 fnd_file.put_line(fnd_file.LOG, '                    ');
150439 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
150440 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
150441 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
150442 
150443 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
150444 LOOP
150445 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
150446 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
150447         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
150448 	END IF;
150449 END LOOP;
150450 
150451 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
150452 fnd_file.put_line(fnd_file.LOG, '                    ');
150453 
150454 
150455 xla_exceptions_pkg.raise_message
150456       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_258');
150457 
150458 
150459 WHEN OTHERS THEN
150460    xla_exceptions_pkg.raise_message
150461       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_258');
150462 END EventClass_258;
150463 --
150464 
150465 ---------------------------------------
150466 --
150467 -- PRIVATE PROCEDURE
150468 --         insert_sources_259
150469 --
150470 ----------------------------------------
150471 --
150472 PROCEDURE insert_sources_259(
150473                                 p_target_ledger_id       IN NUMBER
150474                               , p_language               IN VARCHAR2
150475                               , p_sla_ledger_id          IN NUMBER
150476                               , p_pad_start_date         IN DATE
150477                               , p_pad_end_date           IN DATE
150478                          )
150479 IS
150480 
150481 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
150482 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT';
150483 p_apps_owner                   VARCHAR2(30);
150484 l_log_module                   VARCHAR2(240);
150485 BEGIN
150486 IF g_log_enabled THEN
150487       l_log_module := C_DEFAULT_MODULE||'.insert_sources_259';
150488 END IF;
150489 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150490 
150491       trace
150492          (p_msg      => 'BEGIN of insert_sources_259'
150493          ,p_level    => C_LEVEL_PROCEDURE
150494          ,p_module   => l_log_module);
150495 
150496 END IF;
150497 
150498 -- select APPS owner
150499 SELECT oracle_username
150500   INTO p_apps_owner
150501   FROM fnd_oracle_userid
150502  WHERE read_only_flag = 'U'
150503 ;
150504 
150505 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150506       trace
150507          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
150508                         ' - p_language = '||p_language||
150509                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
150510                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
150511                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
150512                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
150513          ,p_level    => C_LEVEL_STATEMENT
150514          ,p_module   => l_log_module);
150515 END IF;
150516 
150517 
150518 --
150519 INSERT INTO xla_diag_sources --hdr2
150520 (
150521         event_id
150522       , ledger_id
150523       , sla_ledger_id
150524       , description_language
150525       , object_name
150526       , object_type_code
150527       , line_number
150528       , source_application_id
150529       , source_type_code
150530       , source_code
150531       , source_value
150532       , source_meaning
150533       , created_by
150534       , creation_date
150535       , last_update_date
150536       , last_updated_by
150537       , last_update_login
150538       , program_update_date
150539       , program_application_id
150540       , program_id
150541       , request_id
150542 )
150543 SELECT
150544         event_id
150545       , p_target_ledger_id
150546       , p_sla_ledger_id
150547       , p_language
150548       , object_name
150549       , object_type_code
150550       , line_number
150551       , source_application_id
150552       , source_type_code
150553       , source_code
150554       , SUBSTR(source_value ,1,1996)
150555       , SUBSTR(source_meaning ,1,200)
150556       , xla_environment_pkg.g_Usr_Id
150557       , TRUNC(SYSDATE)
150558       , TRUNC(SYSDATE)
150559       , xla_environment_pkg.g_Usr_Id
150560       , xla_environment_pkg.g_Login_Id
150561       , TRUNC(SYSDATE)
150562       , xla_environment_pkg.g_Prog_Appl_Id
150563       , xla_environment_pkg.g_Prog_Id
150564       , xla_environment_pkg.g_Req_Id
150565   FROM (
150566        SELECT xet.event_id                  event_id
150567             , 0                          line_number
150568             , CASE r
150569                WHEN 1 THEN 'CST_XLA_INV_REF_V' 
150570                 WHEN 2 THEN 'CST_XLA_INV_REF_V' 
150571                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
150572                 WHEN 4 THEN 'CST_XLA_INV_HEADERS_V' 
150573                 WHEN 5 THEN 'CST_XLA_INV_REF_V' 
150574                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
150575                 WHEN 7 THEN 'PSA_CST_XLA_UPG_V' 
150576                 WHEN 8 THEN 'CST_XLA_INV_REF_V' 
150577                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
150578                 WHEN 10 THEN 'PO_REQ_DISTS_REF_V' 
150579                 WHEN 11 THEN 'PO_REQ_HEADERS_REF_V' 
150580                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
150581                 
150582                ELSE null
150583               END                           object_name
150584             , CASE r
150585                 WHEN 1 THEN 'HEADER' 
150586                 WHEN 2 THEN 'HEADER' 
150587                 WHEN 3 THEN 'HEADER' 
150588                 WHEN 4 THEN 'HEADER' 
150589                 WHEN 5 THEN 'HEADER' 
150590                 WHEN 6 THEN 'HEADER' 
150591                 WHEN 7 THEN 'HEADER' 
150592                 WHEN 8 THEN 'HEADER' 
150593                 WHEN 9 THEN 'HEADER' 
150594                 WHEN 10 THEN 'HEADER' 
150595                 WHEN 11 THEN 'HEADER' 
150596                 WHEN 12 THEN 'HEADER' 
150597                 
150598                 ELSE null
150599               END                           object_type_code
150600             , CASE r
150601                 WHEN 1 THEN '707' 
150602                 WHEN 2 THEN '707' 
150603                 WHEN 3 THEN '707' 
150604                 WHEN 4 THEN '707' 
150605                 WHEN 5 THEN '707' 
150606                 WHEN 6 THEN '707' 
150607                 WHEN 7 THEN '707' 
150608                 WHEN 8 THEN '707' 
150609                 WHEN 9 THEN '707' 
150610                 WHEN 10 THEN '201' 
150611                 WHEN 11 THEN '201' 
150612                 WHEN 12 THEN '707' 
150613                 
150614                 ELSE null
150615               END                           source_application_id
150616             , 'S'             source_type_code
150617             , CASE r
150618                 WHEN 1 THEN 'APPLIED_TO_APPL_ID' 
150619                 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
150620                 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE' 
150621                 WHEN 4 THEN 'DISTRIBUTION_TYPE' 
150622                 WHEN 5 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
150623                 WHEN 6 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
150624                 WHEN 7 THEN 'CST_ENCUM_UPG_OPTION' 
150625                 WHEN 8 THEN 'TXN_PO_DISTRIBUTION_ID' 
150626                 WHEN 9 THEN 'TXN_PO_HEADER_ID' 
150627                 WHEN 10 THEN 'REQ_BUDGET_ACCOUNT' 
150628                 WHEN 11 THEN 'REQ_ENCUMBRANCE_TYPE_ID' 
150629                 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR' 
150630                 
150631                 ELSE null
150632               END                           source_code
150633             , CASE r
150634                 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
150635                 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
150636                 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
150637                 WHEN 4 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
150638                 WHEN 5 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
150639                 WHEN 6 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
150640                 WHEN 7 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
150641                 WHEN 8 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
150642                 WHEN 9 THEN TO_CHAR(h3.TXN_PO_HEADER_ID)
150643                 WHEN 10 THEN TO_CHAR(h4.REQ_BUDGET_ACCOUNT)
150644                 WHEN 11 THEN TO_CHAR(h5.REQ_ENCUMBRANCE_TYPE_ID)
150645                 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
150646                 
150647                 ELSE null
150648               END                           source_value
150649             , CASE r
150650                 WHEN 4 THEN fvl12.meaning
150651                 WHEN 12 THEN fvl38.meaning
150652                 
150653                 ELSE null
150654               END               source_meaning
150655          FROM xla_events_gt     xet  
150656       , CST_XLA_INV_HEADERS_V  h1
150657       , CST_XLA_INV_REF_V  h3
150658       , PO_REQ_DISTS_REF_V  h4
150659       , PO_REQ_HEADERS_REF_V  h5
150660       , PSA_CST_XLA_UPG_V  h6
150661   , fnd_lookup_values    fvl12
150662   , fnd_lookup_values    fvl38
150663              ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
150664          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
150665            AND xet.event_class_code = C_EVENT_CLASS_CODE
150666               AND h1.event_id = xet.event_id
150667  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'
150668   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
150669   AND fvl12.view_application_id(+) = 700
150670   AND fvl12.language(+)            = USERENV('LANG')
150671      AND fvl38.lookup_type(+)         = 'YES_NO'
150672   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
150673   AND fvl38.view_application_id(+) = 0
150674   AND fvl38.language(+)            = USERENV('LANG')
150675   
150676 )
150677 ;
150678 --
150679 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150680 
150681       trace
150682          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
150683          ,p_level    => C_LEVEL_STATEMENT
150684          ,p_module   => l_log_module);
150685 
150686 END IF;
150687 --
150688 
150689 
150690 
150691 --
150692 INSERT INTO xla_diag_sources  --line2
150693 (
150694         event_id
150695       , ledger_id
150696       , sla_ledger_id
150697       , description_language
150698       , object_name
150699       , object_type_code
150700       , line_number
150701       , source_application_id
150702       , source_type_code
150703       , source_code
150704       , source_value
150705       , source_meaning
150706       , created_by
150707       , creation_date
150708       , last_update_date
150709       , last_updated_by
150710       , last_update_login
150711       , program_update_date
150712       , program_application_id
150713       , program_id
150714       , request_id
150715 )
150716 SELECT  event_id
150717       , p_target_ledger_id
150718       , p_sla_ledger_id
150719       , p_language
150720       , object_name
150721       , object_type_code
150722       , line_number
150723       , source_application_id
150724       , source_type_code
150725       , source_code
150726       , SUBSTR(source_value,1,1996)
150727       , SUBSTR(source_meaning ,1,200)
150728       , xla_environment_pkg.g_Usr_Id
150729       , TRUNC(SYSDATE)
150730       , TRUNC(SYSDATE)
150731       , xla_environment_pkg.g_Usr_Id
150732       , xla_environment_pkg.g_Login_Id
150733       , TRUNC(SYSDATE)
150734       , xla_environment_pkg.g_Prog_Appl_Id
150735       , xla_environment_pkg.g_Prog_Id
150736       , xla_environment_pkg.g_Req_Id
150737   FROM (
150738        SELECT xet.event_id                  event_id
150739             , l2.line_number                 line_number
150740             , CASE r
150741                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
150742                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
150743                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
150744                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
150745                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
150746                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
150747                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
150748                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
150749                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
150750                 
150751                ELSE null
150752               END                           object_name
150753             , CASE r
150754                 WHEN 1 THEN 'LINE' 
150755                 WHEN 2 THEN 'LINE' 
150756                 WHEN 3 THEN 'LINE' 
150757                 WHEN 4 THEN 'LINE' 
150758                 WHEN 5 THEN 'LINE' 
150759                 WHEN 6 THEN 'LINE' 
150760                 WHEN 7 THEN 'LINE' 
150761                 WHEN 8 THEN 'LINE' 
150762                 WHEN 9 THEN 'LINE' 
150763                 
150764                 ELSE null
150765               END                           object_type_code
150766             , CASE r
150767                 WHEN 1 THEN '707' 
150768                 WHEN 2 THEN '707' 
150769                 WHEN 3 THEN '707' 
150770                 WHEN 4 THEN '707' 
150771                 WHEN 5 THEN '707' 
150772                 WHEN 6 THEN '707' 
150773                 WHEN 7 THEN '707' 
150774                 WHEN 8 THEN '707' 
150775                 WHEN 9 THEN '707' 
150776                 
150777                 ELSE null
150778               END                           source_application_id
150779             , 'S'             source_type_code
150780             , CASE r
150781                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
150782                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
150783                 WHEN 3 THEN 'CURRENCY_CODE' 
150784                 WHEN 4 THEN 'ENTERED_AMOUNT' 
150785                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
150786                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
150787                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
150788                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
150789                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
150790                 
150791                 ELSE null
150792               END                           source_code
150793             , CASE r
150794                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
150795                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
150796                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
150797                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
150798                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
150799                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
150800                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
150801                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
150802                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
150803                 
150804                 ELSE null
150805               END                           source_value
150806             , null              source_meaning
150807          FROM  xla_events_gt     xet  
150808         , CST_XLA_INV_LINES_V  l2
150809             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
150810         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
150811           AND xet.event_class_code = C_EVENT_CLASS_CODE
150812             AND l2.event_id          = xet.event_id
150813 
150814 )
150815 ;
150816 --
150817 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150818 
150819       trace
150820          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
150821          ,p_level    => C_LEVEL_STATEMENT
150822          ,p_module   => l_log_module);
150823 
150824 END IF;
150825 
150826 
150827 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150828       trace
150829          (p_msg      => 'END of insert_sources_259'
150830          ,p_level    => C_LEVEL_PROCEDURE
150831          ,p_module   => l_log_module);
150832 END IF;
150833 EXCEPTION
150834   WHEN xla_exceptions_pkg.application_exception THEN
150835       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
150836             trace
150837                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
150838                ,p_level    => C_LEVEL_EXCEPTION
150839                ,p_module   => l_log_module);
150840       END IF;
150841       RAISE;
150842   WHEN OTHERS THEN
150843       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
150844             trace
150845                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
150846                ,p_level    => C_LEVEL_EXCEPTION
150847                ,p_module   => l_log_module);
150848        END IF;
150849        xla_exceptions_pkg.raise_message
150850            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_259');
150851 END insert_sources_259;
150852 --
150853 
150854 ---------------------------------------
150855 --
150856 -- PRIVATE FUNCTION
150857 --         EventClass_259
150858 --
150859 ----------------------------------------
150860 --
150861 FUNCTION EventClass_259
150862        (p_application_id         IN NUMBER
150863        ,p_base_ledger_id         IN NUMBER
150864        ,p_target_ledger_id       IN NUMBER
150865        ,p_language               IN VARCHAR2
150866        ,p_currency_code          IN VARCHAR2
150867        ,p_sla_ledger_id          IN NUMBER
150868        ,p_pad_start_date         IN DATE
150869        ,p_pad_end_date           IN DATE
150870        ,p_primary_ledger_id      IN NUMBER)
150871 RETURN BOOLEAN IS
150872 --
150873 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
150874 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT';
150875 
150876 l_calculate_acctd_flag   VARCHAR2(1) :='N';
150877 l_calculate_g_l_flag     VARCHAR2(1) :='N';
150878 --
150879 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150880 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150881 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150882 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150883 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150884 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150885 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150886 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150887 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150888 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150889 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150890 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150891 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150892 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150893 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150894 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150895 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150896 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150897 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150898 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150899 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150900 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150901 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
150902 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150903 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
150904 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
150905 
150906 l_event_id                             NUMBER;
150907 l_previous_event_id                    NUMBER;
150908 l_first_event_id                       NUMBER;
150909 l_last_event_id                        NUMBER;
150910 
150911 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
150912 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
150913 --
150914 --
150915 l_result                    BOOLEAN := TRUE;
150916 l_rows                      NUMBER  := 1000;
150917 l_event_type_name           VARCHAR2(80) := 'All';
150918 l_event_class_name          VARCHAR2(80) := 'Intransit Interorg Receipt for FOB Shipment';
150919 l_description               VARCHAR2(4000);
150920 l_transaction_reversal      NUMBER;
150921 l_ae_header_id              NUMBER;
150922 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
150923 l_log_module                VARCHAR2(240);
150924 --
150925 l_acct_reversal_source      VARCHAR2(30);
150926 l_trx_reversal_source       VARCHAR2(30);
150927 
150928 l_continue_with_lines       BOOLEAN := TRUE;
150929 --
150930 l_acc_rev_gl_date_source    DATE;                      -- 4262811
150931 --
150932 type t_array_event_id is table of number index by binary_integer;
150933 
150934 l_rec_array_event                    t_rec_array_event;
150935 l_null_rec_array_event               t_rec_array_event;
150936 l_array_ae_header_id                 xla_number_array_type;
150937 l_actual_flag                        VARCHAR2(1) := NULL;
150938 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
150939 l_balance_type_code                  VARCHAR2(1) :=NULL;
150940 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
150941 
150942 --
150943 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
150944 --
150945 
150946 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
150947 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
150948 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
150949 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
150950 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
150951 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
150952 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
150953 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
150954 TYPE t_array_source_29 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
150955 TYPE t_array_source_30 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
150956 TYPE t_array_source_31 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
150957 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
150958 
150959 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
150960 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
150961 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
150962 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
150963 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
150964 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
150965 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
150966 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
150967 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
150968 
150969 l_array_source_6              t_array_source_6;
150970 l_array_source_7              t_array_source_7;
150971 l_array_source_8              t_array_source_8;
150972 l_array_source_12              t_array_source_12;
150973 l_array_source_12_meaning      t_array_lookup_meaning;
150974 l_array_source_14              t_array_source_14;
150975 l_array_source_16              t_array_source_16;
150976 l_array_source_27              t_array_source_27;
150977 l_array_source_28              t_array_source_28;
150978 l_array_source_29              t_array_source_29;
150979 l_array_source_30              t_array_source_30;
150980 l_array_source_31              t_array_source_31;
150981 l_array_source_38              t_array_source_38;
150982 l_array_source_38_meaning      t_array_lookup_meaning;
150983 
150984 l_array_source_4      t_array_source_4;
150985 l_array_source_11      t_array_source_11;
150986 l_array_source_15      t_array_source_15;
150987 l_array_source_18      t_array_source_18;
150988 l_array_source_19      t_array_source_19;
150989 l_array_source_20      t_array_source_20;
150990 l_array_source_21      t_array_source_21;
150991 l_array_source_22      t_array_source_22;
150992 l_array_source_24      t_array_source_24;
150993 
150994 --
150995 CURSOR header_cur
150996 IS
150997 SELECT /*+ leading(xet) cardinality(xet,1) */
150998 -- Event Class Code: FOB_SHIP_RECIPIENT_RCPT
150999     xet.entity_id
151000    ,xet.legal_entity_id
151001    ,xet.entity_code
151002    ,xet.transaction_number
151003    ,xet.event_id
151004    ,xet.event_class_code
151005    ,xet.event_type_code
151006    ,xet.event_number
151007    ,xet.event_date
151008    ,xet.transaction_date
151009    ,xet.reference_num_1
151010    ,xet.reference_num_2
151011    ,xet.reference_num_3
151012    ,xet.reference_num_4
151013    ,xet.reference_char_1
151014    ,xet.reference_char_2
151015    ,xet.reference_char_3
151016    ,xet.reference_char_4
151017    ,xet.reference_date_1
151018    ,xet.reference_date_2
151019    ,xet.reference_date_3
151020    ,xet.reference_date_4
151021    ,xet.event_created_by
151022    ,xet.budgetary_control_flag 
151023   , h3.APPLIED_TO_APPL_ID    source_6
151024   , h3.APPLIED_TO_DIST_LINK_TYPE    source_7
151025   , h3.APPLIED_TO_ENTITY_CODE    source_8
151026   , h1.DISTRIBUTION_TYPE    source_12
151027   , fvl12.meaning   source_12_meaning
151028   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_14
151029   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_16
151030   , h6.CST_ENCUM_UPG_OPTION    source_27
151031   , h3.TXN_PO_DISTRIBUTION_ID    source_28
151032   , h3.TXN_PO_HEADER_ID    source_29
151033   , h4.REQ_BUDGET_ACCOUNT    source_30
151034   , h5.REQ_ENCUMBRANCE_TYPE_ID    source_31
151035   , h1.TRANSFER_TO_GL_INDICATOR    source_38
151036   , fvl38.meaning   source_38_meaning
151037   FROM xla_events_gt     xet 
151038   , CST_XLA_INV_HEADERS_V  h1
151039   , CST_XLA_INV_REF_V  h3
151040   , PO_REQ_DISTS_REF_V  h4
151041   , PO_REQ_HEADERS_REF_V  h5
151042   , PSA_CST_XLA_UPG_V  h6
151043   , fnd_lookup_values    fvl12
151044   , fnd_lookup_values    fvl38
151045  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
151046    and xet.event_class_code = C_EVENT_CLASS_CODE
151047    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
151048  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'
151049   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
151050   AND fvl12.view_application_id(+) = 700
151051   AND fvl12.language(+)            = USERENV('LANG')
151052      AND fvl38.lookup_type(+)         = 'YES_NO'
151053   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
151054   AND fvl38.view_application_id(+) = 0
151055   AND fvl38.language(+)            = USERENV('LANG')
151056   
151057  ORDER BY event_id
151058 ;
151059 
151060 
151061 --
151062 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
151063 IS
151064 SELECT  /*+ leading(xet) cardinality(xet,1) */
151065 -- Event Class Code: FOB_SHIP_RECIPIENT_RCPT
151066     xet.entity_id
151067    ,xet.legal_entity_id
151068    ,xet.entity_code
151069    ,xet.transaction_number
151070    ,xet.event_id
151071    ,xet.event_class_code
151072    ,xet.event_type_code
151073    ,xet.event_number
151074    ,xet.event_date
151075    ,xet.transaction_date
151076    ,xet.reference_num_1
151077    ,xet.reference_num_2
151078    ,xet.reference_num_3
151079    ,xet.reference_num_4
151080    ,xet.reference_char_1
151081    ,xet.reference_char_2
151082    ,xet.reference_char_3
151083    ,xet.reference_char_4
151084    ,xet.reference_date_1
151085    ,xet.reference_date_2
151086    ,xet.reference_date_3
151087    ,xet.reference_date_4
151088    ,xet.event_created_by
151089    ,xet.budgetary_control_flag
151090  , l2.LINE_NUMBER  
151091   , l2.CODE_COMBINATION_ID    source_4
151092   , l2.DISTRIBUTION_IDENTIFIER    source_11
151093   , l2.CURRENCY_CODE    source_15
151094   , l2.ENTERED_AMOUNT    source_18
151095   , l2.CURRENCY_CONVERSION_DATE    source_19
151096   , l2.CURRENCY_CONVERSION_RATE    source_20
151097   , l2.CURRENCY_CONVERSION_TYPE    source_21
151098   , l2.ACCOUNTED_AMOUNT    source_22
151099   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
151100   FROM xla_events_gt     xet 
151101   , CST_XLA_INV_LINES_V  l2
151102  WHERE xet.event_id between x_first_event_id and x_last_event_id
151103    and xet.event_date between p_pad_start_date and p_pad_end_date
151104    and xet.event_class_code = C_EVENT_CLASS_CODE
151105    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
151106 ;
151107 
151108 --
151109 BEGIN
151110 IF g_log_enabled THEN
151111    l_log_module := C_DEFAULT_MODULE||'.EventClass_259';
151112 END IF;
151113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151114    trace
151115       (p_msg      => 'BEGIN of EventClass_259'
151116       ,p_level    => C_LEVEL_PROCEDURE
151117       ,p_module   => l_log_module);
151118 END IF;
151119 
151120 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151121    trace
151122       (p_msg      => 'p_application_id = '||p_application_id||
151123                      ' - p_base_ledger_id = '||p_base_ledger_id||
151124                      ' - p_target_ledger_id  = '||p_target_ledger_id||
151125                      ' - p_language = '||p_language||
151126                      ' - p_currency_code = '||p_currency_code||
151127                      ' - p_sla_ledger_id = '||p_sla_ledger_id
151128       ,p_level    => C_LEVEL_STATEMENT
151129       ,p_module   => l_log_module);
151130 END IF;
151131 --
151132 -- initialze arrays
151133 --
151134 g_array_event.DELETE;
151135 l_rec_array_event := l_null_rec_array_event;
151136 --
151137 --------------------------------------
151138 -- 4262811 Initialze MPA Line Number
151139 --------------------------------------
151140 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
151141 
151142 --
151143 
151144 --
151145 OPEN header_cur;
151146 --
151147 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151148    trace
151149    (p_msg      => 'SQL - FETCH header_cur'
151150    ,p_level    => C_LEVEL_STATEMENT
151151    ,p_module   => l_log_module);
151152 END IF;
151153 --
151154 LOOP
151155 FETCH header_cur BULK COLLECT INTO
151156         l_array_entity_id
151157       , l_array_legal_entity_id
151158       , l_array_entity_code
151159       , l_array_transaction_num
151160       , l_array_event_id
151161       , l_array_class_code
151162       , l_array_event_type
151163       , l_array_event_number
151164       , l_array_event_date
151165       , l_array_transaction_date
151166       , l_array_reference_num_1
151167       , l_array_reference_num_2
151168       , l_array_reference_num_3
151169       , l_array_reference_num_4
151170       , l_array_reference_char_1
151171       , l_array_reference_char_2
151172       , l_array_reference_char_3
151173       , l_array_reference_char_4
151174       , l_array_reference_date_1
151175       , l_array_reference_date_2
151176       , l_array_reference_date_3
151177       , l_array_reference_date_4
151178       , l_array_event_created_by
151179       , l_array_budgetary_control_flag 
151180       , l_array_source_6
151181       , l_array_source_7
151182       , l_array_source_8
151183       , l_array_source_12
151184       , l_array_source_12_meaning
151185       , l_array_source_14
151186       , l_array_source_16
151187       , l_array_source_27
151188       , l_array_source_28
151189       , l_array_source_29
151190       , l_array_source_30
151191       , l_array_source_31
151192       , l_array_source_38
151193       , l_array_source_38_meaning
151194       LIMIT l_rows;
151195 --
151196 IF (C_LEVEL_EVENT >= g_log_level) THEN
151197    trace
151198    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
151199    ,p_level    => C_LEVEL_EVENT
151200    ,p_module   => l_log_module);
151201 END IF;
151202 --
151203 EXIT WHEN l_array_entity_id.COUNT = 0;
151204 
151205 -- initialize arrays
151206 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
151207 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
151208 
151209 --
151210 -- Bug 4458708
151211 --
151212 XLA_AE_LINES_PKG.g_LineNumber := 0;
151213 
151214 
151215 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
151216 g_last_hdr_idx := l_array_event_id.LAST;
151217 --
151218 -- loop for the headers. Each iteration is for each header extract row
151219 -- fetched in header cursor
151220 --
151221 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
151222 
151223 --
151224 -- set event info as cache for other routines to refer event attributes
151225 --
151226 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
151227    (p_application_id           => p_application_id
151228    ,p_primary_ledger_id        => p_primary_ledger_id
151229    ,p_base_ledger_id           => p_base_ledger_id
151230    ,p_target_ledger_id         => p_target_ledger_id
151231    ,p_entity_id                => l_array_entity_id(hdr_idx)
151232    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
151233    ,p_entity_code              => l_array_entity_code(hdr_idx)
151234    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
151235    ,p_event_id                 => l_array_event_id(hdr_idx)
151236    ,p_event_class_code         => l_array_class_code(hdr_idx)
151237    ,p_event_type_code          => l_array_event_type(hdr_idx)
151238    ,p_event_number             => l_array_event_number(hdr_idx)
151239    ,p_event_date               => l_array_event_date(hdr_idx)
151240    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
151241    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
151242    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
151243    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
151244    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
151245    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
151246    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
151247    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
151248    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
151249    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
151250    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
151251    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
151252    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
151253    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
151254    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
151255 
151256 --
151257 -- set the status of entry to C_VALID (0)
151258 --
151259 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
151260 
151261 --
151262 -- initialize a row for ae header
151263 --
151264 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
151265 
151266 l_event_id := l_array_event_id(hdr_idx);
151267 
151268 --
151269 -- storing the hdr_idx for event. May be used by line cursor.
151270 --
151271 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
151272 
151273 --
151274 -- store sources from header extract. This can be improved to
151275 -- store only those sources from header extract that may be used in lines
151276 --
151277 
151278 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
151279 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
151280 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
151281 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
151282 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
151283 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
151284 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
151285 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
151286 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
151287 g_array_event(l_event_id).array_value_num('source_29') := l_array_source_29(hdr_idx);
151288 g_array_event(l_event_id).array_value_num('source_30') := l_array_source_30(hdr_idx);
151289 g_array_event(l_event_id).array_value_num('source_31') := l_array_source_31(hdr_idx);
151290 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
151291 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
151292 
151293 --
151294 -- initilaize the status of ae headers for diffrent balance types
151295 -- the status is initialised to C_NOT_CREATED (2)
151296 --
151297 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
151298 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
151299 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
151300 
151301 --
151302 -- call api to validate and store accounting attributes for header
151303 --
151304 
151305 ------------------------------------------------------------
151306 -- Accrual Reversal : to get date for Standard Source (NONE)
151307 ------------------------------------------------------------
151308 l_acc_rev_gl_date_source := NULL;
151309 
151310      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
151311       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_31');
151312      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
151313       l_rec_acct_attrs.array_date_value(2) := 
151314 xla_ae_sources_pkg.GetSystemSourceDate(
151315    p_source_code           => 'XLA_REFERENCE_DATE_1'
151316  , p_source_type_code      => 'Y'
151317  , p_source_application_id =>  602
151318 );
151319      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
151320       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
151321 
151322 
151323 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
151324 
151325 XLA_AE_HEADER_PKG.SetJeCategoryName;
151326 
151327 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
151328 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
151329 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
151330 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
151331 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
151332 
151333 
151334 -- No header level analytical criteria
151335 
151336 --
151337 --accounting attribute enhancement, bug 3612931
151338 --
151339 l_trx_reversal_source := SUBSTR(NULL, 1,30);
151340 
151341 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
151342    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
151343 
151344    xla_accounting_err_pkg.build_message
151345       (p_appli_s_name            => 'XLA'
151346       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
151347       ,p_token_1                 => 'ACCT_ATTR_NAME'
151348       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
151349       ,p_token_2                 => 'PRODUCT_NAME'
151350       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
151351       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
151352       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
151353       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
151354 
151355 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
151356    --
151357    -- following sets the accounting attributes needed to reverse
151358    -- accounting for a distributeion
151359    --
151360    xla_ae_lines_pkg.SetTrxReversalAttrs
151361       (p_event_id              => l_event_id
151362       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
151363       ,p_trx_reversal_source   => l_trx_reversal_source);
151364 
151365 END IF;
151366 
151367 
151368 ----------------------------------------------------------------
151369 -- 4262811 -  update the header statuses to invalid in need be
151370 ----------------------------------------------------------------
151371 --
151372 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
151373 
151374 
151375   -----------------------------------------------
151376   -- No accrual reversal for the event class/type
151377   -----------------------------------------------
151378 ----------------------------------------------------------------
151379 
151380 --
151381 -- this ends the header loop iteration for one bulk fetch
151382 --
151383 END LOOP;
151384 
151385 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
151386 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
151387 
151388 --
151389 -- insert dummy rows into lines gt table that were created due to
151390 -- transaction reversals
151391 --
151392 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
151393    l_result := XLA_AE_LINES_PKG.InsertLines;
151394 END IF;
151395 
151396 --
151397 -- reset the temp_line_num for each set of events fetched from header
151398 -- cursor rather than doing it for each new event in line cursor
151399 -- Bug 3939231
151400 --
151401 xla_ae_lines_pkg.g_temp_line_num := 0;
151402 
151403 
151404 
151405 --
151406 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
151407 --
151408 --
151409 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151410 
151411       trace
151412          (p_msg      => 'SQL - FETCH line_cur'
151413          ,p_level    => C_LEVEL_STATEMENT
151414          ,p_module   => l_log_module);
151415 
151416 END IF;
151417 --
151418 --
151419 LOOP
151420   --
151421   FETCH line_cur BULK COLLECT INTO
151422         l_array_entity_id
151423       , l_array_legal_entity_id
151424       , l_array_entity_code
151425       , l_array_transaction_num
151426       , l_array_event_id
151427       , l_array_class_code
151428       , l_array_event_type
151429       , l_array_event_number
151430       , l_array_event_date
151431       , l_array_transaction_date
151432       , l_array_reference_num_1
151433       , l_array_reference_num_2
151434       , l_array_reference_num_3
151435       , l_array_reference_num_4
151436       , l_array_reference_char_1
151437       , l_array_reference_char_2
151438       , l_array_reference_char_3
151439       , l_array_reference_char_4
151440       , l_array_reference_date_1
151441       , l_array_reference_date_2
151442       , l_array_reference_date_3
151443       , l_array_reference_date_4
151444       , l_array_event_created_by
151445       , l_array_budgetary_control_flag
151446       , l_array_extract_line_num 
151447       , l_array_source_4
151448       , l_array_source_11
151449       , l_array_source_15
151450       , l_array_source_18
151451       , l_array_source_19
151452       , l_array_source_20
151453       , l_array_source_21
151454       , l_array_source_22
151455       , l_array_source_24
151456       LIMIT l_rows;
151457 
151458   --
151459   IF (C_LEVEL_EVENT >= g_log_level) THEN
151460             trace
151461                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
151462                ,p_level    => C_LEVEL_EVENT
151463                ,p_module   => l_log_module);
151464   END IF;
151465   --
151466   EXIT WHEN l_array_entity_id.count = 0;
151467 
151468   XLA_AE_LINES_PKG.g_rec_lines := null;
151469 
151470 --
151471 -- Bug 4458708
151472 --
151473 XLA_AE_LINES_PKG.g_LineNumber := 0;
151474 --
151475 --
151476 
151477 FOR Idx IN 1..l_array_event_id.count LOOP
151478    --
151479    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
151480    --
151481    l_event_id := l_array_event_id(idx);  -- 5648433
151482 
151483    --
151484    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
151485    --
151486 
151487    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
151488              (g_array_event(l_event_id).array_value_num('header_index'))
151489          ,'N'
151490          ) <> 'Y'
151491    THEN
151492       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151493          trace
151494             (p_msg      => 'Trancaction revesal option is not Y '
151495             ,p_level    => C_LEVEL_STATEMENT
151496             ,p_module   => l_log_module);
151497       END IF;
151498 
151499 --
151500 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
151501 --
151502 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
151503 --
151504 -- set event info as cache for other routines to refer event attributes
151505 --
151506 
151507 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
151508    l_previous_event_id := l_event_id;
151509 
151510    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
151511       (p_application_id           => p_application_id
151512       ,p_primary_ledger_id        => p_primary_ledger_id
151513       ,p_base_ledger_id           => p_base_ledger_id
151514       ,p_target_ledger_id         => p_target_ledger_id
151515       ,p_entity_id                => l_array_entity_id(Idx)
151516       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
151517       ,p_entity_code              => l_array_entity_code(Idx)
151518       ,p_transaction_num          => l_array_transaction_num(Idx)
151519       ,p_event_id                 => l_array_event_id(Idx)
151520       ,p_event_class_code         => l_array_class_code(Idx)
151521       ,p_event_type_code          => l_array_event_type(Idx)
151522       ,p_event_number             => l_array_event_number(Idx)
151523       ,p_event_date               => l_array_event_date(Idx)
151524       ,p_transaction_date         => l_array_transaction_date(Idx)
151525       ,p_reference_num_1          => l_array_reference_num_1(Idx)
151526       ,p_reference_num_2          => l_array_reference_num_2(Idx)
151527       ,p_reference_num_3          => l_array_reference_num_3(Idx)
151528       ,p_reference_num_4          => l_array_reference_num_4(Idx)
151529       ,p_reference_char_1         => l_array_reference_char_1(Idx)
151530       ,p_reference_char_2         => l_array_reference_char_2(Idx)
151531       ,p_reference_char_3         => l_array_reference_char_3(Idx)
151532       ,p_reference_char_4         => l_array_reference_char_4(Idx)
151533       ,p_reference_date_1         => l_array_reference_date_1(Idx)
151534       ,p_reference_date_2         => l_array_reference_date_2(Idx)
151535       ,p_reference_date_3         => l_array_reference_date_3(Idx)
151536       ,p_reference_date_4         => l_array_reference_date_4(Idx)
151537       ,p_event_created_by         => l_array_event_created_by(Idx)
151538       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
151539        --
151540 END IF;
151541 
151542 
151543 
151544 --
151545 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
151546 
151547 l_acct_reversal_source := SUBSTR(NULL, 1,30);
151548 
151549 IF l_continue_with_lines THEN
151550    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
151551       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
151552 
151553       xla_accounting_err_pkg.build_message
151554          (p_appli_s_name            => 'XLA'
151555          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
151556          ,p_token_1                 => 'LINE_NUMBER'
151557          ,p_value_1                 => l_array_extract_line_num(Idx)
151558          ,p_token_2                 => 'PRODUCT_NAME'
151559          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
151560          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
151561          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
151562          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
151563 
151564    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
151565       --
151566       -- following sets the accounting attributes needed to reverse
151567       -- accounting for a distributeion
151568       --
151569 
151570       --
151571       -- 5217187
151572       --
151573       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
151574       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
151575                                        g_array_event(l_event_id).array_value_num('header_index'));
151576       --
151577       --
151578 
151579       -- No reversal code generated
151580 
151581       xla_ae_lines_pkg.SetAcctReversalAttrs
151582          (p_event_id             => l_event_id
151583          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
151584          ,p_calculate_acctd_flag => l_calculate_acctd_flag
151585          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
151586    END IF;
151587 
151588    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
151589        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
151590 
151591 --
151592 AcctLineType_119 (
151593  p_application_id  => p_application_id
151594  ,p_event_id     => l_event_id
151595  ,p_calculate_acctd_flag => l_calculate_acctd_flag
151596  ,p_calculate_g_l_flag => l_calculate_g_l_flag
151597  ,p_actual_flag => l_actual_flag
151598  ,p_balance_type_code => l_balance_type_code
151599  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151600  
151601  , p_source_4 => l_array_source_4(Idx)
151602  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
151603  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
151604  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
151605  , p_source_11 => l_array_source_11(Idx)
151606  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151607  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151608  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
151609  , p_source_15 => l_array_source_15(Idx)
151610  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
151611  , p_source_18 => l_array_source_18(Idx)
151612  , p_source_19 => l_array_source_19(Idx)
151613  , p_source_20 => l_array_source_20(Idx)
151614  , p_source_21 => l_array_source_21(Idx)
151615  , p_source_22 => l_array_source_22(Idx)
151616  , p_source_24 => l_array_source_24(Idx)
151617  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
151618  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
151619  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
151620  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
151621  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
151622  );
151623 If(l_balance_type_code = 'A') THEN
151624   l_actual_gain_loss_ref := l_gain_or_loss_ref;
151625 END IF;
151626 
151627 --
151628 
151629 
151630 --
151631 AcctLineType_145 (
151632  p_application_id  => p_application_id
151633  ,p_event_id     => l_event_id
151634  ,p_calculate_acctd_flag => l_calculate_acctd_flag
151635  ,p_calculate_g_l_flag => l_calculate_g_l_flag
151636  ,p_actual_flag => l_actual_flag
151637  ,p_balance_type_code => l_balance_type_code
151638  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151639  
151640  , p_source_4 => l_array_source_4(Idx)
151641  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
151642  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
151643  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
151644  , p_source_11 => l_array_source_11(Idx)
151645  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151646  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151647  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
151648  , p_source_15 => l_array_source_15(Idx)
151649  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
151650  , p_source_18 => l_array_source_18(Idx)
151651  , p_source_19 => l_array_source_19(Idx)
151652  , p_source_20 => l_array_source_20(Idx)
151653  , p_source_21 => l_array_source_21(Idx)
151654  , p_source_22 => l_array_source_22(Idx)
151655  , p_source_24 => l_array_source_24(Idx)
151656  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
151657  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
151658  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
151659  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
151660  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
151661  );
151662 If(l_balance_type_code = 'A') THEN
151663   l_actual_gain_loss_ref := l_gain_or_loss_ref;
151664 END IF;
151665 
151666 --
151667 
151668 
151669 --
151670 AcctLineType_202 (
151671  p_application_id  => p_application_id
151672  ,p_event_id     => l_event_id
151673  ,p_calculate_acctd_flag => l_calculate_acctd_flag
151674  ,p_calculate_g_l_flag => l_calculate_g_l_flag
151675  ,p_actual_flag => l_actual_flag
151676  ,p_balance_type_code => l_balance_type_code
151677  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151678  
151679  , p_source_4 => l_array_source_4(Idx)
151680  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
151681  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
151682  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
151683  , p_source_11 => l_array_source_11(Idx)
151684  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151685  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151686  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
151687  , p_source_15 => l_array_source_15(Idx)
151688  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
151689  , p_source_18 => l_array_source_18(Idx)
151690  , p_source_19 => l_array_source_19(Idx)
151691  , p_source_20 => l_array_source_20(Idx)
151692  , p_source_21 => l_array_source_21(Idx)
151693  , p_source_22 => l_array_source_22(Idx)
151694  , p_source_24 => l_array_source_24(Idx)
151695  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
151696  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
151697  , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
151698  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
151699  , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
151700  );
151701 If(l_balance_type_code = 'A') THEN
151702   l_actual_gain_loss_ref := l_gain_or_loss_ref;
151703 END IF;
151704 
151705 --
151706 
151707       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
151708       -- or secondary ledger that has different currency with primary
151709       -- or alc that is calculated by sla
151710       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
151711             (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'))
151712 
151713 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
151714 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
151715           AND (l_actual_flag = 'A')) THEN
151716         XLA_AE_LINES_PKG.CreateGainOrLossLines(
151717           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
151718          ,p_application_id   => p_application_id
151719          ,p_amb_context_code => 'DEFAULT'
151720          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
151721          ,p_event_class_code => C_EVENT_CLASS_CODE
151722          ,p_event_type_code  => C_EVENT_TYPE_CODE
151723          
151724          ,p_gain_ccid        => -1
151725          ,p_loss_ccid        => -1
151726 
151727          ,p_actual_flag      => l_actual_flag
151728          ,p_enc_flag         => null
151729          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
151730          ,p_enc_g_l_ref      => null
151731          );
151732       END IF;
151733    END IF;
151734 END IF;
151735 
151736    ELSE
151737       --
151738       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
151739       --
151740       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151741          trace
151742             (p_msg      => 'Trancaction revesal option is Y'
151743             ,p_level    => C_LEVEL_STATEMENT
151744             ,p_module   => l_log_module);
151745       END IF;
151746    END IF;
151747 
151748 END LOOP;
151749 l_result := XLA_AE_LINES_PKG.InsertLines ;
151750 end loop;
151751 close line_cur;
151752 
151753 
151754 --
151755 -- insert headers into xla_ae_headers_gt table
151756 --
151757 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
151758 
151759 -- insert into errors table here.
151760 
151761 END LOOP;
151762 
151763 --
151764 -- 4865292
151765 --
151766 -- Compare g_hdr_extract_count with event count in
151767 -- CreateHeadersAndLines.
151768 --
151769 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
151770 
151771 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151772    trace (p_msg     => '# rows extracted from header extract objects '
151773                     || ' (running total): '
151774                     || g_hdr_extract_count
151775          ,p_level   => C_LEVEL_STATEMENT
151776          ,p_module  => l_log_module);
151777 END IF;
151778 
151779 CLOSE header_cur;
151780 --
151781 
151782 --
151783 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151784    trace
151785       (p_msg      => 'END of EventClass_259'
151786       ,p_level    => C_LEVEL_PROCEDURE
151787       ,p_module   => l_log_module);
151788 END IF;
151789 --
151790 RETURN l_result;
151791 EXCEPTION
151792 WHEN xla_exceptions_pkg.application_exception THEN
151793    
151794 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
151795 
151796    
151797 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
151798 
151799    RAISE;
151800 
151801 WHEN NO_DATA_FOUND THEN
151802 
151803 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
151804 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
151805 
151806 FOR header_record IN header_cur
151807 LOOP
151808     l_array_header_events(header_record.event_id) := header_record.event_id;
151809 END LOOP;
151810 
151811 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
151812 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
151813 
151814 fnd_file.put_line(fnd_file.LOG, '                    ');
151815 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
151816 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
151817 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
151818 
151819 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
151820 LOOP
151821 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
151822 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
151823         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
151824 	END IF;
151825 END LOOP;
151826 
151827 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
151828 fnd_file.put_line(fnd_file.LOG, '                    ');
151829 
151830 
151831 xla_exceptions_pkg.raise_message
151832       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_259');
151833 
151834 
151835 WHEN OTHERS THEN
151836    xla_exceptions_pkg.raise_message
151837       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_259');
151838 END EventClass_259;
151839 --
151840 
151841 ---------------------------------------
151842 --
151843 -- PRIVATE PROCEDURE
151844 --         insert_sources_260
151845 --
151846 ----------------------------------------
151847 --
151848 PROCEDURE insert_sources_260(
151849                                 p_target_ledger_id       IN NUMBER
151850                               , p_language               IN VARCHAR2
151851                               , p_sla_ledger_id          IN NUMBER
151852                               , p_pad_start_date         IN DATE
151853                               , p_pad_end_date           IN DATE
151854                          )
151855 IS
151856 
151857 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
151858 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
151859 p_apps_owner                   VARCHAR2(30);
151860 l_log_module                   VARCHAR2(240);
151861 BEGIN
151862 IF g_log_enabled THEN
151863       l_log_module := C_DEFAULT_MODULE||'.insert_sources_260';
151864 END IF;
151865 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151866 
151867       trace
151868          (p_msg      => 'BEGIN of insert_sources_260'
151869          ,p_level    => C_LEVEL_PROCEDURE
151870          ,p_module   => l_log_module);
151871 
151872 END IF;
151873 
151874 -- select APPS owner
151875 SELECT oracle_username
151876   INTO p_apps_owner
151877   FROM fnd_oracle_userid
151878  WHERE read_only_flag = 'U'
151879 ;
151880 
151881 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151882       trace
151883          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
151884                         ' - p_language = '||p_language||
151885                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
151886                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
151887                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
151888                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
151889          ,p_level    => C_LEVEL_STATEMENT
151890          ,p_module   => l_log_module);
151891 END IF;
151892 
151893 
151894 --
151895 INSERT INTO xla_diag_sources --hdr2
151896 (
151897         event_id
151898       , ledger_id
151899       , sla_ledger_id
151900       , description_language
151901       , object_name
151902       , object_type_code
151903       , line_number
151904       , source_application_id
151905       , source_type_code
151906       , source_code
151907       , source_value
151908       , source_meaning
151909       , created_by
151910       , creation_date
151911       , last_update_date
151912       , last_updated_by
151913       , last_update_login
151914       , program_update_date
151915       , program_application_id
151916       , program_id
151917       , request_id
151918 )
151919 SELECT
151920         event_id
151921       , p_target_ledger_id
151922       , p_sla_ledger_id
151923       , p_language
151924       , object_name
151925       , object_type_code
151926       , line_number
151927       , source_application_id
151928       , source_type_code
151929       , source_code
151930       , SUBSTR(source_value ,1,1996)
151931       , SUBSTR(source_meaning ,1,200)
151932       , xla_environment_pkg.g_Usr_Id
151933       , TRUNC(SYSDATE)
151934       , TRUNC(SYSDATE)
151935       , xla_environment_pkg.g_Usr_Id
151936       , xla_environment_pkg.g_Login_Id
151937       , TRUNC(SYSDATE)
151938       , xla_environment_pkg.g_Prog_Appl_Id
151939       , xla_environment_pkg.g_Prog_Id
151940       , xla_environment_pkg.g_Req_Id
151941   FROM (
151942        SELECT xet.event_id                  event_id
151943             , 0                          line_number
151944             , CASE r
151945                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
151946                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
151947                 
151948                ELSE null
151949               END                           object_name
151950             , CASE r
151951                 WHEN 1 THEN 'HEADER' 
151952                 WHEN 2 THEN 'HEADER' 
151953                 
151954                 ELSE null
151955               END                           object_type_code
151956             , CASE r
151957                 WHEN 1 THEN '707' 
151958                 WHEN 2 THEN '707' 
151959                 
151960                 ELSE null
151961               END                           source_application_id
151962             , 'S'             source_type_code
151963             , CASE r
151964                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
151965                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
151966                 
151967                 ELSE null
151968               END                           source_code
151969             , CASE r
151970                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
151971                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
151972                 
151973                 ELSE null
151974               END                           source_value
151975             , CASE r
151976                 WHEN 1 THEN fvl12.meaning
151977                 WHEN 2 THEN fvl38.meaning
151978                 
151979                 ELSE null
151980               END               source_meaning
151981          FROM xla_events_gt     xet  
151982       , CST_XLA_INV_HEADERS_V  h1
151983   , fnd_lookup_values    fvl12
151984   , fnd_lookup_values    fvl38
151985              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
151986          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
151987            AND xet.event_class_code = C_EVENT_CLASS_CODE
151988               AND h1.event_id = xet.event_id
151989    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
151990   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
151991   AND fvl12.view_application_id(+) = 700
151992   AND fvl12.language(+)            = USERENV('LANG')
151993      AND fvl38.lookup_type(+)         = 'YES_NO'
151994   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
151995   AND fvl38.view_application_id(+) = 0
151996   AND fvl38.language(+)            = USERENV('LANG')
151997   
151998 )
151999 ;
152000 --
152001 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152002 
152003       trace
152004          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
152005          ,p_level    => C_LEVEL_STATEMENT
152006          ,p_module   => l_log_module);
152007 
152008 END IF;
152009 --
152010 
152011 
152012 
152013 --
152014 INSERT INTO xla_diag_sources  --line2
152015 (
152016         event_id
152017       , ledger_id
152018       , sla_ledger_id
152019       , description_language
152020       , object_name
152021       , object_type_code
152022       , line_number
152023       , source_application_id
152024       , source_type_code
152025       , source_code
152026       , source_value
152027       , source_meaning
152028       , created_by
152029       , creation_date
152030       , last_update_date
152031       , last_updated_by
152032       , last_update_login
152033       , program_update_date
152034       , program_application_id
152035       , program_id
152036       , request_id
152037 )
152038 SELECT  event_id
152039       , p_target_ledger_id
152040       , p_sla_ledger_id
152041       , p_language
152042       , object_name
152043       , object_type_code
152044       , line_number
152045       , source_application_id
152046       , source_type_code
152047       , source_code
152048       , SUBSTR(source_value,1,1996)
152049       , SUBSTR(source_meaning ,1,200)
152050       , xla_environment_pkg.g_Usr_Id
152051       , TRUNC(SYSDATE)
152052       , TRUNC(SYSDATE)
152053       , xla_environment_pkg.g_Usr_Id
152054       , xla_environment_pkg.g_Login_Id
152055       , TRUNC(SYSDATE)
152056       , xla_environment_pkg.g_Prog_Appl_Id
152057       , xla_environment_pkg.g_Prog_Id
152058       , xla_environment_pkg.g_Req_Id
152059   FROM (
152060        SELECT xet.event_id                  event_id
152061             , l2.line_number                 line_number
152062             , CASE r
152063                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
152064                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
152065                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
152066                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
152067                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
152068                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
152069                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
152070                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
152071                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
152072                 
152073                ELSE null
152074               END                           object_name
152075             , CASE r
152076                 WHEN 1 THEN 'LINE' 
152077                 WHEN 2 THEN 'LINE' 
152078                 WHEN 3 THEN 'LINE' 
152079                 WHEN 4 THEN 'LINE' 
152080                 WHEN 5 THEN 'LINE' 
152081                 WHEN 6 THEN 'LINE' 
152082                 WHEN 7 THEN 'LINE' 
152083                 WHEN 8 THEN 'LINE' 
152084                 WHEN 9 THEN 'LINE' 
152085                 
152086                 ELSE null
152087               END                           object_type_code
152088             , CASE r
152089                 WHEN 1 THEN '707' 
152090                 WHEN 2 THEN '707' 
152091                 WHEN 3 THEN '707' 
152092                 WHEN 4 THEN '707' 
152093                 WHEN 5 THEN '707' 
152094                 WHEN 6 THEN '707' 
152095                 WHEN 7 THEN '707' 
152096                 WHEN 8 THEN '707' 
152097                 WHEN 9 THEN '707' 
152098                 
152099                 ELSE null
152100               END                           source_application_id
152101             , 'S'             source_type_code
152102             , CASE r
152103                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
152104                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
152105                 WHEN 3 THEN 'CURRENCY_CODE' 
152106                 WHEN 4 THEN 'ENTERED_AMOUNT' 
152107                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
152108                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
152109                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
152110                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
152111                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
152112                 
152113                 ELSE null
152114               END                           source_code
152115             , CASE r
152116                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
152117                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
152118                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
152119                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
152120                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
152121                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
152122                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
152123                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
152124                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
152125                 
152126                 ELSE null
152127               END                           source_value
152128             , null              source_meaning
152129          FROM  xla_events_gt     xet  
152130         , CST_XLA_INV_LINES_V  l2
152131             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
152132         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
152133           AND xet.event_class_code = C_EVENT_CLASS_CODE
152134             AND l2.event_id          = xet.event_id
152135 
152136 )
152137 ;
152138 --
152139 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152140 
152141       trace
152142          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
152143          ,p_level    => C_LEVEL_STATEMENT
152144          ,p_module   => l_log_module);
152145 
152146 END IF;
152147 
152148 
152149 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
152150       trace
152151          (p_msg      => 'END of insert_sources_260'
152152          ,p_level    => C_LEVEL_PROCEDURE
152153          ,p_module   => l_log_module);
152154 END IF;
152155 EXCEPTION
152156   WHEN xla_exceptions_pkg.application_exception THEN
152157       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
152158             trace
152159                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
152160                ,p_level    => C_LEVEL_EXCEPTION
152161                ,p_module   => l_log_module);
152162       END IF;
152163       RAISE;
152164   WHEN OTHERS THEN
152165       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
152166             trace
152167                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
152168                ,p_level    => C_LEVEL_EXCEPTION
152169                ,p_module   => l_log_module);
152170        END IF;
152171        xla_exceptions_pkg.raise_message
152172            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_260');
152173 END insert_sources_260;
152174 --
152175 
152176 ---------------------------------------
152177 --
152178 -- PRIVATE FUNCTION
152179 --         EventClass_260
152180 --
152181 ----------------------------------------
152182 --
152183 FUNCTION EventClass_260
152184        (p_application_id         IN NUMBER
152185        ,p_base_ledger_id         IN NUMBER
152186        ,p_target_ledger_id       IN NUMBER
152187        ,p_language               IN VARCHAR2
152188        ,p_currency_code          IN VARCHAR2
152189        ,p_sla_ledger_id          IN NUMBER
152190        ,p_pad_start_date         IN DATE
152191        ,p_pad_end_date           IN DATE
152192        ,p_primary_ledger_id      IN NUMBER)
152193 RETURN BOOLEAN IS
152194 --
152195 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
152196 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
152197 
152198 l_calculate_acctd_flag   VARCHAR2(1) :='N';
152199 l_calculate_g_l_flag     VARCHAR2(1) :='N';
152200 --
152201 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
152202 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
152203 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
152204 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
152205 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
152206 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
152207 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
152208 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
152209 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
152210 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
152211 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
152212 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
152213 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
152214 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
152215 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
152216 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
152217 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
152218 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
152219 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
152220 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
152221 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
152222 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
152223 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
152224 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
152225 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
152226 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
152227 
152228 l_event_id                             NUMBER;
152229 l_previous_event_id                    NUMBER;
152230 l_first_event_id                       NUMBER;
152231 l_last_event_id                        NUMBER;
152232 
152233 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
152234 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
152235 --
152236 --
152237 l_result                    BOOLEAN := TRUE;
152238 l_rows                      NUMBER  := 1000;
152239 l_event_type_name           VARCHAR2(80) := 'All';
152240 l_event_class_name          VARCHAR2(80) := 'Recipient-side Intransit Interorg Shipment for FOB Shipment';
152241 l_description               VARCHAR2(4000);
152242 l_transaction_reversal      NUMBER;
152243 l_ae_header_id              NUMBER;
152244 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
152245 l_log_module                VARCHAR2(240);
152246 --
152247 l_acct_reversal_source      VARCHAR2(30);
152248 l_trx_reversal_source       VARCHAR2(30);
152249 
152250 l_continue_with_lines       BOOLEAN := TRUE;
152251 --
152252 l_acc_rev_gl_date_source    DATE;                      -- 4262811
152253 --
152254 type t_array_event_id is table of number index by binary_integer;
152255 
152256 l_rec_array_event                    t_rec_array_event;
152257 l_null_rec_array_event               t_rec_array_event;
152258 l_array_ae_header_id                 xla_number_array_type;
152259 l_actual_flag                        VARCHAR2(1) := NULL;
152260 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
152261 l_balance_type_code                  VARCHAR2(1) :=NULL;
152262 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
152263 
152264 --
152265 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
152266 --
152267 
152268 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
152269 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
152270 
152271 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
152272 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
152273 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
152274 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
152275 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
152276 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
152277 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
152278 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
152279 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
152280 
152281 l_array_source_12              t_array_source_12;
152282 l_array_source_12_meaning      t_array_lookup_meaning;
152283 l_array_source_38              t_array_source_38;
152284 l_array_source_38_meaning      t_array_lookup_meaning;
152285 
152286 l_array_source_4      t_array_source_4;
152287 l_array_source_11      t_array_source_11;
152288 l_array_source_15      t_array_source_15;
152289 l_array_source_18      t_array_source_18;
152290 l_array_source_19      t_array_source_19;
152291 l_array_source_20      t_array_source_20;
152292 l_array_source_21      t_array_source_21;
152293 l_array_source_22      t_array_source_22;
152294 l_array_source_24      t_array_source_24;
152295 
152296 --
152297 CURSOR header_cur
152298 IS
152299 SELECT /*+ leading(xet) cardinality(xet,1) */
152300 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
152301     xet.entity_id
152302    ,xet.legal_entity_id
152303    ,xet.entity_code
152304    ,xet.transaction_number
152305    ,xet.event_id
152306    ,xet.event_class_code
152307    ,xet.event_type_code
152308    ,xet.event_number
152309    ,xet.event_date
152310    ,xet.transaction_date
152311    ,xet.reference_num_1
152312    ,xet.reference_num_2
152313    ,xet.reference_num_3
152314    ,xet.reference_num_4
152315    ,xet.reference_char_1
152316    ,xet.reference_char_2
152317    ,xet.reference_char_3
152318    ,xet.reference_char_4
152319    ,xet.reference_date_1
152320    ,xet.reference_date_2
152321    ,xet.reference_date_3
152322    ,xet.reference_date_4
152323    ,xet.event_created_by
152324    ,xet.budgetary_control_flag 
152325   , h1.DISTRIBUTION_TYPE    source_12
152326   , fvl12.meaning   source_12_meaning
152327   , h1.TRANSFER_TO_GL_INDICATOR    source_38
152328   , fvl38.meaning   source_38_meaning
152329   FROM xla_events_gt     xet 
152330   , CST_XLA_INV_HEADERS_V  h1
152331   , fnd_lookup_values    fvl12
152332   , fnd_lookup_values    fvl38
152333  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
152334    and xet.event_class_code = C_EVENT_CLASS_CODE
152335    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
152336    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
152337   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
152338   AND fvl12.view_application_id(+) = 700
152339   AND fvl12.language(+)            = USERENV('LANG')
152340      AND fvl38.lookup_type(+)         = 'YES_NO'
152341   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
152342   AND fvl38.view_application_id(+) = 0
152343   AND fvl38.language(+)            = USERENV('LANG')
152344   
152345  ORDER BY event_id
152346 ;
152347 
152348 
152349 --
152350 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
152351 IS
152352 SELECT  /*+ leading(xet) cardinality(xet,1) */
152353 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
152354     xet.entity_id
152355    ,xet.legal_entity_id
152356    ,xet.entity_code
152357    ,xet.transaction_number
152358    ,xet.event_id
152359    ,xet.event_class_code
152360    ,xet.event_type_code
152361    ,xet.event_number
152362    ,xet.event_date
152363    ,xet.transaction_date
152364    ,xet.reference_num_1
152365    ,xet.reference_num_2
152366    ,xet.reference_num_3
152367    ,xet.reference_num_4
152368    ,xet.reference_char_1
152369    ,xet.reference_char_2
152370    ,xet.reference_char_3
152371    ,xet.reference_char_4
152372    ,xet.reference_date_1
152373    ,xet.reference_date_2
152374    ,xet.reference_date_3
152375    ,xet.reference_date_4
152376    ,xet.event_created_by
152377    ,xet.budgetary_control_flag
152378  , l2.LINE_NUMBER  
152379   , l2.CODE_COMBINATION_ID    source_4
152380   , l2.DISTRIBUTION_IDENTIFIER    source_11
152381   , l2.CURRENCY_CODE    source_15
152382   , l2.ENTERED_AMOUNT    source_18
152383   , l2.CURRENCY_CONVERSION_DATE    source_19
152384   , l2.CURRENCY_CONVERSION_RATE    source_20
152385   , l2.CURRENCY_CONVERSION_TYPE    source_21
152386   , l2.ACCOUNTED_AMOUNT    source_22
152387   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
152388   FROM xla_events_gt     xet 
152389   , CST_XLA_INV_LINES_V  l2
152390  WHERE xet.event_id between x_first_event_id and x_last_event_id
152391    and xet.event_date between p_pad_start_date and p_pad_end_date
152392    and xet.event_class_code = C_EVENT_CLASS_CODE
152393    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
152394 ;
152395 
152396 --
152397 BEGIN
152398 IF g_log_enabled THEN
152399    l_log_module := C_DEFAULT_MODULE||'.EventClass_260';
152400 END IF;
152401 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
152402    trace
152403       (p_msg      => 'BEGIN of EventClass_260'
152404       ,p_level    => C_LEVEL_PROCEDURE
152405       ,p_module   => l_log_module);
152406 END IF;
152407 
152408 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152409    trace
152410       (p_msg      => 'p_application_id = '||p_application_id||
152411                      ' - p_base_ledger_id = '||p_base_ledger_id||
152412                      ' - p_target_ledger_id  = '||p_target_ledger_id||
152413                      ' - p_language = '||p_language||
152414                      ' - p_currency_code = '||p_currency_code||
152415                      ' - p_sla_ledger_id = '||p_sla_ledger_id
152416       ,p_level    => C_LEVEL_STATEMENT
152417       ,p_module   => l_log_module);
152418 END IF;
152419 --
152420 -- initialze arrays
152421 --
152422 g_array_event.DELETE;
152423 l_rec_array_event := l_null_rec_array_event;
152424 --
152425 --------------------------------------
152426 -- 4262811 Initialze MPA Line Number
152427 --------------------------------------
152428 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
152429 
152430 --
152431 
152432 --
152433 OPEN header_cur;
152434 --
152435 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152436    trace
152437    (p_msg      => 'SQL - FETCH header_cur'
152438    ,p_level    => C_LEVEL_STATEMENT
152439    ,p_module   => l_log_module);
152440 END IF;
152441 --
152442 LOOP
152443 FETCH header_cur BULK COLLECT INTO
152444         l_array_entity_id
152445       , l_array_legal_entity_id
152446       , l_array_entity_code
152447       , l_array_transaction_num
152448       , l_array_event_id
152449       , l_array_class_code
152450       , l_array_event_type
152451       , l_array_event_number
152452       , l_array_event_date
152453       , l_array_transaction_date
152454       , l_array_reference_num_1
152455       , l_array_reference_num_2
152456       , l_array_reference_num_3
152457       , l_array_reference_num_4
152458       , l_array_reference_char_1
152459       , l_array_reference_char_2
152460       , l_array_reference_char_3
152461       , l_array_reference_char_4
152462       , l_array_reference_date_1
152463       , l_array_reference_date_2
152464       , l_array_reference_date_3
152465       , l_array_reference_date_4
152466       , l_array_event_created_by
152467       , l_array_budgetary_control_flag 
152468       , l_array_source_12
152469       , l_array_source_12_meaning
152470       , l_array_source_38
152471       , l_array_source_38_meaning
152472       LIMIT l_rows;
152473 --
152474 IF (C_LEVEL_EVENT >= g_log_level) THEN
152475    trace
152476    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
152477    ,p_level    => C_LEVEL_EVENT
152478    ,p_module   => l_log_module);
152479 END IF;
152480 --
152481 EXIT WHEN l_array_entity_id.COUNT = 0;
152482 
152483 -- initialize arrays
152484 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
152485 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
152486 
152487 --
152488 -- Bug 4458708
152489 --
152490 XLA_AE_LINES_PKG.g_LineNumber := 0;
152491 
152492 
152493 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
152494 g_last_hdr_idx := l_array_event_id.LAST;
152495 --
152496 -- loop for the headers. Each iteration is for each header extract row
152497 -- fetched in header cursor
152498 --
152499 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
152500 
152501 --
152502 -- set event info as cache for other routines to refer event attributes
152503 --
152504 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
152505    (p_application_id           => p_application_id
152506    ,p_primary_ledger_id        => p_primary_ledger_id
152507    ,p_base_ledger_id           => p_base_ledger_id
152508    ,p_target_ledger_id         => p_target_ledger_id
152509    ,p_entity_id                => l_array_entity_id(hdr_idx)
152510    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
152511    ,p_entity_code              => l_array_entity_code(hdr_idx)
152512    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
152513    ,p_event_id                 => l_array_event_id(hdr_idx)
152514    ,p_event_class_code         => l_array_class_code(hdr_idx)
152515    ,p_event_type_code          => l_array_event_type(hdr_idx)
152516    ,p_event_number             => l_array_event_number(hdr_idx)
152517    ,p_event_date               => l_array_event_date(hdr_idx)
152518    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
152519    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
152520    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
152521    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
152522    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
152523    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
152524    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
152525    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
152526    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
152527    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
152528    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
152529    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
152530    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
152531    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
152532    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
152533 
152534 --
152535 -- set the status of entry to C_VALID (0)
152536 --
152537 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
152538 
152539 --
152540 -- initialize a row for ae header
152541 --
152542 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
152543 
152544 l_event_id := l_array_event_id(hdr_idx);
152545 
152546 --
152547 -- storing the hdr_idx for event. May be used by line cursor.
152548 --
152549 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
152550 
152551 --
152552 -- store sources from header extract. This can be improved to
152553 -- store only those sources from header extract that may be used in lines
152554 --
152555 
152556 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
152557 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
152558 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
152559 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
152560 
152561 --
152562 -- initilaize the status of ae headers for diffrent balance types
152563 -- the status is initialised to C_NOT_CREATED (2)
152564 --
152565 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152566 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152567 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152568 
152569 --
152570 -- call api to validate and store accounting attributes for header
152571 --
152572 
152573 ------------------------------------------------------------
152574 -- Accrual Reversal : to get date for Standard Source (NONE)
152575 ------------------------------------------------------------
152576 l_acc_rev_gl_date_source := NULL;
152577 
152578      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
152579       l_rec_acct_attrs.array_date_value(1) := 
152580 xla_ae_sources_pkg.GetSystemSourceDate(
152581    p_source_code           => 'XLA_REFERENCE_DATE_1'
152582  , p_source_type_code      => 'Y'
152583  , p_source_application_id =>  602
152584 );
152585      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
152586       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
152587 
152588 
152589 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
152590 
152591 XLA_AE_HEADER_PKG.SetJeCategoryName;
152592 
152593 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
152594 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
152595 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
152596 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
152597 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
152598 
152599 
152600 -- No header level analytical criteria
152601 
152602 --
152603 --accounting attribute enhancement, bug 3612931
152604 --
152605 l_trx_reversal_source := SUBSTR(NULL, 1,30);
152606 
152607 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
152608    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
152609 
152610    xla_accounting_err_pkg.build_message
152611       (p_appli_s_name            => 'XLA'
152612       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
152613       ,p_token_1                 => 'ACCT_ATTR_NAME'
152614       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
152615       ,p_token_2                 => 'PRODUCT_NAME'
152616       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
152617       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
152618       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
152619       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
152620 
152621 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
152622    --
152623    -- following sets the accounting attributes needed to reverse
152624    -- accounting for a distributeion
152625    --
152626    xla_ae_lines_pkg.SetTrxReversalAttrs
152627       (p_event_id              => l_event_id
152628       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
152629       ,p_trx_reversal_source   => l_trx_reversal_source);
152630 
152631 END IF;
152632 
152633 
152634 ----------------------------------------------------------------
152635 -- 4262811 -  update the header statuses to invalid in need be
152636 ----------------------------------------------------------------
152637 --
152638 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
152639 
152640 
152641   -----------------------------------------------
152642   -- No accrual reversal for the event class/type
152643   -----------------------------------------------
152644 ----------------------------------------------------------------
152645 
152646 --
152647 -- this ends the header loop iteration for one bulk fetch
152648 --
152649 END LOOP;
152650 
152651 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
152652 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
152653 
152654 --
152655 -- insert dummy rows into lines gt table that were created due to
152656 -- transaction reversals
152657 --
152658 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
152659    l_result := XLA_AE_LINES_PKG.InsertLines;
152660 END IF;
152661 
152662 --
152663 -- reset the temp_line_num for each set of events fetched from header
152664 -- cursor rather than doing it for each new event in line cursor
152665 -- Bug 3939231
152666 --
152667 xla_ae_lines_pkg.g_temp_line_num := 0;
152668 
152669 
152670 
152671 --
152672 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
152673 --
152674 --
152675 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152676 
152677       trace
152678          (p_msg      => 'SQL - FETCH line_cur'
152679          ,p_level    => C_LEVEL_STATEMENT
152680          ,p_module   => l_log_module);
152681 
152682 END IF;
152683 --
152684 --
152685 LOOP
152686   --
152687   FETCH line_cur BULK COLLECT INTO
152688         l_array_entity_id
152689       , l_array_legal_entity_id
152690       , l_array_entity_code
152691       , l_array_transaction_num
152692       , l_array_event_id
152693       , l_array_class_code
152694       , l_array_event_type
152695       , l_array_event_number
152696       , l_array_event_date
152697       , l_array_transaction_date
152698       , l_array_reference_num_1
152699       , l_array_reference_num_2
152700       , l_array_reference_num_3
152701       , l_array_reference_num_4
152702       , l_array_reference_char_1
152703       , l_array_reference_char_2
152704       , l_array_reference_char_3
152705       , l_array_reference_char_4
152706       , l_array_reference_date_1
152707       , l_array_reference_date_2
152708       , l_array_reference_date_3
152709       , l_array_reference_date_4
152710       , l_array_event_created_by
152711       , l_array_budgetary_control_flag
152712       , l_array_extract_line_num 
152713       , l_array_source_4
152714       , l_array_source_11
152715       , l_array_source_15
152716       , l_array_source_18
152717       , l_array_source_19
152718       , l_array_source_20
152719       , l_array_source_21
152720       , l_array_source_22
152721       , l_array_source_24
152722       LIMIT l_rows;
152723 
152724   --
152725   IF (C_LEVEL_EVENT >= g_log_level) THEN
152726             trace
152727                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
152728                ,p_level    => C_LEVEL_EVENT
152729                ,p_module   => l_log_module);
152730   END IF;
152731   --
152732   EXIT WHEN l_array_entity_id.count = 0;
152733 
152734   XLA_AE_LINES_PKG.g_rec_lines := null;
152735 
152736 --
152737 -- Bug 4458708
152738 --
152739 XLA_AE_LINES_PKG.g_LineNumber := 0;
152740 --
152741 --
152742 
152743 FOR Idx IN 1..l_array_event_id.count LOOP
152744    --
152745    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
152746    --
152747    l_event_id := l_array_event_id(idx);  -- 5648433
152748 
152749    --
152750    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
152751    --
152752 
152753    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
152754              (g_array_event(l_event_id).array_value_num('header_index'))
152755          ,'N'
152756          ) <> 'Y'
152757    THEN
152758       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152759          trace
152760             (p_msg      => 'Trancaction revesal option is not Y '
152761             ,p_level    => C_LEVEL_STATEMENT
152762             ,p_module   => l_log_module);
152763       END IF;
152764 
152765 --
152766 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
152767 --
152768 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
152769 --
152770 -- set event info as cache for other routines to refer event attributes
152771 --
152772 
152773 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
152774    l_previous_event_id := l_event_id;
152775 
152776    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
152777       (p_application_id           => p_application_id
152778       ,p_primary_ledger_id        => p_primary_ledger_id
152779       ,p_base_ledger_id           => p_base_ledger_id
152780       ,p_target_ledger_id         => p_target_ledger_id
152781       ,p_entity_id                => l_array_entity_id(Idx)
152782       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
152783       ,p_entity_code              => l_array_entity_code(Idx)
152784       ,p_transaction_num          => l_array_transaction_num(Idx)
152785       ,p_event_id                 => l_array_event_id(Idx)
152786       ,p_event_class_code         => l_array_class_code(Idx)
152787       ,p_event_type_code          => l_array_event_type(Idx)
152788       ,p_event_number             => l_array_event_number(Idx)
152789       ,p_event_date               => l_array_event_date(Idx)
152790       ,p_transaction_date         => l_array_transaction_date(Idx)
152791       ,p_reference_num_1          => l_array_reference_num_1(Idx)
152792       ,p_reference_num_2          => l_array_reference_num_2(Idx)
152793       ,p_reference_num_3          => l_array_reference_num_3(Idx)
152794       ,p_reference_num_4          => l_array_reference_num_4(Idx)
152795       ,p_reference_char_1         => l_array_reference_char_1(Idx)
152796       ,p_reference_char_2         => l_array_reference_char_2(Idx)
152797       ,p_reference_char_3         => l_array_reference_char_3(Idx)
152798       ,p_reference_char_4         => l_array_reference_char_4(Idx)
152799       ,p_reference_date_1         => l_array_reference_date_1(Idx)
152800       ,p_reference_date_2         => l_array_reference_date_2(Idx)
152801       ,p_reference_date_3         => l_array_reference_date_3(Idx)
152802       ,p_reference_date_4         => l_array_reference_date_4(Idx)
152803       ,p_event_created_by         => l_array_event_created_by(Idx)
152804       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
152805        --
152806 END IF;
152807 
152808 
152809 
152810 --
152811 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
152812 
152813 l_acct_reversal_source := SUBSTR(NULL, 1,30);
152814 
152815 IF l_continue_with_lines THEN
152816    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
152817       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
152818 
152819       xla_accounting_err_pkg.build_message
152820          (p_appli_s_name            => 'XLA'
152821          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
152822          ,p_token_1                 => 'LINE_NUMBER'
152823          ,p_value_1                 => l_array_extract_line_num(Idx)
152824          ,p_token_2                 => 'PRODUCT_NAME'
152825          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
152826          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
152827          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
152828          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
152829 
152830    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
152831       --
152832       -- following sets the accounting attributes needed to reverse
152833       -- accounting for a distributeion
152834       --
152835 
152836       --
152837       -- 5217187
152838       --
152839       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
152840       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
152841                                        g_array_event(l_event_id).array_value_num('header_index'));
152842       --
152843       --
152844 
152845       -- No reversal code generated
152846 
152847       xla_ae_lines_pkg.SetAcctReversalAttrs
152848          (p_event_id             => l_event_id
152849          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
152850          ,p_calculate_acctd_flag => l_calculate_acctd_flag
152851          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
152852    END IF;
152853 
152854    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
152855        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
152856 
152857 --
152858 AcctLineType_28 (
152859  p_application_id  => p_application_id
152860  ,p_event_id     => l_event_id
152861  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152862  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152863  ,p_actual_flag => l_actual_flag
152864  ,p_balance_type_code => l_balance_type_code
152865  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152866  
152867  , p_source_4 => l_array_source_4(Idx)
152868  , p_source_11 => l_array_source_11(Idx)
152869  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152870  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152871  , p_source_15 => l_array_source_15(Idx)
152872  , p_source_18 => l_array_source_18(Idx)
152873  , p_source_19 => l_array_source_19(Idx)
152874  , p_source_20 => l_array_source_20(Idx)
152875  , p_source_21 => l_array_source_21(Idx)
152876  , p_source_22 => l_array_source_22(Idx)
152877  , p_source_24 => l_array_source_24(Idx)
152878  );
152879 If(l_balance_type_code = 'A') THEN
152880   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152881 END IF;
152882 
152883 --
152884 
152885 
152886 --
152887 AcctLineType_51 (
152888  p_application_id  => p_application_id
152889  ,p_event_id     => l_event_id
152890  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152891  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152892  ,p_actual_flag => l_actual_flag
152893  ,p_balance_type_code => l_balance_type_code
152894  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152895  
152896  , p_source_4 => l_array_source_4(Idx)
152897  , p_source_11 => l_array_source_11(Idx)
152898  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152899  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152900  , p_source_15 => l_array_source_15(Idx)
152901  , p_source_18 => l_array_source_18(Idx)
152902  , p_source_19 => l_array_source_19(Idx)
152903  , p_source_20 => l_array_source_20(Idx)
152904  , p_source_21 => l_array_source_21(Idx)
152905  , p_source_22 => l_array_source_22(Idx)
152906  , p_source_24 => l_array_source_24(Idx)
152907  );
152908 If(l_balance_type_code = 'A') THEN
152909   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152910 END IF;
152911 
152912 --
152913 
152914 
152915 --
152916 AcctLineType_65 (
152917  p_application_id  => p_application_id
152918  ,p_event_id     => l_event_id
152919  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152920  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152921  ,p_actual_flag => l_actual_flag
152922  ,p_balance_type_code => l_balance_type_code
152923  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152924  
152925  , p_source_4 => l_array_source_4(Idx)
152926  , p_source_11 => l_array_source_11(Idx)
152927  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152928  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152929  , p_source_15 => l_array_source_15(Idx)
152930  , p_source_18 => l_array_source_18(Idx)
152931  , p_source_19 => l_array_source_19(Idx)
152932  , p_source_20 => l_array_source_20(Idx)
152933  , p_source_21 => l_array_source_21(Idx)
152934  , p_source_22 => l_array_source_22(Idx)
152935  , p_source_24 => l_array_source_24(Idx)
152936  );
152937 If(l_balance_type_code = 'A') THEN
152938   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152939 END IF;
152940 
152941 --
152942 
152943 
152944 --
152945 AcctLineType_81 (
152946  p_application_id  => p_application_id
152947  ,p_event_id     => l_event_id
152948  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152949  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152950  ,p_actual_flag => l_actual_flag
152951  ,p_balance_type_code => l_balance_type_code
152952  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152953  
152954  , p_source_4 => l_array_source_4(Idx)
152955  , p_source_11 => l_array_source_11(Idx)
152956  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152957  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152958  , p_source_15 => l_array_source_15(Idx)
152959  , p_source_18 => l_array_source_18(Idx)
152960  , p_source_19 => l_array_source_19(Idx)
152961  , p_source_20 => l_array_source_20(Idx)
152962  , p_source_21 => l_array_source_21(Idx)
152963  , p_source_22 => l_array_source_22(Idx)
152964  , p_source_24 => l_array_source_24(Idx)
152965  );
152966 If(l_balance_type_code = 'A') THEN
152967   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152968 END IF;
152969 
152970 --
152971 
152972 
152973 --
152974 AcctLineType_125 (
152975  p_application_id  => p_application_id
152976  ,p_event_id     => l_event_id
152977  ,p_calculate_acctd_flag => l_calculate_acctd_flag
152978  ,p_calculate_g_l_flag => l_calculate_g_l_flag
152979  ,p_actual_flag => l_actual_flag
152980  ,p_balance_type_code => l_balance_type_code
152981  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152982  
152983  , p_source_4 => l_array_source_4(Idx)
152984  , p_source_11 => l_array_source_11(Idx)
152985  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152986  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152987  , p_source_15 => l_array_source_15(Idx)
152988  , p_source_18 => l_array_source_18(Idx)
152989  , p_source_19 => l_array_source_19(Idx)
152990  , p_source_20 => l_array_source_20(Idx)
152991  , p_source_21 => l_array_source_21(Idx)
152992  , p_source_22 => l_array_source_22(Idx)
152993  , p_source_24 => l_array_source_24(Idx)
152994  );
152995 If(l_balance_type_code = 'A') THEN
152996   l_actual_gain_loss_ref := l_gain_or_loss_ref;
152997 END IF;
152998 
152999 --
153000 
153001 
153002 --
153003 AcctLineType_161 (
153004  p_application_id  => p_application_id
153005  ,p_event_id     => l_event_id
153006  ,p_calculate_acctd_flag => l_calculate_acctd_flag
153007  ,p_calculate_g_l_flag => l_calculate_g_l_flag
153008  ,p_actual_flag => l_actual_flag
153009  ,p_balance_type_code => l_balance_type_code
153010  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153011  
153012  , p_source_4 => l_array_source_4(Idx)
153013  , p_source_11 => l_array_source_11(Idx)
153014  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
153015  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
153016  , p_source_15 => l_array_source_15(Idx)
153017  , p_source_18 => l_array_source_18(Idx)
153018  , p_source_19 => l_array_source_19(Idx)
153019  , p_source_20 => l_array_source_20(Idx)
153020  , p_source_21 => l_array_source_21(Idx)
153021  , p_source_22 => l_array_source_22(Idx)
153022  , p_source_24 => l_array_source_24(Idx)
153023  );
153024 If(l_balance_type_code = 'A') THEN
153025   l_actual_gain_loss_ref := l_gain_or_loss_ref;
153026 END IF;
153027 
153028 --
153029 
153030 
153031 --
153032 AcctLineType_196 (
153033  p_application_id  => p_application_id
153034  ,p_event_id     => l_event_id
153035  ,p_calculate_acctd_flag => l_calculate_acctd_flag
153036  ,p_calculate_g_l_flag => l_calculate_g_l_flag
153037  ,p_actual_flag => l_actual_flag
153038  ,p_balance_type_code => l_balance_type_code
153039  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153040  
153041  , p_source_4 => l_array_source_4(Idx)
153042  , p_source_11 => l_array_source_11(Idx)
153043  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
153044  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
153045  , p_source_15 => l_array_source_15(Idx)
153046  , p_source_18 => l_array_source_18(Idx)
153047  , p_source_19 => l_array_source_19(Idx)
153048  , p_source_20 => l_array_source_20(Idx)
153049  , p_source_21 => l_array_source_21(Idx)
153050  , p_source_22 => l_array_source_22(Idx)
153051  , p_source_24 => l_array_source_24(Idx)
153052  );
153053 If(l_balance_type_code = 'A') THEN
153054   l_actual_gain_loss_ref := l_gain_or_loss_ref;
153055 END IF;
153056 
153057 --
153058 
153059 
153060 --
153061 AcctLineType_207 (
153062  p_application_id  => p_application_id
153063  ,p_event_id     => l_event_id
153064  ,p_calculate_acctd_flag => l_calculate_acctd_flag
153065  ,p_calculate_g_l_flag => l_calculate_g_l_flag
153066  ,p_actual_flag => l_actual_flag
153067  ,p_balance_type_code => l_balance_type_code
153068  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153069  
153070  , p_source_4 => l_array_source_4(Idx)
153071  , p_source_11 => l_array_source_11(Idx)
153072  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
153073  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
153074  , p_source_15 => l_array_source_15(Idx)
153075  , p_source_18 => l_array_source_18(Idx)
153076  , p_source_19 => l_array_source_19(Idx)
153077  , p_source_20 => l_array_source_20(Idx)
153078  , p_source_21 => l_array_source_21(Idx)
153079  , p_source_22 => l_array_source_22(Idx)
153080  , p_source_24 => l_array_source_24(Idx)
153081  );
153082 If(l_balance_type_code = 'A') THEN
153083   l_actual_gain_loss_ref := l_gain_or_loss_ref;
153084 END IF;
153085 
153086 --
153087 
153088 
153089 --
153090 AcctLineType_219 (
153091  p_application_id  => p_application_id
153092  ,p_event_id     => l_event_id
153093  ,p_calculate_acctd_flag => l_calculate_acctd_flag
153094  ,p_calculate_g_l_flag => l_calculate_g_l_flag
153095  ,p_actual_flag => l_actual_flag
153096  ,p_balance_type_code => l_balance_type_code
153097  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153098  
153099  , p_source_4 => l_array_source_4(Idx)
153100  , p_source_11 => l_array_source_11(Idx)
153101  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
153102  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
153103  , p_source_15 => l_array_source_15(Idx)
153104  , p_source_18 => l_array_source_18(Idx)
153105  , p_source_19 => l_array_source_19(Idx)
153106  , p_source_20 => l_array_source_20(Idx)
153107  , p_source_21 => l_array_source_21(Idx)
153108  , p_source_22 => l_array_source_22(Idx)
153109  , p_source_24 => l_array_source_24(Idx)
153110  );
153111 If(l_balance_type_code = 'A') THEN
153112   l_actual_gain_loss_ref := l_gain_or_loss_ref;
153113 END IF;
153114 
153115 --
153116 
153117       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
153118       -- or secondary ledger that has different currency with primary
153119       -- or alc that is calculated by sla
153120       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
153121             (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'))
153122 
153123 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
153124 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
153125           AND (l_actual_flag = 'A')) THEN
153126         XLA_AE_LINES_PKG.CreateGainOrLossLines(
153127           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
153128          ,p_application_id   => p_application_id
153129          ,p_amb_context_code => 'DEFAULT'
153130          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
153131          ,p_event_class_code => C_EVENT_CLASS_CODE
153132          ,p_event_type_code  => C_EVENT_TYPE_CODE
153133          
153134          ,p_gain_ccid        => -1
153135          ,p_loss_ccid        => -1
153136 
153137          ,p_actual_flag      => l_actual_flag
153138          ,p_enc_flag         => null
153139          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
153140          ,p_enc_g_l_ref      => null
153141          );
153142       END IF;
153143    END IF;
153144 END IF;
153145 
153146    ELSE
153147       --
153148       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
153149       --
153150       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153151          trace
153152             (p_msg      => 'Trancaction revesal option is Y'
153153             ,p_level    => C_LEVEL_STATEMENT
153154             ,p_module   => l_log_module);
153155       END IF;
153156    END IF;
153157 
153158 END LOOP;
153159 l_result := XLA_AE_LINES_PKG.InsertLines ;
153160 end loop;
153161 close line_cur;
153162 
153163 
153164 --
153165 -- insert headers into xla_ae_headers_gt table
153166 --
153167 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
153168 
153169 -- insert into errors table here.
153170 
153171 END LOOP;
153172 
153173 --
153174 -- 4865292
153175 --
153176 -- Compare g_hdr_extract_count with event count in
153177 -- CreateHeadersAndLines.
153178 --
153179 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
153180 
153181 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153182    trace (p_msg     => '# rows extracted from header extract objects '
153183                     || ' (running total): '
153184                     || g_hdr_extract_count
153185          ,p_level   => C_LEVEL_STATEMENT
153186          ,p_module  => l_log_module);
153187 END IF;
153188 
153189 CLOSE header_cur;
153190 --
153191 
153192 --
153193 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153194    trace
153195       (p_msg      => 'END of EventClass_260'
153196       ,p_level    => C_LEVEL_PROCEDURE
153197       ,p_module   => l_log_module);
153198 END IF;
153199 --
153200 RETURN l_result;
153201 EXCEPTION
153202 WHEN xla_exceptions_pkg.application_exception THEN
153203    
153204 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
153205 
153206    
153207 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
153208 
153209    RAISE;
153210 
153211 WHEN NO_DATA_FOUND THEN
153212 
153213 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
153214 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
153215 
153216 FOR header_record IN header_cur
153217 LOOP
153218     l_array_header_events(header_record.event_id) := header_record.event_id;
153219 END LOOP;
153220 
153221 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
153222 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
153223 
153224 fnd_file.put_line(fnd_file.LOG, '                    ');
153225 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
153226 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
153227 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
153228 
153229 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
153230 LOOP
153231 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
153232 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
153233         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
153234 	END IF;
153235 END LOOP;
153236 
153237 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
153238 fnd_file.put_line(fnd_file.LOG, '                    ');
153239 
153240 
153241 xla_exceptions_pkg.raise_message
153242       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_260');
153243 
153244 
153245 WHEN OTHERS THEN
153246    xla_exceptions_pkg.raise_message
153247       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_260');
153248 END EventClass_260;
153249 --
153250 
153251 ---------------------------------------
153252 --
153253 -- PRIVATE PROCEDURE
153254 --         insert_sources_261
153255 --
153256 ----------------------------------------
153257 --
153258 PROCEDURE insert_sources_261(
153259                                 p_target_ledger_id       IN NUMBER
153260                               , p_language               IN VARCHAR2
153261                               , p_sla_ledger_id          IN NUMBER
153262                               , p_pad_start_date         IN DATE
153263                               , p_pad_end_date           IN DATE
153264                          )
153265 IS
153266 
153267 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_ALL';
153268 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
153269 p_apps_owner                   VARCHAR2(30);
153270 l_log_module                   VARCHAR2(240);
153271 BEGIN
153272 IF g_log_enabled THEN
153273       l_log_module := C_DEFAULT_MODULE||'.insert_sources_261';
153274 END IF;
153275 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153276 
153277       trace
153278          (p_msg      => 'BEGIN of insert_sources_261'
153279          ,p_level    => C_LEVEL_PROCEDURE
153280          ,p_module   => l_log_module);
153281 
153282 END IF;
153283 
153284 -- select APPS owner
153285 SELECT oracle_username
153286   INTO p_apps_owner
153287   FROM fnd_oracle_userid
153288  WHERE read_only_flag = 'U'
153289 ;
153290 
153291 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153292       trace
153293          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
153294                         ' - p_language = '||p_language||
153295                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
153296                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
153297                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
153298                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
153299          ,p_level    => C_LEVEL_STATEMENT
153300          ,p_module   => l_log_module);
153301 END IF;
153302 
153303 
153304 --
153305 INSERT INTO xla_diag_sources --hdr2
153306 (
153307         event_id
153308       , ledger_id
153309       , sla_ledger_id
153310       , description_language
153311       , object_name
153312       , object_type_code
153313       , line_number
153314       , source_application_id
153315       , source_type_code
153316       , source_code
153317       , source_value
153318       , source_meaning
153319       , created_by
153320       , creation_date
153321       , last_update_date
153322       , last_updated_by
153323       , last_update_login
153324       , program_update_date
153325       , program_application_id
153326       , program_id
153327       , request_id
153328 )
153329 SELECT
153330         event_id
153331       , p_target_ledger_id
153332       , p_sla_ledger_id
153333       , p_language
153334       , object_name
153335       , object_type_code
153336       , line_number
153337       , source_application_id
153338       , source_type_code
153339       , source_code
153340       , SUBSTR(source_value ,1,1996)
153341       , SUBSTR(source_meaning ,1,200)
153342       , xla_environment_pkg.g_Usr_Id
153343       , TRUNC(SYSDATE)
153344       , TRUNC(SYSDATE)
153345       , xla_environment_pkg.g_Usr_Id
153346       , xla_environment_pkg.g_Login_Id
153347       , TRUNC(SYSDATE)
153348       , xla_environment_pkg.g_Prog_Appl_Id
153349       , xla_environment_pkg.g_Prog_Id
153350       , xla_environment_pkg.g_Req_Id
153351   FROM (
153352        SELECT xet.event_id                  event_id
153353             , 0                          line_number
153354             , CASE r
153355                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
153356                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
153357                 
153358                ELSE null
153359               END                           object_name
153360             , CASE r
153361                 WHEN 1 THEN 'HEADER' 
153362                 WHEN 2 THEN 'HEADER' 
153363                 
153364                 ELSE null
153365               END                           object_type_code
153366             , CASE r
153367                 WHEN 1 THEN '707' 
153368                 WHEN 2 THEN '707' 
153369                 
153370                 ELSE null
153371               END                           source_application_id
153372             , 'S'             source_type_code
153373             , CASE r
153374                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
153375                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
153376                 
153377                 ELSE null
153378               END                           source_code
153379             , CASE r
153380                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
153381                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
153382                 
153383                 ELSE null
153384               END                           source_value
153385             , CASE r
153386                 WHEN 1 THEN fvl12.meaning
153387                 WHEN 2 THEN fvl38.meaning
153388                 
153389                 ELSE null
153390               END               source_meaning
153391          FROM xla_events_gt     xet  
153392       , CST_XLA_INV_HEADERS_V  h1
153393   , fnd_lookup_values    fvl12
153394   , fnd_lookup_values    fvl38
153395              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
153396          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
153397            AND xet.event_class_code = C_EVENT_CLASS_CODE
153398               AND h1.event_id = xet.event_id
153399    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
153400   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
153401   AND fvl12.view_application_id(+) = 700
153402   AND fvl12.language(+)            = USERENV('LANG')
153403      AND fvl38.lookup_type(+)         = 'YES_NO'
153404   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
153405   AND fvl38.view_application_id(+) = 0
153406   AND fvl38.language(+)            = USERENV('LANG')
153407   
153408 )
153409 ;
153410 --
153411 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153412 
153413       trace
153414          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
153415          ,p_level    => C_LEVEL_STATEMENT
153416          ,p_module   => l_log_module);
153417 
153418 END IF;
153419 --
153420 
153421 
153422 
153423 --
153424 INSERT INTO xla_diag_sources  --line2
153425 (
153426         event_id
153427       , ledger_id
153428       , sla_ledger_id
153429       , description_language
153430       , object_name
153431       , object_type_code
153432       , line_number
153433       , source_application_id
153434       , source_type_code
153435       , source_code
153436       , source_value
153437       , source_meaning
153438       , created_by
153439       , creation_date
153440       , last_update_date
153441       , last_updated_by
153442       , last_update_login
153443       , program_update_date
153444       , program_application_id
153445       , program_id
153446       , request_id
153447 )
153448 SELECT  event_id
153449       , p_target_ledger_id
153450       , p_sla_ledger_id
153451       , p_language
153452       , object_name
153453       , object_type_code
153454       , line_number
153455       , source_application_id
153456       , source_type_code
153457       , source_code
153458       , SUBSTR(source_value,1,1996)
153459       , SUBSTR(source_meaning ,1,200)
153460       , xla_environment_pkg.g_Usr_Id
153461       , TRUNC(SYSDATE)
153462       , TRUNC(SYSDATE)
153463       , xla_environment_pkg.g_Usr_Id
153464       , xla_environment_pkg.g_Login_Id
153465       , TRUNC(SYSDATE)
153466       , xla_environment_pkg.g_Prog_Appl_Id
153467       , xla_environment_pkg.g_Prog_Id
153468       , xla_environment_pkg.g_Req_Id
153469   FROM (
153470        SELECT xet.event_id                  event_id
153471             , l2.line_number                 line_number
153472             , CASE r
153473                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
153474                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
153475                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
153476                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
153477                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
153478                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
153479                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
153480                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
153481                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
153482                 
153483                ELSE null
153484               END                           object_name
153485             , CASE r
153486                 WHEN 1 THEN 'LINE' 
153487                 WHEN 2 THEN 'LINE' 
153488                 WHEN 3 THEN 'LINE' 
153489                 WHEN 4 THEN 'LINE' 
153490                 WHEN 5 THEN 'LINE' 
153491                 WHEN 6 THEN 'LINE' 
153492                 WHEN 7 THEN 'LINE' 
153493                 WHEN 8 THEN 'LINE' 
153494                 WHEN 9 THEN 'LINE' 
153495                 
153496                 ELSE null
153497               END                           object_type_code
153498             , CASE r
153499                 WHEN 1 THEN '707' 
153500                 WHEN 2 THEN '707' 
153501                 WHEN 3 THEN '707' 
153502                 WHEN 4 THEN '707' 
153503                 WHEN 5 THEN '707' 
153504                 WHEN 6 THEN '707' 
153505                 WHEN 7 THEN '707' 
153506                 WHEN 8 THEN '707' 
153507                 WHEN 9 THEN '707' 
153508                 
153509                 ELSE null
153510               END                           source_application_id
153511             , 'S'             source_type_code
153512             , CASE r
153513                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
153514                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
153515                 WHEN 3 THEN 'CURRENCY_CODE' 
153516                 WHEN 4 THEN 'ENTERED_AMOUNT' 
153517                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
153518                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
153519                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
153520                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
153521                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
153522                 
153523                 ELSE null
153524               END                           source_code
153525             , CASE r
153526                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
153527                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
153528                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
153529                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
153530                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
153531                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
153532                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
153533                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
153534                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
153535                 
153536                 ELSE null
153537               END                           source_value
153538             , null              source_meaning
153539          FROM  xla_events_gt     xet  
153540         , CST_XLA_INV_LINES_V  l2
153541             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
153542         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
153543           AND xet.event_class_code = C_EVENT_CLASS_CODE
153544             AND l2.event_id          = xet.event_id
153545 
153546 )
153547 ;
153548 --
153549 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153550 
153551       trace
153552          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
153553          ,p_level    => C_LEVEL_STATEMENT
153554          ,p_module   => l_log_module);
153555 
153556 END IF;
153557 
153558 
153559 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153560       trace
153561          (p_msg      => 'END of insert_sources_261'
153562          ,p_level    => C_LEVEL_PROCEDURE
153563          ,p_module   => l_log_module);
153564 END IF;
153565 EXCEPTION
153566   WHEN xla_exceptions_pkg.application_exception THEN
153567       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
153568             trace
153569                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
153570                ,p_level    => C_LEVEL_EXCEPTION
153571                ,p_module   => l_log_module);
153572       END IF;
153573       RAISE;
153574   WHEN OTHERS THEN
153575       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
153576             trace
153577                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
153578                ,p_level    => C_LEVEL_EXCEPTION
153579                ,p_module   => l_log_module);
153580        END IF;
153581        xla_exceptions_pkg.raise_message
153582            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_261');
153583 END insert_sources_261;
153584 --
153585 
153586 ---------------------------------------
153587 --
153588 -- PRIVATE FUNCTION
153589 --         EventClass_261
153590 --
153591 ----------------------------------------
153592 --
153593 FUNCTION EventClass_261
153594        (p_application_id         IN NUMBER
153595        ,p_base_ledger_id         IN NUMBER
153596        ,p_target_ledger_id       IN NUMBER
153597        ,p_language               IN VARCHAR2
153598        ,p_currency_code          IN VARCHAR2
153599        ,p_sla_ledger_id          IN NUMBER
153600        ,p_pad_start_date         IN DATE
153601        ,p_pad_end_date           IN DATE
153602        ,p_primary_ledger_id      IN NUMBER)
153603 RETURN BOOLEAN IS
153604 --
153605 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_ALL';
153606 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
153607 
153608 l_calculate_acctd_flag   VARCHAR2(1) :='N';
153609 l_calculate_g_l_flag     VARCHAR2(1) :='N';
153610 --
153611 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153612 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153613 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153614 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153615 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153616 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153617 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153618 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153619 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153620 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153621 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153622 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153623 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153624 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153625 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153626 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153627 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153628 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153629 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153630 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153631 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153632 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153633 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
153634 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153635 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
153636 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
153637 
153638 l_event_id                             NUMBER;
153639 l_previous_event_id                    NUMBER;
153640 l_first_event_id                       NUMBER;
153641 l_last_event_id                        NUMBER;
153642 
153643 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
153644 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
153645 --
153646 --
153647 l_result                    BOOLEAN := TRUE;
153648 l_rows                      NUMBER  := 1000;
153649 l_event_type_name           VARCHAR2(80) := 'All';
153650 l_event_class_name          VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment';
153651 l_description               VARCHAR2(4000);
153652 l_transaction_reversal      NUMBER;
153653 l_ae_header_id              NUMBER;
153654 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
153655 l_log_module                VARCHAR2(240);
153656 --
153657 l_acct_reversal_source      VARCHAR2(30);
153658 l_trx_reversal_source       VARCHAR2(30);
153659 
153660 l_continue_with_lines       BOOLEAN := TRUE;
153661 --
153662 l_acc_rev_gl_date_source    DATE;                      -- 4262811
153663 --
153664 type t_array_event_id is table of number index by binary_integer;
153665 
153666 l_rec_array_event                    t_rec_array_event;
153667 l_null_rec_array_event               t_rec_array_event;
153668 l_array_ae_header_id                 xla_number_array_type;
153669 l_actual_flag                        VARCHAR2(1) := NULL;
153670 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
153671 l_balance_type_code                  VARCHAR2(1) :=NULL;
153672 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
153673 
153674 --
153675 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
153676 --
153677 
153678 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
153679 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
153680 
153681 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
153682 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
153683 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
153684 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
153685 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
153686 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
153687 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
153688 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
153689 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
153690 
153691 l_array_source_12              t_array_source_12;
153692 l_array_source_12_meaning      t_array_lookup_meaning;
153693 l_array_source_38              t_array_source_38;
153694 l_array_source_38_meaning      t_array_lookup_meaning;
153695 
153696 l_array_source_4      t_array_source_4;
153697 l_array_source_11      t_array_source_11;
153698 l_array_source_15      t_array_source_15;
153699 l_array_source_18      t_array_source_18;
153700 l_array_source_19      t_array_source_19;
153701 l_array_source_20      t_array_source_20;
153702 l_array_source_21      t_array_source_21;
153703 l_array_source_22      t_array_source_22;
153704 l_array_source_24      t_array_source_24;
153705 
153706 --
153707 CURSOR header_cur
153708 IS
153709 SELECT /*+ leading(xet) cardinality(xet,1) */
153710 -- Event Class Code: FOB_SHIP_SENDER_SHIP
153711     xet.entity_id
153712    ,xet.legal_entity_id
153713    ,xet.entity_code
153714    ,xet.transaction_number
153715    ,xet.event_id
153716    ,xet.event_class_code
153717    ,xet.event_type_code
153718    ,xet.event_number
153719    ,xet.event_date
153720    ,xet.transaction_date
153721    ,xet.reference_num_1
153722    ,xet.reference_num_2
153723    ,xet.reference_num_3
153724    ,xet.reference_num_4
153725    ,xet.reference_char_1
153726    ,xet.reference_char_2
153727    ,xet.reference_char_3
153728    ,xet.reference_char_4
153729    ,xet.reference_date_1
153730    ,xet.reference_date_2
153731    ,xet.reference_date_3
153732    ,xet.reference_date_4
153733    ,xet.event_created_by
153734    ,xet.budgetary_control_flag 
153735   , h1.DISTRIBUTION_TYPE    source_12
153736   , fvl12.meaning   source_12_meaning
153737   , h1.TRANSFER_TO_GL_INDICATOR    source_38
153738   , fvl38.meaning   source_38_meaning
153739   FROM xla_events_gt     xet 
153740   , CST_XLA_INV_HEADERS_V  h1
153741   , fnd_lookup_values    fvl12
153742   , fnd_lookup_values    fvl38
153743  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
153744    and xet.event_class_code = C_EVENT_CLASS_CODE
153745    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
153746    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
153747   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
153748   AND fvl12.view_application_id(+) = 700
153749   AND fvl12.language(+)            = USERENV('LANG')
153750      AND fvl38.lookup_type(+)         = 'YES_NO'
153751   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
153752   AND fvl38.view_application_id(+) = 0
153753   AND fvl38.language(+)            = USERENV('LANG')
153754   
153755  ORDER BY event_id
153756 ;
153757 
153758 
153759 --
153760 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
153761 IS
153762 SELECT  /*+ leading(xet) cardinality(xet,1) */
153763 -- Event Class Code: FOB_SHIP_SENDER_SHIP
153764     xet.entity_id
153765    ,xet.legal_entity_id
153766    ,xet.entity_code
153767    ,xet.transaction_number
153768    ,xet.event_id
153769    ,xet.event_class_code
153770    ,xet.event_type_code
153771    ,xet.event_number
153772    ,xet.event_date
153773    ,xet.transaction_date
153774    ,xet.reference_num_1
153775    ,xet.reference_num_2
153776    ,xet.reference_num_3
153777    ,xet.reference_num_4
153778    ,xet.reference_char_1
153779    ,xet.reference_char_2
153780    ,xet.reference_char_3
153781    ,xet.reference_char_4
153782    ,xet.reference_date_1
153783    ,xet.reference_date_2
153784    ,xet.reference_date_3
153785    ,xet.reference_date_4
153786    ,xet.event_created_by
153787    ,xet.budgetary_control_flag
153788  , l2.LINE_NUMBER  
153789   , l2.CODE_COMBINATION_ID    source_4
153790   , l2.DISTRIBUTION_IDENTIFIER    source_11
153791   , l2.CURRENCY_CODE    source_15
153792   , l2.ENTERED_AMOUNT    source_18
153793   , l2.CURRENCY_CONVERSION_DATE    source_19
153794   , l2.CURRENCY_CONVERSION_RATE    source_20
153795   , l2.CURRENCY_CONVERSION_TYPE    source_21
153796   , l2.ACCOUNTED_AMOUNT    source_22
153797   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
153798   FROM xla_events_gt     xet 
153799   , CST_XLA_INV_LINES_V  l2
153800  WHERE xet.event_id between x_first_event_id and x_last_event_id
153801    and xet.event_date between p_pad_start_date and p_pad_end_date
153802    and xet.event_class_code = C_EVENT_CLASS_CODE
153803    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
153804 ;
153805 
153806 --
153807 BEGIN
153808 IF g_log_enabled THEN
153809    l_log_module := C_DEFAULT_MODULE||'.EventClass_261';
153810 END IF;
153811 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153812    trace
153813       (p_msg      => 'BEGIN of EventClass_261'
153814       ,p_level    => C_LEVEL_PROCEDURE
153815       ,p_module   => l_log_module);
153816 END IF;
153817 
153818 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153819    trace
153820       (p_msg      => 'p_application_id = '||p_application_id||
153821                      ' - p_base_ledger_id = '||p_base_ledger_id||
153822                      ' - p_target_ledger_id  = '||p_target_ledger_id||
153823                      ' - p_language = '||p_language||
153824                      ' - p_currency_code = '||p_currency_code||
153825                      ' - p_sla_ledger_id = '||p_sla_ledger_id
153826       ,p_level    => C_LEVEL_STATEMENT
153827       ,p_module   => l_log_module);
153828 END IF;
153829 --
153830 -- initialze arrays
153831 --
153832 g_array_event.DELETE;
153833 l_rec_array_event := l_null_rec_array_event;
153834 --
153835 --------------------------------------
153836 -- 4262811 Initialze MPA Line Number
153837 --------------------------------------
153838 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
153839 
153840 --
153841 
153842 --
153843 OPEN header_cur;
153844 --
153845 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153846    trace
153847    (p_msg      => 'SQL - FETCH header_cur'
153848    ,p_level    => C_LEVEL_STATEMENT
153849    ,p_module   => l_log_module);
153850 END IF;
153851 --
153852 LOOP
153853 FETCH header_cur BULK COLLECT INTO
153854         l_array_entity_id
153855       , l_array_legal_entity_id
153856       , l_array_entity_code
153857       , l_array_transaction_num
153858       , l_array_event_id
153859       , l_array_class_code
153860       , l_array_event_type
153861       , l_array_event_number
153862       , l_array_event_date
153863       , l_array_transaction_date
153864       , l_array_reference_num_1
153865       , l_array_reference_num_2
153866       , l_array_reference_num_3
153867       , l_array_reference_num_4
153868       , l_array_reference_char_1
153869       , l_array_reference_char_2
153870       , l_array_reference_char_3
153871       , l_array_reference_char_4
153872       , l_array_reference_date_1
153873       , l_array_reference_date_2
153874       , l_array_reference_date_3
153875       , l_array_reference_date_4
153876       , l_array_event_created_by
153877       , l_array_budgetary_control_flag 
153878       , l_array_source_12
153879       , l_array_source_12_meaning
153880       , l_array_source_38
153881       , l_array_source_38_meaning
153882       LIMIT l_rows;
153883 --
153884 IF (C_LEVEL_EVENT >= g_log_level) THEN
153885    trace
153886    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
153887    ,p_level    => C_LEVEL_EVENT
153888    ,p_module   => l_log_module);
153889 END IF;
153890 --
153891 EXIT WHEN l_array_entity_id.COUNT = 0;
153892 
153893 -- initialize arrays
153894 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
153895 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
153896 
153897 --
153898 -- Bug 4458708
153899 --
153900 XLA_AE_LINES_PKG.g_LineNumber := 0;
153901 
153902 
153903 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
153904 g_last_hdr_idx := l_array_event_id.LAST;
153905 --
153906 -- loop for the headers. Each iteration is for each header extract row
153907 -- fetched in header cursor
153908 --
153909 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
153910 
153911 --
153912 -- set event info as cache for other routines to refer event attributes
153913 --
153914 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
153915    (p_application_id           => p_application_id
153916    ,p_primary_ledger_id        => p_primary_ledger_id
153917    ,p_base_ledger_id           => p_base_ledger_id
153918    ,p_target_ledger_id         => p_target_ledger_id
153919    ,p_entity_id                => l_array_entity_id(hdr_idx)
153920    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
153921    ,p_entity_code              => l_array_entity_code(hdr_idx)
153922    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
153923    ,p_event_id                 => l_array_event_id(hdr_idx)
153924    ,p_event_class_code         => l_array_class_code(hdr_idx)
153925    ,p_event_type_code          => l_array_event_type(hdr_idx)
153926    ,p_event_number             => l_array_event_number(hdr_idx)
153927    ,p_event_date               => l_array_event_date(hdr_idx)
153928    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
153929    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
153930    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
153931    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
153932    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
153933    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
153934    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
153935    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
153936    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
153937    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
153938    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
153939    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
153940    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
153941    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
153942    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
153943 
153944 --
153945 -- set the status of entry to C_VALID (0)
153946 --
153947 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
153948 
153949 --
153950 -- initialize a row for ae header
153951 --
153952 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
153953 
153954 l_event_id := l_array_event_id(hdr_idx);
153955 
153956 --
153957 -- storing the hdr_idx for event. May be used by line cursor.
153958 --
153959 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
153960 
153961 --
153962 -- store sources from header extract. This can be improved to
153963 -- store only those sources from header extract that may be used in lines
153964 --
153965 
153966 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
153967 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
153968 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
153969 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
153970 
153971 --
153972 -- initilaize the status of ae headers for diffrent balance types
153973 -- the status is initialised to C_NOT_CREATED (2)
153974 --
153975 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153976 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153977 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153978 
153979 --
153980 -- call api to validate and store accounting attributes for header
153981 --
153982 
153983 ------------------------------------------------------------
153984 -- Accrual Reversal : to get date for Standard Source (NONE)
153985 ------------------------------------------------------------
153986 l_acc_rev_gl_date_source := NULL;
153987 
153988      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
153989       l_rec_acct_attrs.array_date_value(1) := 
153990 xla_ae_sources_pkg.GetSystemSourceDate(
153991    p_source_code           => 'XLA_REFERENCE_DATE_1'
153992  , p_source_type_code      => 'Y'
153993  , p_source_application_id =>  602
153994 );
153995      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
153996       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
153997 
153998 
153999 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
154000 
154001 XLA_AE_HEADER_PKG.SetJeCategoryName;
154002 
154003 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
154004 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
154005 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
154006 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
154007 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
154008 
154009 
154010 -- No header level analytical criteria
154011 
154012 --
154013 --accounting attribute enhancement, bug 3612931
154014 --
154015 l_trx_reversal_source := SUBSTR(NULL, 1,30);
154016 
154017 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
154018    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
154019 
154020    xla_accounting_err_pkg.build_message
154021       (p_appli_s_name            => 'XLA'
154022       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
154023       ,p_token_1                 => 'ACCT_ATTR_NAME'
154024       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
154025       ,p_token_2                 => 'PRODUCT_NAME'
154026       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
154027       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
154028       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
154029       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
154030 
154031 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
154032    --
154033    -- following sets the accounting attributes needed to reverse
154034    -- accounting for a distributeion
154035    --
154036    xla_ae_lines_pkg.SetTrxReversalAttrs
154037       (p_event_id              => l_event_id
154038       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
154039       ,p_trx_reversal_source   => l_trx_reversal_source);
154040 
154041 END IF;
154042 
154043 
154044 ----------------------------------------------------------------
154045 -- 4262811 -  update the header statuses to invalid in need be
154046 ----------------------------------------------------------------
154047 --
154048 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
154049 
154050 
154051   -----------------------------------------------
154052   -- No accrual reversal for the event class/type
154053   -----------------------------------------------
154054 ----------------------------------------------------------------
154055 
154056 --
154057 -- this ends the header loop iteration for one bulk fetch
154058 --
154059 END LOOP;
154060 
154061 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
154062 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
154063 
154064 --
154065 -- insert dummy rows into lines gt table that were created due to
154066 -- transaction reversals
154067 --
154068 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
154069    l_result := XLA_AE_LINES_PKG.InsertLines;
154070 END IF;
154071 
154072 --
154073 -- reset the temp_line_num for each set of events fetched from header
154074 -- cursor rather than doing it for each new event in line cursor
154075 -- Bug 3939231
154076 --
154077 xla_ae_lines_pkg.g_temp_line_num := 0;
154078 
154079 
154080 
154081 --
154082 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
154083 --
154084 --
154085 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154086 
154087       trace
154088          (p_msg      => 'SQL - FETCH line_cur'
154089          ,p_level    => C_LEVEL_STATEMENT
154090          ,p_module   => l_log_module);
154091 
154092 END IF;
154093 --
154094 --
154095 LOOP
154096   --
154097   FETCH line_cur BULK COLLECT INTO
154098         l_array_entity_id
154099       , l_array_legal_entity_id
154100       , l_array_entity_code
154101       , l_array_transaction_num
154102       , l_array_event_id
154103       , l_array_class_code
154104       , l_array_event_type
154105       , l_array_event_number
154106       , l_array_event_date
154107       , l_array_transaction_date
154108       , l_array_reference_num_1
154109       , l_array_reference_num_2
154110       , l_array_reference_num_3
154111       , l_array_reference_num_4
154112       , l_array_reference_char_1
154113       , l_array_reference_char_2
154114       , l_array_reference_char_3
154115       , l_array_reference_char_4
154116       , l_array_reference_date_1
154117       , l_array_reference_date_2
154118       , l_array_reference_date_3
154119       , l_array_reference_date_4
154120       , l_array_event_created_by
154121       , l_array_budgetary_control_flag
154122       , l_array_extract_line_num 
154123       , l_array_source_4
154124       , l_array_source_11
154125       , l_array_source_15
154126       , l_array_source_18
154127       , l_array_source_19
154128       , l_array_source_20
154129       , l_array_source_21
154130       , l_array_source_22
154131       , l_array_source_24
154132       LIMIT l_rows;
154133 
154134   --
154135   IF (C_LEVEL_EVENT >= g_log_level) THEN
154136             trace
154137                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
154138                ,p_level    => C_LEVEL_EVENT
154139                ,p_module   => l_log_module);
154140   END IF;
154141   --
154142   EXIT WHEN l_array_entity_id.count = 0;
154143 
154144   XLA_AE_LINES_PKG.g_rec_lines := null;
154145 
154146 --
154147 -- Bug 4458708
154148 --
154149 XLA_AE_LINES_PKG.g_LineNumber := 0;
154150 --
154151 --
154152 
154153 FOR Idx IN 1..l_array_event_id.count LOOP
154154    --
154155    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
154156    --
154157    l_event_id := l_array_event_id(idx);  -- 5648433
154158 
154159    --
154160    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
154161    --
154162 
154163    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
154164              (g_array_event(l_event_id).array_value_num('header_index'))
154165          ,'N'
154166          ) <> 'Y'
154167    THEN
154168       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154169          trace
154170             (p_msg      => 'Trancaction revesal option is not Y '
154171             ,p_level    => C_LEVEL_STATEMENT
154172             ,p_module   => l_log_module);
154173       END IF;
154174 
154175 --
154176 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
154177 --
154178 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
154179 --
154180 -- set event info as cache for other routines to refer event attributes
154181 --
154182 
154183 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
154184    l_previous_event_id := l_event_id;
154185 
154186    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
154187       (p_application_id           => p_application_id
154188       ,p_primary_ledger_id        => p_primary_ledger_id
154189       ,p_base_ledger_id           => p_base_ledger_id
154190       ,p_target_ledger_id         => p_target_ledger_id
154191       ,p_entity_id                => l_array_entity_id(Idx)
154192       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
154193       ,p_entity_code              => l_array_entity_code(Idx)
154194       ,p_transaction_num          => l_array_transaction_num(Idx)
154195       ,p_event_id                 => l_array_event_id(Idx)
154196       ,p_event_class_code         => l_array_class_code(Idx)
154197       ,p_event_type_code          => l_array_event_type(Idx)
154198       ,p_event_number             => l_array_event_number(Idx)
154199       ,p_event_date               => l_array_event_date(Idx)
154200       ,p_transaction_date         => l_array_transaction_date(Idx)
154201       ,p_reference_num_1          => l_array_reference_num_1(Idx)
154202       ,p_reference_num_2          => l_array_reference_num_2(Idx)
154203       ,p_reference_num_3          => l_array_reference_num_3(Idx)
154204       ,p_reference_num_4          => l_array_reference_num_4(Idx)
154205       ,p_reference_char_1         => l_array_reference_char_1(Idx)
154206       ,p_reference_char_2         => l_array_reference_char_2(Idx)
154207       ,p_reference_char_3         => l_array_reference_char_3(Idx)
154208       ,p_reference_char_4         => l_array_reference_char_4(Idx)
154209       ,p_reference_date_1         => l_array_reference_date_1(Idx)
154210       ,p_reference_date_2         => l_array_reference_date_2(Idx)
154211       ,p_reference_date_3         => l_array_reference_date_3(Idx)
154212       ,p_reference_date_4         => l_array_reference_date_4(Idx)
154213       ,p_event_created_by         => l_array_event_created_by(Idx)
154214       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
154215        --
154216 END IF;
154217 
154218 
154219 
154220 --
154221 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
154222 
154223 l_acct_reversal_source := SUBSTR(NULL, 1,30);
154224 
154225 IF l_continue_with_lines THEN
154226    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
154227       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
154228 
154229       xla_accounting_err_pkg.build_message
154230          (p_appli_s_name            => 'XLA'
154231          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
154232          ,p_token_1                 => 'LINE_NUMBER'
154233          ,p_value_1                 => l_array_extract_line_num(Idx)
154234          ,p_token_2                 => 'PRODUCT_NAME'
154235          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
154236          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
154237          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
154238          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
154239 
154240    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
154241       --
154242       -- following sets the accounting attributes needed to reverse
154243       -- accounting for a distributeion
154244       --
154245 
154246       --
154247       -- 5217187
154248       --
154249       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
154250       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
154251                                        g_array_event(l_event_id).array_value_num('header_index'));
154252       --
154253       --
154254 
154255       -- No reversal code generated
154256 
154257       xla_ae_lines_pkg.SetAcctReversalAttrs
154258          (p_event_id             => l_event_id
154259          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
154260          ,p_calculate_acctd_flag => l_calculate_acctd_flag
154261          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
154262    END IF;
154263 
154264    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
154265        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
154266 
154267 --
154268 AcctLineType_20 (
154269  p_application_id  => p_application_id
154270  ,p_event_id     => l_event_id
154271  ,p_calculate_acctd_flag => l_calculate_acctd_flag
154272  ,p_calculate_g_l_flag => l_calculate_g_l_flag
154273  ,p_actual_flag => l_actual_flag
154274  ,p_balance_type_code => l_balance_type_code
154275  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154276  
154277  , p_source_4 => l_array_source_4(Idx)
154278  , p_source_11 => l_array_source_11(Idx)
154279  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154280  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154281  , p_source_15 => l_array_source_15(Idx)
154282  , p_source_18 => l_array_source_18(Idx)
154283  , p_source_19 => l_array_source_19(Idx)
154284  , p_source_20 => l_array_source_20(Idx)
154285  , p_source_21 => l_array_source_21(Idx)
154286  , p_source_22 => l_array_source_22(Idx)
154287  , p_source_24 => l_array_source_24(Idx)
154288  );
154289 If(l_balance_type_code = 'A') THEN
154290   l_actual_gain_loss_ref := l_gain_or_loss_ref;
154291 END IF;
154292 
154293 --
154294 
154295 
154296 --
154297 AcctLineType_85 (
154298  p_application_id  => p_application_id
154299  ,p_event_id     => l_event_id
154300  ,p_calculate_acctd_flag => l_calculate_acctd_flag
154301  ,p_calculate_g_l_flag => l_calculate_g_l_flag
154302  ,p_actual_flag => l_actual_flag
154303  ,p_balance_type_code => l_balance_type_code
154304  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154305  
154306  , p_source_4 => l_array_source_4(Idx)
154307  , p_source_11 => l_array_source_11(Idx)
154308  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154309  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154310  , p_source_15 => l_array_source_15(Idx)
154311  , p_source_18 => l_array_source_18(Idx)
154312  , p_source_19 => l_array_source_19(Idx)
154313  , p_source_20 => l_array_source_20(Idx)
154314  , p_source_21 => l_array_source_21(Idx)
154315  , p_source_22 => l_array_source_22(Idx)
154316  , p_source_24 => l_array_source_24(Idx)
154317  );
154318 If(l_balance_type_code = 'A') THEN
154319   l_actual_gain_loss_ref := l_gain_or_loss_ref;
154320 END IF;
154321 
154322 --
154323 
154324 
154325 --
154326 AcctLineType_97 (
154327  p_application_id  => p_application_id
154328  ,p_event_id     => l_event_id
154329  ,p_calculate_acctd_flag => l_calculate_acctd_flag
154330  ,p_calculate_g_l_flag => l_calculate_g_l_flag
154331  ,p_actual_flag => l_actual_flag
154332  ,p_balance_type_code => l_balance_type_code
154333  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154334  
154335  , p_source_4 => l_array_source_4(Idx)
154336  , p_source_11 => l_array_source_11(Idx)
154337  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154338  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154339  , p_source_15 => l_array_source_15(Idx)
154340  , p_source_18 => l_array_source_18(Idx)
154341  , p_source_19 => l_array_source_19(Idx)
154342  , p_source_20 => l_array_source_20(Idx)
154343  , p_source_21 => l_array_source_21(Idx)
154344  , p_source_22 => l_array_source_22(Idx)
154345  , p_source_24 => l_array_source_24(Idx)
154346  );
154347 If(l_balance_type_code = 'A') THEN
154348   l_actual_gain_loss_ref := l_gain_or_loss_ref;
154349 END IF;
154350 
154351 --
154352 
154353 
154354 --
154355 AcctLineType_109 (
154356  p_application_id  => p_application_id
154357  ,p_event_id     => l_event_id
154358  ,p_calculate_acctd_flag => l_calculate_acctd_flag
154359  ,p_calculate_g_l_flag => l_calculate_g_l_flag
154360  ,p_actual_flag => l_actual_flag
154361  ,p_balance_type_code => l_balance_type_code
154362  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154363  
154364  , p_source_4 => l_array_source_4(Idx)
154365  , p_source_11 => l_array_source_11(Idx)
154366  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154367  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154368  , p_source_15 => l_array_source_15(Idx)
154369  , p_source_18 => l_array_source_18(Idx)
154370  , p_source_19 => l_array_source_19(Idx)
154371  , p_source_20 => l_array_source_20(Idx)
154372  , p_source_21 => l_array_source_21(Idx)
154373  , p_source_22 => l_array_source_22(Idx)
154374  , p_source_24 => l_array_source_24(Idx)
154375  );
154376 If(l_balance_type_code = 'A') THEN
154377   l_actual_gain_loss_ref := l_gain_or_loss_ref;
154378 END IF;
154379 
154380 --
154381 
154382 
154383 --
154384 AcctLineType_154 (
154385  p_application_id  => p_application_id
154386  ,p_event_id     => l_event_id
154387  ,p_calculate_acctd_flag => l_calculate_acctd_flag
154388  ,p_calculate_g_l_flag => l_calculate_g_l_flag
154389  ,p_actual_flag => l_actual_flag
154390  ,p_balance_type_code => l_balance_type_code
154391  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154392  
154393  , p_source_4 => l_array_source_4(Idx)
154394  , p_source_11 => l_array_source_11(Idx)
154395  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154396  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154397  , p_source_15 => l_array_source_15(Idx)
154398  , p_source_18 => l_array_source_18(Idx)
154399  , p_source_19 => l_array_source_19(Idx)
154400  , p_source_20 => l_array_source_20(Idx)
154401  , p_source_21 => l_array_source_21(Idx)
154402  , p_source_22 => l_array_source_22(Idx)
154403  , p_source_24 => l_array_source_24(Idx)
154404  );
154405 If(l_balance_type_code = 'A') THEN
154406   l_actual_gain_loss_ref := l_gain_or_loss_ref;
154407 END IF;
154408 
154409 --
154410 
154411 
154412 --
154413 AcctLineType_179 (
154414  p_application_id  => p_application_id
154415  ,p_event_id     => l_event_id
154416  ,p_calculate_acctd_flag => l_calculate_acctd_flag
154417  ,p_calculate_g_l_flag => l_calculate_g_l_flag
154418  ,p_actual_flag => l_actual_flag
154419  ,p_balance_type_code => l_balance_type_code
154420  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154421  
154422  , p_source_4 => l_array_source_4(Idx)
154423  , p_source_11 => l_array_source_11(Idx)
154424  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154425  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154426  , p_source_15 => l_array_source_15(Idx)
154427  , p_source_18 => l_array_source_18(Idx)
154428  , p_source_19 => l_array_source_19(Idx)
154429  , p_source_20 => l_array_source_20(Idx)
154430  , p_source_21 => l_array_source_21(Idx)
154431  , p_source_22 => l_array_source_22(Idx)
154432  , p_source_24 => l_array_source_24(Idx)
154433  );
154434 If(l_balance_type_code = 'A') THEN
154435   l_actual_gain_loss_ref := l_gain_or_loss_ref;
154436 END IF;
154437 
154438 --
154439 
154440       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
154441       -- or secondary ledger that has different currency with primary
154442       -- or alc that is calculated by sla
154443       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
154444             (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'))
154445 
154446 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
154447 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
154448           AND (l_actual_flag = 'A')) THEN
154449         XLA_AE_LINES_PKG.CreateGainOrLossLines(
154450           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
154451          ,p_application_id   => p_application_id
154452          ,p_amb_context_code => 'DEFAULT'
154453          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
154454          ,p_event_class_code => C_EVENT_CLASS_CODE
154455          ,p_event_type_code  => C_EVENT_TYPE_CODE
154456          
154457          ,p_gain_ccid        => -1
154458          ,p_loss_ccid        => -1
154459 
154460          ,p_actual_flag      => l_actual_flag
154461          ,p_enc_flag         => null
154462          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
154463          ,p_enc_g_l_ref      => null
154464          );
154465       END IF;
154466    END IF;
154467 END IF;
154468 
154469    ELSE
154470       --
154471       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
154472       --
154473       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154474          trace
154475             (p_msg      => 'Trancaction revesal option is Y'
154476             ,p_level    => C_LEVEL_STATEMENT
154477             ,p_module   => l_log_module);
154478       END IF;
154479    END IF;
154480 
154481 END LOOP;
154482 l_result := XLA_AE_LINES_PKG.InsertLines ;
154483 end loop;
154484 close line_cur;
154485 
154486 
154487 --
154488 -- insert headers into xla_ae_headers_gt table
154489 --
154490 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
154491 
154492 -- insert into errors table here.
154493 
154494 END LOOP;
154495 
154496 --
154497 -- 4865292
154498 --
154499 -- Compare g_hdr_extract_count with event count in
154500 -- CreateHeadersAndLines.
154501 --
154502 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
154503 
154504 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154505    trace (p_msg     => '# rows extracted from header extract objects '
154506                     || ' (running total): '
154507                     || g_hdr_extract_count
154508          ,p_level   => C_LEVEL_STATEMENT
154509          ,p_module  => l_log_module);
154510 END IF;
154511 
154512 CLOSE header_cur;
154513 --
154514 
154515 --
154516 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154517    trace
154518       (p_msg      => 'END of EventClass_261'
154519       ,p_level    => C_LEVEL_PROCEDURE
154520       ,p_module   => l_log_module);
154521 END IF;
154522 --
154523 RETURN l_result;
154524 EXCEPTION
154525 WHEN xla_exceptions_pkg.application_exception THEN
154526    
154527 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
154528 
154529    
154530 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
154531 
154532    RAISE;
154533 
154534 WHEN NO_DATA_FOUND THEN
154535 
154536 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
154537 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
154538 
154539 FOR header_record IN header_cur
154540 LOOP
154541     l_array_header_events(header_record.event_id) := header_record.event_id;
154542 END LOOP;
154543 
154544 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
154545 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
154546 
154547 fnd_file.put_line(fnd_file.LOG, '                    ');
154548 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
154549 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
154550 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
154551 
154552 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
154553 LOOP
154554 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
154555 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
154556         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
154557 	END IF;
154558 END LOOP;
154559 
154560 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
154561 fnd_file.put_line(fnd_file.LOG, '                    ');
154562 
154563 
154564 xla_exceptions_pkg.raise_message
154565       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_261');
154566 
154567 
154568 WHEN OTHERS THEN
154569    xla_exceptions_pkg.raise_message
154570       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_261');
154571 END EventClass_261;
154572 --
154573 
154574 ---------------------------------------
154575 --
154576 -- PRIVATE PROCEDURE
154577 --         insert_sources_262
154578 --
154579 ----------------------------------------
154580 --
154581 PROCEDURE insert_sources_262(
154582                                 p_target_ledger_id       IN NUMBER
154583                               , p_language               IN VARCHAR2
154584                               , p_sla_ledger_id          IN NUMBER
154585                               , p_pad_start_date         IN DATE
154586                               , p_pad_end_date           IN DATE
154587                          )
154588 IS
154589 
154590 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INTRAORG_TXFR_ALL';
154591 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INTRAORG_TXFR';
154592 p_apps_owner                   VARCHAR2(30);
154593 l_log_module                   VARCHAR2(240);
154594 BEGIN
154595 IF g_log_enabled THEN
154596       l_log_module := C_DEFAULT_MODULE||'.insert_sources_262';
154597 END IF;
154598 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154599 
154600       trace
154601          (p_msg      => 'BEGIN of insert_sources_262'
154602          ,p_level    => C_LEVEL_PROCEDURE
154603          ,p_module   => l_log_module);
154604 
154605 END IF;
154606 
154607 -- select APPS owner
154608 SELECT oracle_username
154609   INTO p_apps_owner
154610   FROM fnd_oracle_userid
154611  WHERE read_only_flag = 'U'
154612 ;
154613 
154614 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154615       trace
154616          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
154617                         ' - p_language = '||p_language||
154618                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
154619                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
154620                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
154621                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
154622          ,p_level    => C_LEVEL_STATEMENT
154623          ,p_module   => l_log_module);
154624 END IF;
154625 
154626 
154627 --
154628 INSERT INTO xla_diag_sources --hdr2
154629 (
154630         event_id
154631       , ledger_id
154632       , sla_ledger_id
154633       , description_language
154634       , object_name
154635       , object_type_code
154636       , line_number
154637       , source_application_id
154638       , source_type_code
154639       , source_code
154640       , source_value
154641       , source_meaning
154642       , created_by
154643       , creation_date
154644       , last_update_date
154645       , last_updated_by
154646       , last_update_login
154647       , program_update_date
154648       , program_application_id
154649       , program_id
154650       , request_id
154651 )
154652 SELECT
154653         event_id
154654       , p_target_ledger_id
154655       , p_sla_ledger_id
154656       , p_language
154657       , object_name
154658       , object_type_code
154659       , line_number
154660       , source_application_id
154661       , source_type_code
154662       , source_code
154663       , SUBSTR(source_value ,1,1996)
154664       , SUBSTR(source_meaning ,1,200)
154665       , xla_environment_pkg.g_Usr_Id
154666       , TRUNC(SYSDATE)
154667       , TRUNC(SYSDATE)
154668       , xla_environment_pkg.g_Usr_Id
154669       , xla_environment_pkg.g_Login_Id
154670       , TRUNC(SYSDATE)
154671       , xla_environment_pkg.g_Prog_Appl_Id
154672       , xla_environment_pkg.g_Prog_Id
154673       , xla_environment_pkg.g_Req_Id
154674   FROM (
154675        SELECT xet.event_id                  event_id
154676             , 0                          line_number
154677             , CASE r
154678                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
154679                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
154680                 
154681                ELSE null
154682               END                           object_name
154683             , CASE r
154684                 WHEN 1 THEN 'HEADER' 
154685                 WHEN 2 THEN 'HEADER' 
154686                 
154687                 ELSE null
154688               END                           object_type_code
154689             , CASE r
154690                 WHEN 1 THEN '707' 
154691                 WHEN 2 THEN '707' 
154692                 
154693                 ELSE null
154694               END                           source_application_id
154695             , 'S'             source_type_code
154696             , CASE r
154697                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
154698                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
154699                 
154700                 ELSE null
154701               END                           source_code
154702             , CASE r
154703                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
154704                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
154705                 
154706                 ELSE null
154707               END                           source_value
154708             , CASE r
154709                 WHEN 1 THEN fvl12.meaning
154710                 WHEN 2 THEN fvl38.meaning
154711                 
154712                 ELSE null
154713               END               source_meaning
154714          FROM xla_events_gt     xet  
154715       , CST_XLA_INV_HEADERS_V  h1
154716   , fnd_lookup_values    fvl12
154717   , fnd_lookup_values    fvl38
154718              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
154719          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
154720            AND xet.event_class_code = C_EVENT_CLASS_CODE
154721               AND h1.event_id = xet.event_id
154722    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
154723   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
154724   AND fvl12.view_application_id(+) = 700
154725   AND fvl12.language(+)            = USERENV('LANG')
154726      AND fvl38.lookup_type(+)         = 'YES_NO'
154727   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
154728   AND fvl38.view_application_id(+) = 0
154729   AND fvl38.language(+)            = USERENV('LANG')
154730   
154731 )
154732 ;
154733 --
154734 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154735 
154736       trace
154737          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
154738          ,p_level    => C_LEVEL_STATEMENT
154739          ,p_module   => l_log_module);
154740 
154741 END IF;
154742 --
154743 
154744 
154745 
154746 --
154747 INSERT INTO xla_diag_sources  --line2
154748 (
154749         event_id
154750       , ledger_id
154751       , sla_ledger_id
154752       , description_language
154753       , object_name
154754       , object_type_code
154755       , line_number
154756       , source_application_id
154757       , source_type_code
154758       , source_code
154759       , source_value
154760       , source_meaning
154761       , created_by
154762       , creation_date
154763       , last_update_date
154764       , last_updated_by
154765       , last_update_login
154766       , program_update_date
154767       , program_application_id
154768       , program_id
154769       , request_id
154770 )
154771 SELECT  event_id
154772       , p_target_ledger_id
154773       , p_sla_ledger_id
154774       , p_language
154775       , object_name
154776       , object_type_code
154777       , line_number
154778       , source_application_id
154779       , source_type_code
154780       , source_code
154781       , SUBSTR(source_value,1,1996)
154782       , SUBSTR(source_meaning ,1,200)
154783       , xla_environment_pkg.g_Usr_Id
154784       , TRUNC(SYSDATE)
154785       , TRUNC(SYSDATE)
154786       , xla_environment_pkg.g_Usr_Id
154787       , xla_environment_pkg.g_Login_Id
154788       , TRUNC(SYSDATE)
154789       , xla_environment_pkg.g_Prog_Appl_Id
154790       , xla_environment_pkg.g_Prog_Id
154791       , xla_environment_pkg.g_Req_Id
154792   FROM (
154793        SELECT xet.event_id                  event_id
154794             , l2.line_number                 line_number
154795             , CASE r
154796                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
154797                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
154798                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
154799                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
154800                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
154801                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
154802                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
154803                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
154804                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
154805                 
154806                ELSE null
154807               END                           object_name
154808             , CASE r
154809                 WHEN 1 THEN 'LINE' 
154810                 WHEN 2 THEN 'LINE' 
154811                 WHEN 3 THEN 'LINE' 
154812                 WHEN 4 THEN 'LINE' 
154813                 WHEN 5 THEN 'LINE' 
154814                 WHEN 6 THEN 'LINE' 
154815                 WHEN 7 THEN 'LINE' 
154816                 WHEN 8 THEN 'LINE' 
154817                 WHEN 9 THEN 'LINE' 
154818                 
154819                 ELSE null
154820               END                           object_type_code
154821             , CASE r
154822                 WHEN 1 THEN '707' 
154823                 WHEN 2 THEN '707' 
154824                 WHEN 3 THEN '707' 
154825                 WHEN 4 THEN '707' 
154826                 WHEN 5 THEN '707' 
154827                 WHEN 6 THEN '707' 
154828                 WHEN 7 THEN '707' 
154829                 WHEN 8 THEN '707' 
154830                 WHEN 9 THEN '707' 
154831                 
154832                 ELSE null
154833               END                           source_application_id
154834             , 'S'             source_type_code
154835             , CASE r
154836                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
154837                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
154838                 WHEN 3 THEN 'CURRENCY_CODE' 
154839                 WHEN 4 THEN 'ENTERED_AMOUNT' 
154840                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
154841                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
154842                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
154843                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
154844                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
154845                 
154846                 ELSE null
154847               END                           source_code
154848             , CASE r
154849                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
154850                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
154851                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
154852                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
154853                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
154854                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
154855                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
154856                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
154857                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
154858                 
154859                 ELSE null
154860               END                           source_value
154861             , null              source_meaning
154862          FROM  xla_events_gt     xet  
154863         , CST_XLA_INV_LINES_V  l2
154864             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
154865         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
154866           AND xet.event_class_code = C_EVENT_CLASS_CODE
154867             AND l2.event_id          = xet.event_id
154868 
154869 )
154870 ;
154871 --
154872 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154873 
154874       trace
154875          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
154876          ,p_level    => C_LEVEL_STATEMENT
154877          ,p_module   => l_log_module);
154878 
154879 END IF;
154880 
154881 
154882 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154883       trace
154884          (p_msg      => 'END of insert_sources_262'
154885          ,p_level    => C_LEVEL_PROCEDURE
154886          ,p_module   => l_log_module);
154887 END IF;
154888 EXCEPTION
154889   WHEN xla_exceptions_pkg.application_exception THEN
154890       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
154891             trace
154892                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
154893                ,p_level    => C_LEVEL_EXCEPTION
154894                ,p_module   => l_log_module);
154895       END IF;
154896       RAISE;
154897   WHEN OTHERS THEN
154898       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
154899             trace
154900                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
154901                ,p_level    => C_LEVEL_EXCEPTION
154902                ,p_module   => l_log_module);
154903        END IF;
154904        xla_exceptions_pkg.raise_message
154905            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_262');
154906 END insert_sources_262;
154907 --
154908 
154909 ---------------------------------------
154910 --
154911 -- PRIVATE FUNCTION
154912 --         EventClass_262
154913 --
154914 ----------------------------------------
154915 --
154916 FUNCTION EventClass_262
154917        (p_application_id         IN NUMBER
154918        ,p_base_ledger_id         IN NUMBER
154919        ,p_target_ledger_id       IN NUMBER
154920        ,p_language               IN VARCHAR2
154921        ,p_currency_code          IN VARCHAR2
154922        ,p_sla_ledger_id          IN NUMBER
154923        ,p_pad_start_date         IN DATE
154924        ,p_pad_end_date           IN DATE
154925        ,p_primary_ledger_id      IN NUMBER)
154926 RETURN BOOLEAN IS
154927 --
154928 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INTRAORG_TXFR_ALL';
154929 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INTRAORG_TXFR';
154930 
154931 l_calculate_acctd_flag   VARCHAR2(1) :='N';
154932 l_calculate_g_l_flag     VARCHAR2(1) :='N';
154933 --
154934 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154935 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154936 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154937 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154938 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154939 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154940 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154941 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154942 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154943 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154944 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154945 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154946 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154947 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154948 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154949 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154950 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154951 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154952 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154953 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154954 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154955 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154956 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
154957 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154958 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
154959 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
154960 
154961 l_event_id                             NUMBER;
154962 l_previous_event_id                    NUMBER;
154963 l_first_event_id                       NUMBER;
154964 l_last_event_id                        NUMBER;
154965 
154966 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
154967 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
154968 --
154969 --
154970 l_result                    BOOLEAN := TRUE;
154971 l_rows                      NUMBER  := 1000;
154972 l_event_type_name           VARCHAR2(80) := 'All';
154973 l_event_class_name          VARCHAR2(80) := 'Intraorg Transfer';
154974 l_description               VARCHAR2(4000);
154975 l_transaction_reversal      NUMBER;
154976 l_ae_header_id              NUMBER;
154977 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
154978 l_log_module                VARCHAR2(240);
154979 --
154980 l_acct_reversal_source      VARCHAR2(30);
154981 l_trx_reversal_source       VARCHAR2(30);
154982 
154983 l_continue_with_lines       BOOLEAN := TRUE;
154984 --
154985 l_acc_rev_gl_date_source    DATE;                      -- 4262811
154986 --
154987 type t_array_event_id is table of number index by binary_integer;
154988 
154989 l_rec_array_event                    t_rec_array_event;
154990 l_null_rec_array_event               t_rec_array_event;
154991 l_array_ae_header_id                 xla_number_array_type;
154992 l_actual_flag                        VARCHAR2(1) := NULL;
154993 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
154994 l_balance_type_code                  VARCHAR2(1) :=NULL;
154995 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
154996 
154997 --
154998 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
154999 --
155000 
155001 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
155002 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
155003 
155004 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
155005 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
155006 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
155007 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
155008 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
155009 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
155010 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
155011 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
155012 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
155013 
155014 l_array_source_12              t_array_source_12;
155015 l_array_source_12_meaning      t_array_lookup_meaning;
155016 l_array_source_38              t_array_source_38;
155017 l_array_source_38_meaning      t_array_lookup_meaning;
155018 
155019 l_array_source_4      t_array_source_4;
155020 l_array_source_11      t_array_source_11;
155021 l_array_source_15      t_array_source_15;
155022 l_array_source_18      t_array_source_18;
155023 l_array_source_19      t_array_source_19;
155024 l_array_source_20      t_array_source_20;
155025 l_array_source_21      t_array_source_21;
155026 l_array_source_22      t_array_source_22;
155027 l_array_source_24      t_array_source_24;
155028 
155029 --
155030 CURSOR header_cur
155031 IS
155032 SELECT /*+ leading(xet) cardinality(xet,1) */
155033 -- Event Class Code: INTRAORG_TXFR
155034     xet.entity_id
155035    ,xet.legal_entity_id
155036    ,xet.entity_code
155037    ,xet.transaction_number
155038    ,xet.event_id
155039    ,xet.event_class_code
155040    ,xet.event_type_code
155041    ,xet.event_number
155042    ,xet.event_date
155043    ,xet.transaction_date
155044    ,xet.reference_num_1
155045    ,xet.reference_num_2
155046    ,xet.reference_num_3
155047    ,xet.reference_num_4
155048    ,xet.reference_char_1
155049    ,xet.reference_char_2
155050    ,xet.reference_char_3
155051    ,xet.reference_char_4
155052    ,xet.reference_date_1
155053    ,xet.reference_date_2
155054    ,xet.reference_date_3
155055    ,xet.reference_date_4
155056    ,xet.event_created_by
155057    ,xet.budgetary_control_flag 
155058   , h1.DISTRIBUTION_TYPE    source_12
155059   , fvl12.meaning   source_12_meaning
155060   , h1.TRANSFER_TO_GL_INDICATOR    source_38
155061   , fvl38.meaning   source_38_meaning
155062   FROM xla_events_gt     xet 
155063   , CST_XLA_INV_HEADERS_V  h1
155064   , fnd_lookup_values    fvl12
155065   , fnd_lookup_values    fvl38
155066  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
155067    and xet.event_class_code = C_EVENT_CLASS_CODE
155068    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
155069    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
155070   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
155071   AND fvl12.view_application_id(+) = 700
155072   AND fvl12.language(+)            = USERENV('LANG')
155073      AND fvl38.lookup_type(+)         = 'YES_NO'
155074   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
155075   AND fvl38.view_application_id(+) = 0
155076   AND fvl38.language(+)            = USERENV('LANG')
155077   
155078  ORDER BY event_id
155079 ;
155080 
155081 
155082 --
155083 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
155084 IS
155085 SELECT  /*+ leading(xet) cardinality(xet,1) */
155086 -- Event Class Code: INTRAORG_TXFR
155087     xet.entity_id
155088    ,xet.legal_entity_id
155089    ,xet.entity_code
155090    ,xet.transaction_number
155091    ,xet.event_id
155092    ,xet.event_class_code
155093    ,xet.event_type_code
155094    ,xet.event_number
155095    ,xet.event_date
155096    ,xet.transaction_date
155097    ,xet.reference_num_1
155098    ,xet.reference_num_2
155099    ,xet.reference_num_3
155100    ,xet.reference_num_4
155101    ,xet.reference_char_1
155102    ,xet.reference_char_2
155103    ,xet.reference_char_3
155104    ,xet.reference_char_4
155105    ,xet.reference_date_1
155106    ,xet.reference_date_2
155107    ,xet.reference_date_3
155108    ,xet.reference_date_4
155109    ,xet.event_created_by
155110    ,xet.budgetary_control_flag
155111  , l2.LINE_NUMBER  
155112   , l2.CODE_COMBINATION_ID    source_4
155113   , l2.DISTRIBUTION_IDENTIFIER    source_11
155114   , l2.CURRENCY_CODE    source_15
155115   , l2.ENTERED_AMOUNT    source_18
155116   , l2.CURRENCY_CONVERSION_DATE    source_19
155117   , l2.CURRENCY_CONVERSION_RATE    source_20
155118   , l2.CURRENCY_CONVERSION_TYPE    source_21
155119   , l2.ACCOUNTED_AMOUNT    source_22
155120   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
155121   FROM xla_events_gt     xet 
155122   , CST_XLA_INV_LINES_V  l2
155123  WHERE xet.event_id between x_first_event_id and x_last_event_id
155124    and xet.event_date between p_pad_start_date and p_pad_end_date
155125    and xet.event_class_code = C_EVENT_CLASS_CODE
155126    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
155127 ;
155128 
155129 --
155130 BEGIN
155131 IF g_log_enabled THEN
155132    l_log_module := C_DEFAULT_MODULE||'.EventClass_262';
155133 END IF;
155134 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155135    trace
155136       (p_msg      => 'BEGIN of EventClass_262'
155137       ,p_level    => C_LEVEL_PROCEDURE
155138       ,p_module   => l_log_module);
155139 END IF;
155140 
155141 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155142    trace
155143       (p_msg      => 'p_application_id = '||p_application_id||
155144                      ' - p_base_ledger_id = '||p_base_ledger_id||
155145                      ' - p_target_ledger_id  = '||p_target_ledger_id||
155146                      ' - p_language = '||p_language||
155147                      ' - p_currency_code = '||p_currency_code||
155148                      ' - p_sla_ledger_id = '||p_sla_ledger_id
155149       ,p_level    => C_LEVEL_STATEMENT
155150       ,p_module   => l_log_module);
155151 END IF;
155152 --
155153 -- initialze arrays
155154 --
155155 g_array_event.DELETE;
155156 l_rec_array_event := l_null_rec_array_event;
155157 --
155158 --------------------------------------
155159 -- 4262811 Initialze MPA Line Number
155160 --------------------------------------
155161 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
155162 
155163 --
155164 
155165 --
155166 OPEN header_cur;
155167 --
155168 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155169    trace
155170    (p_msg      => 'SQL - FETCH header_cur'
155171    ,p_level    => C_LEVEL_STATEMENT
155172    ,p_module   => l_log_module);
155173 END IF;
155174 --
155175 LOOP
155176 FETCH header_cur BULK COLLECT INTO
155177         l_array_entity_id
155178       , l_array_legal_entity_id
155179       , l_array_entity_code
155180       , l_array_transaction_num
155181       , l_array_event_id
155182       , l_array_class_code
155183       , l_array_event_type
155184       , l_array_event_number
155185       , l_array_event_date
155186       , l_array_transaction_date
155187       , l_array_reference_num_1
155188       , l_array_reference_num_2
155189       , l_array_reference_num_3
155190       , l_array_reference_num_4
155191       , l_array_reference_char_1
155192       , l_array_reference_char_2
155193       , l_array_reference_char_3
155194       , l_array_reference_char_4
155195       , l_array_reference_date_1
155196       , l_array_reference_date_2
155197       , l_array_reference_date_3
155198       , l_array_reference_date_4
155199       , l_array_event_created_by
155200       , l_array_budgetary_control_flag 
155201       , l_array_source_12
155202       , l_array_source_12_meaning
155203       , l_array_source_38
155204       , l_array_source_38_meaning
155205       LIMIT l_rows;
155206 --
155207 IF (C_LEVEL_EVENT >= g_log_level) THEN
155208    trace
155209    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
155210    ,p_level    => C_LEVEL_EVENT
155211    ,p_module   => l_log_module);
155212 END IF;
155213 --
155214 EXIT WHEN l_array_entity_id.COUNT = 0;
155215 
155216 -- initialize arrays
155217 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
155218 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
155219 
155220 --
155221 -- Bug 4458708
155222 --
155223 XLA_AE_LINES_PKG.g_LineNumber := 0;
155224 
155225 
155226 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
155227 g_last_hdr_idx := l_array_event_id.LAST;
155228 --
155229 -- loop for the headers. Each iteration is for each header extract row
155230 -- fetched in header cursor
155231 --
155232 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
155233 
155234 --
155235 -- set event info as cache for other routines to refer event attributes
155236 --
155237 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
155238    (p_application_id           => p_application_id
155239    ,p_primary_ledger_id        => p_primary_ledger_id
155240    ,p_base_ledger_id           => p_base_ledger_id
155241    ,p_target_ledger_id         => p_target_ledger_id
155242    ,p_entity_id                => l_array_entity_id(hdr_idx)
155243    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
155244    ,p_entity_code              => l_array_entity_code(hdr_idx)
155245    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
155246    ,p_event_id                 => l_array_event_id(hdr_idx)
155247    ,p_event_class_code         => l_array_class_code(hdr_idx)
155248    ,p_event_type_code          => l_array_event_type(hdr_idx)
155249    ,p_event_number             => l_array_event_number(hdr_idx)
155250    ,p_event_date               => l_array_event_date(hdr_idx)
155251    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
155252    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
155253    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
155254    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
155255    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
155256    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
155257    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
155258    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
155259    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
155260    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
155261    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
155262    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
155263    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
155264    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
155265    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
155266 
155267 --
155268 -- set the status of entry to C_VALID (0)
155269 --
155270 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
155271 
155272 --
155273 -- initialize a row for ae header
155274 --
155275 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
155276 
155277 l_event_id := l_array_event_id(hdr_idx);
155278 
155279 --
155280 -- storing the hdr_idx for event. May be used by line cursor.
155281 --
155282 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
155283 
155284 --
155285 -- store sources from header extract. This can be improved to
155286 -- store only those sources from header extract that may be used in lines
155287 --
155288 
155289 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
155290 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
155291 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
155292 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
155293 
155294 --
155295 -- initilaize the status of ae headers for diffrent balance types
155296 -- the status is initialised to C_NOT_CREATED (2)
155297 --
155298 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
155299 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
155300 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
155301 
155302 --
155303 -- call api to validate and store accounting attributes for header
155304 --
155305 
155306 ------------------------------------------------------------
155307 -- Accrual Reversal : to get date for Standard Source (NONE)
155308 ------------------------------------------------------------
155309 l_acc_rev_gl_date_source := NULL;
155310 
155311      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
155312       l_rec_acct_attrs.array_date_value(1) := 
155313 xla_ae_sources_pkg.GetSystemSourceDate(
155314    p_source_code           => 'XLA_REFERENCE_DATE_1'
155315  , p_source_type_code      => 'Y'
155316  , p_source_application_id =>  602
155317 );
155318      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
155319       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
155320 
155321 
155322 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
155323 
155324 XLA_AE_HEADER_PKG.SetJeCategoryName;
155325 
155326 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
155327 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
155328 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
155329 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
155330 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
155331 
155332 
155333 -- No header level analytical criteria
155334 
155335 --
155336 --accounting attribute enhancement, bug 3612931
155337 --
155338 l_trx_reversal_source := SUBSTR(NULL, 1,30);
155339 
155340 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
155341    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
155342 
155343    xla_accounting_err_pkg.build_message
155344       (p_appli_s_name            => 'XLA'
155345       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
155346       ,p_token_1                 => 'ACCT_ATTR_NAME'
155347       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
155348       ,p_token_2                 => 'PRODUCT_NAME'
155349       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
155350       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
155351       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
155352       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
155353 
155354 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
155355    --
155356    -- following sets the accounting attributes needed to reverse
155357    -- accounting for a distributeion
155358    --
155359    xla_ae_lines_pkg.SetTrxReversalAttrs
155360       (p_event_id              => l_event_id
155361       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
155362       ,p_trx_reversal_source   => l_trx_reversal_source);
155363 
155364 END IF;
155365 
155366 
155367 ----------------------------------------------------------------
155368 -- 4262811 -  update the header statuses to invalid in need be
155369 ----------------------------------------------------------------
155370 --
155371 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
155372 
155373 
155374   -----------------------------------------------
155375   -- No accrual reversal for the event class/type
155376   -----------------------------------------------
155377 ----------------------------------------------------------------
155378 
155379 --
155380 -- this ends the header loop iteration for one bulk fetch
155381 --
155382 END LOOP;
155383 
155384 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
155385 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
155386 
155387 --
155388 -- insert dummy rows into lines gt table that were created due to
155389 -- transaction reversals
155390 --
155391 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
155392    l_result := XLA_AE_LINES_PKG.InsertLines;
155393 END IF;
155394 
155395 --
155396 -- reset the temp_line_num for each set of events fetched from header
155397 -- cursor rather than doing it for each new event in line cursor
155398 -- Bug 3939231
155399 --
155400 xla_ae_lines_pkg.g_temp_line_num := 0;
155401 
155402 
155403 
155404 --
155405 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
155406 --
155407 --
155408 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155409 
155410       trace
155411          (p_msg      => 'SQL - FETCH line_cur'
155412          ,p_level    => C_LEVEL_STATEMENT
155413          ,p_module   => l_log_module);
155414 
155415 END IF;
155416 --
155417 --
155418 LOOP
155419   --
155420   FETCH line_cur BULK COLLECT INTO
155421         l_array_entity_id
155422       , l_array_legal_entity_id
155423       , l_array_entity_code
155424       , l_array_transaction_num
155425       , l_array_event_id
155426       , l_array_class_code
155427       , l_array_event_type
155428       , l_array_event_number
155429       , l_array_event_date
155430       , l_array_transaction_date
155431       , l_array_reference_num_1
155432       , l_array_reference_num_2
155433       , l_array_reference_num_3
155434       , l_array_reference_num_4
155435       , l_array_reference_char_1
155436       , l_array_reference_char_2
155437       , l_array_reference_char_3
155438       , l_array_reference_char_4
155439       , l_array_reference_date_1
155440       , l_array_reference_date_2
155441       , l_array_reference_date_3
155442       , l_array_reference_date_4
155443       , l_array_event_created_by
155444       , l_array_budgetary_control_flag
155445       , l_array_extract_line_num 
155446       , l_array_source_4
155447       , l_array_source_11
155448       , l_array_source_15
155449       , l_array_source_18
155450       , l_array_source_19
155451       , l_array_source_20
155452       , l_array_source_21
155453       , l_array_source_22
155454       , l_array_source_24
155455       LIMIT l_rows;
155456 
155457   --
155458   IF (C_LEVEL_EVENT >= g_log_level) THEN
155459             trace
155460                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
155461                ,p_level    => C_LEVEL_EVENT
155462                ,p_module   => l_log_module);
155463   END IF;
155464   --
155465   EXIT WHEN l_array_entity_id.count = 0;
155466 
155467   XLA_AE_LINES_PKG.g_rec_lines := null;
155468 
155469 --
155470 -- Bug 4458708
155471 --
155472 XLA_AE_LINES_PKG.g_LineNumber := 0;
155473 --
155474 --
155475 
155476 FOR Idx IN 1..l_array_event_id.count LOOP
155477    --
155478    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
155479    --
155480    l_event_id := l_array_event_id(idx);  -- 5648433
155481 
155482    --
155483    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
155484    --
155485 
155486    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
155487              (g_array_event(l_event_id).array_value_num('header_index'))
155488          ,'N'
155489          ) <> 'Y'
155490    THEN
155491       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155492          trace
155493             (p_msg      => 'Trancaction revesal option is not Y '
155494             ,p_level    => C_LEVEL_STATEMENT
155495             ,p_module   => l_log_module);
155496       END IF;
155497 
155498 --
155499 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
155500 --
155501 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
155502 --
155503 -- set event info as cache for other routines to refer event attributes
155504 --
155505 
155506 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
155507    l_previous_event_id := l_event_id;
155508 
155509    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
155510       (p_application_id           => p_application_id
155511       ,p_primary_ledger_id        => p_primary_ledger_id
155512       ,p_base_ledger_id           => p_base_ledger_id
155513       ,p_target_ledger_id         => p_target_ledger_id
155514       ,p_entity_id                => l_array_entity_id(Idx)
155515       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
155516       ,p_entity_code              => l_array_entity_code(Idx)
155517       ,p_transaction_num          => l_array_transaction_num(Idx)
155518       ,p_event_id                 => l_array_event_id(Idx)
155519       ,p_event_class_code         => l_array_class_code(Idx)
155520       ,p_event_type_code          => l_array_event_type(Idx)
155521       ,p_event_number             => l_array_event_number(Idx)
155522       ,p_event_date               => l_array_event_date(Idx)
155523       ,p_transaction_date         => l_array_transaction_date(Idx)
155524       ,p_reference_num_1          => l_array_reference_num_1(Idx)
155525       ,p_reference_num_2          => l_array_reference_num_2(Idx)
155526       ,p_reference_num_3          => l_array_reference_num_3(Idx)
155527       ,p_reference_num_4          => l_array_reference_num_4(Idx)
155528       ,p_reference_char_1         => l_array_reference_char_1(Idx)
155529       ,p_reference_char_2         => l_array_reference_char_2(Idx)
155530       ,p_reference_char_3         => l_array_reference_char_3(Idx)
155531       ,p_reference_char_4         => l_array_reference_char_4(Idx)
155532       ,p_reference_date_1         => l_array_reference_date_1(Idx)
155533       ,p_reference_date_2         => l_array_reference_date_2(Idx)
155534       ,p_reference_date_3         => l_array_reference_date_3(Idx)
155535       ,p_reference_date_4         => l_array_reference_date_4(Idx)
155536       ,p_event_created_by         => l_array_event_created_by(Idx)
155537       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
155538        --
155539 END IF;
155540 
155541 
155542 
155543 --
155544 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
155545 
155546 l_acct_reversal_source := SUBSTR(NULL, 1,30);
155547 
155548 IF l_continue_with_lines THEN
155549    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
155550       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
155551 
155552       xla_accounting_err_pkg.build_message
155553          (p_appli_s_name            => 'XLA'
155554          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
155555          ,p_token_1                 => 'LINE_NUMBER'
155556          ,p_value_1                 => l_array_extract_line_num(Idx)
155557          ,p_token_2                 => 'PRODUCT_NAME'
155558          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
155559          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
155560          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
155561          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
155562 
155563    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
155564       --
155565       -- following sets the accounting attributes needed to reverse
155566       -- accounting for a distributeion
155567       --
155568 
155569       --
155570       -- 5217187
155571       --
155572       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
155573       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
155574                                        g_array_event(l_event_id).array_value_num('header_index'));
155575       --
155576       --
155577 
155578       -- No reversal code generated
155579 
155580       xla_ae_lines_pkg.SetAcctReversalAttrs
155581          (p_event_id             => l_event_id
155582          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
155583          ,p_calculate_acctd_flag => l_calculate_acctd_flag
155584          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
155585    END IF;
155586 
155587    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
155588        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
155589 
155590 --
155591 AcctLineType_29 (
155592  p_application_id  => p_application_id
155593  ,p_event_id     => l_event_id
155594  ,p_calculate_acctd_flag => l_calculate_acctd_flag
155595  ,p_calculate_g_l_flag => l_calculate_g_l_flag
155596  ,p_actual_flag => l_actual_flag
155597  ,p_balance_type_code => l_balance_type_code
155598  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
155599  
155600  , p_source_4 => l_array_source_4(Idx)
155601  , p_source_11 => l_array_source_11(Idx)
155602  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
155603  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
155604  , p_source_15 => l_array_source_15(Idx)
155605  , p_source_18 => l_array_source_18(Idx)
155606  , p_source_19 => l_array_source_19(Idx)
155607  , p_source_20 => l_array_source_20(Idx)
155608  , p_source_21 => l_array_source_21(Idx)
155609  , p_source_22 => l_array_source_22(Idx)
155610  , p_source_24 => l_array_source_24(Idx)
155611  );
155612 If(l_balance_type_code = 'A') THEN
155613   l_actual_gain_loss_ref := l_gain_or_loss_ref;
155614 END IF;
155615 
155616 --
155617 
155618 
155619 --
155620 AcctLineType_146 (
155621  p_application_id  => p_application_id
155622  ,p_event_id     => l_event_id
155623  ,p_calculate_acctd_flag => l_calculate_acctd_flag
155624  ,p_calculate_g_l_flag => l_calculate_g_l_flag
155625  ,p_actual_flag => l_actual_flag
155626  ,p_balance_type_code => l_balance_type_code
155627  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
155628  
155629  , p_source_4 => l_array_source_4(Idx)
155630  , p_source_11 => l_array_source_11(Idx)
155631  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
155632  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
155633  , p_source_15 => l_array_source_15(Idx)
155634  , p_source_18 => l_array_source_18(Idx)
155635  , p_source_19 => l_array_source_19(Idx)
155636  , p_source_20 => l_array_source_20(Idx)
155637  , p_source_21 => l_array_source_21(Idx)
155638  , p_source_22 => l_array_source_22(Idx)
155639  , p_source_24 => l_array_source_24(Idx)
155640  );
155641 If(l_balance_type_code = 'A') THEN
155642   l_actual_gain_loss_ref := l_gain_or_loss_ref;
155643 END IF;
155644 
155645 --
155646 
155647 
155648 --
155649 AcctLineType_191 (
155650  p_application_id  => p_application_id
155651  ,p_event_id     => l_event_id
155652  ,p_calculate_acctd_flag => l_calculate_acctd_flag
155653  ,p_calculate_g_l_flag => l_calculate_g_l_flag
155654  ,p_actual_flag => l_actual_flag
155655  ,p_balance_type_code => l_balance_type_code
155656  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
155657  
155658  , p_source_4 => l_array_source_4(Idx)
155659  , p_source_11 => l_array_source_11(Idx)
155660  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
155661  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
155662  , p_source_15 => l_array_source_15(Idx)
155663  , p_source_18 => l_array_source_18(Idx)
155664  , p_source_19 => l_array_source_19(Idx)
155665  , p_source_20 => l_array_source_20(Idx)
155666  , p_source_21 => l_array_source_21(Idx)
155667  , p_source_22 => l_array_source_22(Idx)
155668  , p_source_24 => l_array_source_24(Idx)
155669  );
155670 If(l_balance_type_code = 'A') THEN
155671   l_actual_gain_loss_ref := l_gain_or_loss_ref;
155672 END IF;
155673 
155674 --
155675 
155676       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
155677       -- or secondary ledger that has different currency with primary
155678       -- or alc that is calculated by sla
155679       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
155680             (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'))
155681 
155682 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
155683 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
155684           AND (l_actual_flag = 'A')) THEN
155685         XLA_AE_LINES_PKG.CreateGainOrLossLines(
155686           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
155687          ,p_application_id   => p_application_id
155688          ,p_amb_context_code => 'DEFAULT'
155689          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
155690          ,p_event_class_code => C_EVENT_CLASS_CODE
155691          ,p_event_type_code  => C_EVENT_TYPE_CODE
155692          
155693          ,p_gain_ccid        => -1
155694          ,p_loss_ccid        => -1
155695 
155696          ,p_actual_flag      => l_actual_flag
155697          ,p_enc_flag         => null
155698          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
155699          ,p_enc_g_l_ref      => null
155700          );
155701       END IF;
155702    END IF;
155703 END IF;
155704 
155705    ELSE
155706       --
155707       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
155708       --
155709       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155710          trace
155711             (p_msg      => 'Trancaction revesal option is Y'
155712             ,p_level    => C_LEVEL_STATEMENT
155713             ,p_module   => l_log_module);
155714       END IF;
155715    END IF;
155716 
155717 END LOOP;
155718 l_result := XLA_AE_LINES_PKG.InsertLines ;
155719 end loop;
155720 close line_cur;
155721 
155722 
155723 --
155724 -- insert headers into xla_ae_headers_gt table
155725 --
155726 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
155727 
155728 -- insert into errors table here.
155729 
155730 END LOOP;
155731 
155732 --
155733 -- 4865292
155734 --
155735 -- Compare g_hdr_extract_count with event count in
155736 -- CreateHeadersAndLines.
155737 --
155738 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
155739 
155740 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155741    trace (p_msg     => '# rows extracted from header extract objects '
155742                     || ' (running total): '
155743                     || g_hdr_extract_count
155744          ,p_level   => C_LEVEL_STATEMENT
155745          ,p_module  => l_log_module);
155746 END IF;
155747 
155748 CLOSE header_cur;
155749 --
155750 
155751 --
155752 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155753    trace
155754       (p_msg      => 'END of EventClass_262'
155755       ,p_level    => C_LEVEL_PROCEDURE
155756       ,p_module   => l_log_module);
155757 END IF;
155758 --
155759 RETURN l_result;
155760 EXCEPTION
155761 WHEN xla_exceptions_pkg.application_exception THEN
155762    
155763 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
155764 
155765    
155766 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
155767 
155768    RAISE;
155769 
155770 WHEN NO_DATA_FOUND THEN
155771 
155772 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
155773 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
155774 
155775 FOR header_record IN header_cur
155776 LOOP
155777     l_array_header_events(header_record.event_id) := header_record.event_id;
155778 END LOOP;
155779 
155780 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
155781 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
155782 
155783 fnd_file.put_line(fnd_file.LOG, '                    ');
155784 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
155785 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
155786 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
155787 
155788 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
155789 LOOP
155790 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
155791 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
155792         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
155793 	END IF;
155794 END LOOP;
155795 
155796 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
155797 fnd_file.put_line(fnd_file.LOG, '                    ');
155798 
155799 
155800 xla_exceptions_pkg.raise_message
155801       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_262');
155802 
155803 
155804 WHEN OTHERS THEN
155805    xla_exceptions_pkg.raise_message
155806       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_262');
155807 END EventClass_262;
155808 --
155809 
155810 ---------------------------------------
155811 --
155812 -- PRIVATE PROCEDURE
155813 --         insert_sources_263
155814 --
155815 ----------------------------------------
155816 --
155817 PROCEDURE insert_sources_263(
155818                                 p_target_ledger_id       IN NUMBER
155819                               , p_language               IN VARCHAR2
155820                               , p_sla_ledger_id          IN NUMBER
155821                               , p_pad_start_date         IN DATE
155822                               , p_pad_end_date           IN DATE
155823                          )
155824 IS
155825 
155826 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_TO_EXP_ALL';
155827 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
155828 p_apps_owner                   VARCHAR2(30);
155829 l_log_module                   VARCHAR2(240);
155830 BEGIN
155831 IF g_log_enabled THEN
155832       l_log_module := C_DEFAULT_MODULE||'.insert_sources_263';
155833 END IF;
155834 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155835 
155836       trace
155837          (p_msg      => 'BEGIN of insert_sources_263'
155838          ,p_level    => C_LEVEL_PROCEDURE
155839          ,p_module   => l_log_module);
155840 
155841 END IF;
155842 
155843 -- select APPS owner
155844 SELECT oracle_username
155845   INTO p_apps_owner
155846   FROM fnd_oracle_userid
155847  WHERE read_only_flag = 'U'
155848 ;
155849 
155850 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155851       trace
155852          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
155853                         ' - p_language = '||p_language||
155854                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
155855                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
155856                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
155857                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
155858          ,p_level    => C_LEVEL_STATEMENT
155859          ,p_module   => l_log_module);
155860 END IF;
155861 
155862 
155863 --
155864 INSERT INTO xla_diag_sources --hdr2
155865 (
155866         event_id
155867       , ledger_id
155868       , sla_ledger_id
155869       , description_language
155870       , object_name
155871       , object_type_code
155872       , line_number
155873       , source_application_id
155874       , source_type_code
155875       , source_code
155876       , source_value
155877       , source_meaning
155878       , created_by
155879       , creation_date
155880       , last_update_date
155881       , last_updated_by
155882       , last_update_login
155883       , program_update_date
155884       , program_application_id
155885       , program_id
155886       , request_id
155887 )
155888 SELECT
155889         event_id
155890       , p_target_ledger_id
155891       , p_sla_ledger_id
155892       , p_language
155893       , object_name
155894       , object_type_code
155895       , line_number
155896       , source_application_id
155897       , source_type_code
155898       , source_code
155899       , SUBSTR(source_value ,1,1996)
155900       , SUBSTR(source_meaning ,1,200)
155901       , xla_environment_pkg.g_Usr_Id
155902       , TRUNC(SYSDATE)
155903       , TRUNC(SYSDATE)
155904       , xla_environment_pkg.g_Usr_Id
155905       , xla_environment_pkg.g_Login_Id
155906       , TRUNC(SYSDATE)
155907       , xla_environment_pkg.g_Prog_Appl_Id
155908       , xla_environment_pkg.g_Prog_Id
155909       , xla_environment_pkg.g_Req_Id
155910   FROM (
155911        SELECT xet.event_id                  event_id
155912             , 0                          line_number
155913             , CASE r
155914                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
155915                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
155916                 
155917                ELSE null
155918               END                           object_name
155919             , CASE r
155920                 WHEN 1 THEN 'HEADER' 
155921                 WHEN 2 THEN 'HEADER' 
155922                 
155923                 ELSE null
155924               END                           object_type_code
155925             , CASE r
155926                 WHEN 1 THEN '707' 
155927                 WHEN 2 THEN '707' 
155928                 
155929                 ELSE null
155930               END                           source_application_id
155931             , 'S'             source_type_code
155932             , CASE r
155933                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
155934                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
155935                 
155936                 ELSE null
155937               END                           source_code
155938             , CASE r
155939                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
155940                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
155941                 
155942                 ELSE null
155943               END                           source_value
155944             , CASE r
155945                 WHEN 1 THEN fvl12.meaning
155946                 WHEN 2 THEN fvl38.meaning
155947                 
155948                 ELSE null
155949               END               source_meaning
155950          FROM xla_events_gt     xet  
155951       , CST_XLA_INV_HEADERS_V  h1
155952   , fnd_lookup_values    fvl12
155953   , fnd_lookup_values    fvl38
155954              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
155955          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
155956            AND xet.event_class_code = C_EVENT_CLASS_CODE
155957               AND h1.event_id = xet.event_id
155958    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
155959   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
155960   AND fvl12.view_application_id(+) = 700
155961   AND fvl12.language(+)            = USERENV('LANG')
155962      AND fvl38.lookup_type(+)         = 'YES_NO'
155963   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
155964   AND fvl38.view_application_id(+) = 0
155965   AND fvl38.language(+)            = USERENV('LANG')
155966   
155967 )
155968 ;
155969 --
155970 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155971 
155972       trace
155973          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
155974          ,p_level    => C_LEVEL_STATEMENT
155975          ,p_module   => l_log_module);
155976 
155977 END IF;
155978 --
155979 
155980 
155981 
155982 --
155983 INSERT INTO xla_diag_sources  --line2
155984 (
155985         event_id
155986       , ledger_id
155987       , sla_ledger_id
155988       , description_language
155989       , object_name
155990       , object_type_code
155991       , line_number
155992       , source_application_id
155993       , source_type_code
155994       , source_code
155995       , source_value
155996       , source_meaning
155997       , created_by
155998       , creation_date
155999       , last_update_date
156000       , last_updated_by
156001       , last_update_login
156002       , program_update_date
156003       , program_application_id
156004       , program_id
156005       , request_id
156006 )
156007 SELECT  event_id
156008       , p_target_ledger_id
156009       , p_sla_ledger_id
156010       , p_language
156011       , object_name
156012       , object_type_code
156013       , line_number
156014       , source_application_id
156015       , source_type_code
156016       , source_code
156017       , SUBSTR(source_value,1,1996)
156018       , SUBSTR(source_meaning ,1,200)
156019       , xla_environment_pkg.g_Usr_Id
156020       , TRUNC(SYSDATE)
156021       , TRUNC(SYSDATE)
156022       , xla_environment_pkg.g_Usr_Id
156023       , xla_environment_pkg.g_Login_Id
156024       , TRUNC(SYSDATE)
156025       , xla_environment_pkg.g_Prog_Appl_Id
156026       , xla_environment_pkg.g_Prog_Id
156027       , xla_environment_pkg.g_Req_Id
156028   FROM (
156029        SELECT xet.event_id                  event_id
156030             , l2.line_number                 line_number
156031             , CASE r
156032                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
156033                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
156034                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
156035                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
156036                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
156037                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
156038                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
156039                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
156040                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
156041                 
156042                ELSE null
156043               END                           object_name
156044             , CASE r
156045                 WHEN 1 THEN 'LINE' 
156046                 WHEN 2 THEN 'LINE' 
156047                 WHEN 3 THEN 'LINE' 
156048                 WHEN 4 THEN 'LINE' 
156049                 WHEN 5 THEN 'LINE' 
156050                 WHEN 6 THEN 'LINE' 
156051                 WHEN 7 THEN 'LINE' 
156052                 WHEN 8 THEN 'LINE' 
156053                 WHEN 9 THEN 'LINE' 
156054                 
156055                 ELSE null
156056               END                           object_type_code
156057             , CASE r
156058                 WHEN 1 THEN '707' 
156059                 WHEN 2 THEN '707' 
156060                 WHEN 3 THEN '707' 
156061                 WHEN 4 THEN '707' 
156062                 WHEN 5 THEN '707' 
156063                 WHEN 6 THEN '707' 
156064                 WHEN 7 THEN '707' 
156065                 WHEN 8 THEN '707' 
156066                 WHEN 9 THEN '707' 
156067                 
156068                 ELSE null
156069               END                           source_application_id
156070             , 'S'             source_type_code
156071             , CASE r
156072                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
156073                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
156074                 WHEN 3 THEN 'CURRENCY_CODE' 
156075                 WHEN 4 THEN 'ENTERED_AMOUNT' 
156076                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
156077                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
156078                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
156079                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
156080                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
156081                 
156082                 ELSE null
156083               END                           source_code
156084             , CASE r
156085                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
156086                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
156087                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
156088                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
156089                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
156090                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
156091                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
156092                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
156093                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
156094                 
156095                 ELSE null
156096               END                           source_value
156097             , null              source_meaning
156098          FROM  xla_events_gt     xet  
156099         , CST_XLA_INV_LINES_V  l2
156100             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
156101         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
156102           AND xet.event_class_code = C_EVENT_CLASS_CODE
156103             AND l2.event_id          = xet.event_id
156104 
156105 )
156106 ;
156107 --
156108 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156109 
156110       trace
156111          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
156112          ,p_level    => C_LEVEL_STATEMENT
156113          ,p_module   => l_log_module);
156114 
156115 END IF;
156116 
156117 
156118 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156119       trace
156120          (p_msg      => 'END of insert_sources_263'
156121          ,p_level    => C_LEVEL_PROCEDURE
156122          ,p_module   => l_log_module);
156123 END IF;
156124 EXCEPTION
156125   WHEN xla_exceptions_pkg.application_exception THEN
156126       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
156127             trace
156128                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
156129                ,p_level    => C_LEVEL_EXCEPTION
156130                ,p_module   => l_log_module);
156131       END IF;
156132       RAISE;
156133   WHEN OTHERS THEN
156134       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
156135             trace
156136                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
156137                ,p_level    => C_LEVEL_EXCEPTION
156138                ,p_module   => l_log_module);
156139        END IF;
156140        xla_exceptions_pkg.raise_message
156141            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_263');
156142 END insert_sources_263;
156143 --
156144 
156145 ---------------------------------------
156146 --
156147 -- PRIVATE FUNCTION
156148 --         EventClass_263
156149 --
156150 ----------------------------------------
156151 --
156152 FUNCTION EventClass_263
156153        (p_application_id         IN NUMBER
156154        ,p_base_ledger_id         IN NUMBER
156155        ,p_target_ledger_id       IN NUMBER
156156        ,p_language               IN VARCHAR2
156157        ,p_currency_code          IN VARCHAR2
156158        ,p_sla_ledger_id          IN NUMBER
156159        ,p_pad_start_date         IN DATE
156160        ,p_pad_end_date           IN DATE
156161        ,p_primary_ledger_id      IN NUMBER)
156162 RETURN BOOLEAN IS
156163 --
156164 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_TO_EXP_ALL';
156165 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
156166 
156167 l_calculate_acctd_flag   VARCHAR2(1) :='N';
156168 l_calculate_g_l_flag     VARCHAR2(1) :='N';
156169 --
156170 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156171 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156172 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
156173 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156174 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156175 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
156176 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
156177 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156178 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156179 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156180 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156181 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156182 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156183 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156184 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156185 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156186 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156187 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156188 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156189 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156190 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156191 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156192 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
156193 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
156194 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
156195 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
156196 
156197 l_event_id                             NUMBER;
156198 l_previous_event_id                    NUMBER;
156199 l_first_event_id                       NUMBER;
156200 l_last_event_id                        NUMBER;
156201 
156202 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
156203 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
156204 --
156205 --
156206 l_result                    BOOLEAN := TRUE;
156207 l_rows                      NUMBER  := 1000;
156208 l_event_type_name           VARCHAR2(80) := 'All';
156209 l_event_class_name          VARCHAR2(80) := 'Internal Order to Expense';
156210 l_description               VARCHAR2(4000);
156211 l_transaction_reversal      NUMBER;
156212 l_ae_header_id              NUMBER;
156213 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
156214 l_log_module                VARCHAR2(240);
156215 --
156216 l_acct_reversal_source      VARCHAR2(30);
156217 l_trx_reversal_source       VARCHAR2(30);
156218 
156219 l_continue_with_lines       BOOLEAN := TRUE;
156220 --
156221 l_acc_rev_gl_date_source    DATE;                      -- 4262811
156222 --
156223 type t_array_event_id is table of number index by binary_integer;
156224 
156225 l_rec_array_event                    t_rec_array_event;
156226 l_null_rec_array_event               t_rec_array_event;
156227 l_array_ae_header_id                 xla_number_array_type;
156228 l_actual_flag                        VARCHAR2(1) := NULL;
156229 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
156230 l_balance_type_code                  VARCHAR2(1) :=NULL;
156231 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
156232 
156233 --
156234 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
156235 --
156236 
156237 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
156238 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
156239 
156240 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
156241 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
156242 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
156243 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
156244 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
156245 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
156246 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
156247 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
156248 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
156249 
156250 l_array_source_12              t_array_source_12;
156251 l_array_source_12_meaning      t_array_lookup_meaning;
156252 l_array_source_38              t_array_source_38;
156253 l_array_source_38_meaning      t_array_lookup_meaning;
156254 
156255 l_array_source_4      t_array_source_4;
156256 l_array_source_11      t_array_source_11;
156257 l_array_source_15      t_array_source_15;
156258 l_array_source_18      t_array_source_18;
156259 l_array_source_19      t_array_source_19;
156260 l_array_source_20      t_array_source_20;
156261 l_array_source_21      t_array_source_21;
156262 l_array_source_22      t_array_source_22;
156263 l_array_source_24      t_array_source_24;
156264 
156265 --
156266 CURSOR header_cur
156267 IS
156268 SELECT /*+ leading(xet) cardinality(xet,1) */
156269 -- Event Class Code: INT_ORDER_TO_EXP
156270     xet.entity_id
156271    ,xet.legal_entity_id
156272    ,xet.entity_code
156273    ,xet.transaction_number
156274    ,xet.event_id
156275    ,xet.event_class_code
156276    ,xet.event_type_code
156277    ,xet.event_number
156278    ,xet.event_date
156279    ,xet.transaction_date
156280    ,xet.reference_num_1
156281    ,xet.reference_num_2
156282    ,xet.reference_num_3
156283    ,xet.reference_num_4
156284    ,xet.reference_char_1
156285    ,xet.reference_char_2
156286    ,xet.reference_char_3
156287    ,xet.reference_char_4
156288    ,xet.reference_date_1
156289    ,xet.reference_date_2
156290    ,xet.reference_date_3
156291    ,xet.reference_date_4
156292    ,xet.event_created_by
156293    ,xet.budgetary_control_flag 
156294   , h1.DISTRIBUTION_TYPE    source_12
156295   , fvl12.meaning   source_12_meaning
156296   , h1.TRANSFER_TO_GL_INDICATOR    source_38
156297   , fvl38.meaning   source_38_meaning
156298   FROM xla_events_gt     xet 
156299   , CST_XLA_INV_HEADERS_V  h1
156300   , fnd_lookup_values    fvl12
156301   , fnd_lookup_values    fvl38
156302  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
156303    and xet.event_class_code = C_EVENT_CLASS_CODE
156304    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
156305    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
156306   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
156307   AND fvl12.view_application_id(+) = 700
156308   AND fvl12.language(+)            = USERENV('LANG')
156309      AND fvl38.lookup_type(+)         = 'YES_NO'
156310   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
156311   AND fvl38.view_application_id(+) = 0
156312   AND fvl38.language(+)            = USERENV('LANG')
156313   
156314  ORDER BY event_id
156315 ;
156316 
156317 
156318 --
156319 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
156320 IS
156321 SELECT  /*+ leading(xet) cardinality(xet,1) */
156322 -- Event Class Code: INT_ORDER_TO_EXP
156323     xet.entity_id
156324    ,xet.legal_entity_id
156325    ,xet.entity_code
156326    ,xet.transaction_number
156327    ,xet.event_id
156328    ,xet.event_class_code
156329    ,xet.event_type_code
156330    ,xet.event_number
156331    ,xet.event_date
156332    ,xet.transaction_date
156333    ,xet.reference_num_1
156334    ,xet.reference_num_2
156335    ,xet.reference_num_3
156336    ,xet.reference_num_4
156337    ,xet.reference_char_1
156338    ,xet.reference_char_2
156339    ,xet.reference_char_3
156340    ,xet.reference_char_4
156341    ,xet.reference_date_1
156342    ,xet.reference_date_2
156343    ,xet.reference_date_3
156344    ,xet.reference_date_4
156345    ,xet.event_created_by
156346    ,xet.budgetary_control_flag
156347  , l2.LINE_NUMBER  
156348   , l2.CODE_COMBINATION_ID    source_4
156349   , l2.DISTRIBUTION_IDENTIFIER    source_11
156350   , l2.CURRENCY_CODE    source_15
156351   , l2.ENTERED_AMOUNT    source_18
156352   , l2.CURRENCY_CONVERSION_DATE    source_19
156353   , l2.CURRENCY_CONVERSION_RATE    source_20
156354   , l2.CURRENCY_CONVERSION_TYPE    source_21
156355   , l2.ACCOUNTED_AMOUNT    source_22
156356   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
156357   FROM xla_events_gt     xet 
156358   , CST_XLA_INV_LINES_V  l2
156359  WHERE xet.event_id between x_first_event_id and x_last_event_id
156360    and xet.event_date between p_pad_start_date and p_pad_end_date
156361    and xet.event_class_code = C_EVENT_CLASS_CODE
156362    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
156363 ;
156364 
156365 --
156366 BEGIN
156367 IF g_log_enabled THEN
156368    l_log_module := C_DEFAULT_MODULE||'.EventClass_263';
156369 END IF;
156370 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156371    trace
156372       (p_msg      => 'BEGIN of EventClass_263'
156373       ,p_level    => C_LEVEL_PROCEDURE
156374       ,p_module   => l_log_module);
156375 END IF;
156376 
156377 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156378    trace
156379       (p_msg      => 'p_application_id = '||p_application_id||
156380                      ' - p_base_ledger_id = '||p_base_ledger_id||
156381                      ' - p_target_ledger_id  = '||p_target_ledger_id||
156382                      ' - p_language = '||p_language||
156383                      ' - p_currency_code = '||p_currency_code||
156384                      ' - p_sla_ledger_id = '||p_sla_ledger_id
156385       ,p_level    => C_LEVEL_STATEMENT
156386       ,p_module   => l_log_module);
156387 END IF;
156388 --
156389 -- initialze arrays
156390 --
156391 g_array_event.DELETE;
156392 l_rec_array_event := l_null_rec_array_event;
156393 --
156394 --------------------------------------
156395 -- 4262811 Initialze MPA Line Number
156396 --------------------------------------
156397 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
156398 
156399 --
156400 
156401 --
156402 OPEN header_cur;
156403 --
156404 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156405    trace
156406    (p_msg      => 'SQL - FETCH header_cur'
156407    ,p_level    => C_LEVEL_STATEMENT
156408    ,p_module   => l_log_module);
156409 END IF;
156410 --
156411 LOOP
156412 FETCH header_cur BULK COLLECT INTO
156413         l_array_entity_id
156414       , l_array_legal_entity_id
156415       , l_array_entity_code
156416       , l_array_transaction_num
156417       , l_array_event_id
156418       , l_array_class_code
156419       , l_array_event_type
156420       , l_array_event_number
156421       , l_array_event_date
156422       , l_array_transaction_date
156423       , l_array_reference_num_1
156424       , l_array_reference_num_2
156425       , l_array_reference_num_3
156426       , l_array_reference_num_4
156427       , l_array_reference_char_1
156428       , l_array_reference_char_2
156429       , l_array_reference_char_3
156430       , l_array_reference_char_4
156431       , l_array_reference_date_1
156432       , l_array_reference_date_2
156433       , l_array_reference_date_3
156434       , l_array_reference_date_4
156435       , l_array_event_created_by
156436       , l_array_budgetary_control_flag 
156437       , l_array_source_12
156438       , l_array_source_12_meaning
156439       , l_array_source_38
156440       , l_array_source_38_meaning
156441       LIMIT l_rows;
156442 --
156443 IF (C_LEVEL_EVENT >= g_log_level) THEN
156444    trace
156445    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
156446    ,p_level    => C_LEVEL_EVENT
156447    ,p_module   => l_log_module);
156448 END IF;
156449 --
156450 EXIT WHEN l_array_entity_id.COUNT = 0;
156451 
156452 -- initialize arrays
156453 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
156454 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
156455 
156456 --
156457 -- Bug 4458708
156458 --
156459 XLA_AE_LINES_PKG.g_LineNumber := 0;
156460 
156461 
156462 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
156463 g_last_hdr_idx := l_array_event_id.LAST;
156464 --
156465 -- loop for the headers. Each iteration is for each header extract row
156466 -- fetched in header cursor
156467 --
156468 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
156469 
156470 --
156471 -- set event info as cache for other routines to refer event attributes
156472 --
156473 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
156474    (p_application_id           => p_application_id
156475    ,p_primary_ledger_id        => p_primary_ledger_id
156476    ,p_base_ledger_id           => p_base_ledger_id
156477    ,p_target_ledger_id         => p_target_ledger_id
156478    ,p_entity_id                => l_array_entity_id(hdr_idx)
156479    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
156480    ,p_entity_code              => l_array_entity_code(hdr_idx)
156481    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
156482    ,p_event_id                 => l_array_event_id(hdr_idx)
156483    ,p_event_class_code         => l_array_class_code(hdr_idx)
156484    ,p_event_type_code          => l_array_event_type(hdr_idx)
156485    ,p_event_number             => l_array_event_number(hdr_idx)
156486    ,p_event_date               => l_array_event_date(hdr_idx)
156487    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
156488    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
156489    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
156490    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
156491    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
156492    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
156493    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
156494    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
156495    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
156496    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
156497    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
156498    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
156499    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
156500    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
156501    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
156502 
156503 --
156504 -- set the status of entry to C_VALID (0)
156505 --
156506 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
156507 
156508 --
156509 -- initialize a row for ae header
156510 --
156511 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
156512 
156513 l_event_id := l_array_event_id(hdr_idx);
156514 
156515 --
156516 -- storing the hdr_idx for event. May be used by line cursor.
156517 --
156518 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
156519 
156520 --
156521 -- store sources from header extract. This can be improved to
156522 -- store only those sources from header extract that may be used in lines
156523 --
156524 
156525 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
156526 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
156527 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
156528 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
156529 
156530 --
156531 -- initilaize the status of ae headers for diffrent balance types
156532 -- the status is initialised to C_NOT_CREATED (2)
156533 --
156534 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
156535 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
156536 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
156537 
156538 --
156539 -- call api to validate and store accounting attributes for header
156540 --
156541 
156542 ------------------------------------------------------------
156543 -- Accrual Reversal : to get date for Standard Source (NONE)
156544 ------------------------------------------------------------
156545 l_acc_rev_gl_date_source := NULL;
156546 
156547      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
156548       l_rec_acct_attrs.array_date_value(1) := 
156549 xla_ae_sources_pkg.GetSystemSourceDate(
156550    p_source_code           => 'XLA_REFERENCE_DATE_1'
156551  , p_source_type_code      => 'Y'
156552  , p_source_application_id =>  602
156553 );
156554      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
156555       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
156556 
156557 
156558 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
156559 
156560 XLA_AE_HEADER_PKG.SetJeCategoryName;
156561 
156562 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
156563 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
156564 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
156565 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
156566 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
156567 
156568 
156569 -- No header level analytical criteria
156570 
156571 --
156572 --accounting attribute enhancement, bug 3612931
156573 --
156574 l_trx_reversal_source := SUBSTR(NULL, 1,30);
156575 
156576 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
156577    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
156578 
156579    xla_accounting_err_pkg.build_message
156580       (p_appli_s_name            => 'XLA'
156581       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
156582       ,p_token_1                 => 'ACCT_ATTR_NAME'
156583       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
156584       ,p_token_2                 => 'PRODUCT_NAME'
156585       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
156586       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
156587       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
156588       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
156589 
156590 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
156591    --
156592    -- following sets the accounting attributes needed to reverse
156593    -- accounting for a distributeion
156594    --
156595    xla_ae_lines_pkg.SetTrxReversalAttrs
156596       (p_event_id              => l_event_id
156597       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
156598       ,p_trx_reversal_source   => l_trx_reversal_source);
156599 
156600 END IF;
156601 
156602 
156603 ----------------------------------------------------------------
156604 -- 4262811 -  update the header statuses to invalid in need be
156605 ----------------------------------------------------------------
156606 --
156607 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
156608 
156609 
156610   -----------------------------------------------
156611   -- No accrual reversal for the event class/type
156612   -----------------------------------------------
156613 ----------------------------------------------------------------
156614 
156615 --
156616 -- this ends the header loop iteration for one bulk fetch
156617 --
156618 END LOOP;
156619 
156620 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
156621 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
156622 
156623 --
156624 -- insert dummy rows into lines gt table that were created due to
156625 -- transaction reversals
156626 --
156627 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
156628    l_result := XLA_AE_LINES_PKG.InsertLines;
156629 END IF;
156630 
156631 --
156632 -- reset the temp_line_num for each set of events fetched from header
156633 -- cursor rather than doing it for each new event in line cursor
156634 -- Bug 3939231
156635 --
156636 xla_ae_lines_pkg.g_temp_line_num := 0;
156637 
156638 
156639 
156640 --
156641 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
156642 --
156643 --
156644 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156645 
156646       trace
156647          (p_msg      => 'SQL - FETCH line_cur'
156648          ,p_level    => C_LEVEL_STATEMENT
156649          ,p_module   => l_log_module);
156650 
156651 END IF;
156652 --
156653 --
156654 LOOP
156655   --
156656   FETCH line_cur BULK COLLECT INTO
156657         l_array_entity_id
156658       , l_array_legal_entity_id
156659       , l_array_entity_code
156660       , l_array_transaction_num
156661       , l_array_event_id
156662       , l_array_class_code
156663       , l_array_event_type
156664       , l_array_event_number
156665       , l_array_event_date
156666       , l_array_transaction_date
156667       , l_array_reference_num_1
156668       , l_array_reference_num_2
156669       , l_array_reference_num_3
156670       , l_array_reference_num_4
156671       , l_array_reference_char_1
156672       , l_array_reference_char_2
156673       , l_array_reference_char_3
156674       , l_array_reference_char_4
156675       , l_array_reference_date_1
156676       , l_array_reference_date_2
156677       , l_array_reference_date_3
156678       , l_array_reference_date_4
156679       , l_array_event_created_by
156680       , l_array_budgetary_control_flag
156681       , l_array_extract_line_num 
156682       , l_array_source_4
156683       , l_array_source_11
156684       , l_array_source_15
156685       , l_array_source_18
156686       , l_array_source_19
156687       , l_array_source_20
156688       , l_array_source_21
156689       , l_array_source_22
156690       , l_array_source_24
156691       LIMIT l_rows;
156692 
156693   --
156694   IF (C_LEVEL_EVENT >= g_log_level) THEN
156695             trace
156696                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
156697                ,p_level    => C_LEVEL_EVENT
156698                ,p_module   => l_log_module);
156699   END IF;
156700   --
156701   EXIT WHEN l_array_entity_id.count = 0;
156702 
156703   XLA_AE_LINES_PKG.g_rec_lines := null;
156704 
156705 --
156706 -- Bug 4458708
156707 --
156708 XLA_AE_LINES_PKG.g_LineNumber := 0;
156709 --
156710 --
156711 
156712 FOR Idx IN 1..l_array_event_id.count LOOP
156713    --
156714    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
156715    --
156716    l_event_id := l_array_event_id(idx);  -- 5648433
156717 
156718    --
156719    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
156720    --
156721 
156722    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
156723              (g_array_event(l_event_id).array_value_num('header_index'))
156724          ,'N'
156725          ) <> 'Y'
156726    THEN
156727       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156728          trace
156729             (p_msg      => 'Trancaction revesal option is not Y '
156730             ,p_level    => C_LEVEL_STATEMENT
156731             ,p_module   => l_log_module);
156732       END IF;
156733 
156734 --
156735 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
156736 --
156737 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
156738 --
156739 -- set event info as cache for other routines to refer event attributes
156740 --
156741 
156742 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
156743    l_previous_event_id := l_event_id;
156744 
156745    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
156746       (p_application_id           => p_application_id
156747       ,p_primary_ledger_id        => p_primary_ledger_id
156748       ,p_base_ledger_id           => p_base_ledger_id
156749       ,p_target_ledger_id         => p_target_ledger_id
156750       ,p_entity_id                => l_array_entity_id(Idx)
156751       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
156752       ,p_entity_code              => l_array_entity_code(Idx)
156753       ,p_transaction_num          => l_array_transaction_num(Idx)
156754       ,p_event_id                 => l_array_event_id(Idx)
156755       ,p_event_class_code         => l_array_class_code(Idx)
156756       ,p_event_type_code          => l_array_event_type(Idx)
156757       ,p_event_number             => l_array_event_number(Idx)
156758       ,p_event_date               => l_array_event_date(Idx)
156759       ,p_transaction_date         => l_array_transaction_date(Idx)
156760       ,p_reference_num_1          => l_array_reference_num_1(Idx)
156761       ,p_reference_num_2          => l_array_reference_num_2(Idx)
156762       ,p_reference_num_3          => l_array_reference_num_3(Idx)
156763       ,p_reference_num_4          => l_array_reference_num_4(Idx)
156764       ,p_reference_char_1         => l_array_reference_char_1(Idx)
156765       ,p_reference_char_2         => l_array_reference_char_2(Idx)
156766       ,p_reference_char_3         => l_array_reference_char_3(Idx)
156767       ,p_reference_char_4         => l_array_reference_char_4(Idx)
156768       ,p_reference_date_1         => l_array_reference_date_1(Idx)
156769       ,p_reference_date_2         => l_array_reference_date_2(Idx)
156770       ,p_reference_date_3         => l_array_reference_date_3(Idx)
156771       ,p_reference_date_4         => l_array_reference_date_4(Idx)
156772       ,p_event_created_by         => l_array_event_created_by(Idx)
156773       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
156774        --
156775 END IF;
156776 
156777 
156778 
156779 --
156780 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
156781 
156782 l_acct_reversal_source := SUBSTR(NULL, 1,30);
156783 
156784 IF l_continue_with_lines THEN
156785    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
156786       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
156787 
156788       xla_accounting_err_pkg.build_message
156789          (p_appli_s_name            => 'XLA'
156790          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
156791          ,p_token_1                 => 'LINE_NUMBER'
156792          ,p_value_1                 => l_array_extract_line_num(Idx)
156793          ,p_token_2                 => 'PRODUCT_NAME'
156794          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
156795          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
156796          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
156797          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
156798 
156799    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
156800       --
156801       -- following sets the accounting attributes needed to reverse
156802       -- accounting for a distributeion
156803       --
156804 
156805       --
156806       -- 5217187
156807       --
156808       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
156809       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
156810                                        g_array_event(l_event_id).array_value_num('header_index'));
156811       --
156812       --
156813 
156814       -- No reversal code generated
156815 
156816       xla_ae_lines_pkg.SetAcctReversalAttrs
156817          (p_event_id             => l_event_id
156818          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
156819          ,p_calculate_acctd_flag => l_calculate_acctd_flag
156820          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
156821    END IF;
156822 
156823    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
156824        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
156825 
156826 --
156827 AcctLineType_76 (
156828  p_application_id  => p_application_id
156829  ,p_event_id     => l_event_id
156830  ,p_calculate_acctd_flag => l_calculate_acctd_flag
156831  ,p_calculate_g_l_flag => l_calculate_g_l_flag
156832  ,p_actual_flag => l_actual_flag
156833  ,p_balance_type_code => l_balance_type_code
156834  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156835  
156836  , p_source_4 => l_array_source_4(Idx)
156837  , p_source_11 => l_array_source_11(Idx)
156838  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
156839  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
156840  , p_source_15 => l_array_source_15(Idx)
156841  , p_source_18 => l_array_source_18(Idx)
156842  , p_source_19 => l_array_source_19(Idx)
156843  , p_source_20 => l_array_source_20(Idx)
156844  , p_source_21 => l_array_source_21(Idx)
156845  , p_source_22 => l_array_source_22(Idx)
156846  , p_source_24 => l_array_source_24(Idx)
156847  );
156848 If(l_balance_type_code = 'A') THEN
156849   l_actual_gain_loss_ref := l_gain_or_loss_ref;
156850 END IF;
156851 
156852 --
156853 
156854 
156855 --
156856 AcctLineType_86 (
156857  p_application_id  => p_application_id
156858  ,p_event_id     => l_event_id
156859  ,p_calculate_acctd_flag => l_calculate_acctd_flag
156860  ,p_calculate_g_l_flag => l_calculate_g_l_flag
156861  ,p_actual_flag => l_actual_flag
156862  ,p_balance_type_code => l_balance_type_code
156863  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156864  
156865  , p_source_4 => l_array_source_4(Idx)
156866  , p_source_11 => l_array_source_11(Idx)
156867  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
156868  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
156869  , p_source_15 => l_array_source_15(Idx)
156870  , p_source_18 => l_array_source_18(Idx)
156871  , p_source_19 => l_array_source_19(Idx)
156872  , p_source_20 => l_array_source_20(Idx)
156873  , p_source_21 => l_array_source_21(Idx)
156874  , p_source_22 => l_array_source_22(Idx)
156875  , p_source_24 => l_array_source_24(Idx)
156876  );
156877 If(l_balance_type_code = 'A') THEN
156878   l_actual_gain_loss_ref := l_gain_or_loss_ref;
156879 END IF;
156880 
156881 --
156882 
156883 
156884 --
156885 AcctLineType_102 (
156886  p_application_id  => p_application_id
156887  ,p_event_id     => l_event_id
156888  ,p_calculate_acctd_flag => l_calculate_acctd_flag
156889  ,p_calculate_g_l_flag => l_calculate_g_l_flag
156890  ,p_actual_flag => l_actual_flag
156891  ,p_balance_type_code => l_balance_type_code
156892  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156893  
156894  , p_source_4 => l_array_source_4(Idx)
156895  , p_source_11 => l_array_source_11(Idx)
156896  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
156897  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
156898  , p_source_15 => l_array_source_15(Idx)
156899  , p_source_18 => l_array_source_18(Idx)
156900  , p_source_19 => l_array_source_19(Idx)
156901  , p_source_20 => l_array_source_20(Idx)
156902  , p_source_21 => l_array_source_21(Idx)
156903  , p_source_22 => l_array_source_22(Idx)
156904  , p_source_24 => l_array_source_24(Idx)
156905  );
156906 If(l_balance_type_code = 'A') THEN
156907   l_actual_gain_loss_ref := l_gain_or_loss_ref;
156908 END IF;
156909 
156910 --
156911 
156912 
156913 --
156914 AcctLineType_141 (
156915  p_application_id  => p_application_id
156916  ,p_event_id     => l_event_id
156917  ,p_calculate_acctd_flag => l_calculate_acctd_flag
156918  ,p_calculate_g_l_flag => l_calculate_g_l_flag
156919  ,p_actual_flag => l_actual_flag
156920  ,p_balance_type_code => l_balance_type_code
156921  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156922  
156923  , p_source_4 => l_array_source_4(Idx)
156924  , p_source_11 => l_array_source_11(Idx)
156925  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
156926  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
156927  , p_source_15 => l_array_source_15(Idx)
156928  , p_source_18 => l_array_source_18(Idx)
156929  , p_source_19 => l_array_source_19(Idx)
156930  , p_source_20 => l_array_source_20(Idx)
156931  , p_source_21 => l_array_source_21(Idx)
156932  , p_source_22 => l_array_source_22(Idx)
156933  , p_source_24 => l_array_source_24(Idx)
156934  );
156935 If(l_balance_type_code = 'A') THEN
156936   l_actual_gain_loss_ref := l_gain_or_loss_ref;
156937 END IF;
156938 
156939 --
156940 
156941 
156942 --
156943 AcctLineType_192 (
156944  p_application_id  => p_application_id
156945  ,p_event_id     => l_event_id
156946  ,p_calculate_acctd_flag => l_calculate_acctd_flag
156947  ,p_calculate_g_l_flag => l_calculate_g_l_flag
156948  ,p_actual_flag => l_actual_flag
156949  ,p_balance_type_code => l_balance_type_code
156950  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156951  
156952  , p_source_4 => l_array_source_4(Idx)
156953  , p_source_11 => l_array_source_11(Idx)
156954  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
156955  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
156956  , p_source_15 => l_array_source_15(Idx)
156957  , p_source_18 => l_array_source_18(Idx)
156958  , p_source_19 => l_array_source_19(Idx)
156959  , p_source_20 => l_array_source_20(Idx)
156960  , p_source_21 => l_array_source_21(Idx)
156961  , p_source_22 => l_array_source_22(Idx)
156962  , p_source_24 => l_array_source_24(Idx)
156963  );
156964 If(l_balance_type_code = 'A') THEN
156965   l_actual_gain_loss_ref := l_gain_or_loss_ref;
156966 END IF;
156967 
156968 --
156969 
156970       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
156971       -- or secondary ledger that has different currency with primary
156972       -- or alc that is calculated by sla
156973       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
156974             (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'))
156975 
156976 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
156977 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
156978           AND (l_actual_flag = 'A')) THEN
156979         XLA_AE_LINES_PKG.CreateGainOrLossLines(
156980           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
156981          ,p_application_id   => p_application_id
156982          ,p_amb_context_code => 'DEFAULT'
156983          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
156984          ,p_event_class_code => C_EVENT_CLASS_CODE
156985          ,p_event_type_code  => C_EVENT_TYPE_CODE
156986          
156987          ,p_gain_ccid        => -1
156988          ,p_loss_ccid        => -1
156989 
156990          ,p_actual_flag      => l_actual_flag
156991          ,p_enc_flag         => null
156992          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
156993          ,p_enc_g_l_ref      => null
156994          );
156995       END IF;
156996    END IF;
156997 END IF;
156998 
156999    ELSE
157000       --
157001       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
157002       --
157003       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157004          trace
157005             (p_msg      => 'Trancaction revesal option is Y'
157006             ,p_level    => C_LEVEL_STATEMENT
157007             ,p_module   => l_log_module);
157008       END IF;
157009    END IF;
157010 
157011 END LOOP;
157012 l_result := XLA_AE_LINES_PKG.InsertLines ;
157013 end loop;
157014 close line_cur;
157015 
157016 
157017 --
157018 -- insert headers into xla_ae_headers_gt table
157019 --
157020 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
157021 
157022 -- insert into errors table here.
157023 
157024 END LOOP;
157025 
157026 --
157027 -- 4865292
157028 --
157029 -- Compare g_hdr_extract_count with event count in
157030 -- CreateHeadersAndLines.
157031 --
157032 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
157033 
157034 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157035    trace (p_msg     => '# rows extracted from header extract objects '
157036                     || ' (running total): '
157037                     || g_hdr_extract_count
157038          ,p_level   => C_LEVEL_STATEMENT
157039          ,p_module  => l_log_module);
157040 END IF;
157041 
157042 CLOSE header_cur;
157043 --
157044 
157045 --
157046 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157047    trace
157048       (p_msg      => 'END of EventClass_263'
157049       ,p_level    => C_LEVEL_PROCEDURE
157050       ,p_module   => l_log_module);
157051 END IF;
157052 --
157053 RETURN l_result;
157054 EXCEPTION
157055 WHEN xla_exceptions_pkg.application_exception THEN
157056    
157057 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
157058 
157059    
157060 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
157061 
157062    RAISE;
157063 
157064 WHEN NO_DATA_FOUND THEN
157065 
157066 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
157067 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
157068 
157069 FOR header_record IN header_cur
157070 LOOP
157071     l_array_header_events(header_record.event_id) := header_record.event_id;
157072 END LOOP;
157073 
157074 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
157075 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
157076 
157077 fnd_file.put_line(fnd_file.LOG, '                    ');
157078 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
157079 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
157080 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
157081 
157082 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
157083 LOOP
157084 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
157085 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
157086         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
157087 	END IF;
157088 END LOOP;
157089 
157090 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
157091 fnd_file.put_line(fnd_file.LOG, '                    ');
157092 
157093 
157094 xla_exceptions_pkg.raise_message
157095       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_263');
157096 
157097 
157098 WHEN OTHERS THEN
157099    xla_exceptions_pkg.raise_message
157100       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_263');
157101 END EventClass_263;
157102 --
157103 
157104 ---------------------------------------
157105 --
157106 -- PRIVATE PROCEDURE
157107 --         insert_sources_264
157108 --
157109 ----------------------------------------
157110 --
157111 PROCEDURE insert_sources_264(
157112                                 p_target_ledger_id       IN NUMBER
157113                               , p_language               IN VARCHAR2
157114                               , p_sla_ledger_id          IN NUMBER
157115                               , p_pad_start_date         IN DATE
157116                               , p_pad_end_date           IN DATE
157117                          )
157118 IS
157119 
157120 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LDD_COST_ADJ_DEL_ALL';
157121 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LDD_COST_ADJ_DEL';
157122 p_apps_owner                   VARCHAR2(30);
157123 l_log_module                   VARCHAR2(240);
157124 BEGIN
157125 IF g_log_enabled THEN
157126       l_log_module := C_DEFAULT_MODULE||'.insert_sources_264';
157127 END IF;
157128 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157129 
157130       trace
157131          (p_msg      => 'BEGIN of insert_sources_264'
157132          ,p_level    => C_LEVEL_PROCEDURE
157133          ,p_module   => l_log_module);
157134 
157135 END IF;
157136 
157137 -- select APPS owner
157138 SELECT oracle_username
157139   INTO p_apps_owner
157140   FROM fnd_oracle_userid
157141  WHERE read_only_flag = 'U'
157142 ;
157143 
157144 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157145       trace
157146          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
157147                         ' - p_language = '||p_language||
157148                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
157149                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
157150                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
157151                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
157152          ,p_level    => C_LEVEL_STATEMENT
157153          ,p_module   => l_log_module);
157154 END IF;
157155 
157156 
157157 --
157158 INSERT INTO xla_diag_sources --hdr2
157159 (
157160         event_id
157161       , ledger_id
157162       , sla_ledger_id
157163       , description_language
157164       , object_name
157165       , object_type_code
157166       , line_number
157167       , source_application_id
157168       , source_type_code
157169       , source_code
157170       , source_value
157171       , source_meaning
157172       , created_by
157173       , creation_date
157174       , last_update_date
157175       , last_updated_by
157176       , last_update_login
157177       , program_update_date
157178       , program_application_id
157179       , program_id
157180       , request_id
157181 )
157182 SELECT
157183         event_id
157184       , p_target_ledger_id
157185       , p_sla_ledger_id
157186       , p_language
157187       , object_name
157188       , object_type_code
157189       , line_number
157190       , source_application_id
157191       , source_type_code
157192       , source_code
157193       , SUBSTR(source_value ,1,1996)
157194       , SUBSTR(source_meaning ,1,200)
157195       , xla_environment_pkg.g_Usr_Id
157196       , TRUNC(SYSDATE)
157197       , TRUNC(SYSDATE)
157198       , xla_environment_pkg.g_Usr_Id
157199       , xla_environment_pkg.g_Login_Id
157200       , TRUNC(SYSDATE)
157201       , xla_environment_pkg.g_Prog_Appl_Id
157202       , xla_environment_pkg.g_Prog_Id
157203       , xla_environment_pkg.g_Req_Id
157204   FROM (
157205        SELECT xet.event_id                  event_id
157206             , 0                          line_number
157207             , CASE r
157208                WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V' 
157209                 WHEN 2 THEN 'PO_DISTS_REF_V' 
157210                 WHEN 3 THEN 'PO_DISTS_REF_V' 
157211                 WHEN 4 THEN 'PO_DISTS_REF_V' 
157212                 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V' 
157213                 
157214                ELSE null
157215               END                           object_name
157216             , CASE r
157217                 WHEN 1 THEN 'HEADER' 
157218                 WHEN 2 THEN 'HEADER' 
157219                 WHEN 3 THEN 'HEADER' 
157220                 WHEN 4 THEN 'HEADER' 
157221                 WHEN 5 THEN 'HEADER' 
157222                 
157223                 ELSE null
157224               END                           object_type_code
157225             , CASE r
157226                 WHEN 1 THEN '707' 
157227                 WHEN 2 THEN '201' 
157228                 WHEN 3 THEN '201' 
157229                 WHEN 4 THEN '201' 
157230                 WHEN 5 THEN '707' 
157231                 
157232                 ELSE null
157233               END                           source_application_id
157234             , 'S'             source_type_code
157235             , CASE r
157236                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
157237                 WHEN 2 THEN 'ENTERED_CURRENCY_CODE' 
157238                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
157239                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
157240                 WHEN 5 THEN 'TRANSFER_TO_GL_INDICATOR' 
157241                 
157242                 ELSE null
157243               END                           source_code
157244             , CASE r
157245                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
157246                 WHEN 2 THEN TO_CHAR(h4.ENTERED_CURRENCY_CODE)
157247                 WHEN 3 THEN TO_CHAR(h4.CURRENCY_CONVERSION_DATE)
157248                 WHEN 4 THEN TO_CHAR(h4.CURRENCY_CONVERSION_RATE)
157249                 WHEN 5 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
157250                 
157251                 ELSE null
157252               END                           source_value
157253             , CASE r
157254                 WHEN 1 THEN fvl12.meaning
157255                 WHEN 5 THEN fvl38.meaning
157256                 
157257                 ELSE null
157258               END               source_meaning
157259          FROM xla_events_gt     xet  
157260       , CST_XLA_RCV_HEADERS_V  h1
157261       , CST_XLA_RCV_REF_V  h3
157262       , PO_DISTS_REF_V  h4
157263   , fnd_lookup_values    fvl12
157264   , fnd_lookup_values    fvl38
157265              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
157266          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
157267            AND xet.event_class_code = C_EVENT_CLASS_CODE
157268               AND h1.event_id = xet.event_id
157269  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'
157270   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
157271   AND fvl12.view_application_id(+) = 700
157272   AND fvl12.language(+)            = USERENV('LANG')
157273      AND fvl38.lookup_type(+)         = 'YES_NO'
157274   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
157275   AND fvl38.view_application_id(+) = 0
157276   AND fvl38.language(+)            = USERENV('LANG')
157277   
157278 )
157279 ;
157280 --
157281 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157282 
157283       trace
157284          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
157285          ,p_level    => C_LEVEL_STATEMENT
157286          ,p_module   => l_log_module);
157287 
157288 END IF;
157289 --
157290 
157291 
157292 
157293 --
157294 INSERT INTO xla_diag_sources  --line2
157295 (
157296         event_id
157297       , ledger_id
157298       , sla_ledger_id
157299       , description_language
157300       , object_name
157301       , object_type_code
157302       , line_number
157303       , source_application_id
157304       , source_type_code
157305       , source_code
157306       , source_value
157307       , source_meaning
157308       , created_by
157309       , creation_date
157310       , last_update_date
157311       , last_updated_by
157312       , last_update_login
157313       , program_update_date
157314       , program_application_id
157315       , program_id
157316       , request_id
157317 )
157318 SELECT  event_id
157319       , p_target_ledger_id
157320       , p_sla_ledger_id
157321       , p_language
157322       , object_name
157323       , object_type_code
157324       , line_number
157325       , source_application_id
157326       , source_type_code
157327       , source_code
157328       , SUBSTR(source_value,1,1996)
157329       , SUBSTR(source_meaning ,1,200)
157330       , xla_environment_pkg.g_Usr_Id
157331       , TRUNC(SYSDATE)
157332       , TRUNC(SYSDATE)
157333       , xla_environment_pkg.g_Usr_Id
157334       , xla_environment_pkg.g_Login_Id
157335       , TRUNC(SYSDATE)
157336       , xla_environment_pkg.g_Prog_Appl_Id
157337       , xla_environment_pkg.g_Prog_Id
157338       , xla_environment_pkg.g_Req_Id
157339   FROM (
157340        SELECT xet.event_id                  event_id
157341             , l2.line_number                 line_number
157342             , CASE r
157343                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
157344                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
157345                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
157346                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
157347                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
157348                 
157349                ELSE null
157350               END                           object_name
157351             , CASE r
157352                 WHEN 1 THEN 'LINE' 
157353                 WHEN 2 THEN 'LINE' 
157354                 WHEN 3 THEN 'LINE' 
157355                 WHEN 4 THEN 'LINE' 
157356                 WHEN 5 THEN 'LINE' 
157357                 
157358                 ELSE null
157359               END                           object_type_code
157360             , CASE r
157361                 WHEN 1 THEN '707' 
157362                 WHEN 2 THEN '707' 
157363                 WHEN 3 THEN '707' 
157364                 WHEN 4 THEN '707' 
157365                 WHEN 5 THEN '707' 
157366                 
157367                 ELSE null
157368               END                           source_application_id
157369             , 'S'             source_type_code
157370             , CASE r
157371                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
157372                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
157373                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
157374                 WHEN 4 THEN 'ENTERED_AMOUNT' 
157375                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
157376                 
157377                 ELSE null
157378               END                           source_code
157379             , CASE r
157380                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
157381                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
157382                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
157383                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
157384                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
157385                 
157386                 ELSE null
157387               END                           source_value
157388             , null              source_meaning
157389          FROM  xla_events_gt     xet  
157390         , CST_XLA_RCV_LINES_V  l2
157391             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
157392         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
157393           AND xet.event_class_code = C_EVENT_CLASS_CODE
157394             AND l2.event_id          = xet.event_id
157395 
157396 )
157397 ;
157398 --
157399 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157400 
157401       trace
157402          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
157403          ,p_level    => C_LEVEL_STATEMENT
157404          ,p_module   => l_log_module);
157405 
157406 END IF;
157407 
157408 
157409 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157410       trace
157411          (p_msg      => 'END of insert_sources_264'
157412          ,p_level    => C_LEVEL_PROCEDURE
157413          ,p_module   => l_log_module);
157414 END IF;
157415 EXCEPTION
157416   WHEN xla_exceptions_pkg.application_exception THEN
157417       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
157418             trace
157419                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
157420                ,p_level    => C_LEVEL_EXCEPTION
157421                ,p_module   => l_log_module);
157422       END IF;
157423       RAISE;
157424   WHEN OTHERS THEN
157425       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
157426             trace
157427                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
157428                ,p_level    => C_LEVEL_EXCEPTION
157429                ,p_module   => l_log_module);
157430        END IF;
157431        xla_exceptions_pkg.raise_message
157432            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_264');
157433 END insert_sources_264;
157434 --
157435 
157436 ---------------------------------------
157437 --
157438 -- PRIVATE FUNCTION
157439 --         EventClass_264
157440 --
157441 ----------------------------------------
157442 --
157443 FUNCTION EventClass_264
157444        (p_application_id         IN NUMBER
157445        ,p_base_ledger_id         IN NUMBER
157446        ,p_target_ledger_id       IN NUMBER
157447        ,p_language               IN VARCHAR2
157448        ,p_currency_code          IN VARCHAR2
157449        ,p_sla_ledger_id          IN NUMBER
157450        ,p_pad_start_date         IN DATE
157451        ,p_pad_end_date           IN DATE
157452        ,p_primary_ledger_id      IN NUMBER)
157453 RETURN BOOLEAN IS
157454 --
157455 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LDD_COST_ADJ_DEL_ALL';
157456 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LDD_COST_ADJ_DEL';
157457 
157458 l_calculate_acctd_flag   VARCHAR2(1) :='N';
157459 l_calculate_g_l_flag     VARCHAR2(1) :='N';
157460 --
157461 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157462 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157463 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157464 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157465 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157466 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157467 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157468 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157469 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157470 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157471 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157472 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157473 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157474 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157475 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157476 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157477 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157478 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157479 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157480 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157481 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157482 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157483 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
157484 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157485 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
157486 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
157487 
157488 l_event_id                             NUMBER;
157489 l_previous_event_id                    NUMBER;
157490 l_first_event_id                       NUMBER;
157491 l_last_event_id                        NUMBER;
157492 
157493 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
157494 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
157495 --
157496 --
157497 l_result                    BOOLEAN := TRUE;
157498 l_rows                      NUMBER  := 1000;
157499 l_event_type_name           VARCHAR2(80) := 'All';
157500 l_event_class_name          VARCHAR2(80) := 'Landed Cost Adjustment to Delivery';
157501 l_description               VARCHAR2(4000);
157502 l_transaction_reversal      NUMBER;
157503 l_ae_header_id              NUMBER;
157504 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
157505 l_log_module                VARCHAR2(240);
157506 --
157507 l_acct_reversal_source      VARCHAR2(30);
157508 l_trx_reversal_source       VARCHAR2(30);
157509 
157510 l_continue_with_lines       BOOLEAN := TRUE;
157511 --
157512 l_acc_rev_gl_date_source    DATE;                      -- 4262811
157513 --
157514 type t_array_event_id is table of number index by binary_integer;
157515 
157516 l_rec_array_event                    t_rec_array_event;
157517 l_null_rec_array_event               t_rec_array_event;
157518 l_array_ae_header_id                 xla_number_array_type;
157519 l_actual_flag                        VARCHAR2(1) := NULL;
157520 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
157521 l_balance_type_code                  VARCHAR2(1) :=NULL;
157522 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
157523 
157524 --
157525 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
157526 --
157527 
157528 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
157529 TYPE t_array_source_32 IS TABLE OF PO_DISTS_REF_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
157530 TYPE t_array_source_33 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
157531 TYPE t_array_source_34 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
157532 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
157533 
157534 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
157535 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
157536 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
157537 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
157538 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
157539 
157540 l_array_source_12              t_array_source_12;
157541 l_array_source_12_meaning      t_array_lookup_meaning;
157542 l_array_source_32              t_array_source_32;
157543 l_array_source_33              t_array_source_33;
157544 l_array_source_34              t_array_source_34;
157545 l_array_source_38              t_array_source_38;
157546 l_array_source_38_meaning      t_array_lookup_meaning;
157547 
157548 l_array_source_4      t_array_source_4;
157549 l_array_source_5      t_array_source_5;
157550 l_array_source_11      t_array_source_11;
157551 l_array_source_18      t_array_source_18;
157552 l_array_source_22      t_array_source_22;
157553 
157554 --
157555 CURSOR header_cur
157556 IS
157557 SELECT /*+ leading(xet) cardinality(xet,1) */
157558 -- Event Class Code: LDD_COST_ADJ_DEL
157559     xet.entity_id
157560    ,xet.legal_entity_id
157561    ,xet.entity_code
157562    ,xet.transaction_number
157563    ,xet.event_id
157564    ,xet.event_class_code
157565    ,xet.event_type_code
157566    ,xet.event_number
157567    ,xet.event_date
157568    ,xet.transaction_date
157569    ,xet.reference_num_1
157570    ,xet.reference_num_2
157571    ,xet.reference_num_3
157572    ,xet.reference_num_4
157573    ,xet.reference_char_1
157574    ,xet.reference_char_2
157575    ,xet.reference_char_3
157576    ,xet.reference_char_4
157577    ,xet.reference_date_1
157578    ,xet.reference_date_2
157579    ,xet.reference_date_3
157580    ,xet.reference_date_4
157581    ,xet.event_created_by
157582    ,xet.budgetary_control_flag 
157583   , h1.DISTRIBUTION_TYPE    source_12
157584   , fvl12.meaning   source_12_meaning
157585   , h4.ENTERED_CURRENCY_CODE    source_32
157586   , h4.CURRENCY_CONVERSION_DATE    source_33
157587   , h4.CURRENCY_CONVERSION_RATE    source_34
157588   , h1.TRANSFER_TO_GL_INDICATOR    source_38
157589   , fvl38.meaning   source_38_meaning
157590   FROM xla_events_gt     xet 
157591   , CST_XLA_RCV_HEADERS_V  h1
157592   , CST_XLA_RCV_REF_V  h3
157593   , PO_DISTS_REF_V  h4
157594   , fnd_lookup_values    fvl12
157595   , fnd_lookup_values    fvl38
157596  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
157597    and xet.event_class_code = C_EVENT_CLASS_CODE
157598    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
157599  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'
157600   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
157601   AND fvl12.view_application_id(+) = 700
157602   AND fvl12.language(+)            = USERENV('LANG')
157603      AND fvl38.lookup_type(+)         = 'YES_NO'
157604   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
157605   AND fvl38.view_application_id(+) = 0
157606   AND fvl38.language(+)            = USERENV('LANG')
157607   
157608  ORDER BY event_id
157609 ;
157610 
157611 
157612 --
157613 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
157614 IS
157615 SELECT  /*+ leading(xet) cardinality(xet,1) */
157616 -- Event Class Code: LDD_COST_ADJ_DEL
157617     xet.entity_id
157618    ,xet.legal_entity_id
157619    ,xet.entity_code
157620    ,xet.transaction_number
157621    ,xet.event_id
157622    ,xet.event_class_code
157623    ,xet.event_type_code
157624    ,xet.event_number
157625    ,xet.event_date
157626    ,xet.transaction_date
157627    ,xet.reference_num_1
157628    ,xet.reference_num_2
157629    ,xet.reference_num_3
157630    ,xet.reference_num_4
157631    ,xet.reference_char_1
157632    ,xet.reference_char_2
157633    ,xet.reference_char_3
157634    ,xet.reference_char_4
157635    ,xet.reference_date_1
157636    ,xet.reference_date_2
157637    ,xet.reference_date_3
157638    ,xet.reference_date_4
157639    ,xet.event_created_by
157640    ,xet.budgetary_control_flag
157641  , l2.LINE_NUMBER  
157642   , l2.CODE_COMBINATION_ID    source_4
157643   , l2.RCV_ACCOUNTING_LINE_TYPE    source_5
157644   , l2.DISTRIBUTION_IDENTIFIER    source_11
157645   , l2.ENTERED_AMOUNT    source_18
157646   , l2.ACCOUNTED_AMOUNT    source_22
157647   FROM xla_events_gt     xet 
157648   , CST_XLA_RCV_LINES_V  l2
157649  WHERE xet.event_id between x_first_event_id and x_last_event_id
157650    and xet.event_date between p_pad_start_date and p_pad_end_date
157651    and xet.event_class_code = C_EVENT_CLASS_CODE
157652    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
157653 ;
157654 
157655 --
157656 BEGIN
157657 IF g_log_enabled THEN
157658    l_log_module := C_DEFAULT_MODULE||'.EventClass_264';
157659 END IF;
157660 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157661    trace
157662       (p_msg      => 'BEGIN of EventClass_264'
157663       ,p_level    => C_LEVEL_PROCEDURE
157664       ,p_module   => l_log_module);
157665 END IF;
157666 
157667 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157668    trace
157669       (p_msg      => 'p_application_id = '||p_application_id||
157670                      ' - p_base_ledger_id = '||p_base_ledger_id||
157671                      ' - p_target_ledger_id  = '||p_target_ledger_id||
157672                      ' - p_language = '||p_language||
157673                      ' - p_currency_code = '||p_currency_code||
157674                      ' - p_sla_ledger_id = '||p_sla_ledger_id
157675       ,p_level    => C_LEVEL_STATEMENT
157676       ,p_module   => l_log_module);
157677 END IF;
157678 --
157679 -- initialze arrays
157680 --
157681 g_array_event.DELETE;
157682 l_rec_array_event := l_null_rec_array_event;
157683 --
157684 --------------------------------------
157685 -- 4262811 Initialze MPA Line Number
157686 --------------------------------------
157687 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
157688 
157689 --
157690 
157691 --
157692 OPEN header_cur;
157693 --
157694 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157695    trace
157696    (p_msg      => 'SQL - FETCH header_cur'
157697    ,p_level    => C_LEVEL_STATEMENT
157698    ,p_module   => l_log_module);
157699 END IF;
157700 --
157701 LOOP
157702 FETCH header_cur BULK COLLECT INTO
157703         l_array_entity_id
157704       , l_array_legal_entity_id
157705       , l_array_entity_code
157706       , l_array_transaction_num
157707       , l_array_event_id
157708       , l_array_class_code
157709       , l_array_event_type
157710       , l_array_event_number
157711       , l_array_event_date
157712       , l_array_transaction_date
157713       , l_array_reference_num_1
157714       , l_array_reference_num_2
157715       , l_array_reference_num_3
157716       , l_array_reference_num_4
157717       , l_array_reference_char_1
157718       , l_array_reference_char_2
157719       , l_array_reference_char_3
157720       , l_array_reference_char_4
157721       , l_array_reference_date_1
157722       , l_array_reference_date_2
157723       , l_array_reference_date_3
157724       , l_array_reference_date_4
157725       , l_array_event_created_by
157726       , l_array_budgetary_control_flag 
157727       , l_array_source_12
157728       , l_array_source_12_meaning
157729       , l_array_source_32
157730       , l_array_source_33
157731       , l_array_source_34
157732       , l_array_source_38
157733       , l_array_source_38_meaning
157734       LIMIT l_rows;
157735 --
157736 IF (C_LEVEL_EVENT >= g_log_level) THEN
157737    trace
157738    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
157739    ,p_level    => C_LEVEL_EVENT
157740    ,p_module   => l_log_module);
157741 END IF;
157742 --
157743 EXIT WHEN l_array_entity_id.COUNT = 0;
157744 
157745 -- initialize arrays
157746 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
157747 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
157748 
157749 --
157750 -- Bug 4458708
157751 --
157752 XLA_AE_LINES_PKG.g_LineNumber := 0;
157753 
157754 
157755 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
157756 g_last_hdr_idx := l_array_event_id.LAST;
157757 --
157758 -- loop for the headers. Each iteration is for each header extract row
157759 -- fetched in header cursor
157760 --
157761 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
157762 
157763 --
157764 -- set event info as cache for other routines to refer event attributes
157765 --
157766 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
157767    (p_application_id           => p_application_id
157768    ,p_primary_ledger_id        => p_primary_ledger_id
157769    ,p_base_ledger_id           => p_base_ledger_id
157770    ,p_target_ledger_id         => p_target_ledger_id
157771    ,p_entity_id                => l_array_entity_id(hdr_idx)
157772    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
157773    ,p_entity_code              => l_array_entity_code(hdr_idx)
157774    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
157775    ,p_event_id                 => l_array_event_id(hdr_idx)
157776    ,p_event_class_code         => l_array_class_code(hdr_idx)
157777    ,p_event_type_code          => l_array_event_type(hdr_idx)
157778    ,p_event_number             => l_array_event_number(hdr_idx)
157779    ,p_event_date               => l_array_event_date(hdr_idx)
157780    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
157781    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
157782    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
157783    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
157784    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
157785    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
157786    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
157787    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
157788    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
157789    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
157790    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
157791    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
157792    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
157793    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
157794    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
157795 
157796 --
157797 -- set the status of entry to C_VALID (0)
157798 --
157799 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
157800 
157801 --
157802 -- initialize a row for ae header
157803 --
157804 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
157805 
157806 l_event_id := l_array_event_id(hdr_idx);
157807 
157808 --
157809 -- storing the hdr_idx for event. May be used by line cursor.
157810 --
157811 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
157812 
157813 --
157814 -- store sources from header extract. This can be improved to
157815 -- store only those sources from header extract that may be used in lines
157816 --
157817 
157818 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
157819 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
157820 g_array_event(l_event_id).array_value_char('source_32') := l_array_source_32(hdr_idx);
157821 g_array_event(l_event_id).array_value_date('source_33') := l_array_source_33(hdr_idx);
157822 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
157823 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
157824 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
157825 
157826 --
157827 -- initilaize the status of ae headers for diffrent balance types
157828 -- the status is initialised to C_NOT_CREATED (2)
157829 --
157830 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157831 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157832 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157833 
157834 --
157835 -- call api to validate and store accounting attributes for header
157836 --
157837 
157838 ------------------------------------------------------------
157839 -- Accrual Reversal : to get date for Standard Source (NONE)
157840 ------------------------------------------------------------
157841 l_acc_rev_gl_date_source := NULL;
157842 
157843      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
157844       l_rec_acct_attrs.array_date_value(1) := 
157845 xla_ae_sources_pkg.GetSystemSourceDate(
157846    p_source_code           => 'XLA_REFERENCE_DATE_1'
157847  , p_source_type_code      => 'Y'
157848  , p_source_application_id =>  602
157849 );
157850      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
157851       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
157852 
157853 
157854 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
157855 
157856 XLA_AE_HEADER_PKG.SetJeCategoryName;
157857 
157858 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
157859 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
157860 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
157861 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
157862 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
157863 
157864 
157865 -- No header level analytical criteria
157866 
157867 --
157868 --accounting attribute enhancement, bug 3612931
157869 --
157870 l_trx_reversal_source := SUBSTR(NULL, 1,30);
157871 
157872 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
157873    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
157874 
157875    xla_accounting_err_pkg.build_message
157876       (p_appli_s_name            => 'XLA'
157877       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
157878       ,p_token_1                 => 'ACCT_ATTR_NAME'
157879       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
157880       ,p_token_2                 => 'PRODUCT_NAME'
157881       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
157882       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
157883       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
157884       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
157885 
157886 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
157887    --
157888    -- following sets the accounting attributes needed to reverse
157889    -- accounting for a distributeion
157890    --
157891    xla_ae_lines_pkg.SetTrxReversalAttrs
157892       (p_event_id              => l_event_id
157893       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
157894       ,p_trx_reversal_source   => l_trx_reversal_source);
157895 
157896 END IF;
157897 
157898 
157899 ----------------------------------------------------------------
157900 -- 4262811 -  update the header statuses to invalid in need be
157901 ----------------------------------------------------------------
157902 --
157903 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
157904 
157905 
157906   -----------------------------------------------
157907   -- No accrual reversal for the event class/type
157908   -----------------------------------------------
157909 ----------------------------------------------------------------
157910 
157911 --
157912 -- this ends the header loop iteration for one bulk fetch
157913 --
157914 END LOOP;
157915 
157916 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
157917 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
157918 
157919 --
157920 -- insert dummy rows into lines gt table that were created due to
157921 -- transaction reversals
157922 --
157923 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
157924    l_result := XLA_AE_LINES_PKG.InsertLines;
157925 END IF;
157926 
157927 --
157928 -- reset the temp_line_num for each set of events fetched from header
157929 -- cursor rather than doing it for each new event in line cursor
157930 -- Bug 3939231
157931 --
157932 xla_ae_lines_pkg.g_temp_line_num := 0;
157933 
157934 
157935 
157936 --
157937 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
157938 --
157939 --
157940 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157941 
157942       trace
157943          (p_msg      => 'SQL - FETCH line_cur'
157944          ,p_level    => C_LEVEL_STATEMENT
157945          ,p_module   => l_log_module);
157946 
157947 END IF;
157948 --
157949 --
157950 LOOP
157951   --
157952   FETCH line_cur BULK COLLECT INTO
157953         l_array_entity_id
157954       , l_array_legal_entity_id
157955       , l_array_entity_code
157956       , l_array_transaction_num
157957       , l_array_event_id
157958       , l_array_class_code
157959       , l_array_event_type
157960       , l_array_event_number
157961       , l_array_event_date
157962       , l_array_transaction_date
157963       , l_array_reference_num_1
157964       , l_array_reference_num_2
157965       , l_array_reference_num_3
157966       , l_array_reference_num_4
157967       , l_array_reference_char_1
157968       , l_array_reference_char_2
157969       , l_array_reference_char_3
157970       , l_array_reference_char_4
157971       , l_array_reference_date_1
157972       , l_array_reference_date_2
157973       , l_array_reference_date_3
157974       , l_array_reference_date_4
157975       , l_array_event_created_by
157976       , l_array_budgetary_control_flag
157977       , l_array_extract_line_num 
157978       , l_array_source_4
157979       , l_array_source_5
157980       , l_array_source_11
157981       , l_array_source_18
157982       , l_array_source_22
157983       LIMIT l_rows;
157984 
157985   --
157986   IF (C_LEVEL_EVENT >= g_log_level) THEN
157987             trace
157988                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
157989                ,p_level    => C_LEVEL_EVENT
157990                ,p_module   => l_log_module);
157991   END IF;
157992   --
157993   EXIT WHEN l_array_entity_id.count = 0;
157994 
157995   XLA_AE_LINES_PKG.g_rec_lines := null;
157996 
157997 --
157998 -- Bug 4458708
157999 --
158000 XLA_AE_LINES_PKG.g_LineNumber := 0;
158001 --
158002 --
158003 
158004 FOR Idx IN 1..l_array_event_id.count LOOP
158005    --
158006    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
158007    --
158008    l_event_id := l_array_event_id(idx);  -- 5648433
158009 
158010    --
158011    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
158012    --
158013 
158014    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
158015              (g_array_event(l_event_id).array_value_num('header_index'))
158016          ,'N'
158017          ) <> 'Y'
158018    THEN
158019       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158020          trace
158021             (p_msg      => 'Trancaction revesal option is not Y '
158022             ,p_level    => C_LEVEL_STATEMENT
158023             ,p_module   => l_log_module);
158024       END IF;
158025 
158026 --
158027 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
158028 --
158029 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
158030 --
158031 -- set event info as cache for other routines to refer event attributes
158032 --
158033 
158034 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
158035    l_previous_event_id := l_event_id;
158036 
158037    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
158038       (p_application_id           => p_application_id
158039       ,p_primary_ledger_id        => p_primary_ledger_id
158040       ,p_base_ledger_id           => p_base_ledger_id
158041       ,p_target_ledger_id         => p_target_ledger_id
158042       ,p_entity_id                => l_array_entity_id(Idx)
158043       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
158044       ,p_entity_code              => l_array_entity_code(Idx)
158045       ,p_transaction_num          => l_array_transaction_num(Idx)
158046       ,p_event_id                 => l_array_event_id(Idx)
158047       ,p_event_class_code         => l_array_class_code(Idx)
158048       ,p_event_type_code          => l_array_event_type(Idx)
158049       ,p_event_number             => l_array_event_number(Idx)
158050       ,p_event_date               => l_array_event_date(Idx)
158051       ,p_transaction_date         => l_array_transaction_date(Idx)
158052       ,p_reference_num_1          => l_array_reference_num_1(Idx)
158053       ,p_reference_num_2          => l_array_reference_num_2(Idx)
158054       ,p_reference_num_3          => l_array_reference_num_3(Idx)
158055       ,p_reference_num_4          => l_array_reference_num_4(Idx)
158056       ,p_reference_char_1         => l_array_reference_char_1(Idx)
158057       ,p_reference_char_2         => l_array_reference_char_2(Idx)
158058       ,p_reference_char_3         => l_array_reference_char_3(Idx)
158059       ,p_reference_char_4         => l_array_reference_char_4(Idx)
158060       ,p_reference_date_1         => l_array_reference_date_1(Idx)
158061       ,p_reference_date_2         => l_array_reference_date_2(Idx)
158062       ,p_reference_date_3         => l_array_reference_date_3(Idx)
158063       ,p_reference_date_4         => l_array_reference_date_4(Idx)
158064       ,p_event_created_by         => l_array_event_created_by(Idx)
158065       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
158066        --
158067 END IF;
158068 
158069 
158070 
158071 --
158072 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
158073 
158074 l_acct_reversal_source := SUBSTR(NULL, 1,30);
158075 
158076 IF l_continue_with_lines THEN
158077    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
158078       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
158079 
158080       xla_accounting_err_pkg.build_message
158081          (p_appli_s_name            => 'XLA'
158082          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
158083          ,p_token_1                 => 'LINE_NUMBER'
158084          ,p_value_1                 => l_array_extract_line_num(Idx)
158085          ,p_token_2                 => 'PRODUCT_NAME'
158086          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
158087          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
158088          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
158089          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
158090 
158091    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
158092       --
158093       -- following sets the accounting attributes needed to reverse
158094       -- accounting for a distributeion
158095       --
158096 
158097       --
158098       -- 5217187
158099       --
158100       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
158101       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
158102                                        g_array_event(l_event_id).array_value_num('header_index'));
158103       --
158104       --
158105 
158106       -- No reversal code generated
158107 
158108       xla_ae_lines_pkg.SetAcctReversalAttrs
158109          (p_event_id             => l_event_id
158110          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
158111          ,p_calculate_acctd_flag => l_calculate_acctd_flag
158112          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
158113    END IF;
158114 
158115    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
158116        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
158117 
158118 --
158119 AcctLineType_48 (
158120  p_application_id  => p_application_id
158121  ,p_event_id     => l_event_id
158122  ,p_calculate_acctd_flag => l_calculate_acctd_flag
158123  ,p_calculate_g_l_flag => l_calculate_g_l_flag
158124  ,p_actual_flag => l_actual_flag
158125  ,p_balance_type_code => l_balance_type_code
158126  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158127  
158128  , p_source_4 => l_array_source_4(Idx)
158129  , p_source_5 => l_array_source_5(Idx)
158130  , p_source_11 => l_array_source_11(Idx)
158131  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
158132  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
158133  , p_source_18 => l_array_source_18(Idx)
158134  , p_source_22 => l_array_source_22(Idx)
158135  , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
158136  , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
158137  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
158138  );
158139 If(l_balance_type_code = 'A') THEN
158140   l_actual_gain_loss_ref := l_gain_or_loss_ref;
158141 END IF;
158142 
158143 --
158144 
158145 
158146 --
158147 AcctLineType_157 (
158148  p_application_id  => p_application_id
158149  ,p_event_id     => l_event_id
158150  ,p_calculate_acctd_flag => l_calculate_acctd_flag
158151  ,p_calculate_g_l_flag => l_calculate_g_l_flag
158152  ,p_actual_flag => l_actual_flag
158153  ,p_balance_type_code => l_balance_type_code
158154  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158155  
158156  , p_source_4 => l_array_source_4(Idx)
158157  , p_source_5 => l_array_source_5(Idx)
158158  , p_source_11 => l_array_source_11(Idx)
158159  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
158160  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
158161  , p_source_18 => l_array_source_18(Idx)
158162  , p_source_22 => l_array_source_22(Idx)
158163  , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
158164  , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
158165  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
158166  );
158167 If(l_balance_type_code = 'A') THEN
158168   l_actual_gain_loss_ref := l_gain_or_loss_ref;
158169 END IF;
158170 
158171 --
158172 
158173 
158174 --
158175 AcctLineType_224 (
158176  p_application_id  => p_application_id
158177  ,p_event_id     => l_event_id
158178  ,p_calculate_acctd_flag => l_calculate_acctd_flag
158179  ,p_calculate_g_l_flag => l_calculate_g_l_flag
158180  ,p_actual_flag => l_actual_flag
158181  ,p_balance_type_code => l_balance_type_code
158182  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158183  
158184  , p_source_4 => l_array_source_4(Idx)
158185  , p_source_5 => l_array_source_5(Idx)
158186  , p_source_11 => l_array_source_11(Idx)
158187  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
158188  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
158189  , p_source_18 => l_array_source_18(Idx)
158190  , p_source_22 => l_array_source_22(Idx)
158191  , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
158192  , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
158193  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
158194  );
158195 If(l_balance_type_code = 'A') THEN
158196   l_actual_gain_loss_ref := l_gain_or_loss_ref;
158197 END IF;
158198 
158199 --
158200 
158201 
158202 --
158203 AcctLineType_229 (
158204  p_application_id  => p_application_id
158205  ,p_event_id     => l_event_id
158206  ,p_calculate_acctd_flag => l_calculate_acctd_flag
158207  ,p_calculate_g_l_flag => l_calculate_g_l_flag
158208  ,p_actual_flag => l_actual_flag
158209  ,p_balance_type_code => l_balance_type_code
158210  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158211  
158212  , p_source_4 => l_array_source_4(Idx)
158213  , p_source_5 => l_array_source_5(Idx)
158214  , p_source_11 => l_array_source_11(Idx)
158215  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
158216  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
158217  , p_source_18 => l_array_source_18(Idx)
158218  , p_source_22 => l_array_source_22(Idx)
158219  , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
158220  , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
158221  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
158222  );
158223 If(l_balance_type_code = 'A') THEN
158224   l_actual_gain_loss_ref := l_gain_or_loss_ref;
158225 END IF;
158226 
158227 --
158228 
158229       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
158230       -- or secondary ledger that has different currency with primary
158231       -- or alc that is calculated by sla
158232       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
158233             (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'))
158234 
158235 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
158236 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
158237           AND (l_actual_flag = 'A')) THEN
158238         XLA_AE_LINES_PKG.CreateGainOrLossLines(
158239           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
158240          ,p_application_id   => p_application_id
158241          ,p_amb_context_code => 'DEFAULT'
158242          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
158243          ,p_event_class_code => C_EVENT_CLASS_CODE
158244          ,p_event_type_code  => C_EVENT_TYPE_CODE
158245          
158246          ,p_gain_ccid        => -1
158247          ,p_loss_ccid        => -1
158248 
158249          ,p_actual_flag      => l_actual_flag
158250          ,p_enc_flag         => null
158251          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
158252          ,p_enc_g_l_ref      => null
158253          );
158254       END IF;
158255    END IF;
158256 END IF;
158257 
158258    ELSE
158259       --
158260       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
158261       --
158262       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158263          trace
158264             (p_msg      => 'Trancaction revesal option is Y'
158265             ,p_level    => C_LEVEL_STATEMENT
158266             ,p_module   => l_log_module);
158267       END IF;
158268    END IF;
158269 
158270 END LOOP;
158271 l_result := XLA_AE_LINES_PKG.InsertLines ;
158272 end loop;
158273 close line_cur;
158274 
158275 
158276 --
158277 -- insert headers into xla_ae_headers_gt table
158278 --
158279 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
158280 
158281 -- insert into errors table here.
158282 
158283 END LOOP;
158284 
158285 --
158286 -- 4865292
158287 --
158288 -- Compare g_hdr_extract_count with event count in
158289 -- CreateHeadersAndLines.
158290 --
158291 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
158292 
158293 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158294    trace (p_msg     => '# rows extracted from header extract objects '
158295                     || ' (running total): '
158296                     || g_hdr_extract_count
158297          ,p_level   => C_LEVEL_STATEMENT
158298          ,p_module  => l_log_module);
158299 END IF;
158300 
158301 CLOSE header_cur;
158302 --
158303 
158304 --
158305 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158306    trace
158307       (p_msg      => 'END of EventClass_264'
158308       ,p_level    => C_LEVEL_PROCEDURE
158309       ,p_module   => l_log_module);
158310 END IF;
158311 --
158312 RETURN l_result;
158313 EXCEPTION
158314 WHEN xla_exceptions_pkg.application_exception THEN
158315    
158316 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
158317 
158318    
158319 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
158320 
158321    RAISE;
158322 
158323 WHEN NO_DATA_FOUND THEN
158324 
158325 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
158326 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
158327 
158328 FOR header_record IN header_cur
158329 LOOP
158330     l_array_header_events(header_record.event_id) := header_record.event_id;
158331 END LOOP;
158332 
158333 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
158334 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
158335 
158336 fnd_file.put_line(fnd_file.LOG, '                    ');
158337 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
158338 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
158339 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
158340 
158341 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
158342 LOOP
158343 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
158344 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
158345         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
158346 	END IF;
158347 END LOOP;
158348 
158349 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
158350 fnd_file.put_line(fnd_file.LOG, '                    ');
158351 
158352 
158353 xla_exceptions_pkg.raise_message
158354       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_264');
158355 
158356 
158357 WHEN OTHERS THEN
158358    xla_exceptions_pkg.raise_message
158359       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_264');
158360 END EventClass_264;
158361 --
158362 
158363 ---------------------------------------
158364 --
158365 -- PRIVATE PROCEDURE
158366 --         insert_sources_265
158367 --
158368 ----------------------------------------
158369 --
158370 PROCEDURE insert_sources_265(
158371                                 p_target_ledger_id       IN NUMBER
158372                               , p_language               IN VARCHAR2
158373                               , p_sla_ledger_id          IN NUMBER
158374                               , p_pad_start_date         IN DATE
158375                               , p_pad_end_date           IN DATE
158376                          )
158377 IS
158378 
158379 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LDD_COST_ADJ_RCV_ALL';
158380 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LDD_COST_ADJ_RCV';
158381 p_apps_owner                   VARCHAR2(30);
158382 l_log_module                   VARCHAR2(240);
158383 BEGIN
158384 IF g_log_enabled THEN
158385       l_log_module := C_DEFAULT_MODULE||'.insert_sources_265';
158386 END IF;
158387 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158388 
158389       trace
158390          (p_msg      => 'BEGIN of insert_sources_265'
158391          ,p_level    => C_LEVEL_PROCEDURE
158392          ,p_module   => l_log_module);
158393 
158394 END IF;
158395 
158396 -- select APPS owner
158397 SELECT oracle_username
158398   INTO p_apps_owner
158399   FROM fnd_oracle_userid
158400  WHERE read_only_flag = 'U'
158401 ;
158402 
158403 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158404       trace
158405          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
158406                         ' - p_language = '||p_language||
158407                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
158408                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
158409                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
158410                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
158411          ,p_level    => C_LEVEL_STATEMENT
158412          ,p_module   => l_log_module);
158413 END IF;
158414 
158415 
158416 --
158417 INSERT INTO xla_diag_sources --hdr2
158418 (
158419         event_id
158420       , ledger_id
158421       , sla_ledger_id
158422       , description_language
158423       , object_name
158424       , object_type_code
158425       , line_number
158426       , source_application_id
158427       , source_type_code
158428       , source_code
158429       , source_value
158430       , source_meaning
158431       , created_by
158432       , creation_date
158433       , last_update_date
158434       , last_updated_by
158435       , last_update_login
158436       , program_update_date
158437       , program_application_id
158438       , program_id
158439       , request_id
158440 )
158441 SELECT
158442         event_id
158443       , p_target_ledger_id
158444       , p_sla_ledger_id
158445       , p_language
158446       , object_name
158447       , object_type_code
158448       , line_number
158449       , source_application_id
158450       , source_type_code
158451       , source_code
158452       , SUBSTR(source_value ,1,1996)
158453       , SUBSTR(source_meaning ,1,200)
158454       , xla_environment_pkg.g_Usr_Id
158455       , TRUNC(SYSDATE)
158456       , TRUNC(SYSDATE)
158457       , xla_environment_pkg.g_Usr_Id
158458       , xla_environment_pkg.g_Login_Id
158459       , TRUNC(SYSDATE)
158460       , xla_environment_pkg.g_Prog_Appl_Id
158461       , xla_environment_pkg.g_Prog_Id
158462       , xla_environment_pkg.g_Req_Id
158463   FROM (
158464        SELECT xet.event_id                  event_id
158465             , 0                          line_number
158466             , CASE r
158467                WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V' 
158468                 WHEN 2 THEN 'PO_DISTS_REF_V' 
158469                 WHEN 3 THEN 'PO_DISTS_REF_V' 
158470                 WHEN 4 THEN 'PO_DISTS_REF_V' 
158471                 WHEN 5 THEN 'PO_DISTS_REF_V' 
158472                 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V' 
158473                 
158474                ELSE null
158475               END                           object_name
158476             , CASE r
158477                 WHEN 1 THEN 'HEADER' 
158478                 WHEN 2 THEN 'HEADER' 
158479                 WHEN 3 THEN 'HEADER' 
158480                 WHEN 4 THEN 'HEADER' 
158481                 WHEN 5 THEN 'HEADER' 
158482                 WHEN 6 THEN 'HEADER' 
158483                 
158484                 ELSE null
158485               END                           object_type_code
158486             , CASE r
158487                 WHEN 1 THEN '707' 
158488                 WHEN 2 THEN '201' 
158489                 WHEN 3 THEN '201' 
158490                 WHEN 4 THEN '201' 
158491                 WHEN 5 THEN '201' 
158492                 WHEN 6 THEN '707' 
158493                 
158494                 ELSE null
158495               END                           source_application_id
158496             , 'S'             source_type_code
158497             , CASE r
158498                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
158499                 WHEN 2 THEN 'ENTERED_CURRENCY_CODE' 
158500                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
158501                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
158502                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
158503                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
158504                 
158505                 ELSE null
158506               END                           source_code
158507             , CASE r
158508                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
158509                 WHEN 2 THEN TO_CHAR(h4.ENTERED_CURRENCY_CODE)
158510                 WHEN 3 THEN TO_CHAR(h4.CURRENCY_CONVERSION_DATE)
158511                 WHEN 4 THEN TO_CHAR(h4.CURRENCY_CONVERSION_RATE)
158512                 WHEN 5 THEN TO_CHAR(h4.CURRENCY_CONVERSION_TYPE)
158513                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
158514                 
158515                 ELSE null
158516               END                           source_value
158517             , CASE r
158518                 WHEN 1 THEN fvl12.meaning
158519                 WHEN 6 THEN fvl38.meaning
158520                 
158521                 ELSE null
158522               END               source_meaning
158523          FROM xla_events_gt     xet  
158524       , CST_XLA_RCV_HEADERS_V  h1
158525       , CST_XLA_RCV_REF_V  h3
158526       , PO_DISTS_REF_V  h4
158527   , fnd_lookup_values    fvl12
158528   , fnd_lookup_values    fvl38
158529              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
158530          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
158531            AND xet.event_class_code = C_EVENT_CLASS_CODE
158532               AND h1.event_id = xet.event_id
158533  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'
158534   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
158535   AND fvl12.view_application_id(+) = 700
158536   AND fvl12.language(+)            = USERENV('LANG')
158537      AND fvl38.lookup_type(+)         = 'YES_NO'
158538   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
158539   AND fvl38.view_application_id(+) = 0
158540   AND fvl38.language(+)            = USERENV('LANG')
158541   
158542 )
158543 ;
158544 --
158545 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158546 
158547       trace
158548          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
158549          ,p_level    => C_LEVEL_STATEMENT
158550          ,p_module   => l_log_module);
158551 
158552 END IF;
158553 --
158554 
158555 
158556 
158557 --
158558 INSERT INTO xla_diag_sources  --line2
158559 (
158560         event_id
158561       , ledger_id
158562       , sla_ledger_id
158563       , description_language
158564       , object_name
158565       , object_type_code
158566       , line_number
158567       , source_application_id
158568       , source_type_code
158569       , source_code
158570       , source_value
158571       , source_meaning
158572       , created_by
158573       , creation_date
158574       , last_update_date
158575       , last_updated_by
158576       , last_update_login
158577       , program_update_date
158578       , program_application_id
158579       , program_id
158580       , request_id
158581 )
158582 SELECT  event_id
158583       , p_target_ledger_id
158584       , p_sla_ledger_id
158585       , p_language
158586       , object_name
158587       , object_type_code
158588       , line_number
158589       , source_application_id
158590       , source_type_code
158591       , source_code
158592       , SUBSTR(source_value,1,1996)
158593       , SUBSTR(source_meaning ,1,200)
158594       , xla_environment_pkg.g_Usr_Id
158595       , TRUNC(SYSDATE)
158596       , TRUNC(SYSDATE)
158597       , xla_environment_pkg.g_Usr_Id
158598       , xla_environment_pkg.g_Login_Id
158599       , TRUNC(SYSDATE)
158600       , xla_environment_pkg.g_Prog_Appl_Id
158601       , xla_environment_pkg.g_Prog_Id
158602       , xla_environment_pkg.g_Req_Id
158603   FROM (
158604        SELECT xet.event_id                  event_id
158605             , l2.line_number                 line_number
158606             , CASE r
158607                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
158608                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
158609                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
158610                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
158611                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
158612                 
158613                ELSE null
158614               END                           object_name
158615             , CASE r
158616                 WHEN 1 THEN 'LINE' 
158617                 WHEN 2 THEN 'LINE' 
158618                 WHEN 3 THEN 'LINE' 
158619                 WHEN 4 THEN 'LINE' 
158620                 WHEN 5 THEN 'LINE' 
158621                 
158622                 ELSE null
158623               END                           object_type_code
158624             , CASE r
158625                 WHEN 1 THEN '707' 
158626                 WHEN 2 THEN '707' 
158627                 WHEN 3 THEN '707' 
158628                 WHEN 4 THEN '707' 
158629                 WHEN 5 THEN '707' 
158630                 
158631                 ELSE null
158632               END                           source_application_id
158633             , 'S'             source_type_code
158634             , CASE r
158635                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
158636                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
158637                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
158638                 WHEN 4 THEN 'ENTERED_AMOUNT' 
158639                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
158640                 
158641                 ELSE null
158642               END                           source_code
158643             , CASE r
158644                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
158645                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
158646                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
158647                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
158648                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
158649                 
158650                 ELSE null
158651               END                           source_value
158652             , null              source_meaning
158653          FROM  xla_events_gt     xet  
158654         , CST_XLA_RCV_LINES_V  l2
158655             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
158656         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
158657           AND xet.event_class_code = C_EVENT_CLASS_CODE
158658             AND l2.event_id          = xet.event_id
158659 
158660 )
158661 ;
158662 --
158663 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158664 
158665       trace
158666          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
158667          ,p_level    => C_LEVEL_STATEMENT
158668          ,p_module   => l_log_module);
158669 
158670 END IF;
158671 
158672 
158673 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158674       trace
158675          (p_msg      => 'END of insert_sources_265'
158676          ,p_level    => C_LEVEL_PROCEDURE
158677          ,p_module   => l_log_module);
158678 END IF;
158679 EXCEPTION
158680   WHEN xla_exceptions_pkg.application_exception THEN
158681       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
158682             trace
158683                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
158684                ,p_level    => C_LEVEL_EXCEPTION
158685                ,p_module   => l_log_module);
158686       END IF;
158687       RAISE;
158688   WHEN OTHERS THEN
158689       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
158690             trace
158691                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
158692                ,p_level    => C_LEVEL_EXCEPTION
158693                ,p_module   => l_log_module);
158694        END IF;
158695        xla_exceptions_pkg.raise_message
158696            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_265');
158697 END insert_sources_265;
158698 --
158699 
158700 ---------------------------------------
158701 --
158702 -- PRIVATE FUNCTION
158703 --         EventClass_265
158704 --
158705 ----------------------------------------
158706 --
158707 FUNCTION EventClass_265
158708        (p_application_id         IN NUMBER
158709        ,p_base_ledger_id         IN NUMBER
158710        ,p_target_ledger_id       IN NUMBER
158711        ,p_language               IN VARCHAR2
158712        ,p_currency_code          IN VARCHAR2
158713        ,p_sla_ledger_id          IN NUMBER
158714        ,p_pad_start_date         IN DATE
158715        ,p_pad_end_date           IN DATE
158716        ,p_primary_ledger_id      IN NUMBER)
158717 RETURN BOOLEAN IS
158718 --
158719 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LDD_COST_ADJ_RCV_ALL';
158720 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LDD_COST_ADJ_RCV';
158721 
158722 l_calculate_acctd_flag   VARCHAR2(1) :='N';
158723 l_calculate_g_l_flag     VARCHAR2(1) :='N';
158724 --
158725 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158726 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158727 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
158728 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158729 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158730 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
158731 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
158732 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158733 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158734 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158735 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158736 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158737 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158738 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158739 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158740 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158741 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158742 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158743 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158744 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158745 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158746 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158747 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
158748 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
158749 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
158750 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
158751 
158752 l_event_id                             NUMBER;
158753 l_previous_event_id                    NUMBER;
158754 l_first_event_id                       NUMBER;
158755 l_last_event_id                        NUMBER;
158756 
158757 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
158758 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
158759 --
158760 --
158761 l_result                    BOOLEAN := TRUE;
158762 l_rows                      NUMBER  := 1000;
158763 l_event_type_name           VARCHAR2(80) := 'All';
158764 l_event_class_name          VARCHAR2(80) := 'Landed Cost Adjustment to Receipt';
158765 l_description               VARCHAR2(4000);
158766 l_transaction_reversal      NUMBER;
158767 l_ae_header_id              NUMBER;
158768 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
158769 l_log_module                VARCHAR2(240);
158770 --
158771 l_acct_reversal_source      VARCHAR2(30);
158772 l_trx_reversal_source       VARCHAR2(30);
158773 
158774 l_continue_with_lines       BOOLEAN := TRUE;
158775 --
158776 l_acc_rev_gl_date_source    DATE;                      -- 4262811
158777 --
158778 type t_array_event_id is table of number index by binary_integer;
158779 
158780 l_rec_array_event                    t_rec_array_event;
158781 l_null_rec_array_event               t_rec_array_event;
158782 l_array_ae_header_id                 xla_number_array_type;
158783 l_actual_flag                        VARCHAR2(1) := NULL;
158784 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
158785 l_balance_type_code                  VARCHAR2(1) :=NULL;
158786 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
158787 
158788 --
158789 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
158790 --
158791 
158792 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
158793 TYPE t_array_source_32 IS TABLE OF PO_DISTS_REF_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
158794 TYPE t_array_source_33 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
158795 TYPE t_array_source_34 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
158796 TYPE t_array_source_36 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
158797 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
158798 
158799 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
158800 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
158801 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
158802 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
158803 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
158804 
158805 l_array_source_12              t_array_source_12;
158806 l_array_source_12_meaning      t_array_lookup_meaning;
158807 l_array_source_32              t_array_source_32;
158808 l_array_source_33              t_array_source_33;
158809 l_array_source_34              t_array_source_34;
158810 l_array_source_36              t_array_source_36;
158811 l_array_source_38              t_array_source_38;
158812 l_array_source_38_meaning      t_array_lookup_meaning;
158813 
158814 l_array_source_4      t_array_source_4;
158815 l_array_source_5      t_array_source_5;
158816 l_array_source_11      t_array_source_11;
158817 l_array_source_18      t_array_source_18;
158818 l_array_source_22      t_array_source_22;
158819 
158820 --
158821 CURSOR header_cur
158822 IS
158823 SELECT /*+ leading(xet) cardinality(xet,1) */
158824 -- Event Class Code: LDD_COST_ADJ_RCV
158825     xet.entity_id
158826    ,xet.legal_entity_id
158827    ,xet.entity_code
158828    ,xet.transaction_number
158829    ,xet.event_id
158830    ,xet.event_class_code
158831    ,xet.event_type_code
158832    ,xet.event_number
158833    ,xet.event_date
158834    ,xet.transaction_date
158835    ,xet.reference_num_1
158836    ,xet.reference_num_2
158837    ,xet.reference_num_3
158838    ,xet.reference_num_4
158839    ,xet.reference_char_1
158840    ,xet.reference_char_2
158841    ,xet.reference_char_3
158842    ,xet.reference_char_4
158843    ,xet.reference_date_1
158844    ,xet.reference_date_2
158845    ,xet.reference_date_3
158846    ,xet.reference_date_4
158847    ,xet.event_created_by
158848    ,xet.budgetary_control_flag 
158849   , h1.DISTRIBUTION_TYPE    source_12
158850   , fvl12.meaning   source_12_meaning
158851   , h4.ENTERED_CURRENCY_CODE    source_32
158852   , h4.CURRENCY_CONVERSION_DATE    source_33
158853   , h4.CURRENCY_CONVERSION_RATE    source_34
158854   , h4.CURRENCY_CONVERSION_TYPE    source_36
158855   , h1.TRANSFER_TO_GL_INDICATOR    source_38
158856   , fvl38.meaning   source_38_meaning
158857   FROM xla_events_gt     xet 
158858   , CST_XLA_RCV_HEADERS_V  h1
158859   , CST_XLA_RCV_REF_V  h3
158860   , PO_DISTS_REF_V  h4
158861   , fnd_lookup_values    fvl12
158862   , fnd_lookup_values    fvl38
158863  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
158864    and xet.event_class_code = C_EVENT_CLASS_CODE
158865    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
158866  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'
158867   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
158868   AND fvl12.view_application_id(+) = 700
158869   AND fvl12.language(+)            = USERENV('LANG')
158870      AND fvl38.lookup_type(+)         = 'YES_NO'
158871   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
158872   AND fvl38.view_application_id(+) = 0
158873   AND fvl38.language(+)            = USERENV('LANG')
158874   
158875  ORDER BY event_id
158876 ;
158877 
158878 
158879 --
158880 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
158881 IS
158882 SELECT  /*+ leading(xet) cardinality(xet,1) */
158883 -- Event Class Code: LDD_COST_ADJ_RCV
158884     xet.entity_id
158885    ,xet.legal_entity_id
158886    ,xet.entity_code
158887    ,xet.transaction_number
158888    ,xet.event_id
158889    ,xet.event_class_code
158890    ,xet.event_type_code
158891    ,xet.event_number
158892    ,xet.event_date
158893    ,xet.transaction_date
158894    ,xet.reference_num_1
158895    ,xet.reference_num_2
158896    ,xet.reference_num_3
158897    ,xet.reference_num_4
158898    ,xet.reference_char_1
158899    ,xet.reference_char_2
158900    ,xet.reference_char_3
158901    ,xet.reference_char_4
158902    ,xet.reference_date_1
158903    ,xet.reference_date_2
158904    ,xet.reference_date_3
158905    ,xet.reference_date_4
158906    ,xet.event_created_by
158907    ,xet.budgetary_control_flag
158908  , l2.LINE_NUMBER  
158909   , l2.CODE_COMBINATION_ID    source_4
158910   , l2.RCV_ACCOUNTING_LINE_TYPE    source_5
158911   , l2.DISTRIBUTION_IDENTIFIER    source_11
158912   , l2.ENTERED_AMOUNT    source_18
158913   , l2.ACCOUNTED_AMOUNT    source_22
158914   FROM xla_events_gt     xet 
158915   , CST_XLA_RCV_LINES_V  l2
158916  WHERE xet.event_id between x_first_event_id and x_last_event_id
158917    and xet.event_date between p_pad_start_date and p_pad_end_date
158918    and xet.event_class_code = C_EVENT_CLASS_CODE
158919    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
158920 ;
158921 
158922 --
158923 BEGIN
158924 IF g_log_enabled THEN
158925    l_log_module := C_DEFAULT_MODULE||'.EventClass_265';
158926 END IF;
158927 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158928    trace
158929       (p_msg      => 'BEGIN of EventClass_265'
158930       ,p_level    => C_LEVEL_PROCEDURE
158931       ,p_module   => l_log_module);
158932 END IF;
158933 
158934 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158935    trace
158936       (p_msg      => 'p_application_id = '||p_application_id||
158937                      ' - p_base_ledger_id = '||p_base_ledger_id||
158938                      ' - p_target_ledger_id  = '||p_target_ledger_id||
158939                      ' - p_language = '||p_language||
158940                      ' - p_currency_code = '||p_currency_code||
158941                      ' - p_sla_ledger_id = '||p_sla_ledger_id
158942       ,p_level    => C_LEVEL_STATEMENT
158943       ,p_module   => l_log_module);
158944 END IF;
158945 --
158946 -- initialze arrays
158947 --
158948 g_array_event.DELETE;
158949 l_rec_array_event := l_null_rec_array_event;
158950 --
158951 --------------------------------------
158952 -- 4262811 Initialze MPA Line Number
158953 --------------------------------------
158954 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
158955 
158956 --
158957 
158958 --
158959 OPEN header_cur;
158960 --
158961 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158962    trace
158963    (p_msg      => 'SQL - FETCH header_cur'
158964    ,p_level    => C_LEVEL_STATEMENT
158965    ,p_module   => l_log_module);
158966 END IF;
158967 --
158968 LOOP
158969 FETCH header_cur BULK COLLECT INTO
158970         l_array_entity_id
158971       , l_array_legal_entity_id
158972       , l_array_entity_code
158973       , l_array_transaction_num
158974       , l_array_event_id
158975       , l_array_class_code
158976       , l_array_event_type
158977       , l_array_event_number
158978       , l_array_event_date
158979       , l_array_transaction_date
158980       , l_array_reference_num_1
158981       , l_array_reference_num_2
158982       , l_array_reference_num_3
158983       , l_array_reference_num_4
158984       , l_array_reference_char_1
158985       , l_array_reference_char_2
158986       , l_array_reference_char_3
158987       , l_array_reference_char_4
158988       , l_array_reference_date_1
158989       , l_array_reference_date_2
158990       , l_array_reference_date_3
158991       , l_array_reference_date_4
158992       , l_array_event_created_by
158993       , l_array_budgetary_control_flag 
158994       , l_array_source_12
158995       , l_array_source_12_meaning
158996       , l_array_source_32
158997       , l_array_source_33
158998       , l_array_source_34
158999       , l_array_source_36
159000       , l_array_source_38
159001       , l_array_source_38_meaning
159002       LIMIT l_rows;
159003 --
159004 IF (C_LEVEL_EVENT >= g_log_level) THEN
159005    trace
159006    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
159007    ,p_level    => C_LEVEL_EVENT
159008    ,p_module   => l_log_module);
159009 END IF;
159010 --
159011 EXIT WHEN l_array_entity_id.COUNT = 0;
159012 
159013 -- initialize arrays
159014 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
159015 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
159016 
159017 --
159018 -- Bug 4458708
159019 --
159020 XLA_AE_LINES_PKG.g_LineNumber := 0;
159021 
159022 
159023 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
159024 g_last_hdr_idx := l_array_event_id.LAST;
159025 --
159026 -- loop for the headers. Each iteration is for each header extract row
159027 -- fetched in header cursor
159028 --
159029 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
159030 
159031 --
159032 -- set event info as cache for other routines to refer event attributes
159033 --
159034 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
159035    (p_application_id           => p_application_id
159036    ,p_primary_ledger_id        => p_primary_ledger_id
159037    ,p_base_ledger_id           => p_base_ledger_id
159038    ,p_target_ledger_id         => p_target_ledger_id
159039    ,p_entity_id                => l_array_entity_id(hdr_idx)
159040    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
159041    ,p_entity_code              => l_array_entity_code(hdr_idx)
159042    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
159043    ,p_event_id                 => l_array_event_id(hdr_idx)
159044    ,p_event_class_code         => l_array_class_code(hdr_idx)
159045    ,p_event_type_code          => l_array_event_type(hdr_idx)
159046    ,p_event_number             => l_array_event_number(hdr_idx)
159047    ,p_event_date               => l_array_event_date(hdr_idx)
159048    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
159049    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
159050    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
159051    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
159052    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
159053    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
159054    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
159055    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
159056    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
159057    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
159058    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
159059    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
159060    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
159061    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
159062    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
159063 
159064 --
159065 -- set the status of entry to C_VALID (0)
159066 --
159067 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
159068 
159069 --
159070 -- initialize a row for ae header
159071 --
159072 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
159073 
159074 l_event_id := l_array_event_id(hdr_idx);
159075 
159076 --
159077 -- storing the hdr_idx for event. May be used by line cursor.
159078 --
159079 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
159080 
159081 --
159082 -- store sources from header extract. This can be improved to
159083 -- store only those sources from header extract that may be used in lines
159084 --
159085 
159086 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
159087 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
159088 g_array_event(l_event_id).array_value_char('source_32') := l_array_source_32(hdr_idx);
159089 g_array_event(l_event_id).array_value_date('source_33') := l_array_source_33(hdr_idx);
159090 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
159091 g_array_event(l_event_id).array_value_char('source_36') := l_array_source_36(hdr_idx);
159092 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
159093 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
159094 
159095 --
159096 -- initilaize the status of ae headers for diffrent balance types
159097 -- the status is initialised to C_NOT_CREATED (2)
159098 --
159099 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
159100 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
159101 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
159102 
159103 --
159104 -- call api to validate and store accounting attributes for header
159105 --
159106 
159107 ------------------------------------------------------------
159108 -- Accrual Reversal : to get date for Standard Source (NONE)
159109 ------------------------------------------------------------
159110 l_acc_rev_gl_date_source := NULL;
159111 
159112      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
159113       l_rec_acct_attrs.array_date_value(1) := 
159114 xla_ae_sources_pkg.GetSystemSourceDate(
159115    p_source_code           => 'XLA_REFERENCE_DATE_1'
159116  , p_source_type_code      => 'Y'
159117  , p_source_application_id =>  602
159118 );
159119      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
159120       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
159121 
159122 
159123 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
159124 
159125 XLA_AE_HEADER_PKG.SetJeCategoryName;
159126 
159127 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
159128 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
159129 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
159130 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
159131 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
159132 
159133 
159134 -- No header level analytical criteria
159135 
159136 --
159137 --accounting attribute enhancement, bug 3612931
159138 --
159139 l_trx_reversal_source := SUBSTR(NULL, 1,30);
159140 
159141 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
159142    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
159143 
159144    xla_accounting_err_pkg.build_message
159145       (p_appli_s_name            => 'XLA'
159146       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
159147       ,p_token_1                 => 'ACCT_ATTR_NAME'
159148       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
159149       ,p_token_2                 => 'PRODUCT_NAME'
159150       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
159151       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
159152       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
159153       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
159154 
159155 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
159156    --
159157    -- following sets the accounting attributes needed to reverse
159158    -- accounting for a distributeion
159159    --
159160    xla_ae_lines_pkg.SetTrxReversalAttrs
159161       (p_event_id              => l_event_id
159162       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
159163       ,p_trx_reversal_source   => l_trx_reversal_source);
159164 
159165 END IF;
159166 
159167 
159168 ----------------------------------------------------------------
159169 -- 4262811 -  update the header statuses to invalid in need be
159170 ----------------------------------------------------------------
159171 --
159172 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
159173 
159174 
159175   -----------------------------------------------
159176   -- No accrual reversal for the event class/type
159177   -----------------------------------------------
159178 ----------------------------------------------------------------
159179 
159180 --
159181 -- this ends the header loop iteration for one bulk fetch
159182 --
159183 END LOOP;
159184 
159185 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
159186 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
159187 
159188 --
159189 -- insert dummy rows into lines gt table that were created due to
159190 -- transaction reversals
159191 --
159192 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
159193    l_result := XLA_AE_LINES_PKG.InsertLines;
159194 END IF;
159195 
159196 --
159197 -- reset the temp_line_num for each set of events fetched from header
159198 -- cursor rather than doing it for each new event in line cursor
159199 -- Bug 3939231
159200 --
159201 xla_ae_lines_pkg.g_temp_line_num := 0;
159202 
159203 
159204 
159205 --
159206 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
159207 --
159208 --
159209 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159210 
159211       trace
159212          (p_msg      => 'SQL - FETCH line_cur'
159213          ,p_level    => C_LEVEL_STATEMENT
159214          ,p_module   => l_log_module);
159215 
159216 END IF;
159217 --
159218 --
159219 LOOP
159220   --
159221   FETCH line_cur BULK COLLECT INTO
159222         l_array_entity_id
159223       , l_array_legal_entity_id
159224       , l_array_entity_code
159225       , l_array_transaction_num
159226       , l_array_event_id
159227       , l_array_class_code
159228       , l_array_event_type
159229       , l_array_event_number
159230       , l_array_event_date
159231       , l_array_transaction_date
159232       , l_array_reference_num_1
159233       , l_array_reference_num_2
159234       , l_array_reference_num_3
159235       , l_array_reference_num_4
159236       , l_array_reference_char_1
159237       , l_array_reference_char_2
159238       , l_array_reference_char_3
159239       , l_array_reference_char_4
159240       , l_array_reference_date_1
159241       , l_array_reference_date_2
159242       , l_array_reference_date_3
159243       , l_array_reference_date_4
159244       , l_array_event_created_by
159245       , l_array_budgetary_control_flag
159246       , l_array_extract_line_num 
159247       , l_array_source_4
159248       , l_array_source_5
159249       , l_array_source_11
159250       , l_array_source_18
159251       , l_array_source_22
159252       LIMIT l_rows;
159253 
159254   --
159255   IF (C_LEVEL_EVENT >= g_log_level) THEN
159256             trace
159257                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
159258                ,p_level    => C_LEVEL_EVENT
159259                ,p_module   => l_log_module);
159260   END IF;
159261   --
159262   EXIT WHEN l_array_entity_id.count = 0;
159263 
159264   XLA_AE_LINES_PKG.g_rec_lines := null;
159265 
159266 --
159267 -- Bug 4458708
159268 --
159269 XLA_AE_LINES_PKG.g_LineNumber := 0;
159270 --
159271 --
159272 
159273 FOR Idx IN 1..l_array_event_id.count LOOP
159274    --
159275    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
159276    --
159277    l_event_id := l_array_event_id(idx);  -- 5648433
159278 
159279    --
159280    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
159281    --
159282 
159283    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
159284              (g_array_event(l_event_id).array_value_num('header_index'))
159285          ,'N'
159286          ) <> 'Y'
159287    THEN
159288       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159289          trace
159290             (p_msg      => 'Trancaction revesal option is not Y '
159291             ,p_level    => C_LEVEL_STATEMENT
159292             ,p_module   => l_log_module);
159293       END IF;
159294 
159295 --
159296 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
159297 --
159298 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
159299 --
159300 -- set event info as cache for other routines to refer event attributes
159301 --
159302 
159303 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
159304    l_previous_event_id := l_event_id;
159305 
159306    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
159307       (p_application_id           => p_application_id
159308       ,p_primary_ledger_id        => p_primary_ledger_id
159309       ,p_base_ledger_id           => p_base_ledger_id
159310       ,p_target_ledger_id         => p_target_ledger_id
159311       ,p_entity_id                => l_array_entity_id(Idx)
159312       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
159313       ,p_entity_code              => l_array_entity_code(Idx)
159314       ,p_transaction_num          => l_array_transaction_num(Idx)
159315       ,p_event_id                 => l_array_event_id(Idx)
159316       ,p_event_class_code         => l_array_class_code(Idx)
159317       ,p_event_type_code          => l_array_event_type(Idx)
159318       ,p_event_number             => l_array_event_number(Idx)
159319       ,p_event_date               => l_array_event_date(Idx)
159320       ,p_transaction_date         => l_array_transaction_date(Idx)
159321       ,p_reference_num_1          => l_array_reference_num_1(Idx)
159322       ,p_reference_num_2          => l_array_reference_num_2(Idx)
159323       ,p_reference_num_3          => l_array_reference_num_3(Idx)
159324       ,p_reference_num_4          => l_array_reference_num_4(Idx)
159325       ,p_reference_char_1         => l_array_reference_char_1(Idx)
159326       ,p_reference_char_2         => l_array_reference_char_2(Idx)
159327       ,p_reference_char_3         => l_array_reference_char_3(Idx)
159328       ,p_reference_char_4         => l_array_reference_char_4(Idx)
159329       ,p_reference_date_1         => l_array_reference_date_1(Idx)
159330       ,p_reference_date_2         => l_array_reference_date_2(Idx)
159331       ,p_reference_date_3         => l_array_reference_date_3(Idx)
159332       ,p_reference_date_4         => l_array_reference_date_4(Idx)
159333       ,p_event_created_by         => l_array_event_created_by(Idx)
159334       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
159335        --
159336 END IF;
159337 
159338 
159339 
159340 --
159341 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
159342 
159343 l_acct_reversal_source := SUBSTR(NULL, 1,30);
159344 
159345 IF l_continue_with_lines THEN
159346    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
159347       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
159348 
159349       xla_accounting_err_pkg.build_message
159350          (p_appli_s_name            => 'XLA'
159351          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
159352          ,p_token_1                 => 'LINE_NUMBER'
159353          ,p_value_1                 => l_array_extract_line_num(Idx)
159354          ,p_token_2                 => 'PRODUCT_NAME'
159355          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
159356          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
159357          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
159358          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
159359 
159360    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
159361       --
159362       -- following sets the accounting attributes needed to reverse
159363       -- accounting for a distributeion
159364       --
159365 
159366       --
159367       -- 5217187
159368       --
159369       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
159370       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
159371                                        g_array_event(l_event_id).array_value_num('header_index'));
159372       --
159373       --
159374 
159375       -- No reversal code generated
159376 
159377       xla_ae_lines_pkg.SetAcctReversalAttrs
159378          (p_event_id             => l_event_id
159379          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
159380          ,p_calculate_acctd_flag => l_calculate_acctd_flag
159381          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
159382    END IF;
159383 
159384    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
159385        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
159386 
159387 --
159388 AcctLineType_155 (
159389  p_application_id  => p_application_id
159390  ,p_event_id     => l_event_id
159391  ,p_calculate_acctd_flag => l_calculate_acctd_flag
159392  ,p_calculate_g_l_flag => l_calculate_g_l_flag
159393  ,p_actual_flag => l_actual_flag
159394  ,p_balance_type_code => l_balance_type_code
159395  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159396  
159397  , p_source_4 => l_array_source_4(Idx)
159398  , p_source_5 => l_array_source_5(Idx)
159399  , p_source_11 => l_array_source_11(Idx)
159400  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
159401  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
159402  , p_source_18 => l_array_source_18(Idx)
159403  , p_source_22 => l_array_source_22(Idx)
159404  , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
159405  , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
159406  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
159407  , p_source_36 => g_array_event(l_event_id).array_value_char('source_36')
159408  );
159409 If(l_balance_type_code = 'A') THEN
159410   l_actual_gain_loss_ref := l_gain_or_loss_ref;
159411 END IF;
159412 
159413 --
159414 
159415 
159416 --
159417 AcctLineType_230 (
159418  p_application_id  => p_application_id
159419  ,p_event_id     => l_event_id
159420  ,p_calculate_acctd_flag => l_calculate_acctd_flag
159421  ,p_calculate_g_l_flag => l_calculate_g_l_flag
159422  ,p_actual_flag => l_actual_flag
159423  ,p_balance_type_code => l_balance_type_code
159424  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159425  
159426  , p_source_4 => l_array_source_4(Idx)
159427  , p_source_5 => l_array_source_5(Idx)
159428  , p_source_11 => l_array_source_11(Idx)
159429  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
159430  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
159431  , p_source_18 => l_array_source_18(Idx)
159432  , p_source_22 => l_array_source_22(Idx)
159433  , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
159434  , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
159435  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
159436  , p_source_36 => g_array_event(l_event_id).array_value_char('source_36')
159437  );
159438 If(l_balance_type_code = 'A') THEN
159439   l_actual_gain_loss_ref := l_gain_or_loss_ref;
159440 END IF;
159441 
159442 --
159443 
159444       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
159445       -- or secondary ledger that has different currency with primary
159446       -- or alc that is calculated by sla
159447       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
159448             (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'))
159449 
159450 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
159451 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
159452           AND (l_actual_flag = 'A')) THEN
159453         XLA_AE_LINES_PKG.CreateGainOrLossLines(
159454           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
159455          ,p_application_id   => p_application_id
159456          ,p_amb_context_code => 'DEFAULT'
159457          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
159458          ,p_event_class_code => C_EVENT_CLASS_CODE
159459          ,p_event_type_code  => C_EVENT_TYPE_CODE
159460          
159461          ,p_gain_ccid        => -1
159462          ,p_loss_ccid        => -1
159463 
159464          ,p_actual_flag      => l_actual_flag
159465          ,p_enc_flag         => null
159466          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
159467          ,p_enc_g_l_ref      => null
159468          );
159469       END IF;
159470    END IF;
159471 END IF;
159472 
159473    ELSE
159474       --
159475       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
159476       --
159477       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159478          trace
159479             (p_msg      => 'Trancaction revesal option is Y'
159480             ,p_level    => C_LEVEL_STATEMENT
159481             ,p_module   => l_log_module);
159482       END IF;
159483    END IF;
159484 
159485 END LOOP;
159486 l_result := XLA_AE_LINES_PKG.InsertLines ;
159487 end loop;
159488 close line_cur;
159489 
159490 
159491 --
159492 -- insert headers into xla_ae_headers_gt table
159493 --
159494 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
159495 
159496 -- insert into errors table here.
159497 
159498 END LOOP;
159499 
159500 --
159501 -- 4865292
159502 --
159503 -- Compare g_hdr_extract_count with event count in
159504 -- CreateHeadersAndLines.
159505 --
159506 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
159507 
159508 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159509    trace (p_msg     => '# rows extracted from header extract objects '
159510                     || ' (running total): '
159511                     || g_hdr_extract_count
159512          ,p_level   => C_LEVEL_STATEMENT
159513          ,p_module  => l_log_module);
159514 END IF;
159515 
159516 CLOSE header_cur;
159517 --
159518 
159519 --
159520 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159521    trace
159522       (p_msg      => 'END of EventClass_265'
159523       ,p_level    => C_LEVEL_PROCEDURE
159524       ,p_module   => l_log_module);
159525 END IF;
159526 --
159527 RETURN l_result;
159528 EXCEPTION
159529 WHEN xla_exceptions_pkg.application_exception THEN
159530    
159531 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
159532 
159533    
159534 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
159535 
159536    RAISE;
159537 
159538 WHEN NO_DATA_FOUND THEN
159539 
159540 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
159541 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
159542 
159543 FOR header_record IN header_cur
159544 LOOP
159545     l_array_header_events(header_record.event_id) := header_record.event_id;
159546 END LOOP;
159547 
159548 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
159549 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
159550 
159551 fnd_file.put_line(fnd_file.LOG, '                    ');
159552 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
159553 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
159554 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
159555 
159556 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
159557 LOOP
159558 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
159559 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
159560         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
159561 	END IF;
159562 END LOOP;
159563 
159564 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
159565 fnd_file.put_line(fnd_file.LOG, '                    ');
159566 
159567 
159568 xla_exceptions_pkg.raise_message
159569       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_265');
159570 
159571 
159572 WHEN OTHERS THEN
159573    xla_exceptions_pkg.raise_message
159574       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_265');
159575 END EventClass_265;
159576 --
159577 
159578 ---------------------------------------
159579 --
159580 -- PRIVATE PROCEDURE
159581 --         insert_sources_266
159582 --
159583 ----------------------------------------
159584 --
159585 PROCEDURE insert_sources_266(
159586                                 p_target_ledger_id       IN NUMBER
159587                               , p_language               IN VARCHAR2
159588                               , p_sla_ledger_id          IN NUMBER
159589                               , p_pad_start_date         IN DATE
159590                               , p_pad_end_date           IN DATE
159591                          )
159592 IS
159593 
159594 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_INTERCOMPANY_ALL';
159595 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
159596 p_apps_owner                   VARCHAR2(30);
159597 l_log_module                   VARCHAR2(240);
159598 BEGIN
159599 IF g_log_enabled THEN
159600       l_log_module := C_DEFAULT_MODULE||'.insert_sources_266';
159601 END IF;
159602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159603 
159604       trace
159605          (p_msg      => 'BEGIN of insert_sources_266'
159606          ,p_level    => C_LEVEL_PROCEDURE
159607          ,p_module   => l_log_module);
159608 
159609 END IF;
159610 
159611 -- select APPS owner
159612 SELECT oracle_username
159613   INTO p_apps_owner
159614   FROM fnd_oracle_userid
159615  WHERE read_only_flag = 'U'
159616 ;
159617 
159618 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159619       trace
159620          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
159621                         ' - p_language = '||p_language||
159622                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
159623                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
159624                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
159625                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
159626          ,p_level    => C_LEVEL_STATEMENT
159627          ,p_module   => l_log_module);
159628 END IF;
159629 
159630 
159631 --
159632 INSERT INTO xla_diag_sources --hdr2
159633 (
159634         event_id
159635       , ledger_id
159636       , sla_ledger_id
159637       , description_language
159638       , object_name
159639       , object_type_code
159640       , line_number
159641       , source_application_id
159642       , source_type_code
159643       , source_code
159644       , source_value
159645       , source_meaning
159646       , created_by
159647       , creation_date
159648       , last_update_date
159649       , last_updated_by
159650       , last_update_login
159651       , program_update_date
159652       , program_application_id
159653       , program_id
159654       , request_id
159655 )
159656 SELECT
159657         event_id
159658       , p_target_ledger_id
159659       , p_sla_ledger_id
159660       , p_language
159661       , object_name
159662       , object_type_code
159663       , line_number
159664       , source_application_id
159665       , source_type_code
159666       , source_code
159667       , SUBSTR(source_value ,1,1996)
159668       , SUBSTR(source_meaning ,1,200)
159669       , xla_environment_pkg.g_Usr_Id
159670       , TRUNC(SYSDATE)
159671       , TRUNC(SYSDATE)
159672       , xla_environment_pkg.g_Usr_Id
159673       , xla_environment_pkg.g_Login_Id
159674       , TRUNC(SYSDATE)
159675       , xla_environment_pkg.g_Prog_Appl_Id
159676       , xla_environment_pkg.g_Prog_Id
159677       , xla_environment_pkg.g_Req_Id
159678   FROM (
159679        SELECT xet.event_id                  event_id
159680             , 0                          line_number
159681             , CASE r
159682                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
159683                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
159684                 WHEN 3 THEN 'CST_XLA_INV_HEADERS_V' 
159685                 
159686                ELSE null
159687               END                           object_name
159688             , CASE r
159689                 WHEN 1 THEN 'HEADER' 
159690                 WHEN 2 THEN 'HEADER' 
159691                 WHEN 3 THEN 'HEADER' 
159692                 
159693                 ELSE null
159694               END                           object_type_code
159695             , CASE r
159696                 WHEN 1 THEN '707' 
159697                 WHEN 2 THEN '707' 
159698                 WHEN 3 THEN '707' 
159699                 
159700                 ELSE null
159701               END                           source_application_id
159702             , 'S'             source_type_code
159703             , CASE r
159704                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
159705                 WHEN 2 THEN 'TRANSACTION_ACTION_ID' 
159706                 WHEN 3 THEN 'TRANSFER_TO_GL_INDICATOR' 
159707                 
159708                 ELSE null
159709               END                           source_code
159710             , CASE r
159711                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
159712                 WHEN 2 THEN TO_CHAR(h1.TRANSACTION_ACTION_ID)
159713                 WHEN 3 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
159714                 
159715                 ELSE null
159716               END                           source_value
159717             , CASE r
159718                 WHEN 1 THEN fvl12.meaning
159719                 WHEN 2 THEN fvl35.meaning
159720                 WHEN 3 THEN fvl38.meaning
159721                 
159722                 ELSE null
159723               END               source_meaning
159724          FROM xla_events_gt     xet  
159725       , CST_XLA_INV_HEADERS_V  h1
159726   , fnd_lookup_values    fvl12
159727   , fnd_lookup_values    fvl35
159728   , fnd_lookup_values    fvl38
159729              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
159730          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
159731            AND xet.event_class_code = C_EVENT_CLASS_CODE
159732               AND h1.event_id = xet.event_id
159733    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
159734   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
159735   AND fvl12.view_application_id(+) = 700
159736   AND fvl12.language(+)            = USERENV('LANG')
159737      AND fvl35.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
159738   AND fvl35.lookup_code(+)         = h1.TRANSACTION_ACTION_ID
159739   AND fvl35.view_application_id(+) = 700
159740   AND fvl35.language(+)            = USERENV('LANG')
159741      AND fvl38.lookup_type(+)         = 'YES_NO'
159742   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
159743   AND fvl38.view_application_id(+) = 0
159744   AND fvl38.language(+)            = USERENV('LANG')
159745   
159746 )
159747 ;
159748 --
159749 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159750 
159751       trace
159752          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
159753          ,p_level    => C_LEVEL_STATEMENT
159754          ,p_module   => l_log_module);
159755 
159756 END IF;
159757 --
159758 
159759 
159760 
159761 --
159762 INSERT INTO xla_diag_sources  --line2
159763 (
159764         event_id
159765       , ledger_id
159766       , sla_ledger_id
159767       , description_language
159768       , object_name
159769       , object_type_code
159770       , line_number
159771       , source_application_id
159772       , source_type_code
159773       , source_code
159774       , source_value
159775       , source_meaning
159776       , created_by
159777       , creation_date
159778       , last_update_date
159779       , last_updated_by
159780       , last_update_login
159781       , program_update_date
159782       , program_application_id
159783       , program_id
159784       , request_id
159785 )
159786 SELECT  event_id
159787       , p_target_ledger_id
159788       , p_sla_ledger_id
159789       , p_language
159790       , object_name
159791       , object_type_code
159792       , line_number
159793       , source_application_id
159794       , source_type_code
159795       , source_code
159796       , SUBSTR(source_value,1,1996)
159797       , SUBSTR(source_meaning ,1,200)
159798       , xla_environment_pkg.g_Usr_Id
159799       , TRUNC(SYSDATE)
159800       , TRUNC(SYSDATE)
159801       , xla_environment_pkg.g_Usr_Id
159802       , xla_environment_pkg.g_Login_Id
159803       , TRUNC(SYSDATE)
159804       , xla_environment_pkg.g_Prog_Appl_Id
159805       , xla_environment_pkg.g_Prog_Id
159806       , xla_environment_pkg.g_Req_Id
159807   FROM (
159808        SELECT xet.event_id                  event_id
159809             , l2.line_number                 line_number
159810             , CASE r
159811                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
159812                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
159813                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
159814                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
159815                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
159816                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
159817                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
159818                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
159819                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
159820                 
159821                ELSE null
159822               END                           object_name
159823             , CASE r
159824                 WHEN 1 THEN 'LINE' 
159825                 WHEN 2 THEN 'LINE' 
159826                 WHEN 3 THEN 'LINE' 
159827                 WHEN 4 THEN 'LINE' 
159828                 WHEN 5 THEN 'LINE' 
159829                 WHEN 6 THEN 'LINE' 
159830                 WHEN 7 THEN 'LINE' 
159831                 WHEN 8 THEN 'LINE' 
159832                 WHEN 9 THEN 'LINE' 
159833                 
159834                 ELSE null
159835               END                           object_type_code
159836             , CASE r
159837                 WHEN 1 THEN '707' 
159838                 WHEN 2 THEN '707' 
159839                 WHEN 3 THEN '707' 
159840                 WHEN 4 THEN '707' 
159841                 WHEN 5 THEN '707' 
159842                 WHEN 6 THEN '707' 
159843                 WHEN 7 THEN '707' 
159844                 WHEN 8 THEN '707' 
159845                 WHEN 9 THEN '707' 
159846                 
159847                 ELSE null
159848               END                           source_application_id
159849             , 'S'             source_type_code
159850             , CASE r
159851                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
159852                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
159853                 WHEN 3 THEN 'CURRENCY_CODE' 
159854                 WHEN 4 THEN 'ENTERED_AMOUNT' 
159855                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
159856                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
159857                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
159858                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
159859                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
159860                 
159861                 ELSE null
159862               END                           source_code
159863             , CASE r
159864                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
159865                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
159866                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
159867                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
159868                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
159869                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
159870                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
159871                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
159872                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
159873                 
159874                 ELSE null
159875               END                           source_value
159876             , null              source_meaning
159877          FROM  xla_events_gt     xet  
159878         , CST_XLA_INV_LINES_V  l2
159879             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
159880         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
159881           AND xet.event_class_code = C_EVENT_CLASS_CODE
159882             AND l2.event_id          = xet.event_id
159883 
159884 )
159885 ;
159886 --
159887 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159888 
159889       trace
159890          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
159891          ,p_level    => C_LEVEL_STATEMENT
159892          ,p_module   => l_log_module);
159893 
159894 END IF;
159895 
159896 
159897 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159898       trace
159899          (p_msg      => 'END of insert_sources_266'
159900          ,p_level    => C_LEVEL_PROCEDURE
159901          ,p_module   => l_log_module);
159902 END IF;
159903 EXCEPTION
159904   WHEN xla_exceptions_pkg.application_exception THEN
159905       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
159906             trace
159907                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
159908                ,p_level    => C_LEVEL_EXCEPTION
159909                ,p_module   => l_log_module);
159910       END IF;
159911       RAISE;
159912   WHEN OTHERS THEN
159913       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
159914             trace
159915                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
159916                ,p_level    => C_LEVEL_EXCEPTION
159917                ,p_module   => l_log_module);
159918        END IF;
159919        xla_exceptions_pkg.raise_message
159920            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_266');
159921 END insert_sources_266;
159922 --
159923 
159924 ---------------------------------------
159925 --
159926 -- PRIVATE FUNCTION
159927 --         EventClass_266
159928 --
159929 ----------------------------------------
159930 --
159931 FUNCTION EventClass_266
159932        (p_application_id         IN NUMBER
159933        ,p_base_ledger_id         IN NUMBER
159934        ,p_target_ledger_id       IN NUMBER
159935        ,p_language               IN VARCHAR2
159936        ,p_currency_code          IN VARCHAR2
159937        ,p_sla_ledger_id          IN NUMBER
159938        ,p_pad_start_date         IN DATE
159939        ,p_pad_end_date           IN DATE
159940        ,p_primary_ledger_id      IN NUMBER)
159941 RETURN BOOLEAN IS
159942 --
159943 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_INTERCOMPANY_ALL';
159944 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
159945 
159946 l_calculate_acctd_flag   VARCHAR2(1) :='N';
159947 l_calculate_g_l_flag     VARCHAR2(1) :='N';
159948 --
159949 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159950 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159951 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159952 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159953 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159954 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159955 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159956 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159957 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159958 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159959 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159960 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159961 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159962 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159963 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159964 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159965 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159966 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159967 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159968 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159969 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159970 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159971 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
159972 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159973 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
159974 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
159975 
159976 l_event_id                             NUMBER;
159977 l_previous_event_id                    NUMBER;
159978 l_first_event_id                       NUMBER;
159979 l_last_event_id                        NUMBER;
159980 
159981 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
159982 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
159983 --
159984 --
159985 l_result                    BOOLEAN := TRUE;
159986 l_rows                      NUMBER  := 1000;
159987 l_event_type_name           VARCHAR2(80) := 'All';
159988 l_event_class_name          VARCHAR2(80) := 'Logical Intercompany';
159989 l_description               VARCHAR2(4000);
159990 l_transaction_reversal      NUMBER;
159991 l_ae_header_id              NUMBER;
159992 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
159993 l_log_module                VARCHAR2(240);
159994 --
159995 l_acct_reversal_source      VARCHAR2(30);
159996 l_trx_reversal_source       VARCHAR2(30);
159997 
159998 l_continue_with_lines       BOOLEAN := TRUE;
159999 --
160000 l_acc_rev_gl_date_source    DATE;                      -- 4262811
160001 --
160002 type t_array_event_id is table of number index by binary_integer;
160003 
160004 l_rec_array_event                    t_rec_array_event;
160005 l_null_rec_array_event               t_rec_array_event;
160006 l_array_ae_header_id                 xla_number_array_type;
160007 l_actual_flag                        VARCHAR2(1) := NULL;
160008 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
160009 l_balance_type_code                  VARCHAR2(1) :=NULL;
160010 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
160011 
160012 --
160013 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
160014 --
160015 
160016 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
160017 TYPE t_array_source_35 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ACTION_ID%TYPE INDEX BY BINARY_INTEGER;
160018 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
160019 
160020 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
160021 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
160022 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
160023 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
160024 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
160025 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
160026 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
160027 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
160028 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
160029 
160030 l_array_source_12              t_array_source_12;
160031 l_array_source_12_meaning      t_array_lookup_meaning;
160032 l_array_source_35              t_array_source_35;
160033 l_array_source_35_meaning      t_array_lookup_meaning;
160034 l_array_source_38              t_array_source_38;
160035 l_array_source_38_meaning      t_array_lookup_meaning;
160036 
160037 l_array_source_4      t_array_source_4;
160038 l_array_source_11      t_array_source_11;
160039 l_array_source_15      t_array_source_15;
160040 l_array_source_18      t_array_source_18;
160041 l_array_source_19      t_array_source_19;
160042 l_array_source_20      t_array_source_20;
160043 l_array_source_21      t_array_source_21;
160044 l_array_source_22      t_array_source_22;
160045 l_array_source_24      t_array_source_24;
160046 
160047 --
160048 CURSOR header_cur
160049 IS
160050 SELECT /*+ leading(xet) cardinality(xet,1) */
160051 -- Event Class Code: LOG_INTERCOMPANY
160052     xet.entity_id
160053    ,xet.legal_entity_id
160054    ,xet.entity_code
160055    ,xet.transaction_number
160056    ,xet.event_id
160057    ,xet.event_class_code
160058    ,xet.event_type_code
160059    ,xet.event_number
160060    ,xet.event_date
160061    ,xet.transaction_date
160062    ,xet.reference_num_1
160063    ,xet.reference_num_2
160064    ,xet.reference_num_3
160065    ,xet.reference_num_4
160066    ,xet.reference_char_1
160067    ,xet.reference_char_2
160068    ,xet.reference_char_3
160069    ,xet.reference_char_4
160070    ,xet.reference_date_1
160071    ,xet.reference_date_2
160072    ,xet.reference_date_3
160073    ,xet.reference_date_4
160074    ,xet.event_created_by
160075    ,xet.budgetary_control_flag 
160076   , h1.DISTRIBUTION_TYPE    source_12
160077   , fvl12.meaning   source_12_meaning
160078   , h1.TRANSACTION_ACTION_ID    source_35
160079   , fvl35.meaning   source_35_meaning
160080   , h1.TRANSFER_TO_GL_INDICATOR    source_38
160081   , fvl38.meaning   source_38_meaning
160082   FROM xla_events_gt     xet 
160083   , CST_XLA_INV_HEADERS_V  h1
160084   , fnd_lookup_values    fvl12
160085   , fnd_lookup_values    fvl35
160086   , fnd_lookup_values    fvl38
160087  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
160088    and xet.event_class_code = C_EVENT_CLASS_CODE
160089    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
160090    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
160091   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
160092   AND fvl12.view_application_id(+) = 700
160093   AND fvl12.language(+)            = USERENV('LANG')
160094      AND fvl35.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
160095   AND fvl35.lookup_code(+)         = h1.TRANSACTION_ACTION_ID
160096   AND fvl35.view_application_id(+) = 700
160097   AND fvl35.language(+)            = USERENV('LANG')
160098      AND fvl38.lookup_type(+)         = 'YES_NO'
160099   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
160100   AND fvl38.view_application_id(+) = 0
160101   AND fvl38.language(+)            = USERENV('LANG')
160102   
160103  ORDER BY event_id
160104 ;
160105 
160106 
160107 --
160108 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
160109 IS
160110 SELECT  /*+ leading(xet) cardinality(xet,1) */
160111 -- Event Class Code: LOG_INTERCOMPANY
160112     xet.entity_id
160113    ,xet.legal_entity_id
160114    ,xet.entity_code
160115    ,xet.transaction_number
160116    ,xet.event_id
160117    ,xet.event_class_code
160118    ,xet.event_type_code
160119    ,xet.event_number
160120    ,xet.event_date
160121    ,xet.transaction_date
160122    ,xet.reference_num_1
160123    ,xet.reference_num_2
160124    ,xet.reference_num_3
160125    ,xet.reference_num_4
160126    ,xet.reference_char_1
160127    ,xet.reference_char_2
160128    ,xet.reference_char_3
160129    ,xet.reference_char_4
160130    ,xet.reference_date_1
160131    ,xet.reference_date_2
160132    ,xet.reference_date_3
160133    ,xet.reference_date_4
160134    ,xet.event_created_by
160135    ,xet.budgetary_control_flag
160136  , l2.LINE_NUMBER  
160137   , l2.CODE_COMBINATION_ID    source_4
160138   , l2.DISTRIBUTION_IDENTIFIER    source_11
160139   , l2.CURRENCY_CODE    source_15
160140   , l2.ENTERED_AMOUNT    source_18
160141   , l2.CURRENCY_CONVERSION_DATE    source_19
160142   , l2.CURRENCY_CONVERSION_RATE    source_20
160143   , l2.CURRENCY_CONVERSION_TYPE    source_21
160144   , l2.ACCOUNTED_AMOUNT    source_22
160145   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
160146   FROM xla_events_gt     xet 
160147   , CST_XLA_INV_LINES_V  l2
160148  WHERE xet.event_id between x_first_event_id and x_last_event_id
160149    and xet.event_date between p_pad_start_date and p_pad_end_date
160150    and xet.event_class_code = C_EVENT_CLASS_CODE
160151    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
160152 ;
160153 
160154 --
160155 BEGIN
160156 IF g_log_enabled THEN
160157    l_log_module := C_DEFAULT_MODULE||'.EventClass_266';
160158 END IF;
160159 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160160    trace
160161       (p_msg      => 'BEGIN of EventClass_266'
160162       ,p_level    => C_LEVEL_PROCEDURE
160163       ,p_module   => l_log_module);
160164 END IF;
160165 
160166 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160167    trace
160168       (p_msg      => 'p_application_id = '||p_application_id||
160169                      ' - p_base_ledger_id = '||p_base_ledger_id||
160170                      ' - p_target_ledger_id  = '||p_target_ledger_id||
160171                      ' - p_language = '||p_language||
160172                      ' - p_currency_code = '||p_currency_code||
160173                      ' - p_sla_ledger_id = '||p_sla_ledger_id
160174       ,p_level    => C_LEVEL_STATEMENT
160175       ,p_module   => l_log_module);
160176 END IF;
160177 --
160178 -- initialze arrays
160179 --
160180 g_array_event.DELETE;
160181 l_rec_array_event := l_null_rec_array_event;
160182 --
160183 --------------------------------------
160184 -- 4262811 Initialze MPA Line Number
160185 --------------------------------------
160186 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
160187 
160188 --
160189 
160190 --
160191 OPEN header_cur;
160192 --
160193 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160194    trace
160195    (p_msg      => 'SQL - FETCH header_cur'
160196    ,p_level    => C_LEVEL_STATEMENT
160197    ,p_module   => l_log_module);
160198 END IF;
160199 --
160200 LOOP
160201 FETCH header_cur BULK COLLECT INTO
160202         l_array_entity_id
160203       , l_array_legal_entity_id
160204       , l_array_entity_code
160205       , l_array_transaction_num
160206       , l_array_event_id
160207       , l_array_class_code
160208       , l_array_event_type
160209       , l_array_event_number
160210       , l_array_event_date
160211       , l_array_transaction_date
160212       , l_array_reference_num_1
160213       , l_array_reference_num_2
160214       , l_array_reference_num_3
160215       , l_array_reference_num_4
160216       , l_array_reference_char_1
160217       , l_array_reference_char_2
160218       , l_array_reference_char_3
160219       , l_array_reference_char_4
160220       , l_array_reference_date_1
160221       , l_array_reference_date_2
160222       , l_array_reference_date_3
160223       , l_array_reference_date_4
160224       , l_array_event_created_by
160225       , l_array_budgetary_control_flag 
160226       , l_array_source_12
160227       , l_array_source_12_meaning
160228       , l_array_source_35
160229       , l_array_source_35_meaning
160230       , l_array_source_38
160231       , l_array_source_38_meaning
160232       LIMIT l_rows;
160233 --
160234 IF (C_LEVEL_EVENT >= g_log_level) THEN
160235    trace
160236    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
160237    ,p_level    => C_LEVEL_EVENT
160238    ,p_module   => l_log_module);
160239 END IF;
160240 --
160241 EXIT WHEN l_array_entity_id.COUNT = 0;
160242 
160243 -- initialize arrays
160244 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
160245 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
160246 
160247 --
160248 -- Bug 4458708
160249 --
160250 XLA_AE_LINES_PKG.g_LineNumber := 0;
160251 
160252 
160253 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
160254 g_last_hdr_idx := l_array_event_id.LAST;
160255 --
160256 -- loop for the headers. Each iteration is for each header extract row
160257 -- fetched in header cursor
160258 --
160259 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
160260 
160261 --
160262 -- set event info as cache for other routines to refer event attributes
160263 --
160264 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
160265    (p_application_id           => p_application_id
160266    ,p_primary_ledger_id        => p_primary_ledger_id
160267    ,p_base_ledger_id           => p_base_ledger_id
160268    ,p_target_ledger_id         => p_target_ledger_id
160269    ,p_entity_id                => l_array_entity_id(hdr_idx)
160270    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
160271    ,p_entity_code              => l_array_entity_code(hdr_idx)
160272    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
160273    ,p_event_id                 => l_array_event_id(hdr_idx)
160274    ,p_event_class_code         => l_array_class_code(hdr_idx)
160275    ,p_event_type_code          => l_array_event_type(hdr_idx)
160276    ,p_event_number             => l_array_event_number(hdr_idx)
160277    ,p_event_date               => l_array_event_date(hdr_idx)
160278    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
160279    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
160280    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
160281    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
160282    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
160283    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
160284    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
160285    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
160286    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
160287    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
160288    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
160289    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
160290    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
160291    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
160292    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
160293 
160294 --
160295 -- set the status of entry to C_VALID (0)
160296 --
160297 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
160298 
160299 --
160300 -- initialize a row for ae header
160301 --
160302 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
160303 
160304 l_event_id := l_array_event_id(hdr_idx);
160305 
160306 --
160307 -- storing the hdr_idx for event. May be used by line cursor.
160308 --
160309 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
160310 
160311 --
160312 -- store sources from header extract. This can be improved to
160313 -- store only those sources from header extract that may be used in lines
160314 --
160315 
160316 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
160317 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
160318 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
160319 g_array_event(l_event_id).array_value_char('source_35_meaning') := l_array_source_35_meaning(hdr_idx);
160320 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
160321 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
160322 
160323 --
160324 -- initilaize the status of ae headers for diffrent balance types
160325 -- the status is initialised to C_NOT_CREATED (2)
160326 --
160327 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160328 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160329 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160330 
160331 --
160332 -- call api to validate and store accounting attributes for header
160333 --
160334 
160335 ------------------------------------------------------------
160336 -- Accrual Reversal : to get date for Standard Source (NONE)
160337 ------------------------------------------------------------
160338 l_acc_rev_gl_date_source := NULL;
160339 
160340      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
160341       l_rec_acct_attrs.array_date_value(1) := 
160342 xla_ae_sources_pkg.GetSystemSourceDate(
160343    p_source_code           => 'XLA_REFERENCE_DATE_1'
160344  , p_source_type_code      => 'Y'
160345  , p_source_application_id =>  602
160346 );
160347      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
160348       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
160349 
160350 
160351 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
160352 
160353 XLA_AE_HEADER_PKG.SetJeCategoryName;
160354 
160355 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
160356 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
160357 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
160358 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
160359 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
160360 
160361 
160362 -- No header level analytical criteria
160363 
160364 --
160365 --accounting attribute enhancement, bug 3612931
160366 --
160367 l_trx_reversal_source := SUBSTR(NULL, 1,30);
160368 
160369 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
160370    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
160371 
160372    xla_accounting_err_pkg.build_message
160373       (p_appli_s_name            => 'XLA'
160374       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
160375       ,p_token_1                 => 'ACCT_ATTR_NAME'
160376       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
160377       ,p_token_2                 => 'PRODUCT_NAME'
160378       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
160379       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
160380       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
160381       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
160382 
160383 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
160384    --
160385    -- following sets the accounting attributes needed to reverse
160386    -- accounting for a distributeion
160387    --
160388    xla_ae_lines_pkg.SetTrxReversalAttrs
160389       (p_event_id              => l_event_id
160390       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
160391       ,p_trx_reversal_source   => l_trx_reversal_source);
160392 
160393 END IF;
160394 
160395 
160396 ----------------------------------------------------------------
160397 -- 4262811 -  update the header statuses to invalid in need be
160398 ----------------------------------------------------------------
160399 --
160400 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
160401 
160402 
160403   -----------------------------------------------
160404   -- No accrual reversal for the event class/type
160405   -----------------------------------------------
160406 ----------------------------------------------------------------
160407 
160408 --
160409 -- this ends the header loop iteration for one bulk fetch
160410 --
160411 END LOOP;
160412 
160413 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
160414 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
160415 
160416 --
160417 -- insert dummy rows into lines gt table that were created due to
160418 -- transaction reversals
160419 --
160420 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
160421    l_result := XLA_AE_LINES_PKG.InsertLines;
160422 END IF;
160423 
160424 --
160425 -- reset the temp_line_num for each set of events fetched from header
160426 -- cursor rather than doing it for each new event in line cursor
160427 -- Bug 3939231
160428 --
160429 xla_ae_lines_pkg.g_temp_line_num := 0;
160430 
160431 
160432 
160433 --
160434 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
160435 --
160436 --
160437 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160438 
160439       trace
160440          (p_msg      => 'SQL - FETCH line_cur'
160441          ,p_level    => C_LEVEL_STATEMENT
160442          ,p_module   => l_log_module);
160443 
160444 END IF;
160445 --
160446 --
160447 LOOP
160448   --
160449   FETCH line_cur BULK COLLECT INTO
160450         l_array_entity_id
160451       , l_array_legal_entity_id
160452       , l_array_entity_code
160453       , l_array_transaction_num
160454       , l_array_event_id
160455       , l_array_class_code
160456       , l_array_event_type
160457       , l_array_event_number
160458       , l_array_event_date
160459       , l_array_transaction_date
160460       , l_array_reference_num_1
160461       , l_array_reference_num_2
160462       , l_array_reference_num_3
160463       , l_array_reference_num_4
160464       , l_array_reference_char_1
160465       , l_array_reference_char_2
160466       , l_array_reference_char_3
160467       , l_array_reference_char_4
160468       , l_array_reference_date_1
160469       , l_array_reference_date_2
160470       , l_array_reference_date_3
160471       , l_array_reference_date_4
160472       , l_array_event_created_by
160473       , l_array_budgetary_control_flag
160474       , l_array_extract_line_num 
160475       , l_array_source_4
160476       , l_array_source_11
160477       , l_array_source_15
160478       , l_array_source_18
160479       , l_array_source_19
160480       , l_array_source_20
160481       , l_array_source_21
160482       , l_array_source_22
160483       , l_array_source_24
160484       LIMIT l_rows;
160485 
160486   --
160487   IF (C_LEVEL_EVENT >= g_log_level) THEN
160488             trace
160489                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
160490                ,p_level    => C_LEVEL_EVENT
160491                ,p_module   => l_log_module);
160492   END IF;
160493   --
160494   EXIT WHEN l_array_entity_id.count = 0;
160495 
160496   XLA_AE_LINES_PKG.g_rec_lines := null;
160497 
160498 --
160499 -- Bug 4458708
160500 --
160501 XLA_AE_LINES_PKG.g_LineNumber := 0;
160502 --
160503 --
160504 
160505 FOR Idx IN 1..l_array_event_id.count LOOP
160506    --
160507    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
160508    --
160509    l_event_id := l_array_event_id(idx);  -- 5648433
160510 
160511    --
160512    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
160513    --
160514 
160515    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
160516              (g_array_event(l_event_id).array_value_num('header_index'))
160517          ,'N'
160518          ) <> 'Y'
160519    THEN
160520       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160521          trace
160522             (p_msg      => 'Trancaction revesal option is not Y '
160523             ,p_level    => C_LEVEL_STATEMENT
160524             ,p_module   => l_log_module);
160525       END IF;
160526 
160527 --
160528 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
160529 --
160530 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
160531 --
160532 -- set event info as cache for other routines to refer event attributes
160533 --
160534 
160535 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
160536    l_previous_event_id := l_event_id;
160537 
160538    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
160539       (p_application_id           => p_application_id
160540       ,p_primary_ledger_id        => p_primary_ledger_id
160541       ,p_base_ledger_id           => p_base_ledger_id
160542       ,p_target_ledger_id         => p_target_ledger_id
160543       ,p_entity_id                => l_array_entity_id(Idx)
160544       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
160545       ,p_entity_code              => l_array_entity_code(Idx)
160546       ,p_transaction_num          => l_array_transaction_num(Idx)
160547       ,p_event_id                 => l_array_event_id(Idx)
160548       ,p_event_class_code         => l_array_class_code(Idx)
160549       ,p_event_type_code          => l_array_event_type(Idx)
160550       ,p_event_number             => l_array_event_number(Idx)
160551       ,p_event_date               => l_array_event_date(Idx)
160552       ,p_transaction_date         => l_array_transaction_date(Idx)
160553       ,p_reference_num_1          => l_array_reference_num_1(Idx)
160554       ,p_reference_num_2          => l_array_reference_num_2(Idx)
160555       ,p_reference_num_3          => l_array_reference_num_3(Idx)
160556       ,p_reference_num_4          => l_array_reference_num_4(Idx)
160557       ,p_reference_char_1         => l_array_reference_char_1(Idx)
160558       ,p_reference_char_2         => l_array_reference_char_2(Idx)
160559       ,p_reference_char_3         => l_array_reference_char_3(Idx)
160560       ,p_reference_char_4         => l_array_reference_char_4(Idx)
160561       ,p_reference_date_1         => l_array_reference_date_1(Idx)
160562       ,p_reference_date_2         => l_array_reference_date_2(Idx)
160563       ,p_reference_date_3         => l_array_reference_date_3(Idx)
160564       ,p_reference_date_4         => l_array_reference_date_4(Idx)
160565       ,p_event_created_by         => l_array_event_created_by(Idx)
160566       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
160567        --
160568 END IF;
160569 
160570 
160571 
160572 --
160573 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
160574 
160575 l_acct_reversal_source := SUBSTR(NULL, 1,30);
160576 
160577 IF l_continue_with_lines THEN
160578    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
160579       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
160580 
160581       xla_accounting_err_pkg.build_message
160582          (p_appli_s_name            => 'XLA'
160583          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
160584          ,p_token_1                 => 'LINE_NUMBER'
160585          ,p_value_1                 => l_array_extract_line_num(Idx)
160586          ,p_token_2                 => 'PRODUCT_NAME'
160587          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
160588          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
160589          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
160590          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
160591 
160592    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
160593       --
160594       -- following sets the accounting attributes needed to reverse
160595       -- accounting for a distributeion
160596       --
160597 
160598       --
160599       -- 5217187
160600       --
160601       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
160602       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
160603                                        g_array_event(l_event_id).array_value_num('header_index'));
160604       --
160605       --
160606 
160607       -- No reversal code generated
160608 
160609       xla_ae_lines_pkg.SetAcctReversalAttrs
160610          (p_event_id             => l_event_id
160611          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
160612          ,p_calculate_acctd_flag => l_calculate_acctd_flag
160613          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
160614    END IF;
160615 
160616    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
160617        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
160618 
160619 --
160620 AcctLineType_14 (
160621  p_application_id  => p_application_id
160622  ,p_event_id     => l_event_id
160623  ,p_calculate_acctd_flag => l_calculate_acctd_flag
160624  ,p_calculate_g_l_flag => l_calculate_g_l_flag
160625  ,p_actual_flag => l_actual_flag
160626  ,p_balance_type_code => l_balance_type_code
160627  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160628  
160629  , p_source_4 => l_array_source_4(Idx)
160630  , p_source_11 => l_array_source_11(Idx)
160631  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
160632  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
160633  , p_source_15 => l_array_source_15(Idx)
160634  , p_source_18 => l_array_source_18(Idx)
160635  , p_source_19 => l_array_source_19(Idx)
160636  , p_source_20 => l_array_source_20(Idx)
160637  , p_source_21 => l_array_source_21(Idx)
160638  , p_source_22 => l_array_source_22(Idx)
160639  , p_source_24 => l_array_source_24(Idx)
160640  );
160641 If(l_balance_type_code = 'A') THEN
160642   l_actual_gain_loss_ref := l_gain_or_loss_ref;
160643 END IF;
160644 
160645 --
160646 
160647 
160648 --
160649 AcctLineType_49 (
160650  p_application_id  => p_application_id
160651  ,p_event_id     => l_event_id
160652  ,p_calculate_acctd_flag => l_calculate_acctd_flag
160653  ,p_calculate_g_l_flag => l_calculate_g_l_flag
160654  ,p_actual_flag => l_actual_flag
160655  ,p_balance_type_code => l_balance_type_code
160656  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160657  
160658  , p_source_4 => l_array_source_4(Idx)
160659  , p_source_11 => l_array_source_11(Idx)
160660  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
160661  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
160662  , p_source_15 => l_array_source_15(Idx)
160663  , p_source_18 => l_array_source_18(Idx)
160664  , p_source_19 => l_array_source_19(Idx)
160665  , p_source_20 => l_array_source_20(Idx)
160666  , p_source_21 => l_array_source_21(Idx)
160667  , p_source_22 => l_array_source_22(Idx)
160668  , p_source_24 => l_array_source_24(Idx)
160669  );
160670 If(l_balance_type_code = 'A') THEN
160671   l_actual_gain_loss_ref := l_gain_or_loss_ref;
160672 END IF;
160673 
160674 --
160675 
160676 
160677 --
160678 AcctLineType_55 (
160679  p_application_id  => p_application_id
160680  ,p_event_id     => l_event_id
160681  ,p_calculate_acctd_flag => l_calculate_acctd_flag
160682  ,p_calculate_g_l_flag => l_calculate_g_l_flag
160683  ,p_actual_flag => l_actual_flag
160684  ,p_balance_type_code => l_balance_type_code
160685  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160686  
160687  , p_source_4 => l_array_source_4(Idx)
160688  , p_source_11 => l_array_source_11(Idx)
160689  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
160690  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
160691  , p_source_15 => l_array_source_15(Idx)
160692  , p_source_18 => l_array_source_18(Idx)
160693  , p_source_19 => l_array_source_19(Idx)
160694  , p_source_20 => l_array_source_20(Idx)
160695  , p_source_21 => l_array_source_21(Idx)
160696  , p_source_22 => l_array_source_22(Idx)
160697  , p_source_24 => l_array_source_24(Idx)
160698  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
160699  , p_source_35_meaning => g_array_event(l_event_id).array_value_char('source_35_meaning')
160700  );
160701 If(l_balance_type_code = 'A') THEN
160702   l_actual_gain_loss_ref := l_gain_or_loss_ref;
160703 END IF;
160704 
160705 --
160706 
160707 
160708 --
160709 AcctLineType_126 (
160710  p_application_id  => p_application_id
160711  ,p_event_id     => l_event_id
160712  ,p_calculate_acctd_flag => l_calculate_acctd_flag
160713  ,p_calculate_g_l_flag => l_calculate_g_l_flag
160714  ,p_actual_flag => l_actual_flag
160715  ,p_balance_type_code => l_balance_type_code
160716  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160717  
160718  , p_source_4 => l_array_source_4(Idx)
160719  , p_source_11 => l_array_source_11(Idx)
160720  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
160721  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
160722  , p_source_15 => l_array_source_15(Idx)
160723  , p_source_18 => l_array_source_18(Idx)
160724  , p_source_19 => l_array_source_19(Idx)
160725  , p_source_20 => l_array_source_20(Idx)
160726  , p_source_21 => l_array_source_21(Idx)
160727  , p_source_22 => l_array_source_22(Idx)
160728  , p_source_24 => l_array_source_24(Idx)
160729  );
160730 If(l_balance_type_code = 'A') THEN
160731   l_actual_gain_loss_ref := l_gain_or_loss_ref;
160732 END IF;
160733 
160734 --
160735 
160736 
160737 --
160738 AcctLineType_180 (
160739  p_application_id  => p_application_id
160740  ,p_event_id     => l_event_id
160741  ,p_calculate_acctd_flag => l_calculate_acctd_flag
160742  ,p_calculate_g_l_flag => l_calculate_g_l_flag
160743  ,p_actual_flag => l_actual_flag
160744  ,p_balance_type_code => l_balance_type_code
160745  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160746  
160747  , p_source_4 => l_array_source_4(Idx)
160748  , p_source_11 => l_array_source_11(Idx)
160749  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
160750  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
160751  , p_source_15 => l_array_source_15(Idx)
160752  , p_source_18 => l_array_source_18(Idx)
160753  , p_source_19 => l_array_source_19(Idx)
160754  , p_source_20 => l_array_source_20(Idx)
160755  , p_source_21 => l_array_source_21(Idx)
160756  , p_source_22 => l_array_source_22(Idx)
160757  , p_source_24 => l_array_source_24(Idx)
160758  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
160759  , p_source_35_meaning => g_array_event(l_event_id).array_value_char('source_35_meaning')
160760  );
160761 If(l_balance_type_code = 'A') THEN
160762   l_actual_gain_loss_ref := l_gain_or_loss_ref;
160763 END IF;
160764 
160765 --
160766 
160767       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
160768       -- or secondary ledger that has different currency with primary
160769       -- or alc that is calculated by sla
160770       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
160771             (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'))
160772 
160773 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
160774 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
160775           AND (l_actual_flag = 'A')) THEN
160776         XLA_AE_LINES_PKG.CreateGainOrLossLines(
160777           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
160778          ,p_application_id   => p_application_id
160779          ,p_amb_context_code => 'DEFAULT'
160780          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
160781          ,p_event_class_code => C_EVENT_CLASS_CODE
160782          ,p_event_type_code  => C_EVENT_TYPE_CODE
160783          
160784          ,p_gain_ccid        => -1
160785          ,p_loss_ccid        => -1
160786 
160787          ,p_actual_flag      => l_actual_flag
160788          ,p_enc_flag         => null
160789          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
160790          ,p_enc_g_l_ref      => null
160791          );
160792       END IF;
160793    END IF;
160794 END IF;
160795 
160796    ELSE
160797       --
160798       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
160799       --
160800       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160801          trace
160802             (p_msg      => 'Trancaction revesal option is Y'
160803             ,p_level    => C_LEVEL_STATEMENT
160804             ,p_module   => l_log_module);
160805       END IF;
160806    END IF;
160807 
160808 END LOOP;
160809 l_result := XLA_AE_LINES_PKG.InsertLines ;
160810 end loop;
160811 close line_cur;
160812 
160813 
160814 --
160815 -- insert headers into xla_ae_headers_gt table
160816 --
160817 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
160818 
160819 -- insert into errors table here.
160820 
160821 END LOOP;
160822 
160823 --
160824 -- 4865292
160825 --
160826 -- Compare g_hdr_extract_count with event count in
160827 -- CreateHeadersAndLines.
160828 --
160829 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
160830 
160831 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160832    trace (p_msg     => '# rows extracted from header extract objects '
160833                     || ' (running total): '
160834                     || g_hdr_extract_count
160835          ,p_level   => C_LEVEL_STATEMENT
160836          ,p_module  => l_log_module);
160837 END IF;
160838 
160839 CLOSE header_cur;
160840 --
160841 
160842 --
160843 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160844    trace
160845       (p_msg      => 'END of EventClass_266'
160846       ,p_level    => C_LEVEL_PROCEDURE
160847       ,p_module   => l_log_module);
160848 END IF;
160849 --
160850 RETURN l_result;
160851 EXCEPTION
160852 WHEN xla_exceptions_pkg.application_exception THEN
160853    
160854 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
160855 
160856    
160857 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
160858 
160859    RAISE;
160860 
160861 WHEN NO_DATA_FOUND THEN
160862 
160863 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
160864 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
160865 
160866 FOR header_record IN header_cur
160867 LOOP
160868     l_array_header_events(header_record.event_id) := header_record.event_id;
160869 END LOOP;
160870 
160871 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
160872 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
160873 
160874 fnd_file.put_line(fnd_file.LOG, '                    ');
160875 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
160876 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
160877 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
160878 
160879 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
160880 LOOP
160881 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
160882 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
160883         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
160884 	END IF;
160885 END LOOP;
160886 
160887 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
160888 fnd_file.put_line(fnd_file.LOG, '                    ');
160889 
160890 
160891 xla_exceptions_pkg.raise_message
160892       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_266');
160893 
160894 
160895 WHEN OTHERS THEN
160896    xla_exceptions_pkg.raise_message
160897       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_266');
160898 END EventClass_266;
160899 --
160900 
160901 ---------------------------------------
160902 --
160903 -- PRIVATE PROCEDURE
160904 --         insert_sources_267
160905 --
160906 ----------------------------------------
160907 --
160908 PROCEDURE insert_sources_267(
160909                                 p_target_ledger_id       IN NUMBER
160910                               , p_language               IN VARCHAR2
160911                               , p_sla_ledger_id          IN NUMBER
160912                               , p_pad_start_date         IN DATE
160913                               , p_pad_end_date           IN DATE
160914                          )
160915 IS
160916 
160917 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_ISSUE_RCPT_ALL';
160918 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'MISC_ISSUE_RCPT';
160919 p_apps_owner                   VARCHAR2(30);
160920 l_log_module                   VARCHAR2(240);
160921 BEGIN
160922 IF g_log_enabled THEN
160923       l_log_module := C_DEFAULT_MODULE||'.insert_sources_267';
160924 END IF;
160925 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160926 
160927       trace
160928          (p_msg      => 'BEGIN of insert_sources_267'
160929          ,p_level    => C_LEVEL_PROCEDURE
160930          ,p_module   => l_log_module);
160931 
160932 END IF;
160933 
160934 -- select APPS owner
160935 SELECT oracle_username
160936   INTO p_apps_owner
160937   FROM fnd_oracle_userid
160938  WHERE read_only_flag = 'U'
160939 ;
160940 
160941 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160942       trace
160943          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
160944                         ' - p_language = '||p_language||
160945                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
160946                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
160947                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
160948                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
160949          ,p_level    => C_LEVEL_STATEMENT
160950          ,p_module   => l_log_module);
160951 END IF;
160952 
160953 
160954 --
160955 INSERT INTO xla_diag_sources --hdr2
160956 (
160957         event_id
160958       , ledger_id
160959       , sla_ledger_id
160960       , description_language
160961       , object_name
160962       , object_type_code
160963       , line_number
160964       , source_application_id
160965       , source_type_code
160966       , source_code
160967       , source_value
160968       , source_meaning
160969       , created_by
160970       , creation_date
160971       , last_update_date
160972       , last_updated_by
160973       , last_update_login
160974       , program_update_date
160975       , program_application_id
160976       , program_id
160977       , request_id
160978 )
160979 SELECT
160980         event_id
160981       , p_target_ledger_id
160982       , p_sla_ledger_id
160983       , p_language
160984       , object_name
160985       , object_type_code
160986       , line_number
160987       , source_application_id
160988       , source_type_code
160989       , source_code
160990       , SUBSTR(source_value ,1,1996)
160991       , SUBSTR(source_meaning ,1,200)
160992       , xla_environment_pkg.g_Usr_Id
160993       , TRUNC(SYSDATE)
160994       , TRUNC(SYSDATE)
160995       , xla_environment_pkg.g_Usr_Id
160996       , xla_environment_pkg.g_Login_Id
160997       , TRUNC(SYSDATE)
160998       , xla_environment_pkg.g_Prog_Appl_Id
160999       , xla_environment_pkg.g_Prog_Id
161000       , xla_environment_pkg.g_Req_Id
161001   FROM (
161002        SELECT xet.event_id                  event_id
161003             , 0                          line_number
161004             , CASE r
161005                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
161006                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
161007                 
161008                ELSE null
161009               END                           object_name
161010             , CASE r
161011                 WHEN 1 THEN 'HEADER' 
161012                 WHEN 2 THEN 'HEADER' 
161013                 
161014                 ELSE null
161015               END                           object_type_code
161016             , CASE r
161017                 WHEN 1 THEN '707' 
161018                 WHEN 2 THEN '707' 
161019                 
161020                 ELSE null
161021               END                           source_application_id
161022             , 'S'             source_type_code
161023             , CASE r
161024                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
161025                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
161026                 
161027                 ELSE null
161028               END                           source_code
161029             , CASE r
161030                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
161031                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
161032                 
161033                 ELSE null
161034               END                           source_value
161035             , CASE r
161036                 WHEN 1 THEN fvl12.meaning
161037                 WHEN 2 THEN fvl38.meaning
161038                 
161039                 ELSE null
161040               END               source_meaning
161041          FROM xla_events_gt     xet  
161042       , CST_XLA_INV_HEADERS_V  h1
161043   , fnd_lookup_values    fvl12
161044   , fnd_lookup_values    fvl38
161045              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
161046          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
161047            AND xet.event_class_code = C_EVENT_CLASS_CODE
161048               AND h1.event_id = xet.event_id
161049    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
161050   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
161051   AND fvl12.view_application_id(+) = 700
161052   AND fvl12.language(+)            = USERENV('LANG')
161053      AND fvl38.lookup_type(+)         = 'YES_NO'
161054   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
161055   AND fvl38.view_application_id(+) = 0
161056   AND fvl38.language(+)            = USERENV('LANG')
161057   
161058 )
161059 ;
161060 --
161061 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161062 
161063       trace
161064          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
161065          ,p_level    => C_LEVEL_STATEMENT
161066          ,p_module   => l_log_module);
161067 
161068 END IF;
161069 --
161070 
161071 
161072 
161073 --
161074 INSERT INTO xla_diag_sources  --line2
161075 (
161076         event_id
161077       , ledger_id
161078       , sla_ledger_id
161079       , description_language
161080       , object_name
161081       , object_type_code
161082       , line_number
161083       , source_application_id
161084       , source_type_code
161085       , source_code
161086       , source_value
161087       , source_meaning
161088       , created_by
161089       , creation_date
161090       , last_update_date
161091       , last_updated_by
161092       , last_update_login
161093       , program_update_date
161094       , program_application_id
161095       , program_id
161096       , request_id
161097 )
161098 SELECT  event_id
161099       , p_target_ledger_id
161100       , p_sla_ledger_id
161101       , p_language
161102       , object_name
161103       , object_type_code
161104       , line_number
161105       , source_application_id
161106       , source_type_code
161107       , source_code
161108       , SUBSTR(source_value,1,1996)
161109       , SUBSTR(source_meaning ,1,200)
161110       , xla_environment_pkg.g_Usr_Id
161111       , TRUNC(SYSDATE)
161112       , TRUNC(SYSDATE)
161113       , xla_environment_pkg.g_Usr_Id
161114       , xla_environment_pkg.g_Login_Id
161115       , TRUNC(SYSDATE)
161116       , xla_environment_pkg.g_Prog_Appl_Id
161117       , xla_environment_pkg.g_Prog_Id
161118       , xla_environment_pkg.g_Req_Id
161119   FROM (
161120        SELECT xet.event_id                  event_id
161121             , l2.line_number                 line_number
161122             , CASE r
161123                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
161124                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
161125                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
161126                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
161127                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
161128                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
161129                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
161130                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
161131                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
161132                 
161133                ELSE null
161134               END                           object_name
161135             , CASE r
161136                 WHEN 1 THEN 'LINE' 
161137                 WHEN 2 THEN 'LINE' 
161138                 WHEN 3 THEN 'LINE' 
161139                 WHEN 4 THEN 'LINE' 
161140                 WHEN 5 THEN 'LINE' 
161141                 WHEN 6 THEN 'LINE' 
161142                 WHEN 7 THEN 'LINE' 
161143                 WHEN 8 THEN 'LINE' 
161144                 WHEN 9 THEN 'LINE' 
161145                 
161146                 ELSE null
161147               END                           object_type_code
161148             , CASE r
161149                 WHEN 1 THEN '707' 
161150                 WHEN 2 THEN '707' 
161151                 WHEN 3 THEN '707' 
161152                 WHEN 4 THEN '707' 
161153                 WHEN 5 THEN '707' 
161154                 WHEN 6 THEN '707' 
161155                 WHEN 7 THEN '707' 
161156                 WHEN 8 THEN '707' 
161157                 WHEN 9 THEN '707' 
161158                 
161159                 ELSE null
161160               END                           source_application_id
161161             , 'S'             source_type_code
161162             , CASE r
161163                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
161164                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
161165                 WHEN 3 THEN 'CURRENCY_CODE' 
161166                 WHEN 4 THEN 'ENTERED_AMOUNT' 
161167                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
161168                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
161169                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
161170                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
161171                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
161172                 
161173                 ELSE null
161174               END                           source_code
161175             , CASE r
161176                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
161177                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
161178                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
161179                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
161180                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
161181                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
161182                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
161183                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
161184                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
161185                 
161186                 ELSE null
161187               END                           source_value
161188             , null              source_meaning
161189          FROM  xla_events_gt     xet  
161190         , CST_XLA_INV_LINES_V  l2
161191             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
161192         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
161193           AND xet.event_class_code = C_EVENT_CLASS_CODE
161194             AND l2.event_id          = xet.event_id
161195 
161196 )
161197 ;
161198 --
161199 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161200 
161201       trace
161202          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
161203          ,p_level    => C_LEVEL_STATEMENT
161204          ,p_module   => l_log_module);
161205 
161206 END IF;
161207 
161208 
161209 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161210       trace
161211          (p_msg      => 'END of insert_sources_267'
161212          ,p_level    => C_LEVEL_PROCEDURE
161213          ,p_module   => l_log_module);
161214 END IF;
161215 EXCEPTION
161216   WHEN xla_exceptions_pkg.application_exception THEN
161217       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
161218             trace
161219                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
161220                ,p_level    => C_LEVEL_EXCEPTION
161221                ,p_module   => l_log_module);
161222       END IF;
161223       RAISE;
161224   WHEN OTHERS THEN
161225       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
161226             trace
161227                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
161228                ,p_level    => C_LEVEL_EXCEPTION
161229                ,p_module   => l_log_module);
161230        END IF;
161231        xla_exceptions_pkg.raise_message
161232            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_267');
161233 END insert_sources_267;
161234 --
161235 
161236 ---------------------------------------
161237 --
161238 -- PRIVATE FUNCTION
161239 --         EventClass_267
161240 --
161241 ----------------------------------------
161242 --
161243 FUNCTION EventClass_267
161244        (p_application_id         IN NUMBER
161245        ,p_base_ledger_id         IN NUMBER
161246        ,p_target_ledger_id       IN NUMBER
161247        ,p_language               IN VARCHAR2
161248        ,p_currency_code          IN VARCHAR2
161249        ,p_sla_ledger_id          IN NUMBER
161250        ,p_pad_start_date         IN DATE
161251        ,p_pad_end_date           IN DATE
161252        ,p_primary_ledger_id      IN NUMBER)
161253 RETURN BOOLEAN IS
161254 --
161255 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_ISSUE_RCPT_ALL';
161256 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'MISC_ISSUE_RCPT';
161257 
161258 l_calculate_acctd_flag   VARCHAR2(1) :='N';
161259 l_calculate_g_l_flag     VARCHAR2(1) :='N';
161260 --
161261 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161262 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161263 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161264 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161265 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161266 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161267 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161268 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161269 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161270 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161271 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161272 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161273 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161274 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161275 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161276 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161277 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161278 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161279 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161280 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161281 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161282 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161283 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
161284 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161285 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
161286 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
161287 
161288 l_event_id                             NUMBER;
161289 l_previous_event_id                    NUMBER;
161290 l_first_event_id                       NUMBER;
161291 l_last_event_id                        NUMBER;
161292 
161293 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
161294 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
161295 --
161296 --
161297 l_result                    BOOLEAN := TRUE;
161298 l_rows                      NUMBER  := 1000;
161299 l_event_type_name           VARCHAR2(80) := 'All';
161300 l_event_class_name          VARCHAR2(80) := 'Miscellaneous';
161301 l_description               VARCHAR2(4000);
161302 l_transaction_reversal      NUMBER;
161303 l_ae_header_id              NUMBER;
161304 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
161305 l_log_module                VARCHAR2(240);
161306 --
161307 l_acct_reversal_source      VARCHAR2(30);
161308 l_trx_reversal_source       VARCHAR2(30);
161309 
161310 l_continue_with_lines       BOOLEAN := TRUE;
161311 --
161312 l_acc_rev_gl_date_source    DATE;                      -- 4262811
161313 --
161314 type t_array_event_id is table of number index by binary_integer;
161315 
161316 l_rec_array_event                    t_rec_array_event;
161317 l_null_rec_array_event               t_rec_array_event;
161318 l_array_ae_header_id                 xla_number_array_type;
161319 l_actual_flag                        VARCHAR2(1) := NULL;
161320 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
161321 l_balance_type_code                  VARCHAR2(1) :=NULL;
161322 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
161323 
161324 --
161325 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
161326 --
161327 
161328 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
161329 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
161330 
161331 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
161332 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
161333 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
161334 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
161335 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
161336 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
161337 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
161338 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
161339 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
161340 
161341 l_array_source_12              t_array_source_12;
161342 l_array_source_12_meaning      t_array_lookup_meaning;
161343 l_array_source_38              t_array_source_38;
161344 l_array_source_38_meaning      t_array_lookup_meaning;
161345 
161346 l_array_source_4      t_array_source_4;
161347 l_array_source_11      t_array_source_11;
161348 l_array_source_15      t_array_source_15;
161349 l_array_source_18      t_array_source_18;
161350 l_array_source_19      t_array_source_19;
161351 l_array_source_20      t_array_source_20;
161352 l_array_source_21      t_array_source_21;
161353 l_array_source_22      t_array_source_22;
161354 l_array_source_24      t_array_source_24;
161355 
161356 --
161357 CURSOR header_cur
161358 IS
161359 SELECT /*+ leading(xet) cardinality(xet,1) */
161360 -- Event Class Code: MISC_ISSUE_RCPT
161361     xet.entity_id
161362    ,xet.legal_entity_id
161363    ,xet.entity_code
161364    ,xet.transaction_number
161365    ,xet.event_id
161366    ,xet.event_class_code
161367    ,xet.event_type_code
161368    ,xet.event_number
161369    ,xet.event_date
161370    ,xet.transaction_date
161371    ,xet.reference_num_1
161372    ,xet.reference_num_2
161373    ,xet.reference_num_3
161374    ,xet.reference_num_4
161375    ,xet.reference_char_1
161376    ,xet.reference_char_2
161377    ,xet.reference_char_3
161378    ,xet.reference_char_4
161379    ,xet.reference_date_1
161380    ,xet.reference_date_2
161381    ,xet.reference_date_3
161382    ,xet.reference_date_4
161383    ,xet.event_created_by
161384    ,xet.budgetary_control_flag 
161385   , h1.DISTRIBUTION_TYPE    source_12
161386   , fvl12.meaning   source_12_meaning
161387   , h1.TRANSFER_TO_GL_INDICATOR    source_38
161388   , fvl38.meaning   source_38_meaning
161389   FROM xla_events_gt     xet 
161390   , CST_XLA_INV_HEADERS_V  h1
161391   , fnd_lookup_values    fvl12
161392   , fnd_lookup_values    fvl38
161393  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
161394    and xet.event_class_code = C_EVENT_CLASS_CODE
161395    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
161396    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
161397   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
161398   AND fvl12.view_application_id(+) = 700
161399   AND fvl12.language(+)            = USERENV('LANG')
161400      AND fvl38.lookup_type(+)         = 'YES_NO'
161401   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
161402   AND fvl38.view_application_id(+) = 0
161403   AND fvl38.language(+)            = USERENV('LANG')
161404   
161405  ORDER BY event_id
161406 ;
161407 
161408 
161409 --
161410 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
161411 IS
161412 SELECT  /*+ leading(xet) cardinality(xet,1) */
161413 -- Event Class Code: MISC_ISSUE_RCPT
161414     xet.entity_id
161415    ,xet.legal_entity_id
161416    ,xet.entity_code
161417    ,xet.transaction_number
161418    ,xet.event_id
161419    ,xet.event_class_code
161420    ,xet.event_type_code
161421    ,xet.event_number
161422    ,xet.event_date
161423    ,xet.transaction_date
161424    ,xet.reference_num_1
161425    ,xet.reference_num_2
161426    ,xet.reference_num_3
161427    ,xet.reference_num_4
161428    ,xet.reference_char_1
161429    ,xet.reference_char_2
161430    ,xet.reference_char_3
161431    ,xet.reference_char_4
161432    ,xet.reference_date_1
161433    ,xet.reference_date_2
161434    ,xet.reference_date_3
161435    ,xet.reference_date_4
161436    ,xet.event_created_by
161437    ,xet.budgetary_control_flag
161438  , l2.LINE_NUMBER  
161439   , l2.CODE_COMBINATION_ID    source_4
161440   , l2.DISTRIBUTION_IDENTIFIER    source_11
161441   , l2.CURRENCY_CODE    source_15
161442   , l2.ENTERED_AMOUNT    source_18
161443   , l2.CURRENCY_CONVERSION_DATE    source_19
161444   , l2.CURRENCY_CONVERSION_RATE    source_20
161445   , l2.CURRENCY_CONVERSION_TYPE    source_21
161446   , l2.ACCOUNTED_AMOUNT    source_22
161447   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
161448   FROM xla_events_gt     xet 
161449   , CST_XLA_INV_LINES_V  l2
161450  WHERE xet.event_id between x_first_event_id and x_last_event_id
161451    and xet.event_date between p_pad_start_date and p_pad_end_date
161452    and xet.event_class_code = C_EVENT_CLASS_CODE
161453    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
161454 ;
161455 
161456 --
161457 BEGIN
161458 IF g_log_enabled THEN
161459    l_log_module := C_DEFAULT_MODULE||'.EventClass_267';
161460 END IF;
161461 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161462    trace
161463       (p_msg      => 'BEGIN of EventClass_267'
161464       ,p_level    => C_LEVEL_PROCEDURE
161465       ,p_module   => l_log_module);
161466 END IF;
161467 
161468 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161469    trace
161470       (p_msg      => 'p_application_id = '||p_application_id||
161471                      ' - p_base_ledger_id = '||p_base_ledger_id||
161472                      ' - p_target_ledger_id  = '||p_target_ledger_id||
161473                      ' - p_language = '||p_language||
161474                      ' - p_currency_code = '||p_currency_code||
161475                      ' - p_sla_ledger_id = '||p_sla_ledger_id
161476       ,p_level    => C_LEVEL_STATEMENT
161477       ,p_module   => l_log_module);
161478 END IF;
161479 --
161480 -- initialze arrays
161481 --
161482 g_array_event.DELETE;
161483 l_rec_array_event := l_null_rec_array_event;
161484 --
161485 --------------------------------------
161486 -- 4262811 Initialze MPA Line Number
161487 --------------------------------------
161488 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
161489 
161490 --
161491 
161492 --
161493 OPEN header_cur;
161494 --
161495 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161496    trace
161497    (p_msg      => 'SQL - FETCH header_cur'
161498    ,p_level    => C_LEVEL_STATEMENT
161499    ,p_module   => l_log_module);
161500 END IF;
161501 --
161502 LOOP
161503 FETCH header_cur BULK COLLECT INTO
161504         l_array_entity_id
161505       , l_array_legal_entity_id
161506       , l_array_entity_code
161507       , l_array_transaction_num
161508       , l_array_event_id
161509       , l_array_class_code
161510       , l_array_event_type
161511       , l_array_event_number
161512       , l_array_event_date
161513       , l_array_transaction_date
161514       , l_array_reference_num_1
161515       , l_array_reference_num_2
161516       , l_array_reference_num_3
161517       , l_array_reference_num_4
161518       , l_array_reference_char_1
161519       , l_array_reference_char_2
161520       , l_array_reference_char_3
161521       , l_array_reference_char_4
161522       , l_array_reference_date_1
161523       , l_array_reference_date_2
161524       , l_array_reference_date_3
161525       , l_array_reference_date_4
161526       , l_array_event_created_by
161527       , l_array_budgetary_control_flag 
161528       , l_array_source_12
161529       , l_array_source_12_meaning
161530       , l_array_source_38
161531       , l_array_source_38_meaning
161532       LIMIT l_rows;
161533 --
161534 IF (C_LEVEL_EVENT >= g_log_level) THEN
161535    trace
161536    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
161537    ,p_level    => C_LEVEL_EVENT
161538    ,p_module   => l_log_module);
161539 END IF;
161540 --
161541 EXIT WHEN l_array_entity_id.COUNT = 0;
161542 
161543 -- initialize arrays
161544 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
161545 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
161546 
161547 --
161548 -- Bug 4458708
161549 --
161550 XLA_AE_LINES_PKG.g_LineNumber := 0;
161551 
161552 
161553 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
161554 g_last_hdr_idx := l_array_event_id.LAST;
161555 --
161556 -- loop for the headers. Each iteration is for each header extract row
161557 -- fetched in header cursor
161558 --
161559 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
161560 
161561 --
161562 -- set event info as cache for other routines to refer event attributes
161563 --
161564 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
161565    (p_application_id           => p_application_id
161566    ,p_primary_ledger_id        => p_primary_ledger_id
161567    ,p_base_ledger_id           => p_base_ledger_id
161568    ,p_target_ledger_id         => p_target_ledger_id
161569    ,p_entity_id                => l_array_entity_id(hdr_idx)
161570    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
161571    ,p_entity_code              => l_array_entity_code(hdr_idx)
161572    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
161573    ,p_event_id                 => l_array_event_id(hdr_idx)
161574    ,p_event_class_code         => l_array_class_code(hdr_idx)
161575    ,p_event_type_code          => l_array_event_type(hdr_idx)
161576    ,p_event_number             => l_array_event_number(hdr_idx)
161577    ,p_event_date               => l_array_event_date(hdr_idx)
161578    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
161579    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
161580    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
161581    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
161582    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
161583    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
161584    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
161585    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
161586    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
161587    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
161588    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
161589    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
161590    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
161591    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
161592    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
161593 
161594 --
161595 -- set the status of entry to C_VALID (0)
161596 --
161597 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
161598 
161599 --
161600 -- initialize a row for ae header
161601 --
161602 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
161603 
161604 l_event_id := l_array_event_id(hdr_idx);
161605 
161606 --
161607 -- storing the hdr_idx for event. May be used by line cursor.
161608 --
161609 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
161610 
161611 --
161612 -- store sources from header extract. This can be improved to
161613 -- store only those sources from header extract that may be used in lines
161614 --
161615 
161616 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
161617 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
161618 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
161619 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
161620 
161621 --
161622 -- initilaize the status of ae headers for diffrent balance types
161623 -- the status is initialised to C_NOT_CREATED (2)
161624 --
161625 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161626 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161627 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161628 
161629 --
161630 -- call api to validate and store accounting attributes for header
161631 --
161632 
161633 ------------------------------------------------------------
161634 -- Accrual Reversal : to get date for Standard Source (NONE)
161635 ------------------------------------------------------------
161636 l_acc_rev_gl_date_source := NULL;
161637 
161638      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
161639       l_rec_acct_attrs.array_date_value(1) := 
161640 xla_ae_sources_pkg.GetSystemSourceDate(
161641    p_source_code           => 'XLA_REFERENCE_DATE_1'
161642  , p_source_type_code      => 'Y'
161643  , p_source_application_id =>  602
161644 );
161645      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
161646       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
161647 
161648 
161649 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
161650 
161651 XLA_AE_HEADER_PKG.SetJeCategoryName;
161652 
161653 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
161654 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
161655 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
161656 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
161657 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
161658 
161659 
161660 -- No header level analytical criteria
161661 
161662 --
161663 --accounting attribute enhancement, bug 3612931
161664 --
161665 l_trx_reversal_source := SUBSTR(NULL, 1,30);
161666 
161667 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
161668    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
161669 
161670    xla_accounting_err_pkg.build_message
161671       (p_appli_s_name            => 'XLA'
161672       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
161673       ,p_token_1                 => 'ACCT_ATTR_NAME'
161674       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
161675       ,p_token_2                 => 'PRODUCT_NAME'
161676       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
161677       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
161678       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
161679       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
161680 
161681 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
161682    --
161683    -- following sets the accounting attributes needed to reverse
161684    -- accounting for a distributeion
161685    --
161686    xla_ae_lines_pkg.SetTrxReversalAttrs
161687       (p_event_id              => l_event_id
161688       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
161689       ,p_trx_reversal_source   => l_trx_reversal_source);
161690 
161691 END IF;
161692 
161693 
161694 ----------------------------------------------------------------
161695 -- 4262811 -  update the header statuses to invalid in need be
161696 ----------------------------------------------------------------
161697 --
161698 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
161699 
161700 
161701   -----------------------------------------------
161702   -- No accrual reversal for the event class/type
161703   -----------------------------------------------
161704 ----------------------------------------------------------------
161705 
161706 --
161707 -- this ends the header loop iteration for one bulk fetch
161708 --
161709 END LOOP;
161710 
161711 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
161712 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
161713 
161714 --
161715 -- insert dummy rows into lines gt table that were created due to
161716 -- transaction reversals
161717 --
161718 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
161719    l_result := XLA_AE_LINES_PKG.InsertLines;
161720 END IF;
161721 
161722 --
161723 -- reset the temp_line_num for each set of events fetched from header
161724 -- cursor rather than doing it for each new event in line cursor
161725 -- Bug 3939231
161726 --
161727 xla_ae_lines_pkg.g_temp_line_num := 0;
161728 
161729 
161730 
161731 --
161732 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
161733 --
161734 --
161735 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161736 
161737       trace
161738          (p_msg      => 'SQL - FETCH line_cur'
161739          ,p_level    => C_LEVEL_STATEMENT
161740          ,p_module   => l_log_module);
161741 
161742 END IF;
161743 --
161744 --
161745 LOOP
161746   --
161747   FETCH line_cur BULK COLLECT INTO
161748         l_array_entity_id
161749       , l_array_legal_entity_id
161750       , l_array_entity_code
161751       , l_array_transaction_num
161752       , l_array_event_id
161753       , l_array_class_code
161754       , l_array_event_type
161755       , l_array_event_number
161756       , l_array_event_date
161757       , l_array_transaction_date
161758       , l_array_reference_num_1
161759       , l_array_reference_num_2
161760       , l_array_reference_num_3
161761       , l_array_reference_num_4
161762       , l_array_reference_char_1
161763       , l_array_reference_char_2
161764       , l_array_reference_char_3
161765       , l_array_reference_char_4
161766       , l_array_reference_date_1
161767       , l_array_reference_date_2
161768       , l_array_reference_date_3
161769       , l_array_reference_date_4
161770       , l_array_event_created_by
161771       , l_array_budgetary_control_flag
161772       , l_array_extract_line_num 
161773       , l_array_source_4
161774       , l_array_source_11
161775       , l_array_source_15
161776       , l_array_source_18
161777       , l_array_source_19
161778       , l_array_source_20
161779       , l_array_source_21
161780       , l_array_source_22
161781       , l_array_source_24
161782       LIMIT l_rows;
161783 
161784   --
161785   IF (C_LEVEL_EVENT >= g_log_level) THEN
161786             trace
161787                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
161788                ,p_level    => C_LEVEL_EVENT
161789                ,p_module   => l_log_module);
161790   END IF;
161791   --
161792   EXIT WHEN l_array_entity_id.count = 0;
161793 
161794   XLA_AE_LINES_PKG.g_rec_lines := null;
161795 
161796 --
161797 -- Bug 4458708
161798 --
161799 XLA_AE_LINES_PKG.g_LineNumber := 0;
161800 --
161801 --
161802 
161803 FOR Idx IN 1..l_array_event_id.count LOOP
161804    --
161805    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
161806    --
161807    l_event_id := l_array_event_id(idx);  -- 5648433
161808 
161809    --
161810    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
161811    --
161812 
161813    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
161814              (g_array_event(l_event_id).array_value_num('header_index'))
161815          ,'N'
161816          ) <> 'Y'
161817    THEN
161818       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161819          trace
161820             (p_msg      => 'Trancaction revesal option is not Y '
161821             ,p_level    => C_LEVEL_STATEMENT
161822             ,p_module   => l_log_module);
161823       END IF;
161824 
161825 --
161826 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
161827 --
161828 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
161829 --
161830 -- set event info as cache for other routines to refer event attributes
161831 --
161832 
161833 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
161834    l_previous_event_id := l_event_id;
161835 
161836    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
161837       (p_application_id           => p_application_id
161838       ,p_primary_ledger_id        => p_primary_ledger_id
161839       ,p_base_ledger_id           => p_base_ledger_id
161840       ,p_target_ledger_id         => p_target_ledger_id
161841       ,p_entity_id                => l_array_entity_id(Idx)
161842       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
161843       ,p_entity_code              => l_array_entity_code(Idx)
161844       ,p_transaction_num          => l_array_transaction_num(Idx)
161845       ,p_event_id                 => l_array_event_id(Idx)
161846       ,p_event_class_code         => l_array_class_code(Idx)
161847       ,p_event_type_code          => l_array_event_type(Idx)
161848       ,p_event_number             => l_array_event_number(Idx)
161849       ,p_event_date               => l_array_event_date(Idx)
161850       ,p_transaction_date         => l_array_transaction_date(Idx)
161851       ,p_reference_num_1          => l_array_reference_num_1(Idx)
161852       ,p_reference_num_2          => l_array_reference_num_2(Idx)
161853       ,p_reference_num_3          => l_array_reference_num_3(Idx)
161854       ,p_reference_num_4          => l_array_reference_num_4(Idx)
161855       ,p_reference_char_1         => l_array_reference_char_1(Idx)
161856       ,p_reference_char_2         => l_array_reference_char_2(Idx)
161857       ,p_reference_char_3         => l_array_reference_char_3(Idx)
161858       ,p_reference_char_4         => l_array_reference_char_4(Idx)
161859       ,p_reference_date_1         => l_array_reference_date_1(Idx)
161860       ,p_reference_date_2         => l_array_reference_date_2(Idx)
161861       ,p_reference_date_3         => l_array_reference_date_3(Idx)
161862       ,p_reference_date_4         => l_array_reference_date_4(Idx)
161863       ,p_event_created_by         => l_array_event_created_by(Idx)
161864       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
161865        --
161866 END IF;
161867 
161868 
161869 
161870 --
161871 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
161872 
161873 l_acct_reversal_source := SUBSTR(NULL, 1,30);
161874 
161875 IF l_continue_with_lines THEN
161876    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
161877       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
161878 
161879       xla_accounting_err_pkg.build_message
161880          (p_appli_s_name            => 'XLA'
161881          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
161882          ,p_token_1                 => 'LINE_NUMBER'
161883          ,p_value_1                 => l_array_extract_line_num(Idx)
161884          ,p_token_2                 => 'PRODUCT_NAME'
161885          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
161886          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
161887          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
161888          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
161889 
161890    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
161891       --
161892       -- following sets the accounting attributes needed to reverse
161893       -- accounting for a distributeion
161894       --
161895 
161896       --
161897       -- 5217187
161898       --
161899       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
161900       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
161901                                        g_array_event(l_event_id).array_value_num('header_index'));
161902       --
161903       --
161904 
161905       -- No reversal code generated
161906 
161907       xla_ae_lines_pkg.SetAcctReversalAttrs
161908          (p_event_id             => l_event_id
161909          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
161910          ,p_calculate_acctd_flag => l_calculate_acctd_flag
161911          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
161912    END IF;
161913 
161914    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
161915        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
161916 
161917 --
161918 AcctLineType_33 (
161919  p_application_id  => p_application_id
161920  ,p_event_id     => l_event_id
161921  ,p_calculate_acctd_flag => l_calculate_acctd_flag
161922  ,p_calculate_g_l_flag => l_calculate_g_l_flag
161923  ,p_actual_flag => l_actual_flag
161924  ,p_balance_type_code => l_balance_type_code
161925  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161926  
161927  , p_source_4 => l_array_source_4(Idx)
161928  , p_source_11 => l_array_source_11(Idx)
161929  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
161930  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
161931  , p_source_15 => l_array_source_15(Idx)
161932  , p_source_18 => l_array_source_18(Idx)
161933  , p_source_19 => l_array_source_19(Idx)
161934  , p_source_20 => l_array_source_20(Idx)
161935  , p_source_21 => l_array_source_21(Idx)
161936  , p_source_22 => l_array_source_22(Idx)
161937  , p_source_24 => l_array_source_24(Idx)
161938  );
161939 If(l_balance_type_code = 'A') THEN
161940   l_actual_gain_loss_ref := l_gain_or_loss_ref;
161941 END IF;
161942 
161943 --
161944 
161945 
161946 --
161947 AcctLineType_147 (
161948  p_application_id  => p_application_id
161949  ,p_event_id     => l_event_id
161950  ,p_calculate_acctd_flag => l_calculate_acctd_flag
161951  ,p_calculate_g_l_flag => l_calculate_g_l_flag
161952  ,p_actual_flag => l_actual_flag
161953  ,p_balance_type_code => l_balance_type_code
161954  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161955  
161956  , p_source_4 => l_array_source_4(Idx)
161957  , p_source_11 => l_array_source_11(Idx)
161958  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
161959  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
161960  , p_source_15 => l_array_source_15(Idx)
161961  , p_source_18 => l_array_source_18(Idx)
161962  , p_source_19 => l_array_source_19(Idx)
161963  , p_source_20 => l_array_source_20(Idx)
161964  , p_source_21 => l_array_source_21(Idx)
161965  , p_source_22 => l_array_source_22(Idx)
161966  , p_source_24 => l_array_source_24(Idx)
161967  );
161968 If(l_balance_type_code = 'A') THEN
161969   l_actual_gain_loss_ref := l_gain_or_loss_ref;
161970 END IF;
161971 
161972 --
161973 
161974 
161975 --
161976 AcctLineType_193 (
161977  p_application_id  => p_application_id
161978  ,p_event_id     => l_event_id
161979  ,p_calculate_acctd_flag => l_calculate_acctd_flag
161980  ,p_calculate_g_l_flag => l_calculate_g_l_flag
161981  ,p_actual_flag => l_actual_flag
161982  ,p_balance_type_code => l_balance_type_code
161983  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161984  
161985  , p_source_4 => l_array_source_4(Idx)
161986  , p_source_11 => l_array_source_11(Idx)
161987  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
161988  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
161989  , p_source_15 => l_array_source_15(Idx)
161990  , p_source_18 => l_array_source_18(Idx)
161991  , p_source_19 => l_array_source_19(Idx)
161992  , p_source_20 => l_array_source_20(Idx)
161993  , p_source_21 => l_array_source_21(Idx)
161994  , p_source_22 => l_array_source_22(Idx)
161995  , p_source_24 => l_array_source_24(Idx)
161996  );
161997 If(l_balance_type_code = 'A') THEN
161998   l_actual_gain_loss_ref := l_gain_or_loss_ref;
161999 END IF;
162000 
162001 --
162002 
162003       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
162004       -- or secondary ledger that has different currency with primary
162005       -- or alc that is calculated by sla
162006       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
162007             (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'))
162008 
162009 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
162010 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
162011           AND (l_actual_flag = 'A')) THEN
162012         XLA_AE_LINES_PKG.CreateGainOrLossLines(
162013           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
162014          ,p_application_id   => p_application_id
162015          ,p_amb_context_code => 'DEFAULT'
162016          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
162017          ,p_event_class_code => C_EVENT_CLASS_CODE
162018          ,p_event_type_code  => C_EVENT_TYPE_CODE
162019          
162020          ,p_gain_ccid        => -1
162021          ,p_loss_ccid        => -1
162022 
162023          ,p_actual_flag      => l_actual_flag
162024          ,p_enc_flag         => null
162025          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
162026          ,p_enc_g_l_ref      => null
162027          );
162028       END IF;
162029    END IF;
162030 END IF;
162031 
162032    ELSE
162033       --
162034       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
162035       --
162036       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162037          trace
162038             (p_msg      => 'Trancaction revesal option is Y'
162039             ,p_level    => C_LEVEL_STATEMENT
162040             ,p_module   => l_log_module);
162041       END IF;
162042    END IF;
162043 
162044 END LOOP;
162045 l_result := XLA_AE_LINES_PKG.InsertLines ;
162046 end loop;
162047 close line_cur;
162048 
162049 
162050 --
162051 -- insert headers into xla_ae_headers_gt table
162052 --
162053 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
162054 
162055 -- insert into errors table here.
162056 
162057 END LOOP;
162058 
162059 --
162060 -- 4865292
162061 --
162062 -- Compare g_hdr_extract_count with event count in
162063 -- CreateHeadersAndLines.
162064 --
162065 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
162066 
162067 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162068    trace (p_msg     => '# rows extracted from header extract objects '
162069                     || ' (running total): '
162070                     || g_hdr_extract_count
162071          ,p_level   => C_LEVEL_STATEMENT
162072          ,p_module  => l_log_module);
162073 END IF;
162074 
162075 CLOSE header_cur;
162076 --
162077 
162078 --
162079 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162080    trace
162081       (p_msg      => 'END of EventClass_267'
162082       ,p_level    => C_LEVEL_PROCEDURE
162083       ,p_module   => l_log_module);
162084 END IF;
162085 --
162086 RETURN l_result;
162087 EXCEPTION
162088 WHEN xla_exceptions_pkg.application_exception THEN
162089    
162090 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
162091 
162092    
162093 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
162094 
162095    RAISE;
162096 
162097 WHEN NO_DATA_FOUND THEN
162098 
162099 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
162100 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
162101 
162102 FOR header_record IN header_cur
162103 LOOP
162104     l_array_header_events(header_record.event_id) := header_record.event_id;
162105 END LOOP;
162106 
162107 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
162108 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
162109 
162110 fnd_file.put_line(fnd_file.LOG, '                    ');
162111 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
162112 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
162113 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
162114 
162115 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
162116 LOOP
162117 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
162118 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
162119         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
162120 	END IF;
162121 END LOOP;
162122 
162123 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
162124 fnd_file.put_line(fnd_file.LOG, '                    ');
162125 
162126 
162127 xla_exceptions_pkg.raise_message
162128       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_267');
162129 
162130 
162131 WHEN OTHERS THEN
162132    xla_exceptions_pkg.raise_message
162133       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_267');
162134 END EventClass_267;
162135 --
162136 
162137 ---------------------------------------
162138 --
162139 -- PRIVATE PROCEDURE
162140 --         insert_sources_268
162141 --
162142 ----------------------------------------
162143 --
162144 PROCEDURE insert_sources_268(
162145                                 p_target_ledger_id       IN NUMBER
162146                               , p_language               IN VARCHAR2
162147                               , p_sla_ledger_id          IN NUMBER
162148                               , p_pad_start_date         IN DATE
162149                               , p_pad_end_date           IN DATE
162150                          )
162151 IS
162152 
162153 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'OSP_ALL';
162154 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'OSP';
162155 p_apps_owner                   VARCHAR2(30);
162156 l_log_module                   VARCHAR2(240);
162157 BEGIN
162158 IF g_log_enabled THEN
162159       l_log_module := C_DEFAULT_MODULE||'.insert_sources_268';
162160 END IF;
162161 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162162 
162163       trace
162164          (p_msg      => 'BEGIN of insert_sources_268'
162165          ,p_level    => C_LEVEL_PROCEDURE
162166          ,p_module   => l_log_module);
162167 
162168 END IF;
162169 
162170 -- select APPS owner
162171 SELECT oracle_username
162172   INTO p_apps_owner
162173   FROM fnd_oracle_userid
162174  WHERE read_only_flag = 'U'
162175 ;
162176 
162177 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162178       trace
162179          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
162180                         ' - p_language = '||p_language||
162181                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
162182                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
162183                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
162184                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
162185          ,p_level    => C_LEVEL_STATEMENT
162186          ,p_module   => l_log_module);
162187 END IF;
162188 
162189 
162190 --
162191 INSERT INTO xla_diag_sources --hdr2
162192 (
162193         event_id
162194       , ledger_id
162195       , sla_ledger_id
162196       , description_language
162197       , object_name
162198       , object_type_code
162199       , line_number
162200       , source_application_id
162201       , source_type_code
162202       , source_code
162203       , source_value
162204       , source_meaning
162205       , created_by
162206       , creation_date
162207       , last_update_date
162208       , last_updated_by
162209       , last_update_login
162210       , program_update_date
162211       , program_application_id
162212       , program_id
162213       , request_id
162214 )
162215 SELECT
162216         event_id
162217       , p_target_ledger_id
162218       , p_sla_ledger_id
162219       , p_language
162220       , object_name
162221       , object_type_code
162222       , line_number
162223       , source_application_id
162224       , source_type_code
162225       , source_code
162226       , SUBSTR(source_value ,1,1996)
162227       , SUBSTR(source_meaning ,1,200)
162228       , xla_environment_pkg.g_Usr_Id
162229       , TRUNC(SYSDATE)
162230       , TRUNC(SYSDATE)
162231       , xla_environment_pkg.g_Usr_Id
162232       , xla_environment_pkg.g_Login_Id
162233       , TRUNC(SYSDATE)
162234       , xla_environment_pkg.g_Prog_Appl_Id
162235       , xla_environment_pkg.g_Prog_Id
162236       , xla_environment_pkg.g_Req_Id
162237   FROM (
162238        SELECT xet.event_id                  event_id
162239             , 0                          line_number
162240             , CASE r
162241                WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V' 
162242                 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V' 
162243                 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V' 
162244                 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V' 
162245                 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V' 
162246                 
162247                ELSE null
162248               END                           object_name
162249             , CASE r
162250                 WHEN 1 THEN 'HEADER' 
162251                 WHEN 2 THEN 'HEADER' 
162252                 WHEN 3 THEN 'HEADER' 
162253                 WHEN 4 THEN 'HEADER' 
162254                 WHEN 5 THEN 'HEADER' 
162255                 
162256                 ELSE null
162257               END                           object_type_code
162258             , CASE r
162259                 WHEN 1 THEN '707' 
162260                 WHEN 2 THEN '707' 
162261                 WHEN 3 THEN '707' 
162262                 WHEN 4 THEN '707' 
162263                 WHEN 5 THEN '707' 
162264                 
162265                 ELSE null
162266               END                           source_application_id
162267             , 'S'             source_type_code
162268             , CASE r
162269                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
162270                 WHEN 2 THEN 'CURRENCY_CODE' 
162271                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
162272                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
162273                 WHEN 5 THEN 'TRANSFER_TO_GL_INDICATOR' 
162274                 
162275                 ELSE null
162276               END                           source_code
162277             , CASE r
162278                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
162279                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
162280                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
162281                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
162282                 WHEN 5 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
162283                 
162284                 ELSE null
162285               END                           source_value
162286             , CASE r
162287                 WHEN 1 THEN fvl12.meaning
162288                 WHEN 5 THEN fvl38.meaning
162289                 
162290                 ELSE null
162291               END               source_meaning
162292          FROM xla_events_gt     xet  
162293       , CST_XLA_WIP_HEADERS_V  h1
162294   , fnd_lookup_values    fvl12
162295   , fnd_lookup_values    fvl38
162296              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
162297          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
162298            AND xet.event_class_code = C_EVENT_CLASS_CODE
162299               AND h1.event_id = xet.event_id
162300    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
162301   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
162302   AND fvl12.view_application_id(+) = 700
162303   AND fvl12.language(+)            = USERENV('LANG')
162304      AND fvl38.lookup_type(+)         = 'YES_NO'
162305   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
162306   AND fvl38.view_application_id(+) = 0
162307   AND fvl38.language(+)            = USERENV('LANG')
162308   
162309 )
162310 ;
162311 --
162312 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162313 
162314       trace
162315          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
162316          ,p_level    => C_LEVEL_STATEMENT
162317          ,p_module   => l_log_module);
162318 
162319 END IF;
162320 --
162321 
162322 
162323 
162324 --
162325 INSERT INTO xla_diag_sources  --line2
162326 (
162327         event_id
162328       , ledger_id
162329       , sla_ledger_id
162330       , description_language
162331       , object_name
162332       , object_type_code
162333       , line_number
162334       , source_application_id
162335       , source_type_code
162336       , source_code
162337       , source_value
162338       , source_meaning
162339       , created_by
162340       , creation_date
162341       , last_update_date
162342       , last_updated_by
162343       , last_update_login
162344       , program_update_date
162345       , program_application_id
162346       , program_id
162347       , request_id
162348 )
162349 SELECT  event_id
162350       , p_target_ledger_id
162351       , p_sla_ledger_id
162352       , p_language
162353       , object_name
162354       , object_type_code
162355       , line_number
162356       , source_application_id
162357       , source_type_code
162358       , source_code
162359       , SUBSTR(source_value,1,1996)
162360       , SUBSTR(source_meaning ,1,200)
162361       , xla_environment_pkg.g_Usr_Id
162362       , TRUNC(SYSDATE)
162363       , TRUNC(SYSDATE)
162364       , xla_environment_pkg.g_Usr_Id
162365       , xla_environment_pkg.g_Login_Id
162366       , TRUNC(SYSDATE)
162367       , xla_environment_pkg.g_Prog_Appl_Id
162368       , xla_environment_pkg.g_Prog_Id
162369       , xla_environment_pkg.g_Req_Id
162370   FROM (
162371        SELECT xet.event_id                  event_id
162372             , l2.line_number                 line_number
162373             , CASE r
162374                WHEN 1 THEN 'CST_XLA_WIP_LINES_V' 
162375                 WHEN 2 THEN 'CST_XLA_WIP_LINES_V' 
162376                 WHEN 3 THEN 'CST_XLA_WIP_LINES_V' 
162377                 WHEN 4 THEN 'CST_XLA_WIP_LINES_V' 
162378                 WHEN 5 THEN 'CST_XLA_WIP_LINES_V' 
162379                 
162380                ELSE null
162381               END                           object_name
162382             , CASE r
162383                 WHEN 1 THEN 'LINE' 
162384                 WHEN 2 THEN 'LINE' 
162385                 WHEN 3 THEN 'LINE' 
162386                 WHEN 4 THEN 'LINE' 
162387                 WHEN 5 THEN 'LINE' 
162388                 
162389                 ELSE null
162390               END                           object_type_code
162391             , CASE r
162392                 WHEN 1 THEN '707' 
162393                 WHEN 2 THEN '707' 
162394                 WHEN 3 THEN '707' 
162395                 WHEN 4 THEN '707' 
162396                 WHEN 5 THEN '707' 
162397                 
162398                 ELSE null
162399               END                           source_application_id
162400             , 'S'             source_type_code
162401             , CASE r
162402                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
162403                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
162404                 WHEN 3 THEN 'ENTERED_AMOUNT' 
162405                 WHEN 4 THEN 'ACCOUNTED_AMOUNT' 
162406                 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
162407                 
162408                 ELSE null
162409               END                           source_code
162410             , CASE r
162411                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
162412                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
162413                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
162414                 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
162415                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
162416                 
162417                 ELSE null
162418               END                           source_value
162419             , null              source_meaning
162420          FROM  xla_events_gt     xet  
162421         , CST_XLA_WIP_LINES_V  l2
162422             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
162423         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
162424           AND xet.event_class_code = C_EVENT_CLASS_CODE
162425             AND l2.event_id          = xet.event_id
162426 
162427 )
162428 ;
162429 --
162430 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162431 
162432       trace
162433          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
162434          ,p_level    => C_LEVEL_STATEMENT
162435          ,p_module   => l_log_module);
162436 
162437 END IF;
162438 
162439 
162440 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162441       trace
162442          (p_msg      => 'END of insert_sources_268'
162443          ,p_level    => C_LEVEL_PROCEDURE
162444          ,p_module   => l_log_module);
162445 END IF;
162446 EXCEPTION
162447   WHEN xla_exceptions_pkg.application_exception THEN
162448       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
162449             trace
162450                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
162451                ,p_level    => C_LEVEL_EXCEPTION
162452                ,p_module   => l_log_module);
162453       END IF;
162454       RAISE;
162455   WHEN OTHERS THEN
162456       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
162457             trace
162458                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
162459                ,p_level    => C_LEVEL_EXCEPTION
162460                ,p_module   => l_log_module);
162461        END IF;
162462        xla_exceptions_pkg.raise_message
162463            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_268');
162464 END insert_sources_268;
162465 --
162466 
162467 ---------------------------------------
162468 --
162469 -- PRIVATE FUNCTION
162470 --         EventClass_268
162471 --
162472 ----------------------------------------
162473 --
162474 FUNCTION EventClass_268
162475        (p_application_id         IN NUMBER
162476        ,p_base_ledger_id         IN NUMBER
162477        ,p_target_ledger_id       IN NUMBER
162478        ,p_language               IN VARCHAR2
162479        ,p_currency_code          IN VARCHAR2
162480        ,p_sla_ledger_id          IN NUMBER
162481        ,p_pad_start_date         IN DATE
162482        ,p_pad_end_date           IN DATE
162483        ,p_primary_ledger_id      IN NUMBER)
162484 RETURN BOOLEAN IS
162485 --
162486 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'OSP_ALL';
162487 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'OSP';
162488 
162489 l_calculate_acctd_flag   VARCHAR2(1) :='N';
162490 l_calculate_g_l_flag     VARCHAR2(1) :='N';
162491 --
162492 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162493 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162494 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162495 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162496 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162497 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162498 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162499 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162500 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162501 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162502 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162503 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162504 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162505 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162506 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162507 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162508 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162509 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162510 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162511 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162512 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162513 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162514 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
162515 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162516 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
162517 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
162518 
162519 l_event_id                             NUMBER;
162520 l_previous_event_id                    NUMBER;
162521 l_first_event_id                       NUMBER;
162522 l_last_event_id                        NUMBER;
162523 
162524 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
162525 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
162526 --
162527 --
162528 l_result                    BOOLEAN := TRUE;
162529 l_rows                      NUMBER  := 1000;
162530 l_event_type_name           VARCHAR2(80) := 'All';
162531 l_event_class_name          VARCHAR2(80) := 'Outside Processing';
162532 l_description               VARCHAR2(4000);
162533 l_transaction_reversal      NUMBER;
162534 l_ae_header_id              NUMBER;
162535 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
162536 l_log_module                VARCHAR2(240);
162537 --
162538 l_acct_reversal_source      VARCHAR2(30);
162539 l_trx_reversal_source       VARCHAR2(30);
162540 
162541 l_continue_with_lines       BOOLEAN := TRUE;
162542 --
162543 l_acc_rev_gl_date_source    DATE;                      -- 4262811
162544 --
162545 type t_array_event_id is table of number index by binary_integer;
162546 
162547 l_rec_array_event                    t_rec_array_event;
162548 l_null_rec_array_event               t_rec_array_event;
162549 l_array_ae_header_id                 xla_number_array_type;
162550 l_actual_flag                        VARCHAR2(1) := NULL;
162551 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
162552 l_balance_type_code                  VARCHAR2(1) :=NULL;
162553 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
162554 
162555 --
162556 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
162557 --
162558 
162559 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
162560 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
162561 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
162562 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
162563 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
162564 
162565 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
162566 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
162567 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
162568 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
162569 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
162570 
162571 l_array_source_12              t_array_source_12;
162572 l_array_source_12_meaning      t_array_lookup_meaning;
162573 l_array_source_15              t_array_source_15;
162574 l_array_source_19              t_array_source_19;
162575 l_array_source_20              t_array_source_20;
162576 l_array_source_38              t_array_source_38;
162577 l_array_source_38_meaning      t_array_lookup_meaning;
162578 
162579 l_array_source_4      t_array_source_4;
162580 l_array_source_11      t_array_source_11;
162581 l_array_source_18      t_array_source_18;
162582 l_array_source_22      t_array_source_22;
162583 l_array_source_24      t_array_source_24;
162584 
162585 --
162586 CURSOR header_cur
162587 IS
162588 SELECT /*+ leading(xet) cardinality(xet,1) */
162589 -- Event Class Code: OSP
162590     xet.entity_id
162591    ,xet.legal_entity_id
162592    ,xet.entity_code
162593    ,xet.transaction_number
162594    ,xet.event_id
162595    ,xet.event_class_code
162596    ,xet.event_type_code
162597    ,xet.event_number
162598    ,xet.event_date
162599    ,xet.transaction_date
162600    ,xet.reference_num_1
162601    ,xet.reference_num_2
162602    ,xet.reference_num_3
162603    ,xet.reference_num_4
162604    ,xet.reference_char_1
162605    ,xet.reference_char_2
162606    ,xet.reference_char_3
162607    ,xet.reference_char_4
162608    ,xet.reference_date_1
162609    ,xet.reference_date_2
162610    ,xet.reference_date_3
162611    ,xet.reference_date_4
162612    ,xet.event_created_by
162613    ,xet.budgetary_control_flag 
162614   , h1.DISTRIBUTION_TYPE    source_12
162615   , fvl12.meaning   source_12_meaning
162616   , h1.CURRENCY_CODE    source_15
162617   , h1.CURRENCY_CONVERSION_DATE    source_19
162618   , h1.CURRENCY_CONVERSION_RATE    source_20
162619   , h1.TRANSFER_TO_GL_INDICATOR    source_38
162620   , fvl38.meaning   source_38_meaning
162621   FROM xla_events_gt     xet 
162622   , CST_XLA_WIP_HEADERS_V  h1
162623   , fnd_lookup_values    fvl12
162624   , fnd_lookup_values    fvl38
162625  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
162626    and xet.event_class_code = C_EVENT_CLASS_CODE
162627    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
162628    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
162629   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
162630   AND fvl12.view_application_id(+) = 700
162631   AND fvl12.language(+)            = USERENV('LANG')
162632      AND fvl38.lookup_type(+)         = 'YES_NO'
162633   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
162634   AND fvl38.view_application_id(+) = 0
162635   AND fvl38.language(+)            = USERENV('LANG')
162636   
162637  ORDER BY event_id
162638 ;
162639 
162640 
162641 --
162642 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
162643 IS
162644 SELECT  /*+ leading(xet) cardinality(xet,1) */
162645 -- Event Class Code: OSP
162646     xet.entity_id
162647    ,xet.legal_entity_id
162648    ,xet.entity_code
162649    ,xet.transaction_number
162650    ,xet.event_id
162651    ,xet.event_class_code
162652    ,xet.event_type_code
162653    ,xet.event_number
162654    ,xet.event_date
162655    ,xet.transaction_date
162656    ,xet.reference_num_1
162657    ,xet.reference_num_2
162658    ,xet.reference_num_3
162659    ,xet.reference_num_4
162660    ,xet.reference_char_1
162661    ,xet.reference_char_2
162662    ,xet.reference_char_3
162663    ,xet.reference_char_4
162664    ,xet.reference_date_1
162665    ,xet.reference_date_2
162666    ,xet.reference_date_3
162667    ,xet.reference_date_4
162668    ,xet.event_created_by
162669    ,xet.budgetary_control_flag
162670  , l2.LINE_NUMBER  
162671   , l2.CODE_COMBINATION_ID    source_4
162672   , l2.DISTRIBUTION_IDENTIFIER    source_11
162673   , l2.ENTERED_AMOUNT    source_18
162674   , l2.ACCOUNTED_AMOUNT    source_22
162675   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
162676   FROM xla_events_gt     xet 
162677   , CST_XLA_WIP_LINES_V  l2
162678  WHERE xet.event_id between x_first_event_id and x_last_event_id
162679    and xet.event_date between p_pad_start_date and p_pad_end_date
162680    and xet.event_class_code = C_EVENT_CLASS_CODE
162681    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
162682 ;
162683 
162684 --
162685 BEGIN
162686 IF g_log_enabled THEN
162687    l_log_module := C_DEFAULT_MODULE||'.EventClass_268';
162688 END IF;
162689 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162690    trace
162691       (p_msg      => 'BEGIN of EventClass_268'
162692       ,p_level    => C_LEVEL_PROCEDURE
162693       ,p_module   => l_log_module);
162694 END IF;
162695 
162696 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162697    trace
162698       (p_msg      => 'p_application_id = '||p_application_id||
162699                      ' - p_base_ledger_id = '||p_base_ledger_id||
162700                      ' - p_target_ledger_id  = '||p_target_ledger_id||
162701                      ' - p_language = '||p_language||
162702                      ' - p_currency_code = '||p_currency_code||
162703                      ' - p_sla_ledger_id = '||p_sla_ledger_id
162704       ,p_level    => C_LEVEL_STATEMENT
162705       ,p_module   => l_log_module);
162706 END IF;
162707 --
162708 -- initialze arrays
162709 --
162710 g_array_event.DELETE;
162711 l_rec_array_event := l_null_rec_array_event;
162712 --
162713 --------------------------------------
162714 -- 4262811 Initialze MPA Line Number
162715 --------------------------------------
162716 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
162717 
162718 --
162719 
162720 --
162721 OPEN header_cur;
162722 --
162723 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162724    trace
162725    (p_msg      => 'SQL - FETCH header_cur'
162726    ,p_level    => C_LEVEL_STATEMENT
162727    ,p_module   => l_log_module);
162728 END IF;
162729 --
162730 LOOP
162731 FETCH header_cur BULK COLLECT INTO
162732         l_array_entity_id
162733       , l_array_legal_entity_id
162734       , l_array_entity_code
162735       , l_array_transaction_num
162736       , l_array_event_id
162737       , l_array_class_code
162738       , l_array_event_type
162739       , l_array_event_number
162740       , l_array_event_date
162741       , l_array_transaction_date
162742       , l_array_reference_num_1
162743       , l_array_reference_num_2
162744       , l_array_reference_num_3
162745       , l_array_reference_num_4
162746       , l_array_reference_char_1
162747       , l_array_reference_char_2
162748       , l_array_reference_char_3
162749       , l_array_reference_char_4
162750       , l_array_reference_date_1
162751       , l_array_reference_date_2
162752       , l_array_reference_date_3
162753       , l_array_reference_date_4
162754       , l_array_event_created_by
162755       , l_array_budgetary_control_flag 
162756       , l_array_source_12
162757       , l_array_source_12_meaning
162758       , l_array_source_15
162759       , l_array_source_19
162760       , l_array_source_20
162761       , l_array_source_38
162762       , l_array_source_38_meaning
162763       LIMIT l_rows;
162764 --
162765 IF (C_LEVEL_EVENT >= g_log_level) THEN
162766    trace
162767    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
162768    ,p_level    => C_LEVEL_EVENT
162769    ,p_module   => l_log_module);
162770 END IF;
162771 --
162772 EXIT WHEN l_array_entity_id.COUNT = 0;
162773 
162774 -- initialize arrays
162775 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
162776 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
162777 
162778 --
162779 -- Bug 4458708
162780 --
162781 XLA_AE_LINES_PKG.g_LineNumber := 0;
162782 
162783 
162784 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
162785 g_last_hdr_idx := l_array_event_id.LAST;
162786 --
162787 -- loop for the headers. Each iteration is for each header extract row
162788 -- fetched in header cursor
162789 --
162790 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
162791 
162792 --
162793 -- set event info as cache for other routines to refer event attributes
162794 --
162795 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
162796    (p_application_id           => p_application_id
162797    ,p_primary_ledger_id        => p_primary_ledger_id
162798    ,p_base_ledger_id           => p_base_ledger_id
162799    ,p_target_ledger_id         => p_target_ledger_id
162800    ,p_entity_id                => l_array_entity_id(hdr_idx)
162801    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
162802    ,p_entity_code              => l_array_entity_code(hdr_idx)
162803    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
162804    ,p_event_id                 => l_array_event_id(hdr_idx)
162805    ,p_event_class_code         => l_array_class_code(hdr_idx)
162806    ,p_event_type_code          => l_array_event_type(hdr_idx)
162807    ,p_event_number             => l_array_event_number(hdr_idx)
162808    ,p_event_date               => l_array_event_date(hdr_idx)
162809    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
162810    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
162811    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
162812    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
162813    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
162814    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
162815    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
162816    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
162817    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
162818    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
162819    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
162820    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
162821    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
162822    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
162823    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
162824 
162825 --
162826 -- set the status of entry to C_VALID (0)
162827 --
162828 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
162829 
162830 --
162831 -- initialize a row for ae header
162832 --
162833 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
162834 
162835 l_event_id := l_array_event_id(hdr_idx);
162836 
162837 --
162838 -- storing the hdr_idx for event. May be used by line cursor.
162839 --
162840 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
162841 
162842 --
162843 -- store sources from header extract. This can be improved to
162844 -- store only those sources from header extract that may be used in lines
162845 --
162846 
162847 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
162848 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
162849 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
162850 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
162851 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
162852 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
162853 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
162854 
162855 --
162856 -- initilaize the status of ae headers for diffrent balance types
162857 -- the status is initialised to C_NOT_CREATED (2)
162858 --
162859 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
162860 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
162861 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
162862 
162863 --
162864 -- call api to validate and store accounting attributes for header
162865 --
162866 
162867 ------------------------------------------------------------
162868 -- Accrual Reversal : to get date for Standard Source (NONE)
162869 ------------------------------------------------------------
162870 l_acc_rev_gl_date_source := NULL;
162871 
162872      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
162873       l_rec_acct_attrs.array_date_value(1) := 
162874 xla_ae_sources_pkg.GetSystemSourceDate(
162875    p_source_code           => 'XLA_REFERENCE_DATE_1'
162876  , p_source_type_code      => 'Y'
162877  , p_source_application_id =>  602
162878 );
162879      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
162880       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
162881 
162882 
162883 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
162884 
162885 XLA_AE_HEADER_PKG.SetJeCategoryName;
162886 
162887 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
162888 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
162889 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
162890 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
162891 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
162892 
162893 
162894 -- No header level analytical criteria
162895 
162896 --
162897 --accounting attribute enhancement, bug 3612931
162898 --
162899 l_trx_reversal_source := SUBSTR(NULL, 1,30);
162900 
162901 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
162902    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
162903 
162904    xla_accounting_err_pkg.build_message
162905       (p_appli_s_name            => 'XLA'
162906       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
162907       ,p_token_1                 => 'ACCT_ATTR_NAME'
162908       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
162909       ,p_token_2                 => 'PRODUCT_NAME'
162910       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
162911       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
162912       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
162913       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
162914 
162915 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
162916    --
162917    -- following sets the accounting attributes needed to reverse
162918    -- accounting for a distributeion
162919    --
162920    xla_ae_lines_pkg.SetTrxReversalAttrs
162921       (p_event_id              => l_event_id
162922       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
162923       ,p_trx_reversal_source   => l_trx_reversal_source);
162924 
162925 END IF;
162926 
162927 
162928 ----------------------------------------------------------------
162929 -- 4262811 -  update the header statuses to invalid in need be
162930 ----------------------------------------------------------------
162931 --
162932 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
162933 
162934 
162935   -----------------------------------------------
162936   -- No accrual reversal for the event class/type
162937   -----------------------------------------------
162938 ----------------------------------------------------------------
162939 
162940 --
162941 -- this ends the header loop iteration for one bulk fetch
162942 --
162943 END LOOP;
162944 
162945 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
162946 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
162947 
162948 --
162949 -- insert dummy rows into lines gt table that were created due to
162950 -- transaction reversals
162951 --
162952 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
162953    l_result := XLA_AE_LINES_PKG.InsertLines;
162954 END IF;
162955 
162956 --
162957 -- reset the temp_line_num for each set of events fetched from header
162958 -- cursor rather than doing it for each new event in line cursor
162959 -- Bug 3939231
162960 --
162961 xla_ae_lines_pkg.g_temp_line_num := 0;
162962 
162963 
162964 
162965 --
162966 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
162967 --
162968 --
162969 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162970 
162971       trace
162972          (p_msg      => 'SQL - FETCH line_cur'
162973          ,p_level    => C_LEVEL_STATEMENT
162974          ,p_module   => l_log_module);
162975 
162976 END IF;
162977 --
162978 --
162979 LOOP
162980   --
162981   FETCH line_cur BULK COLLECT INTO
162982         l_array_entity_id
162983       , l_array_legal_entity_id
162984       , l_array_entity_code
162985       , l_array_transaction_num
162986       , l_array_event_id
162987       , l_array_class_code
162988       , l_array_event_type
162989       , l_array_event_number
162990       , l_array_event_date
162991       , l_array_transaction_date
162992       , l_array_reference_num_1
162993       , l_array_reference_num_2
162994       , l_array_reference_num_3
162995       , l_array_reference_num_4
162996       , l_array_reference_char_1
162997       , l_array_reference_char_2
162998       , l_array_reference_char_3
162999       , l_array_reference_char_4
163000       , l_array_reference_date_1
163001       , l_array_reference_date_2
163002       , l_array_reference_date_3
163003       , l_array_reference_date_4
163004       , l_array_event_created_by
163005       , l_array_budgetary_control_flag
163006       , l_array_extract_line_num 
163007       , l_array_source_4
163008       , l_array_source_11
163009       , l_array_source_18
163010       , l_array_source_22
163011       , l_array_source_24
163012       LIMIT l_rows;
163013 
163014   --
163015   IF (C_LEVEL_EVENT >= g_log_level) THEN
163016             trace
163017                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
163018                ,p_level    => C_LEVEL_EVENT
163019                ,p_module   => l_log_module);
163020   END IF;
163021   --
163022   EXIT WHEN l_array_entity_id.count = 0;
163023 
163024   XLA_AE_LINES_PKG.g_rec_lines := null;
163025 
163026 --
163027 -- Bug 4458708
163028 --
163029 XLA_AE_LINES_PKG.g_LineNumber := 0;
163030 --
163031 --
163032 
163033 FOR Idx IN 1..l_array_event_id.count LOOP
163034    --
163035    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
163036    --
163037    l_event_id := l_array_event_id(idx);  -- 5648433
163038 
163039    --
163040    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
163041    --
163042 
163043    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
163044              (g_array_event(l_event_id).array_value_num('header_index'))
163045          ,'N'
163046          ) <> 'Y'
163047    THEN
163048       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163049          trace
163050             (p_msg      => 'Trancaction revesal option is not Y '
163051             ,p_level    => C_LEVEL_STATEMENT
163052             ,p_module   => l_log_module);
163053       END IF;
163054 
163055 --
163056 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
163057 --
163058 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
163059 --
163060 -- set event info as cache for other routines to refer event attributes
163061 --
163062 
163063 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
163064    l_previous_event_id := l_event_id;
163065 
163066    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
163067       (p_application_id           => p_application_id
163068       ,p_primary_ledger_id        => p_primary_ledger_id
163069       ,p_base_ledger_id           => p_base_ledger_id
163070       ,p_target_ledger_id         => p_target_ledger_id
163071       ,p_entity_id                => l_array_entity_id(Idx)
163072       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
163073       ,p_entity_code              => l_array_entity_code(Idx)
163074       ,p_transaction_num          => l_array_transaction_num(Idx)
163075       ,p_event_id                 => l_array_event_id(Idx)
163076       ,p_event_class_code         => l_array_class_code(Idx)
163077       ,p_event_type_code          => l_array_event_type(Idx)
163078       ,p_event_number             => l_array_event_number(Idx)
163079       ,p_event_date               => l_array_event_date(Idx)
163080       ,p_transaction_date         => l_array_transaction_date(Idx)
163081       ,p_reference_num_1          => l_array_reference_num_1(Idx)
163082       ,p_reference_num_2          => l_array_reference_num_2(Idx)
163083       ,p_reference_num_3          => l_array_reference_num_3(Idx)
163084       ,p_reference_num_4          => l_array_reference_num_4(Idx)
163085       ,p_reference_char_1         => l_array_reference_char_1(Idx)
163086       ,p_reference_char_2         => l_array_reference_char_2(Idx)
163087       ,p_reference_char_3         => l_array_reference_char_3(Idx)
163088       ,p_reference_char_4         => l_array_reference_char_4(Idx)
163089       ,p_reference_date_1         => l_array_reference_date_1(Idx)
163090       ,p_reference_date_2         => l_array_reference_date_2(Idx)
163091       ,p_reference_date_3         => l_array_reference_date_3(Idx)
163092       ,p_reference_date_4         => l_array_reference_date_4(Idx)
163093       ,p_event_created_by         => l_array_event_created_by(Idx)
163094       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
163095        --
163096 END IF;
163097 
163098 
163099 
163100 --
163101 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
163102 
163103 l_acct_reversal_source := SUBSTR(NULL, 1,30);
163104 
163105 IF l_continue_with_lines THEN
163106    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
163107       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
163108 
163109       xla_accounting_err_pkg.build_message
163110          (p_appli_s_name            => 'XLA'
163111          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
163112          ,p_token_1                 => 'LINE_NUMBER'
163113          ,p_value_1                 => l_array_extract_line_num(Idx)
163114          ,p_token_2                 => 'PRODUCT_NAME'
163115          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
163116          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
163117          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
163118          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
163119 
163120    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
163121       --
163122       -- following sets the accounting attributes needed to reverse
163123       -- accounting for a distributeion
163124       --
163125 
163126       --
163127       -- 5217187
163128       --
163129       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
163130       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
163131                                        g_array_event(l_event_id).array_value_num('header_index'));
163132       --
163133       --
163134 
163135       -- No reversal code generated
163136 
163137       xla_ae_lines_pkg.SetAcctReversalAttrs
163138          (p_event_id             => l_event_id
163139          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
163140          ,p_calculate_acctd_flag => l_calculate_acctd_flag
163141          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
163142    END IF;
163143 
163144    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
163145        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
163146 
163147 --
163148 AcctLineType_188 (
163149  p_application_id  => p_application_id
163150  ,p_event_id     => l_event_id
163151  ,p_calculate_acctd_flag => l_calculate_acctd_flag
163152  ,p_calculate_g_l_flag => l_calculate_g_l_flag
163153  ,p_actual_flag => l_actual_flag
163154  ,p_balance_type_code => l_balance_type_code
163155  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163156  
163157  , p_source_4 => l_array_source_4(Idx)
163158  , p_source_11 => l_array_source_11(Idx)
163159  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163160  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163161  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
163162  , p_source_18 => l_array_source_18(Idx)
163163  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
163164  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
163165  , p_source_22 => l_array_source_22(Idx)
163166  , p_source_24 => l_array_source_24(Idx)
163167  );
163168 If(l_balance_type_code = 'A') THEN
163169   l_actual_gain_loss_ref := l_gain_or_loss_ref;
163170 END IF;
163171 
163172 --
163173 
163174 
163175 --
163176 AcctLineType_206 (
163177  p_application_id  => p_application_id
163178  ,p_event_id     => l_event_id
163179  ,p_calculate_acctd_flag => l_calculate_acctd_flag
163180  ,p_calculate_g_l_flag => l_calculate_g_l_flag
163181  ,p_actual_flag => l_actual_flag
163182  ,p_balance_type_code => l_balance_type_code
163183  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163184  
163185  , p_source_4 => l_array_source_4(Idx)
163186  , p_source_11 => l_array_source_11(Idx)
163187  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163188  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163189  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
163190  , p_source_18 => l_array_source_18(Idx)
163191  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
163192  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
163193  , p_source_22 => l_array_source_22(Idx)
163194  , p_source_24 => l_array_source_24(Idx)
163195  );
163196 If(l_balance_type_code = 'A') THEN
163197   l_actual_gain_loss_ref := l_gain_or_loss_ref;
163198 END IF;
163199 
163200 --
163201 
163202 
163203 --
163204 AcctLineType_214 (
163205  p_application_id  => p_application_id
163206  ,p_event_id     => l_event_id
163207  ,p_calculate_acctd_flag => l_calculate_acctd_flag
163208  ,p_calculate_g_l_flag => l_calculate_g_l_flag
163209  ,p_actual_flag => l_actual_flag
163210  ,p_balance_type_code => l_balance_type_code
163211  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163212  
163213  , p_source_4 => l_array_source_4(Idx)
163214  , p_source_11 => l_array_source_11(Idx)
163215  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163216  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163217  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
163218  , p_source_18 => l_array_source_18(Idx)
163219  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
163220  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
163221  , p_source_22 => l_array_source_22(Idx)
163222  , p_source_24 => l_array_source_24(Idx)
163223  );
163224 If(l_balance_type_code = 'A') THEN
163225   l_actual_gain_loss_ref := l_gain_or_loss_ref;
163226 END IF;
163227 
163228 --
163229 
163230 
163231 --
163232 AcctLineType_227 (
163233  p_application_id  => p_application_id
163234  ,p_event_id     => l_event_id
163235  ,p_calculate_acctd_flag => l_calculate_acctd_flag
163236  ,p_calculate_g_l_flag => l_calculate_g_l_flag
163237  ,p_actual_flag => l_actual_flag
163238  ,p_balance_type_code => l_balance_type_code
163239  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163240  
163241  , p_source_4 => l_array_source_4(Idx)
163242  , p_source_11 => l_array_source_11(Idx)
163243  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163244  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163245  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
163246  , p_source_18 => l_array_source_18(Idx)
163247  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
163248  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
163249  , p_source_22 => l_array_source_22(Idx)
163250  , p_source_24 => l_array_source_24(Idx)
163251  );
163252 If(l_balance_type_code = 'A') THEN
163253   l_actual_gain_loss_ref := l_gain_or_loss_ref;
163254 END IF;
163255 
163256 --
163257 
163258 
163259 --
163260 AcctLineType_235 (
163261  p_application_id  => p_application_id
163262  ,p_event_id     => l_event_id
163263  ,p_calculate_acctd_flag => l_calculate_acctd_flag
163264  ,p_calculate_g_l_flag => l_calculate_g_l_flag
163265  ,p_actual_flag => l_actual_flag
163266  ,p_balance_type_code => l_balance_type_code
163267  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163268  
163269  , p_source_4 => l_array_source_4(Idx)
163270  , p_source_11 => l_array_source_11(Idx)
163271  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163272  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163273  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
163274  , p_source_18 => l_array_source_18(Idx)
163275  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
163276  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
163277  , p_source_22 => l_array_source_22(Idx)
163278  , p_source_24 => l_array_source_24(Idx)
163279  );
163280 If(l_balance_type_code = 'A') THEN
163281   l_actual_gain_loss_ref := l_gain_or_loss_ref;
163282 END IF;
163283 
163284 --
163285 
163286 
163287 --
163288 AcctLineType_246 (
163289  p_application_id  => p_application_id
163290  ,p_event_id     => l_event_id
163291  ,p_calculate_acctd_flag => l_calculate_acctd_flag
163292  ,p_calculate_g_l_flag => l_calculate_g_l_flag
163293  ,p_actual_flag => l_actual_flag
163294  ,p_balance_type_code => l_balance_type_code
163295  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163296  
163297  , p_source_4 => l_array_source_4(Idx)
163298  , p_source_11 => l_array_source_11(Idx)
163299  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163300  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163301  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
163302  , p_source_18 => l_array_source_18(Idx)
163303  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
163304  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
163305  , p_source_22 => l_array_source_22(Idx)
163306  , p_source_24 => l_array_source_24(Idx)
163307  );
163308 If(l_balance_type_code = 'A') THEN
163309   l_actual_gain_loss_ref := l_gain_or_loss_ref;
163310 END IF;
163311 
163312 --
163313 
163314       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
163315       -- or secondary ledger that has different currency with primary
163316       -- or alc that is calculated by sla
163317       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
163318             (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'))
163319 
163320 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
163321 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
163322           AND (l_actual_flag = 'A')) THEN
163323         XLA_AE_LINES_PKG.CreateGainOrLossLines(
163324           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
163325          ,p_application_id   => p_application_id
163326          ,p_amb_context_code => 'DEFAULT'
163327          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
163328          ,p_event_class_code => C_EVENT_CLASS_CODE
163329          ,p_event_type_code  => C_EVENT_TYPE_CODE
163330          
163331          ,p_gain_ccid        => -1
163332          ,p_loss_ccid        => -1
163333 
163334          ,p_actual_flag      => l_actual_flag
163335          ,p_enc_flag         => null
163336          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
163337          ,p_enc_g_l_ref      => null
163338          );
163339       END IF;
163340    END IF;
163341 END IF;
163342 
163343    ELSE
163344       --
163345       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
163346       --
163347       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163348          trace
163349             (p_msg      => 'Trancaction revesal option is Y'
163350             ,p_level    => C_LEVEL_STATEMENT
163351             ,p_module   => l_log_module);
163352       END IF;
163353    END IF;
163354 
163355 END LOOP;
163356 l_result := XLA_AE_LINES_PKG.InsertLines ;
163357 end loop;
163358 close line_cur;
163359 
163360 
163361 --
163362 -- insert headers into xla_ae_headers_gt table
163363 --
163364 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
163365 
163366 -- insert into errors table here.
163367 
163368 END LOOP;
163369 
163370 --
163371 -- 4865292
163372 --
163373 -- Compare g_hdr_extract_count with event count in
163374 -- CreateHeadersAndLines.
163375 --
163376 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
163377 
163378 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163379    trace (p_msg     => '# rows extracted from header extract objects '
163380                     || ' (running total): '
163381                     || g_hdr_extract_count
163382          ,p_level   => C_LEVEL_STATEMENT
163383          ,p_module  => l_log_module);
163384 END IF;
163385 
163386 CLOSE header_cur;
163387 --
163388 
163389 --
163390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163391    trace
163392       (p_msg      => 'END of EventClass_268'
163393       ,p_level    => C_LEVEL_PROCEDURE
163394       ,p_module   => l_log_module);
163395 END IF;
163396 --
163397 RETURN l_result;
163398 EXCEPTION
163399 WHEN xla_exceptions_pkg.application_exception THEN
163400    
163401 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
163402 
163403    
163404 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
163405 
163406    RAISE;
163407 
163408 WHEN NO_DATA_FOUND THEN
163409 
163410 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
163411 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
163412 
163413 FOR header_record IN header_cur
163414 LOOP
163415     l_array_header_events(header_record.event_id) := header_record.event_id;
163416 END LOOP;
163417 
163418 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
163419 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
163420 
163421 fnd_file.put_line(fnd_file.LOG, '                    ');
163422 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
163423 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
163424 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
163425 
163426 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
163427 LOOP
163428 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
163429 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
163430         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
163431 	END IF;
163432 END LOOP;
163433 
163434 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
163435 fnd_file.put_line(fnd_file.LOG, '                    ');
163436 
163437 
163438 xla_exceptions_pkg.raise_message
163439       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_268');
163440 
163441 
163442 WHEN OTHERS THEN
163443    xla_exceptions_pkg.raise_message
163444       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_268');
163445 END EventClass_268;
163446 --
163447 
163448 ---------------------------------------
163449 --
163450 -- PRIVATE PROCEDURE
163451 --         insert_sources_269
163452 --
163453 ----------------------------------------
163454 --
163455 PROCEDURE insert_sources_269(
163456                                 p_target_ledger_id       IN NUMBER
163457                               , p_language               IN VARCHAR2
163458                               , p_sla_ledger_id          IN NUMBER
163459                               , p_pad_start_date         IN DATE
163460                               , p_pad_end_date           IN DATE
163461                          )
163462 IS
163463 
163464 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PERIOD_END_ACCRUAL_ALL';
163465 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PERIOD_END_ACCRUAL';
163466 p_apps_owner                   VARCHAR2(30);
163467 l_log_module                   VARCHAR2(240);
163468 BEGIN
163469 IF g_log_enabled THEN
163470       l_log_module := C_DEFAULT_MODULE||'.insert_sources_269';
163471 END IF;
163472 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163473 
163474       trace
163475          (p_msg      => 'BEGIN of insert_sources_269'
163476          ,p_level    => C_LEVEL_PROCEDURE
163477          ,p_module   => l_log_module);
163478 
163479 END IF;
163480 
163481 -- select APPS owner
163482 SELECT oracle_username
163483   INTO p_apps_owner
163484   FROM fnd_oracle_userid
163485  WHERE read_only_flag = 'U'
163486 ;
163487 
163488 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163489       trace
163490          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
163491                         ' - p_language = '||p_language||
163492                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
163493                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
163494                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
163495                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
163496          ,p_level    => C_LEVEL_STATEMENT
163497          ,p_module   => l_log_module);
163498 END IF;
163499 
163500 
163501 --
163502 INSERT INTO xla_diag_sources --hdr2
163503 (
163504         event_id
163505       , ledger_id
163506       , sla_ledger_id
163507       , description_language
163508       , object_name
163509       , object_type_code
163510       , line_number
163511       , source_application_id
163512       , source_type_code
163513       , source_code
163514       , source_value
163515       , source_meaning
163516       , created_by
163517       , creation_date
163518       , last_update_date
163519       , last_updated_by
163520       , last_update_login
163521       , program_update_date
163522       , program_application_id
163523       , program_id
163524       , request_id
163525 )
163526 SELECT
163527         event_id
163528       , p_target_ledger_id
163529       , p_sla_ledger_id
163530       , p_language
163531       , object_name
163532       , object_type_code
163533       , line_number
163534       , source_application_id
163535       , source_type_code
163536       , source_code
163537       , SUBSTR(source_value ,1,1996)
163538       , SUBSTR(source_meaning ,1,200)
163539       , xla_environment_pkg.g_Usr_Id
163540       , TRUNC(SYSDATE)
163541       , TRUNC(SYSDATE)
163542       , xla_environment_pkg.g_Usr_Id
163543       , xla_environment_pkg.g_Login_Id
163544       , TRUNC(SYSDATE)
163545       , xla_environment_pkg.g_Prog_Appl_Id
163546       , xla_environment_pkg.g_Prog_Id
163547       , xla_environment_pkg.g_Req_Id
163548   FROM (
163549        SELECT xet.event_id                  event_id
163550             , 0                          line_number
163551             , CASE r
163552                WHEN 1 THEN 'CST_XLA_RCV_REF_V' 
163553                 WHEN 2 THEN 'CST_XLA_RCV_REF_V' 
163554                 WHEN 3 THEN 'CST_XLA_RCV_REF_V' 
163555                 WHEN 4 THEN 'CST_XLA_RCV_REF_V' 
163556                 WHEN 5 THEN 'CST_XLA_RCV_REF_V' 
163557                 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V' 
163558                 WHEN 7 THEN 'PO_DISTS_REF_V' 
163559                 WHEN 8 THEN 'CST_XLA_RCV_REF_V' 
163560                 WHEN 9 THEN 'CST_XLA_RCV_HEADERS_V' 
163561                 WHEN 10 THEN 'CST_XLA_RCV_REF_V' 
163562                 WHEN 11 THEN 'PSA_CST_XLA_PEA_UPG_V' 
163563                 WHEN 12 THEN 'CST_XLA_RCV_HEADERS_V' 
163564                 WHEN 13 THEN 'CST_XLA_RCV_HEADERS_V' 
163565                 WHEN 14 THEN 'CST_XLA_RCV_HEADERS_V' 
163566                 WHEN 15 THEN 'PO_HEADERS_REF_V' 
163567                 WHEN 16 THEN 'CST_XLA_RCV_HEADERS_V' 
163568                 
163569                ELSE null
163570               END                           object_name
163571             , CASE r
163572                 WHEN 1 THEN 'HEADER' 
163573                 WHEN 2 THEN 'HEADER' 
163574                 WHEN 3 THEN 'HEADER' 
163575                 WHEN 4 THEN 'HEADER' 
163576                 WHEN 5 THEN 'HEADER' 
163577                 WHEN 6 THEN 'HEADER' 
163578                 WHEN 7 THEN 'HEADER' 
163579                 WHEN 8 THEN 'HEADER' 
163580                 WHEN 9 THEN 'HEADER' 
163581                 WHEN 10 THEN 'HEADER' 
163582                 WHEN 11 THEN 'HEADER' 
163583                 WHEN 12 THEN 'HEADER' 
163584                 WHEN 13 THEN 'HEADER' 
163585                 WHEN 14 THEN 'HEADER' 
163586                 WHEN 15 THEN 'HEADER' 
163587                 WHEN 16 THEN 'HEADER' 
163588                 
163589                 ELSE null
163590               END                           object_type_code
163591             , CASE r
163592                 WHEN 1 THEN '707' 
163593                 WHEN 2 THEN '707' 
163594                 WHEN 3 THEN '707' 
163595                 WHEN 4 THEN '707' 
163596                 WHEN 5 THEN '707' 
163597                 WHEN 6 THEN '707' 
163598                 WHEN 7 THEN '201' 
163599                 WHEN 8 THEN '707' 
163600                 WHEN 9 THEN '707' 
163601                 WHEN 10 THEN '707' 
163602                 WHEN 11 THEN '707' 
163603                 WHEN 12 THEN '707' 
163604                 WHEN 13 THEN '707' 
163605                 WHEN 14 THEN '707' 
163606                 WHEN 15 THEN '201' 
163607                 WHEN 16 THEN '707' 
163608                 
163609                 ELSE null
163610               END                           source_application_id
163611             , 'S'             source_type_code
163612             , CASE r
163613                 WHEN 1 THEN 'APPLIED_TO_APPL_ID' 
163614                 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
163615                 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE' 
163616                 WHEN 4 THEN 'PO_DISTRIBUTION_ID' 
163617                 WHEN 5 THEN 'APPLIED_TO_PO_DOC_ID' 
163618                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
163619                 WHEN 7 THEN 'PO_BUDGET_ACCOUNT' 
163620                 WHEN 8 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
163621                 WHEN 9 THEN 'CURRENCY_CODE' 
163622                 WHEN 10 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
163623                 WHEN 11 THEN 'CST_PEA_ENC_UPG_OPTION' 
163624                 WHEN 12 THEN 'CURRENCY_CONVERSION_DATE' 
163625                 WHEN 13 THEN 'CURRENCY_CONVERSION_RATE' 
163626                 WHEN 14 THEN 'CURRENCY_CONVERSION_TYPE' 
163627                 WHEN 15 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
163628                 WHEN 16 THEN 'TRANSFER_TO_GL_INDICATOR' 
163629                 
163630                 ELSE null
163631               END                           source_code
163632             , CASE r
163633                 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
163634                 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
163635                 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
163636                 WHEN 4 THEN TO_CHAR(h3.PO_DISTRIBUTION_ID)
163637                 WHEN 5 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
163638                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
163639                 WHEN 7 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
163640                 WHEN 8 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
163641                 WHEN 9 THEN TO_CHAR(h1.CURRENCY_CODE)
163642                 WHEN 10 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
163643                 WHEN 11 THEN TO_CHAR(h6.CST_PEA_ENC_UPG_OPTION)
163644                 WHEN 12 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
163645                 WHEN 13 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
163646                 WHEN 14 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
163647                 WHEN 15 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
163648                 WHEN 16 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
163649                 
163650                 ELSE null
163651               END                           source_value
163652             , CASE r
163653                 WHEN 6 THEN fvl12.meaning
163654                 WHEN 16 THEN fvl38.meaning
163655                 
163656                 ELSE null
163657               END               source_meaning
163658          FROM xla_events_gt     xet  
163659       , CST_XLA_RCV_HEADERS_V  h1
163660       , CST_XLA_RCV_REF_V  h3
163661       , PO_DISTS_REF_V  h4
163662       , PO_HEADERS_REF_V  h5
163663       , PSA_CST_XLA_PEA_UPG_V  h6
163664   , fnd_lookup_values    fvl12
163665   , fnd_lookup_values    fvl38
163666              ,(select rownum r from all_objects where rownum <= 16 and owner = p_apps_owner)
163667          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
163668            AND xet.event_class_code = C_EVENT_CLASS_CODE
163669               AND h1.event_id = xet.event_id
163670  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'
163671   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
163672   AND fvl12.view_application_id(+) = 700
163673   AND fvl12.language(+)            = USERENV('LANG')
163674      AND fvl38.lookup_type(+)         = 'YES_NO'
163675   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
163676   AND fvl38.view_application_id(+) = 0
163677   AND fvl38.language(+)            = USERENV('LANG')
163678   
163679 )
163680 ;
163681 --
163682 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163683 
163684       trace
163685          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
163686          ,p_level    => C_LEVEL_STATEMENT
163687          ,p_module   => l_log_module);
163688 
163689 END IF;
163690 --
163691 
163692 
163693 
163694 --
163695 INSERT INTO xla_diag_sources  --line2
163696 (
163697         event_id
163698       , ledger_id
163699       , sla_ledger_id
163700       , description_language
163701       , object_name
163702       , object_type_code
163703       , line_number
163704       , source_application_id
163705       , source_type_code
163706       , source_code
163707       , source_value
163708       , source_meaning
163709       , created_by
163710       , creation_date
163711       , last_update_date
163712       , last_updated_by
163713       , last_update_login
163714       , program_update_date
163715       , program_application_id
163716       , program_id
163717       , request_id
163718 )
163719 SELECT  event_id
163720       , p_target_ledger_id
163721       , p_sla_ledger_id
163722       , p_language
163723       , object_name
163724       , object_type_code
163725       , line_number
163726       , source_application_id
163727       , source_type_code
163728       , source_code
163729       , SUBSTR(source_value,1,1996)
163730       , SUBSTR(source_meaning ,1,200)
163731       , xla_environment_pkg.g_Usr_Id
163732       , TRUNC(SYSDATE)
163733       , TRUNC(SYSDATE)
163734       , xla_environment_pkg.g_Usr_Id
163735       , xla_environment_pkg.g_Login_Id
163736       , TRUNC(SYSDATE)
163737       , xla_environment_pkg.g_Prog_Appl_Id
163738       , xla_environment_pkg.g_Prog_Id
163739       , xla_environment_pkg.g_Req_Id
163740   FROM (
163741        SELECT xet.event_id                  event_id
163742             , l2.line_number                 line_number
163743             , CASE r
163744                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
163745                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
163746                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
163747                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
163748                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
163749                 
163750                ELSE null
163751               END                           object_name
163752             , CASE r
163753                 WHEN 1 THEN 'LINE' 
163754                 WHEN 2 THEN 'LINE' 
163755                 WHEN 3 THEN 'LINE' 
163756                 WHEN 4 THEN 'LINE' 
163757                 WHEN 5 THEN 'LINE' 
163758                 
163759                 ELSE null
163760               END                           object_type_code
163761             , CASE r
163762                 WHEN 1 THEN '707' 
163763                 WHEN 2 THEN '707' 
163764                 WHEN 3 THEN '707' 
163765                 WHEN 4 THEN '707' 
163766                 WHEN 5 THEN '707' 
163767                 
163768                 ELSE null
163769               END                           source_application_id
163770             , 'S'             source_type_code
163771             , CASE r
163772                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
163773                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
163774                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
163775                 WHEN 4 THEN 'ENTERED_AMOUNT' 
163776                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
163777                 
163778                 ELSE null
163779               END                           source_code
163780             , CASE r
163781                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
163782                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
163783                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
163784                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
163785                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
163786                 
163787                 ELSE null
163788               END                           source_value
163789             , null              source_meaning
163790          FROM  xla_events_gt     xet  
163791         , CST_XLA_RCV_LINES_V  l2
163792             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
163793         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
163794           AND xet.event_class_code = C_EVENT_CLASS_CODE
163795             AND l2.event_id          = xet.event_id
163796 
163797 )
163798 ;
163799 --
163800 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163801 
163802       trace
163803          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
163804          ,p_level    => C_LEVEL_STATEMENT
163805          ,p_module   => l_log_module);
163806 
163807 END IF;
163808 
163809 
163810 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163811       trace
163812          (p_msg      => 'END of insert_sources_269'
163813          ,p_level    => C_LEVEL_PROCEDURE
163814          ,p_module   => l_log_module);
163815 END IF;
163816 EXCEPTION
163817   WHEN xla_exceptions_pkg.application_exception THEN
163818       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
163819             trace
163820                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
163821                ,p_level    => C_LEVEL_EXCEPTION
163822                ,p_module   => l_log_module);
163823       END IF;
163824       RAISE;
163825   WHEN OTHERS THEN
163826       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
163827             trace
163828                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
163829                ,p_level    => C_LEVEL_EXCEPTION
163830                ,p_module   => l_log_module);
163831        END IF;
163832        xla_exceptions_pkg.raise_message
163833            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_269');
163834 END insert_sources_269;
163835 --
163836 
163837 ---------------------------------------
163838 --
163839 -- PRIVATE FUNCTION
163840 --         EventClass_269
163841 --
163842 ----------------------------------------
163843 --
163844 FUNCTION EventClass_269
163845        (p_application_id         IN NUMBER
163846        ,p_base_ledger_id         IN NUMBER
163847        ,p_target_ledger_id       IN NUMBER
163848        ,p_language               IN VARCHAR2
163849        ,p_currency_code          IN VARCHAR2
163850        ,p_sla_ledger_id          IN NUMBER
163851        ,p_pad_start_date         IN DATE
163852        ,p_pad_end_date           IN DATE
163853        ,p_primary_ledger_id      IN NUMBER)
163854 RETURN BOOLEAN IS
163855 --
163856 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PERIOD_END_ACCRUAL_ALL';
163857 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PERIOD_END_ACCRUAL';
163858 
163859 l_calculate_acctd_flag   VARCHAR2(1) :='N';
163860 l_calculate_g_l_flag     VARCHAR2(1) :='N';
163861 --
163862 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163863 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163864 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163865 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163866 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163867 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163868 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163869 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163870 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163871 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163872 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163873 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163874 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163875 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163876 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163877 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163878 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163879 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163880 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163881 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163882 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163883 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163884 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
163885 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163886 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
163887 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
163888 
163889 l_event_id                             NUMBER;
163890 l_previous_event_id                    NUMBER;
163891 l_first_event_id                       NUMBER;
163892 l_last_event_id                        NUMBER;
163893 
163894 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
163895 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
163896 --
163897 --
163898 l_result                    BOOLEAN := TRUE;
163899 l_rows                      NUMBER  := 1000;
163900 l_event_type_name           VARCHAR2(80) := 'All';
163901 l_event_class_name          VARCHAR2(80) := 'Period End Accrual';
163902 l_description               VARCHAR2(4000);
163903 l_transaction_reversal      NUMBER;
163904 l_ae_header_id              NUMBER;
163905 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
163906 l_log_module                VARCHAR2(240);
163907 --
163908 l_acct_reversal_source      VARCHAR2(30);
163909 l_trx_reversal_source       VARCHAR2(30);
163910 
163911 l_continue_with_lines       BOOLEAN := TRUE;
163912 --
163913 l_acc_rev_gl_date_source    DATE;                      -- 4262811
163914 --
163915 type t_array_event_id is table of number index by binary_integer;
163916 
163917 l_rec_array_event                    t_rec_array_event;
163918 l_null_rec_array_event               t_rec_array_event;
163919 l_array_ae_header_id                 xla_number_array_type;
163920 l_actual_flag                        VARCHAR2(1) := NULL;
163921 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
163922 l_balance_type_code                  VARCHAR2(1) :=NULL;
163923 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
163924 
163925 --
163926 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
163927 --
163928 
163929 TYPE t_array_source_6 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
163930 TYPE t_array_source_7 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
163931 TYPE t_array_source_8 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
163932 TYPE t_array_source_9 IS TABLE OF CST_XLA_RCV_REF_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
163933 TYPE t_array_source_10 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
163934 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
163935 TYPE t_array_source_13 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
163936 TYPE t_array_source_14 IS TABLE OF CST_XLA_RCV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
163937 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
163938 TYPE t_array_source_16 IS TABLE OF CST_XLA_RCV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
163939 TYPE t_array_source_17 IS TABLE OF PSA_CST_XLA_PEA_UPG_V.CST_PEA_ENC_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
163940 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
163941 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
163942 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
163943 TYPE t_array_source_23 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
163944 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
163945 
163946 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
163947 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
163948 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
163949 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
163950 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
163951 
163952 l_array_source_6              t_array_source_6;
163953 l_array_source_7              t_array_source_7;
163954 l_array_source_8              t_array_source_8;
163955 l_array_source_9              t_array_source_9;
163956 l_array_source_10              t_array_source_10;
163957 l_array_source_12              t_array_source_12;
163958 l_array_source_12_meaning      t_array_lookup_meaning;
163959 l_array_source_13              t_array_source_13;
163960 l_array_source_14              t_array_source_14;
163961 l_array_source_15              t_array_source_15;
163962 l_array_source_16              t_array_source_16;
163963 l_array_source_17              t_array_source_17;
163964 l_array_source_19              t_array_source_19;
163965 l_array_source_20              t_array_source_20;
163966 l_array_source_21              t_array_source_21;
163967 l_array_source_23              t_array_source_23;
163968 l_array_source_38              t_array_source_38;
163969 l_array_source_38_meaning      t_array_lookup_meaning;
163970 
163971 l_array_source_4      t_array_source_4;
163972 l_array_source_5      t_array_source_5;
163973 l_array_source_11      t_array_source_11;
163974 l_array_source_18      t_array_source_18;
163975 l_array_source_22      t_array_source_22;
163976 
163977 --
163978 CURSOR header_cur
163979 IS
163980 SELECT /*+ leading(xet) cardinality(xet,1) */
163981 -- Event Class Code: PERIOD_END_ACCRUAL
163982     xet.entity_id
163983    ,xet.legal_entity_id
163984    ,xet.entity_code
163985    ,xet.transaction_number
163986    ,xet.event_id
163987    ,xet.event_class_code
163988    ,xet.event_type_code
163989    ,xet.event_number
163990    ,xet.event_date
163991    ,xet.transaction_date
163992    ,xet.reference_num_1
163993    ,xet.reference_num_2
163994    ,xet.reference_num_3
163995    ,xet.reference_num_4
163996    ,xet.reference_char_1
163997    ,xet.reference_char_2
163998    ,xet.reference_char_3
163999    ,xet.reference_char_4
164000    ,xet.reference_date_1
164001    ,xet.reference_date_2
164002    ,xet.reference_date_3
164003    ,xet.reference_date_4
164004    ,xet.event_created_by
164005    ,xet.budgetary_control_flag 
164006   , h3.APPLIED_TO_APPL_ID    source_6
164007   , h3.APPLIED_TO_DIST_LINK_TYPE    source_7
164008   , h3.APPLIED_TO_ENTITY_CODE    source_8
164009   , h3.PO_DISTRIBUTION_ID    source_9
164010   , h3.APPLIED_TO_PO_DOC_ID    source_10
164011   , h1.DISTRIBUTION_TYPE    source_12
164012   , fvl12.meaning   source_12_meaning
164013   , h4.PO_BUDGET_ACCOUNT    source_13
164014   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_14
164015   , h1.CURRENCY_CODE    source_15
164016   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_16
164017   , h6.CST_PEA_ENC_UPG_OPTION    source_17
164018   , h1.CURRENCY_CONVERSION_DATE    source_19
164019   , h1.CURRENCY_CONVERSION_RATE    source_20
164020   , h1.CURRENCY_CONVERSION_TYPE    source_21
164021   , h5.PURCH_ENCUMBRANCE_TYPE_ID    source_23
164022   , h1.TRANSFER_TO_GL_INDICATOR    source_38
164023   , fvl38.meaning   source_38_meaning
164024   FROM xla_events_gt     xet 
164025   , CST_XLA_RCV_HEADERS_V  h1
164026   , CST_XLA_RCV_REF_V  h3
164027   , PO_DISTS_REF_V  h4
164028   , PO_HEADERS_REF_V  h5
164029   , PSA_CST_XLA_PEA_UPG_V  h6
164030   , fnd_lookup_values    fvl12
164031   , fnd_lookup_values    fvl38
164032  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
164033    and xet.event_class_code = C_EVENT_CLASS_CODE
164034    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
164035  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'
164036   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
164037   AND fvl12.view_application_id(+) = 700
164038   AND fvl12.language(+)            = USERENV('LANG')
164039      AND fvl38.lookup_type(+)         = 'YES_NO'
164040   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
164041   AND fvl38.view_application_id(+) = 0
164042   AND fvl38.language(+)            = USERENV('LANG')
164043   
164044  ORDER BY event_id
164045 ;
164046 
164047 
164048 --
164049 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
164050 IS
164051 SELECT  /*+ leading(xet) cardinality(xet,1) */
164052 -- Event Class Code: PERIOD_END_ACCRUAL
164053     xet.entity_id
164054    ,xet.legal_entity_id
164055    ,xet.entity_code
164056    ,xet.transaction_number
164057    ,xet.event_id
164058    ,xet.event_class_code
164059    ,xet.event_type_code
164060    ,xet.event_number
164061    ,xet.event_date
164062    ,xet.transaction_date
164063    ,xet.reference_num_1
164064    ,xet.reference_num_2
164065    ,xet.reference_num_3
164066    ,xet.reference_num_4
164067    ,xet.reference_char_1
164068    ,xet.reference_char_2
164069    ,xet.reference_char_3
164070    ,xet.reference_char_4
164071    ,xet.reference_date_1
164072    ,xet.reference_date_2
164073    ,xet.reference_date_3
164074    ,xet.reference_date_4
164075    ,xet.event_created_by
164076    ,xet.budgetary_control_flag
164077  , l2.LINE_NUMBER  
164078   , l2.CODE_COMBINATION_ID    source_4
164079   , l2.RCV_ACCOUNTING_LINE_TYPE    source_5
164080   , l2.DISTRIBUTION_IDENTIFIER    source_11
164081   , l2.ENTERED_AMOUNT    source_18
164082   , l2.ACCOUNTED_AMOUNT    source_22
164083   FROM xla_events_gt     xet 
164084   , CST_XLA_RCV_LINES_V  l2
164085  WHERE xet.event_id between x_first_event_id and x_last_event_id
164086    and xet.event_date between p_pad_start_date and p_pad_end_date
164087    and xet.event_class_code = C_EVENT_CLASS_CODE
164088    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
164089 ;
164090 
164091 --
164092 BEGIN
164093 IF g_log_enabled THEN
164094    l_log_module := C_DEFAULT_MODULE||'.EventClass_269';
164095 END IF;
164096 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164097    trace
164098       (p_msg      => 'BEGIN of EventClass_269'
164099       ,p_level    => C_LEVEL_PROCEDURE
164100       ,p_module   => l_log_module);
164101 END IF;
164102 
164103 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164104    trace
164105       (p_msg      => 'p_application_id = '||p_application_id||
164106                      ' - p_base_ledger_id = '||p_base_ledger_id||
164107                      ' - p_target_ledger_id  = '||p_target_ledger_id||
164108                      ' - p_language = '||p_language||
164109                      ' - p_currency_code = '||p_currency_code||
164110                      ' - p_sla_ledger_id = '||p_sla_ledger_id
164111       ,p_level    => C_LEVEL_STATEMENT
164112       ,p_module   => l_log_module);
164113 END IF;
164114 --
164115 -- initialze arrays
164116 --
164117 g_array_event.DELETE;
164118 l_rec_array_event := l_null_rec_array_event;
164119 --
164120 --------------------------------------
164121 -- 4262811 Initialze MPA Line Number
164122 --------------------------------------
164123 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
164124 
164125 --
164126 
164127 --
164128 OPEN header_cur;
164129 --
164130 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164131    trace
164132    (p_msg      => 'SQL - FETCH header_cur'
164133    ,p_level    => C_LEVEL_STATEMENT
164134    ,p_module   => l_log_module);
164135 END IF;
164136 --
164137 LOOP
164138 FETCH header_cur BULK COLLECT INTO
164139         l_array_entity_id
164140       , l_array_legal_entity_id
164141       , l_array_entity_code
164142       , l_array_transaction_num
164143       , l_array_event_id
164144       , l_array_class_code
164145       , l_array_event_type
164146       , l_array_event_number
164147       , l_array_event_date
164148       , l_array_transaction_date
164149       , l_array_reference_num_1
164150       , l_array_reference_num_2
164151       , l_array_reference_num_3
164152       , l_array_reference_num_4
164153       , l_array_reference_char_1
164154       , l_array_reference_char_2
164155       , l_array_reference_char_3
164156       , l_array_reference_char_4
164157       , l_array_reference_date_1
164158       , l_array_reference_date_2
164159       , l_array_reference_date_3
164160       , l_array_reference_date_4
164161       , l_array_event_created_by
164162       , l_array_budgetary_control_flag 
164163       , l_array_source_6
164164       , l_array_source_7
164165       , l_array_source_8
164166       , l_array_source_9
164167       , l_array_source_10
164168       , l_array_source_12
164169       , l_array_source_12_meaning
164170       , l_array_source_13
164171       , l_array_source_14
164172       , l_array_source_15
164173       , l_array_source_16
164174       , l_array_source_17
164175       , l_array_source_19
164176       , l_array_source_20
164177       , l_array_source_21
164178       , l_array_source_23
164179       , l_array_source_38
164180       , l_array_source_38_meaning
164181       LIMIT l_rows;
164182 --
164183 IF (C_LEVEL_EVENT >= g_log_level) THEN
164184    trace
164185    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
164186    ,p_level    => C_LEVEL_EVENT
164187    ,p_module   => l_log_module);
164188 END IF;
164189 --
164190 EXIT WHEN l_array_entity_id.COUNT = 0;
164191 
164192 -- initialize arrays
164193 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
164194 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
164195 
164196 --
164197 -- Bug 4458708
164198 --
164199 XLA_AE_LINES_PKG.g_LineNumber := 0;
164200 
164201 
164202 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
164203 g_last_hdr_idx := l_array_event_id.LAST;
164204 --
164205 -- loop for the headers. Each iteration is for each header extract row
164206 -- fetched in header cursor
164207 --
164208 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
164209 
164210 --
164211 -- set event info as cache for other routines to refer event attributes
164212 --
164213 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
164214    (p_application_id           => p_application_id
164215    ,p_primary_ledger_id        => p_primary_ledger_id
164216    ,p_base_ledger_id           => p_base_ledger_id
164217    ,p_target_ledger_id         => p_target_ledger_id
164218    ,p_entity_id                => l_array_entity_id(hdr_idx)
164219    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
164220    ,p_entity_code              => l_array_entity_code(hdr_idx)
164221    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
164222    ,p_event_id                 => l_array_event_id(hdr_idx)
164223    ,p_event_class_code         => l_array_class_code(hdr_idx)
164224    ,p_event_type_code          => l_array_event_type(hdr_idx)
164225    ,p_event_number             => l_array_event_number(hdr_idx)
164226    ,p_event_date               => l_array_event_date(hdr_idx)
164227    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
164228    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
164229    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
164230    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
164231    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
164232    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
164233    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
164234    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
164235    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
164236    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
164237    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
164238    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
164239    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
164240    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
164241    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
164242 
164243 --
164244 -- set the status of entry to C_VALID (0)
164245 --
164246 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
164247 
164248 --
164249 -- initialize a row for ae header
164250 --
164251 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
164252 
164253 l_event_id := l_array_event_id(hdr_idx);
164254 
164255 --
164256 -- storing the hdr_idx for event. May be used by line cursor.
164257 --
164258 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
164259 
164260 --
164261 -- store sources from header extract. This can be improved to
164262 -- store only those sources from header extract that may be used in lines
164263 --
164264 
164265 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
164266 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
164267 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
164268 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
164269 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
164270 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
164271 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
164272 g_array_event(l_event_id).array_value_num('source_13') := l_array_source_13(hdr_idx);
164273 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
164274 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
164275 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
164276 g_array_event(l_event_id).array_value_char('source_17') := l_array_source_17(hdr_idx);
164277 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
164278 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
164279 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
164280 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
164281 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
164282 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
164283 
164284 --
164285 -- initilaize the status of ae headers for diffrent balance types
164286 -- the status is initialised to C_NOT_CREATED (2)
164287 --
164288 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164289 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164290 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164291 
164292 --
164293 -- call api to validate and store accounting attributes for header
164294 --
164295 
164296 ------------------------------------------------------------
164297 -- Accrual Reversal : to get date for Standard Source (NONE)
164298 ------------------------------------------------------------
164299 l_acc_rev_gl_date_source := NULL;
164300 
164301      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
164302       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_23');
164303      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
164304       l_rec_acct_attrs.array_date_value(2) := 
164305 xla_ae_sources_pkg.GetSystemSourceDate(
164306    p_source_code           => 'XLA_REFERENCE_DATE_1'
164307  , p_source_type_code      => 'Y'
164308  , p_source_application_id =>  602
164309 );
164310      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
164311       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
164312 
164313 
164314 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
164315 
164316 XLA_AE_HEADER_PKG.SetJeCategoryName;
164317 
164318 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
164319 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
164320 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
164321 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
164322 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
164323 
164324 
164325 -- No header level analytical criteria
164326 
164327 --
164328 --accounting attribute enhancement, bug 3612931
164329 --
164330 l_trx_reversal_source := SUBSTR(NULL, 1,30);
164331 
164332 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
164333    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
164334 
164335    xla_accounting_err_pkg.build_message
164336       (p_appli_s_name            => 'XLA'
164337       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
164338       ,p_token_1                 => 'ACCT_ATTR_NAME'
164339       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
164340       ,p_token_2                 => 'PRODUCT_NAME'
164341       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
164342       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
164343       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
164344       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
164345 
164346 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
164347    --
164348    -- following sets the accounting attributes needed to reverse
164349    -- accounting for a distributeion
164350    --
164351    xla_ae_lines_pkg.SetTrxReversalAttrs
164352       (p_event_id              => l_event_id
164353       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
164354       ,p_trx_reversal_source   => l_trx_reversal_source);
164355 
164356 END IF;
164357 
164358 
164359 ----------------------------------------------------------------
164360 -- 4262811 -  update the header statuses to invalid in need be
164361 ----------------------------------------------------------------
164362 --
164363 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
164364 
164365 
164366 --
164367 -- Generate the accrual reversal headers
164368 --
164369 IF NVL(l_trx_reversal_source, 'N') = 'N' THEN
164370 
164371 
164372 
164373 -- indicate that the accrual entry has a reversal entry
164374 XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag(hdr_idx) := 'Y';
164375 
164376 --
164377 -- initialize a row for ae header
164378 --
164379 g_last_hdr_idx := g_last_hdr_idx + 1;
164380 XLA_AE_HEADER_PKG.CopyHeaderInfo (p_parent_hdr_idx => hdr_idx,
164381                                   p_hdr_idx        => g_last_hdr_idx) ;
164382 XLA_AE_HEADER_PKG.g_rec_header_new.array_header_num      (g_last_hdr_idx) := 1;
164383 XLA_AE_HEADER_PKG.g_rec_header_new.array_parent_header_id(g_last_hdr_idx) :=
164384                XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx);
164385 
164386 --
164387 -- record the index for the reversal entry, it will be used by the journal
164388 -- line creation
164389 --
164390 g_array_event(l_event_id).array_value_num('acc_rev_header_index') := g_last_hdr_idx;
164391 
164392 --
164393 -- Populate the GL Date and override the GL date defined in the
164394 -- SetHdrAcctAttrs if necessary
164395 --
164396 
164397               ---------------------- XLA_FIRST_DAY_NEXT_GL_PERIOD ----------------------
164398               XLA_AE_HEADER_PKG.g_rec_header_new.array_acc_rev_gl_date_option(g_last_hdr_idx) := 'XLA_FIRST_DAY_NEXT_GL_PERIOD';
164399               XLA_AE_HEADER_PKG.GetAccrualRevDate(g_last_hdr_idx
164400                                        ,XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(g_last_hdr_idx)
164401                                        ,XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
164402                                        ,XLA_AE_HEADER_PKG.g_rec_header_new.array_acc_rev_gl_date_option(g_last_hdr_idx));
164403               
164404 
164405 --
164406 -- Update the header status
164407 --
164408 XLA_AE_JOURNAL_ENTRY_PKG.updateJournalEntryStatus (p_hdr_idx => g_last_hdr_idx);
164409 
164410 
164411 
164412 END IF;
164413 
164414 
164415 ----------------------------------------------------------------
164416 
164417 --
164418 -- this ends the header loop iteration for one bulk fetch
164419 --
164420 END LOOP;
164421 
164422 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
164423 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
164424 
164425 --
164426 -- insert dummy rows into lines gt table that were created due to
164427 -- transaction reversals
164428 --
164429 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
164430    l_result := XLA_AE_LINES_PKG.InsertLines;
164431 END IF;
164432 
164433 --
164434 -- reset the temp_line_num for each set of events fetched from header
164435 -- cursor rather than doing it for each new event in line cursor
164436 -- Bug 3939231
164437 --
164438 xla_ae_lines_pkg.g_temp_line_num := 0;
164439 
164440 
164441 
164442 --
164443 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
164444 --
164445 --
164446 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164447 
164448       trace
164449          (p_msg      => 'SQL - FETCH line_cur'
164450          ,p_level    => C_LEVEL_STATEMENT
164451          ,p_module   => l_log_module);
164452 
164453 END IF;
164454 --
164455 --
164456 LOOP
164457   --
164458   FETCH line_cur BULK COLLECT INTO
164459         l_array_entity_id
164460       , l_array_legal_entity_id
164461       , l_array_entity_code
164462       , l_array_transaction_num
164463       , l_array_event_id
164464       , l_array_class_code
164465       , l_array_event_type
164466       , l_array_event_number
164467       , l_array_event_date
164468       , l_array_transaction_date
164469       , l_array_reference_num_1
164470       , l_array_reference_num_2
164471       , l_array_reference_num_3
164472       , l_array_reference_num_4
164473       , l_array_reference_char_1
164474       , l_array_reference_char_2
164475       , l_array_reference_char_3
164476       , l_array_reference_char_4
164477       , l_array_reference_date_1
164478       , l_array_reference_date_2
164479       , l_array_reference_date_3
164480       , l_array_reference_date_4
164481       , l_array_event_created_by
164482       , l_array_budgetary_control_flag
164483       , l_array_extract_line_num 
164484       , l_array_source_4
164485       , l_array_source_5
164486       , l_array_source_11
164487       , l_array_source_18
164488       , l_array_source_22
164489       LIMIT l_rows;
164490 
164491   --
164492   IF (C_LEVEL_EVENT >= g_log_level) THEN
164493             trace
164494                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
164495                ,p_level    => C_LEVEL_EVENT
164496                ,p_module   => l_log_module);
164497   END IF;
164498   --
164499   EXIT WHEN l_array_entity_id.count = 0;
164500 
164501   XLA_AE_LINES_PKG.g_rec_lines := null;
164502 
164503 --
164504 -- Bug 4458708
164505 --
164506 XLA_AE_LINES_PKG.g_LineNumber := 0;
164507 --
164508 --
164509 
164510 FOR Idx IN 1..l_array_event_id.count LOOP
164511    --
164512    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
164513    --
164514    l_event_id := l_array_event_id(idx);  -- 5648433
164515 
164516    --
164517    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
164518    --
164519 
164520    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
164521              (g_array_event(l_event_id).array_value_num('header_index'))
164522          ,'N'
164523          ) <> 'Y'
164524    THEN
164525       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164526          trace
164527             (p_msg      => 'Trancaction revesal option is not Y '
164528             ,p_level    => C_LEVEL_STATEMENT
164529             ,p_module   => l_log_module);
164530       END IF;
164531 
164532 --
164533 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
164534 --
164535 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
164536 --
164537 -- set event info as cache for other routines to refer event attributes
164538 --
164539 
164540 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
164541    l_previous_event_id := l_event_id;
164542 
164543    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
164544       (p_application_id           => p_application_id
164545       ,p_primary_ledger_id        => p_primary_ledger_id
164546       ,p_base_ledger_id           => p_base_ledger_id
164547       ,p_target_ledger_id         => p_target_ledger_id
164548       ,p_entity_id                => l_array_entity_id(Idx)
164549       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
164550       ,p_entity_code              => l_array_entity_code(Idx)
164551       ,p_transaction_num          => l_array_transaction_num(Idx)
164552       ,p_event_id                 => l_array_event_id(Idx)
164553       ,p_event_class_code         => l_array_class_code(Idx)
164554       ,p_event_type_code          => l_array_event_type(Idx)
164555       ,p_event_number             => l_array_event_number(Idx)
164556       ,p_event_date               => l_array_event_date(Idx)
164557       ,p_transaction_date         => l_array_transaction_date(Idx)
164558       ,p_reference_num_1          => l_array_reference_num_1(Idx)
164559       ,p_reference_num_2          => l_array_reference_num_2(Idx)
164560       ,p_reference_num_3          => l_array_reference_num_3(Idx)
164561       ,p_reference_num_4          => l_array_reference_num_4(Idx)
164562       ,p_reference_char_1         => l_array_reference_char_1(Idx)
164563       ,p_reference_char_2         => l_array_reference_char_2(Idx)
164564       ,p_reference_char_3         => l_array_reference_char_3(Idx)
164565       ,p_reference_char_4         => l_array_reference_char_4(Idx)
164566       ,p_reference_date_1         => l_array_reference_date_1(Idx)
164567       ,p_reference_date_2         => l_array_reference_date_2(Idx)
164568       ,p_reference_date_3         => l_array_reference_date_3(Idx)
164569       ,p_reference_date_4         => l_array_reference_date_4(Idx)
164570       ,p_event_created_by         => l_array_event_created_by(Idx)
164571       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
164572        --
164573 END IF;
164574 
164575 
164576 
164577 --
164578 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
164579 
164580 l_acct_reversal_source := SUBSTR(NULL, 1,30);
164581 
164582 IF l_continue_with_lines THEN
164583    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
164584       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
164585 
164586       xla_accounting_err_pkg.build_message
164587          (p_appli_s_name            => 'XLA'
164588          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
164589          ,p_token_1                 => 'LINE_NUMBER'
164590          ,p_value_1                 => l_array_extract_line_num(Idx)
164591          ,p_token_2                 => 'PRODUCT_NAME'
164592          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
164593          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
164594          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
164595          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
164596 
164597    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
164598       --
164599       -- following sets the accounting attributes needed to reverse
164600       -- accounting for a distributeion
164601       --
164602 
164603       --
164604       -- 5217187
164605       --
164606       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
164607       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
164608                                        g_array_event(l_event_id).array_value_num('header_index'));
164609       --
164610       --
164611 
164612       -- No reversal code generated
164613 
164614       xla_ae_lines_pkg.SetAcctReversalAttrs
164615          (p_event_id             => l_event_id
164616          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
164617          ,p_calculate_acctd_flag => l_calculate_acctd_flag
164618          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
164619    END IF;
164620 
164621    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
164622        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
164623 
164624 --
164625 AcctLineType_5 (
164626  p_application_id  => p_application_id
164627  ,p_event_id     => l_event_id
164628  ,p_calculate_acctd_flag => l_calculate_acctd_flag
164629  ,p_calculate_g_l_flag => l_calculate_g_l_flag
164630  ,p_actual_flag => l_actual_flag
164631  ,p_balance_type_code => l_balance_type_code
164632  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
164633  
164634  , p_source_4 => l_array_source_4(Idx)
164635  , p_source_5 => l_array_source_5(Idx)
164636  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
164637  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
164638  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
164639  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
164640  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
164641  , p_source_11 => l_array_source_11(Idx)
164642  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
164643  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
164644  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
164645  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
164646  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
164647  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
164648  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
164649  , p_source_18 => l_array_source_18(Idx)
164650  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
164651  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
164652  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
164653  , p_source_22 => l_array_source_22(Idx)
164654  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
164655  );
164656 If(l_balance_type_code = 'A') THEN
164657   l_actual_gain_loss_ref := l_gain_or_loss_ref;
164658 END IF;
164659 
164660 --
164661 
164662 
164663 --
164664 AcctLineType_11 (
164665  p_application_id  => p_application_id
164666  ,p_event_id     => l_event_id
164667  ,p_calculate_acctd_flag => l_calculate_acctd_flag
164668  ,p_calculate_g_l_flag => l_calculate_g_l_flag
164669  ,p_actual_flag => l_actual_flag
164670  ,p_balance_type_code => l_balance_type_code
164671  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
164672  
164673  , p_source_4 => l_array_source_4(Idx)
164674  , p_source_5 => l_array_source_5(Idx)
164675  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
164676  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
164677  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
164678  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
164679  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
164680  , p_source_11 => l_array_source_11(Idx)
164681  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
164682  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
164683  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
164684  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
164685  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
164686  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
164687  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
164688  , p_source_18 => l_array_source_18(Idx)
164689  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
164690  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
164691  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
164692  , p_source_22 => l_array_source_22(Idx)
164693  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
164694  );
164695 If(l_balance_type_code = 'A') THEN
164696   l_actual_gain_loss_ref := l_gain_or_loss_ref;
164697 END IF;
164698 
164699 --
164700 
164701       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
164702       -- or secondary ledger that has different currency with primary
164703       -- or alc that is calculated by sla
164704       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
164705             (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'))
164706 
164707 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
164708 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
164709           AND (l_actual_flag = 'A')) THEN
164710         XLA_AE_LINES_PKG.CreateGainOrLossLines(
164711           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
164712          ,p_application_id   => p_application_id
164713          ,p_amb_context_code => 'DEFAULT'
164714          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
164715          ,p_event_class_code => C_EVENT_CLASS_CODE
164716          ,p_event_type_code  => C_EVENT_TYPE_CODE
164717          
164718          ,p_gain_ccid        => -1
164719          ,p_loss_ccid        => -1
164720 
164721          ,p_actual_flag      => l_actual_flag
164722          ,p_enc_flag         => null
164723          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
164724          ,p_enc_g_l_ref      => null
164725          );
164726       END IF;
164727    END IF;
164728 END IF;
164729 
164730    ELSE
164731       --
164732       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
164733       --
164734       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164735          trace
164736             (p_msg      => 'Trancaction revesal option is Y'
164737             ,p_level    => C_LEVEL_STATEMENT
164738             ,p_module   => l_log_module);
164739       END IF;
164740    END IF;
164741 
164742 END LOOP;
164743 l_result := XLA_AE_LINES_PKG.InsertLines ;
164744 end loop;
164745 close line_cur;
164746 
164747 
164748 --
164749 -- insert headers into xla_ae_headers_gt table
164750 --
164751 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
164752 
164753 -- insert into errors table here.
164754 
164755 END LOOP;
164756 
164757 --
164758 -- 4865292
164759 --
164760 -- Compare g_hdr_extract_count with event count in
164761 -- CreateHeadersAndLines.
164762 --
164763 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
164764 
164765 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164766    trace (p_msg     => '# rows extracted from header extract objects '
164767                     || ' (running total): '
164768                     || g_hdr_extract_count
164769          ,p_level   => C_LEVEL_STATEMENT
164770          ,p_module  => l_log_module);
164771 END IF;
164772 
164773 CLOSE header_cur;
164774 --
164775 
164776 --
164777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164778    trace
164779       (p_msg      => 'END of EventClass_269'
164780       ,p_level    => C_LEVEL_PROCEDURE
164781       ,p_module   => l_log_module);
164782 END IF;
164783 --
164784 RETURN l_result;
164785 EXCEPTION
164786 WHEN xla_exceptions_pkg.application_exception THEN
164787    
164788 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
164789 
164790    
164791 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
164792 
164793    RAISE;
164794 
164795 WHEN NO_DATA_FOUND THEN
164796 
164797 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
164798 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
164799 
164800 FOR header_record IN header_cur
164801 LOOP
164802     l_array_header_events(header_record.event_id) := header_record.event_id;
164803 END LOOP;
164804 
164805 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
164806 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
164807 
164808 fnd_file.put_line(fnd_file.LOG, '                    ');
164809 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
164810 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
164811 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
164812 
164813 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
164814 LOOP
164815 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
164816 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
164817         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
164818 	END IF;
164819 END LOOP;
164820 
164821 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
164822 fnd_file.put_line(fnd_file.LOG, '                    ');
164823 
164824 
164825 xla_exceptions_pkg.raise_message
164826       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_269');
164827 
164828 
164829 WHEN OTHERS THEN
164830    xla_exceptions_pkg.raise_message
164831       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_269');
164832 END EventClass_269;
164833 --
164834 
164835 ---------------------------------------
164836 --
164837 -- PRIVATE PROCEDURE
164838 --         insert_sources_270
164839 --
164840 ----------------------------------------
164841 --
164842 PROCEDURE insert_sources_270(
164843                                 p_target_ledger_id       IN NUMBER
164844                               , p_language               IN VARCHAR2
164845                               , p_sla_ledger_id          IN NUMBER
164846                               , p_pad_start_date         IN DATE
164847                               , p_pad_end_date           IN DATE
164848                          )
164849 IS
164850 
164851 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PURCHASE_ORDER_ALL';
164852 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
164853 p_apps_owner                   VARCHAR2(30);
164854 l_log_module                   VARCHAR2(240);
164855 BEGIN
164856 IF g_log_enabled THEN
164857       l_log_module := C_DEFAULT_MODULE||'.insert_sources_270';
164858 END IF;
164859 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164860 
164861       trace
164862          (p_msg      => 'BEGIN of insert_sources_270'
164863          ,p_level    => C_LEVEL_PROCEDURE
164864          ,p_module   => l_log_module);
164865 
164866 END IF;
164867 
164868 -- select APPS owner
164869 SELECT oracle_username
164870   INTO p_apps_owner
164871   FROM fnd_oracle_userid
164872  WHERE read_only_flag = 'U'
164873 ;
164874 
164875 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164876       trace
164877          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
164878                         ' - p_language = '||p_language||
164879                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
164880                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
164881                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
164882                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
164883          ,p_level    => C_LEVEL_STATEMENT
164884          ,p_module   => l_log_module);
164885 END IF;
164886 
164887 
164888 --
164889 INSERT INTO xla_diag_sources --hdr2
164890 (
164891         event_id
164892       , ledger_id
164893       , sla_ledger_id
164894       , description_language
164895       , object_name
164896       , object_type_code
164897       , line_number
164898       , source_application_id
164899       , source_type_code
164900       , source_code
164901       , source_value
164902       , source_meaning
164903       , created_by
164904       , creation_date
164905       , last_update_date
164906       , last_updated_by
164907       , last_update_login
164908       , program_update_date
164909       , program_application_id
164910       , program_id
164911       , request_id
164912 )
164913 SELECT
164914         event_id
164915       , p_target_ledger_id
164916       , p_sla_ledger_id
164917       , p_language
164918       , object_name
164919       , object_type_code
164920       , line_number
164921       , source_application_id
164922       , source_type_code
164923       , source_code
164924       , SUBSTR(source_value ,1,1996)
164925       , SUBSTR(source_meaning ,1,200)
164926       , xla_environment_pkg.g_Usr_Id
164927       , TRUNC(SYSDATE)
164928       , TRUNC(SYSDATE)
164929       , xla_environment_pkg.g_Usr_Id
164930       , xla_environment_pkg.g_Login_Id
164931       , TRUNC(SYSDATE)
164932       , xla_environment_pkg.g_Prog_Appl_Id
164933       , xla_environment_pkg.g_Prog_Id
164934       , xla_environment_pkg.g_Req_Id
164935   FROM (
164936        SELECT xet.event_id                  event_id
164937             , 0                          line_number
164938             , CASE r
164939                WHEN 1 THEN 'CST_XLA_INV_REF_V' 
164940                 WHEN 2 THEN 'CST_XLA_INV_REF_V' 
164941                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
164942                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
164943                 WHEN 5 THEN 'CST_XLA_INV_HEADERS_V' 
164944                 WHEN 6 THEN 'PO_DISTS_REF_V' 
164945                 WHEN 7 THEN 'CST_XLA_INV_REF_V' 
164946                 WHEN 8 THEN 'CST_XLA_INV_REF_V' 
164947                 WHEN 9 THEN 'PO_HEADERS_REF_V' 
164948                 WHEN 10 THEN 'PSA_CST_XLA_UPG_V' 
164949                 WHEN 11 THEN 'CST_XLA_INV_REF_V' 
164950                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
164951                 
164952                ELSE null
164953               END                           object_name
164954             , CASE r
164955                 WHEN 1 THEN 'HEADER' 
164956                 WHEN 2 THEN 'HEADER' 
164957                 WHEN 3 THEN 'HEADER' 
164958                 WHEN 4 THEN 'HEADER' 
164959                 WHEN 5 THEN 'HEADER' 
164960                 WHEN 6 THEN 'HEADER' 
164961                 WHEN 7 THEN 'HEADER' 
164962                 WHEN 8 THEN 'HEADER' 
164963                 WHEN 9 THEN 'HEADER' 
164964                 WHEN 10 THEN 'HEADER' 
164965                 WHEN 11 THEN 'HEADER' 
164966                 WHEN 12 THEN 'HEADER' 
164967                 
164968                 ELSE null
164969               END                           object_type_code
164970             , CASE r
164971                 WHEN 1 THEN '707' 
164972                 WHEN 2 THEN '707' 
164973                 WHEN 3 THEN '707' 
164974                 WHEN 4 THEN '707' 
164975                 WHEN 5 THEN '707' 
164976                 WHEN 6 THEN '201' 
164977                 WHEN 7 THEN '707' 
164978                 WHEN 8 THEN '707' 
164979                 WHEN 9 THEN '201' 
164980                 WHEN 10 THEN '707' 
164981                 WHEN 11 THEN '707' 
164982                 WHEN 12 THEN '707' 
164983                 
164984                 ELSE null
164985               END                           source_application_id
164986             , 'S'             source_type_code
164987             , CASE r
164988                 WHEN 1 THEN 'APPLIED_TO_APPL_ID' 
164989                 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
164990                 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE' 
164991                 WHEN 4 THEN 'APPLIED_TO_PO_DOC_ID' 
164992                 WHEN 5 THEN 'DISTRIBUTION_TYPE' 
164993                 WHEN 6 THEN 'PO_BUDGET_ACCOUNT' 
164994                 WHEN 7 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
164995                 WHEN 8 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
164996                 WHEN 9 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
164997                 WHEN 10 THEN 'CST_ENCUM_UPG_OPTION' 
164998                 WHEN 11 THEN 'TXN_PO_DISTRIBUTION_ID' 
164999                 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR' 
165000                 
165001                 ELSE null
165002               END                           source_code
165003             , CASE r
165004                 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
165005                 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
165006                 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
165007                 WHEN 4 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
165008                 WHEN 5 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
165009                 WHEN 6 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
165010                 WHEN 7 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
165011                 WHEN 8 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
165012                 WHEN 9 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
165013                 WHEN 10 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
165014                 WHEN 11 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
165015                 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
165016                 
165017                 ELSE null
165018               END                           source_value
165019             , CASE r
165020                 WHEN 5 THEN fvl12.meaning
165021                 WHEN 12 THEN fvl38.meaning
165022                 
165023                 ELSE null
165024               END               source_meaning
165025          FROM xla_events_gt     xet  
165026       , CST_XLA_INV_HEADERS_V  h1
165027       , CST_XLA_INV_REF_V  h3
165028       , PO_DISTS_REF_V  h4
165029       , PO_HEADERS_REF_V  h5
165030       , PSA_CST_XLA_UPG_V  h6
165031   , fnd_lookup_values    fvl12
165032   , fnd_lookup_values    fvl38
165033              ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
165034          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
165035            AND xet.event_class_code = C_EVENT_CLASS_CODE
165036               AND h1.event_id = xet.event_id
165037  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'
165038   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
165039   AND fvl12.view_application_id(+) = 700
165040   AND fvl12.language(+)            = USERENV('LANG')
165041      AND fvl38.lookup_type(+)         = 'YES_NO'
165042   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
165043   AND fvl38.view_application_id(+) = 0
165044   AND fvl38.language(+)            = USERENV('LANG')
165045   
165046 )
165047 ;
165048 --
165049 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165050 
165051       trace
165052          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
165053          ,p_level    => C_LEVEL_STATEMENT
165054          ,p_module   => l_log_module);
165055 
165056 END IF;
165057 --
165058 
165059 
165060 
165061 --
165062 INSERT INTO xla_diag_sources  --line2
165063 (
165064         event_id
165065       , ledger_id
165066       , sla_ledger_id
165067       , description_language
165068       , object_name
165069       , object_type_code
165070       , line_number
165071       , source_application_id
165072       , source_type_code
165073       , source_code
165074       , source_value
165075       , source_meaning
165076       , created_by
165077       , creation_date
165078       , last_update_date
165079       , last_updated_by
165080       , last_update_login
165081       , program_update_date
165082       , program_application_id
165083       , program_id
165084       , request_id
165085 )
165086 SELECT  event_id
165087       , p_target_ledger_id
165088       , p_sla_ledger_id
165089       , p_language
165090       , object_name
165091       , object_type_code
165092       , line_number
165093       , source_application_id
165094       , source_type_code
165095       , source_code
165096       , SUBSTR(source_value,1,1996)
165097       , SUBSTR(source_meaning ,1,200)
165098       , xla_environment_pkg.g_Usr_Id
165099       , TRUNC(SYSDATE)
165100       , TRUNC(SYSDATE)
165101       , xla_environment_pkg.g_Usr_Id
165102       , xla_environment_pkg.g_Login_Id
165103       , TRUNC(SYSDATE)
165104       , xla_environment_pkg.g_Prog_Appl_Id
165105       , xla_environment_pkg.g_Prog_Id
165106       , xla_environment_pkg.g_Req_Id
165107   FROM (
165108        SELECT xet.event_id                  event_id
165109             , l2.line_number                 line_number
165110             , CASE r
165111                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
165112                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
165113                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
165114                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
165115                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
165116                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
165117                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
165118                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
165119                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
165120                 
165121                ELSE null
165122               END                           object_name
165123             , CASE r
165124                 WHEN 1 THEN 'LINE' 
165125                 WHEN 2 THEN 'LINE' 
165126                 WHEN 3 THEN 'LINE' 
165127                 WHEN 4 THEN 'LINE' 
165128                 WHEN 5 THEN 'LINE' 
165129                 WHEN 6 THEN 'LINE' 
165130                 WHEN 7 THEN 'LINE' 
165131                 WHEN 8 THEN 'LINE' 
165132                 WHEN 9 THEN 'LINE' 
165133                 
165134                 ELSE null
165135               END                           object_type_code
165136             , CASE r
165137                 WHEN 1 THEN '707' 
165138                 WHEN 2 THEN '707' 
165139                 WHEN 3 THEN '707' 
165140                 WHEN 4 THEN '707' 
165141                 WHEN 5 THEN '707' 
165142                 WHEN 6 THEN '707' 
165143                 WHEN 7 THEN '707' 
165144                 WHEN 8 THEN '707' 
165145                 WHEN 9 THEN '707' 
165146                 
165147                 ELSE null
165148               END                           source_application_id
165149             , 'S'             source_type_code
165150             , CASE r
165151                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
165152                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
165153                 WHEN 3 THEN 'CURRENCY_CODE' 
165154                 WHEN 4 THEN 'ENTERED_AMOUNT' 
165155                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
165156                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
165157                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
165158                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
165159                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
165160                 
165161                 ELSE null
165162               END                           source_code
165163             , CASE r
165164                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
165165                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
165166                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
165167                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
165168                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
165169                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
165170                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
165171                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
165172                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
165173                 
165174                 ELSE null
165175               END                           source_value
165176             , null              source_meaning
165177          FROM  xla_events_gt     xet  
165178         , CST_XLA_INV_LINES_V  l2
165179             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
165180         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
165181           AND xet.event_class_code = C_EVENT_CLASS_CODE
165182             AND l2.event_id          = xet.event_id
165183 
165184 )
165185 ;
165186 --
165187 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165188 
165189       trace
165190          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
165191          ,p_level    => C_LEVEL_STATEMENT
165192          ,p_module   => l_log_module);
165193 
165194 END IF;
165195 
165196 
165197 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165198       trace
165199          (p_msg      => 'END of insert_sources_270'
165200          ,p_level    => C_LEVEL_PROCEDURE
165201          ,p_module   => l_log_module);
165202 END IF;
165203 EXCEPTION
165204   WHEN xla_exceptions_pkg.application_exception THEN
165205       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
165206             trace
165207                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
165208                ,p_level    => C_LEVEL_EXCEPTION
165209                ,p_module   => l_log_module);
165210       END IF;
165211       RAISE;
165212   WHEN OTHERS THEN
165213       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
165214             trace
165215                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
165216                ,p_level    => C_LEVEL_EXCEPTION
165217                ,p_module   => l_log_module);
165218        END IF;
165219        xla_exceptions_pkg.raise_message
165220            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_270');
165221 END insert_sources_270;
165222 --
165223 
165224 ---------------------------------------
165225 --
165226 -- PRIVATE FUNCTION
165227 --         EventClass_270
165228 --
165229 ----------------------------------------
165230 --
165231 FUNCTION EventClass_270
165232        (p_application_id         IN NUMBER
165233        ,p_base_ledger_id         IN NUMBER
165234        ,p_target_ledger_id       IN NUMBER
165235        ,p_language               IN VARCHAR2
165236        ,p_currency_code          IN VARCHAR2
165237        ,p_sla_ledger_id          IN NUMBER
165238        ,p_pad_start_date         IN DATE
165239        ,p_pad_end_date           IN DATE
165240        ,p_primary_ledger_id      IN NUMBER)
165241 RETURN BOOLEAN IS
165242 --
165243 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PURCHASE_ORDER_ALL';
165244 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
165245 
165246 l_calculate_acctd_flag   VARCHAR2(1) :='N';
165247 l_calculate_g_l_flag     VARCHAR2(1) :='N';
165248 --
165249 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165250 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165251 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
165252 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165253 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165254 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
165255 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
165256 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165257 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165258 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165259 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165260 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165261 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165262 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165263 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165264 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165265 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165266 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165267 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165268 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165269 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165270 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165271 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
165272 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
165273 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
165274 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
165275 
165276 l_event_id                             NUMBER;
165277 l_previous_event_id                    NUMBER;
165278 l_first_event_id                       NUMBER;
165279 l_last_event_id                        NUMBER;
165280 
165281 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
165282 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
165283 --
165284 --
165285 l_result                    BOOLEAN := TRUE;
165286 l_rows                      NUMBER  := 1000;
165287 l_event_type_name           VARCHAR2(80) := 'All';
165288 l_event_class_name          VARCHAR2(80) := 'PO Delivery into Inventory';
165289 l_description               VARCHAR2(4000);
165290 l_transaction_reversal      NUMBER;
165291 l_ae_header_id              NUMBER;
165292 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
165293 l_log_module                VARCHAR2(240);
165294 --
165295 l_acct_reversal_source      VARCHAR2(30);
165296 l_trx_reversal_source       VARCHAR2(30);
165297 
165298 l_continue_with_lines       BOOLEAN := TRUE;
165299 --
165300 l_acc_rev_gl_date_source    DATE;                      -- 4262811
165301 --
165302 type t_array_event_id is table of number index by binary_integer;
165303 
165304 l_rec_array_event                    t_rec_array_event;
165305 l_null_rec_array_event               t_rec_array_event;
165306 l_array_ae_header_id                 xla_number_array_type;
165307 l_actual_flag                        VARCHAR2(1) := NULL;
165308 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
165309 l_balance_type_code                  VARCHAR2(1) :=NULL;
165310 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
165311 
165312 --
165313 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
165314 --
165315 
165316 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
165317 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
165318 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
165319 TYPE t_array_source_10 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
165320 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
165321 TYPE t_array_source_13 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
165322 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
165323 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
165324 TYPE t_array_source_23 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
165325 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
165326 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
165327 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
165328 
165329 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
165330 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
165331 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
165332 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
165333 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
165334 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
165335 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
165336 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
165337 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
165338 
165339 l_array_source_6              t_array_source_6;
165340 l_array_source_7              t_array_source_7;
165341 l_array_source_8              t_array_source_8;
165342 l_array_source_10              t_array_source_10;
165343 l_array_source_12              t_array_source_12;
165344 l_array_source_12_meaning      t_array_lookup_meaning;
165345 l_array_source_13              t_array_source_13;
165346 l_array_source_14              t_array_source_14;
165347 l_array_source_16              t_array_source_16;
165348 l_array_source_23              t_array_source_23;
165349 l_array_source_27              t_array_source_27;
165350 l_array_source_28              t_array_source_28;
165351 l_array_source_38              t_array_source_38;
165352 l_array_source_38_meaning      t_array_lookup_meaning;
165353 
165354 l_array_source_4      t_array_source_4;
165355 l_array_source_11      t_array_source_11;
165356 l_array_source_15      t_array_source_15;
165357 l_array_source_18      t_array_source_18;
165358 l_array_source_19      t_array_source_19;
165359 l_array_source_20      t_array_source_20;
165360 l_array_source_21      t_array_source_21;
165361 l_array_source_22      t_array_source_22;
165362 l_array_source_24      t_array_source_24;
165363 
165364 --
165365 CURSOR header_cur
165366 IS
165367 SELECT /*+ leading(xet) cardinality(xet,1) */
165368 -- Event Class Code: PURCHASE_ORDER
165369     xet.entity_id
165370    ,xet.legal_entity_id
165371    ,xet.entity_code
165372    ,xet.transaction_number
165373    ,xet.event_id
165374    ,xet.event_class_code
165375    ,xet.event_type_code
165376    ,xet.event_number
165377    ,xet.event_date
165378    ,xet.transaction_date
165379    ,xet.reference_num_1
165380    ,xet.reference_num_2
165381    ,xet.reference_num_3
165382    ,xet.reference_num_4
165383    ,xet.reference_char_1
165384    ,xet.reference_char_2
165385    ,xet.reference_char_3
165386    ,xet.reference_char_4
165387    ,xet.reference_date_1
165388    ,xet.reference_date_2
165389    ,xet.reference_date_3
165390    ,xet.reference_date_4
165391    ,xet.event_created_by
165392    ,xet.budgetary_control_flag 
165393   , h3.APPLIED_TO_APPL_ID    source_6
165394   , h3.APPLIED_TO_DIST_LINK_TYPE    source_7
165395   , h3.APPLIED_TO_ENTITY_CODE    source_8
165396   , h3.APPLIED_TO_PO_DOC_ID    source_10
165397   , h1.DISTRIBUTION_TYPE    source_12
165398   , fvl12.meaning   source_12_meaning
165399   , h4.PO_BUDGET_ACCOUNT    source_13
165400   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_14
165401   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_16
165402   , h5.PURCH_ENCUMBRANCE_TYPE_ID    source_23
165403   , h6.CST_ENCUM_UPG_OPTION    source_27
165404   , h3.TXN_PO_DISTRIBUTION_ID    source_28
165405   , h1.TRANSFER_TO_GL_INDICATOR    source_38
165406   , fvl38.meaning   source_38_meaning
165407   FROM xla_events_gt     xet 
165408   , CST_XLA_INV_HEADERS_V  h1
165409   , CST_XLA_INV_REF_V  h3
165410   , PO_DISTS_REF_V  h4
165411   , PO_HEADERS_REF_V  h5
165412   , PSA_CST_XLA_UPG_V  h6
165413   , fnd_lookup_values    fvl12
165414   , fnd_lookup_values    fvl38
165415  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
165416    and xet.event_class_code = C_EVENT_CLASS_CODE
165417    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
165418  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'
165419   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
165420   AND fvl12.view_application_id(+) = 700
165421   AND fvl12.language(+)            = USERENV('LANG')
165422      AND fvl38.lookup_type(+)         = 'YES_NO'
165423   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
165424   AND fvl38.view_application_id(+) = 0
165425   AND fvl38.language(+)            = USERENV('LANG')
165426   
165427  ORDER BY event_id
165428 ;
165429 
165430 
165431 --
165432 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
165433 IS
165434 SELECT  /*+ leading(xet) cardinality(xet,1) */
165435 -- Event Class Code: PURCHASE_ORDER
165436     xet.entity_id
165437    ,xet.legal_entity_id
165438    ,xet.entity_code
165439    ,xet.transaction_number
165440    ,xet.event_id
165441    ,xet.event_class_code
165442    ,xet.event_type_code
165443    ,xet.event_number
165444    ,xet.event_date
165445    ,xet.transaction_date
165446    ,xet.reference_num_1
165447    ,xet.reference_num_2
165448    ,xet.reference_num_3
165449    ,xet.reference_num_4
165450    ,xet.reference_char_1
165451    ,xet.reference_char_2
165452    ,xet.reference_char_3
165453    ,xet.reference_char_4
165454    ,xet.reference_date_1
165455    ,xet.reference_date_2
165456    ,xet.reference_date_3
165457    ,xet.reference_date_4
165458    ,xet.event_created_by
165459    ,xet.budgetary_control_flag
165460  , l2.LINE_NUMBER  
165461   , l2.CODE_COMBINATION_ID    source_4
165462   , l2.DISTRIBUTION_IDENTIFIER    source_11
165463   , l2.CURRENCY_CODE    source_15
165464   , l2.ENTERED_AMOUNT    source_18
165465   , l2.CURRENCY_CONVERSION_DATE    source_19
165466   , l2.CURRENCY_CONVERSION_RATE    source_20
165467   , l2.CURRENCY_CONVERSION_TYPE    source_21
165468   , l2.ACCOUNTED_AMOUNT    source_22
165469   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
165470   FROM xla_events_gt     xet 
165471   , CST_XLA_INV_LINES_V  l2
165472  WHERE xet.event_id between x_first_event_id and x_last_event_id
165473    and xet.event_date between p_pad_start_date and p_pad_end_date
165474    and xet.event_class_code = C_EVENT_CLASS_CODE
165475    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
165476 ;
165477 
165478 --
165479 BEGIN
165480 IF g_log_enabled THEN
165481    l_log_module := C_DEFAULT_MODULE||'.EventClass_270';
165482 END IF;
165483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165484    trace
165485       (p_msg      => 'BEGIN of EventClass_270'
165486       ,p_level    => C_LEVEL_PROCEDURE
165487       ,p_module   => l_log_module);
165488 END IF;
165489 
165490 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165491    trace
165492       (p_msg      => 'p_application_id = '||p_application_id||
165493                      ' - p_base_ledger_id = '||p_base_ledger_id||
165494                      ' - p_target_ledger_id  = '||p_target_ledger_id||
165495                      ' - p_language = '||p_language||
165496                      ' - p_currency_code = '||p_currency_code||
165497                      ' - p_sla_ledger_id = '||p_sla_ledger_id
165498       ,p_level    => C_LEVEL_STATEMENT
165499       ,p_module   => l_log_module);
165500 END IF;
165501 --
165502 -- initialze arrays
165503 --
165504 g_array_event.DELETE;
165505 l_rec_array_event := l_null_rec_array_event;
165506 --
165507 --------------------------------------
165508 -- 4262811 Initialze MPA Line Number
165509 --------------------------------------
165510 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
165511 
165512 --
165513 
165514 --
165515 OPEN header_cur;
165516 --
165517 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165518    trace
165519    (p_msg      => 'SQL - FETCH header_cur'
165520    ,p_level    => C_LEVEL_STATEMENT
165521    ,p_module   => l_log_module);
165522 END IF;
165523 --
165524 LOOP
165525 FETCH header_cur BULK COLLECT INTO
165526         l_array_entity_id
165527       , l_array_legal_entity_id
165528       , l_array_entity_code
165529       , l_array_transaction_num
165530       , l_array_event_id
165531       , l_array_class_code
165532       , l_array_event_type
165533       , l_array_event_number
165534       , l_array_event_date
165535       , l_array_transaction_date
165536       , l_array_reference_num_1
165537       , l_array_reference_num_2
165538       , l_array_reference_num_3
165539       , l_array_reference_num_4
165540       , l_array_reference_char_1
165541       , l_array_reference_char_2
165542       , l_array_reference_char_3
165543       , l_array_reference_char_4
165544       , l_array_reference_date_1
165545       , l_array_reference_date_2
165546       , l_array_reference_date_3
165547       , l_array_reference_date_4
165548       , l_array_event_created_by
165549       , l_array_budgetary_control_flag 
165550       , l_array_source_6
165551       , l_array_source_7
165552       , l_array_source_8
165553       , l_array_source_10
165554       , l_array_source_12
165555       , l_array_source_12_meaning
165556       , l_array_source_13
165557       , l_array_source_14
165558       , l_array_source_16
165559       , l_array_source_23
165560       , l_array_source_27
165561       , l_array_source_28
165562       , l_array_source_38
165563       , l_array_source_38_meaning
165564       LIMIT l_rows;
165565 --
165566 IF (C_LEVEL_EVENT >= g_log_level) THEN
165567    trace
165568    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
165569    ,p_level    => C_LEVEL_EVENT
165570    ,p_module   => l_log_module);
165571 END IF;
165572 --
165573 EXIT WHEN l_array_entity_id.COUNT = 0;
165574 
165575 -- initialize arrays
165576 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
165577 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
165578 
165579 --
165580 -- Bug 4458708
165581 --
165582 XLA_AE_LINES_PKG.g_LineNumber := 0;
165583 
165584 
165585 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
165586 g_last_hdr_idx := l_array_event_id.LAST;
165587 --
165588 -- loop for the headers. Each iteration is for each header extract row
165589 -- fetched in header cursor
165590 --
165591 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
165592 
165593 --
165594 -- set event info as cache for other routines to refer event attributes
165595 --
165596 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
165597    (p_application_id           => p_application_id
165598    ,p_primary_ledger_id        => p_primary_ledger_id
165599    ,p_base_ledger_id           => p_base_ledger_id
165600    ,p_target_ledger_id         => p_target_ledger_id
165601    ,p_entity_id                => l_array_entity_id(hdr_idx)
165602    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
165603    ,p_entity_code              => l_array_entity_code(hdr_idx)
165604    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
165605    ,p_event_id                 => l_array_event_id(hdr_idx)
165606    ,p_event_class_code         => l_array_class_code(hdr_idx)
165607    ,p_event_type_code          => l_array_event_type(hdr_idx)
165608    ,p_event_number             => l_array_event_number(hdr_idx)
165609    ,p_event_date               => l_array_event_date(hdr_idx)
165610    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
165611    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
165612    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
165613    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
165614    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
165615    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
165616    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
165617    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
165618    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
165619    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
165620    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
165621    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
165622    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
165623    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
165624    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
165625 
165626 --
165627 -- set the status of entry to C_VALID (0)
165628 --
165629 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
165630 
165631 --
165632 -- initialize a row for ae header
165633 --
165634 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
165635 
165636 l_event_id := l_array_event_id(hdr_idx);
165637 
165638 --
165639 -- storing the hdr_idx for event. May be used by line cursor.
165640 --
165641 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
165642 
165643 --
165644 -- store sources from header extract. This can be improved to
165645 -- store only those sources from header extract that may be used in lines
165646 --
165647 
165648 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
165649 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
165650 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
165651 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
165652 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
165653 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
165654 g_array_event(l_event_id).array_value_num('source_13') := l_array_source_13(hdr_idx);
165655 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
165656 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
165657 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
165658 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
165659 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
165660 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
165661 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
165662 
165663 --
165664 -- initilaize the status of ae headers for diffrent balance types
165665 -- the status is initialised to C_NOT_CREATED (2)
165666 --
165667 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165668 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165669 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165670 
165671 --
165672 -- call api to validate and store accounting attributes for header
165673 --
165674 
165675 ------------------------------------------------------------
165676 -- Accrual Reversal : to get date for Standard Source (NONE)
165677 ------------------------------------------------------------
165678 l_acc_rev_gl_date_source := NULL;
165679 
165680      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
165681       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_23');
165682      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
165683       l_rec_acct_attrs.array_date_value(2) := 
165684 xla_ae_sources_pkg.GetSystemSourceDate(
165685    p_source_code           => 'XLA_REFERENCE_DATE_1'
165686  , p_source_type_code      => 'Y'
165687  , p_source_application_id =>  602
165688 );
165689      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
165690       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
165691 
165692 
165693 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
165694 
165695 XLA_AE_HEADER_PKG.SetJeCategoryName;
165696 
165697 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
165698 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
165699 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
165700 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
165701 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
165702 
165703 
165704 -- No header level analytical criteria
165705 
165706 --
165707 --accounting attribute enhancement, bug 3612931
165708 --
165709 l_trx_reversal_source := SUBSTR(NULL, 1,30);
165710 
165711 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
165712    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
165713 
165714    xla_accounting_err_pkg.build_message
165715       (p_appli_s_name            => 'XLA'
165716       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
165717       ,p_token_1                 => 'ACCT_ATTR_NAME'
165718       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
165719       ,p_token_2                 => 'PRODUCT_NAME'
165720       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
165721       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
165722       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
165723       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
165724 
165725 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
165726    --
165727    -- following sets the accounting attributes needed to reverse
165728    -- accounting for a distributeion
165729    --
165730    xla_ae_lines_pkg.SetTrxReversalAttrs
165731       (p_event_id              => l_event_id
165732       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
165733       ,p_trx_reversal_source   => l_trx_reversal_source);
165734 
165735 END IF;
165736 
165737 
165738 ----------------------------------------------------------------
165739 -- 4262811 -  update the header statuses to invalid in need be
165740 ----------------------------------------------------------------
165741 --
165742 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
165743 
165744 
165745   -----------------------------------------------
165746   -- No accrual reversal for the event class/type
165747   -----------------------------------------------
165748 ----------------------------------------------------------------
165749 
165750 --
165751 -- this ends the header loop iteration for one bulk fetch
165752 --
165753 END LOOP;
165754 
165755 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
165756 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
165757 
165758 --
165759 -- insert dummy rows into lines gt table that were created due to
165760 -- transaction reversals
165761 --
165762 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
165763    l_result := XLA_AE_LINES_PKG.InsertLines;
165764 END IF;
165765 
165766 --
165767 -- reset the temp_line_num for each set of events fetched from header
165768 -- cursor rather than doing it for each new event in line cursor
165769 -- Bug 3939231
165770 --
165771 xla_ae_lines_pkg.g_temp_line_num := 0;
165772 
165773 
165774 
165775 --
165776 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
165777 --
165778 --
165779 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165780 
165781       trace
165782          (p_msg      => 'SQL - FETCH line_cur'
165783          ,p_level    => C_LEVEL_STATEMENT
165784          ,p_module   => l_log_module);
165785 
165786 END IF;
165787 --
165788 --
165789 LOOP
165790   --
165791   FETCH line_cur BULK COLLECT INTO
165792         l_array_entity_id
165793       , l_array_legal_entity_id
165794       , l_array_entity_code
165795       , l_array_transaction_num
165796       , l_array_event_id
165797       , l_array_class_code
165798       , l_array_event_type
165799       , l_array_event_number
165800       , l_array_event_date
165801       , l_array_transaction_date
165802       , l_array_reference_num_1
165803       , l_array_reference_num_2
165804       , l_array_reference_num_3
165805       , l_array_reference_num_4
165806       , l_array_reference_char_1
165807       , l_array_reference_char_2
165808       , l_array_reference_char_3
165809       , l_array_reference_char_4
165810       , l_array_reference_date_1
165811       , l_array_reference_date_2
165812       , l_array_reference_date_3
165813       , l_array_reference_date_4
165814       , l_array_event_created_by
165815       , l_array_budgetary_control_flag
165816       , l_array_extract_line_num 
165817       , l_array_source_4
165818       , l_array_source_11
165819       , l_array_source_15
165820       , l_array_source_18
165821       , l_array_source_19
165822       , l_array_source_20
165823       , l_array_source_21
165824       , l_array_source_22
165825       , l_array_source_24
165826       LIMIT l_rows;
165827 
165828   --
165829   IF (C_LEVEL_EVENT >= g_log_level) THEN
165830             trace
165831                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
165832                ,p_level    => C_LEVEL_EVENT
165833                ,p_module   => l_log_module);
165834   END IF;
165835   --
165836   EXIT WHEN l_array_entity_id.count = 0;
165837 
165838   XLA_AE_LINES_PKG.g_rec_lines := null;
165839 
165840 --
165841 -- Bug 4458708
165842 --
165843 XLA_AE_LINES_PKG.g_LineNumber := 0;
165844 --
165845 --
165846 
165847 FOR Idx IN 1..l_array_event_id.count LOOP
165848    --
165849    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
165850    --
165851    l_event_id := l_array_event_id(idx);  -- 5648433
165852 
165853    --
165854    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
165855    --
165856 
165857    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
165858              (g_array_event(l_event_id).array_value_num('header_index'))
165859          ,'N'
165860          ) <> 'Y'
165861    THEN
165862       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165863          trace
165864             (p_msg      => 'Trancaction revesal option is not Y '
165865             ,p_level    => C_LEVEL_STATEMENT
165866             ,p_module   => l_log_module);
165867       END IF;
165868 
165869 --
165870 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
165871 --
165872 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
165873 --
165874 -- set event info as cache for other routines to refer event attributes
165875 --
165876 
165877 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
165878    l_previous_event_id := l_event_id;
165879 
165880    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
165881       (p_application_id           => p_application_id
165882       ,p_primary_ledger_id        => p_primary_ledger_id
165883       ,p_base_ledger_id           => p_base_ledger_id
165884       ,p_target_ledger_id         => p_target_ledger_id
165885       ,p_entity_id                => l_array_entity_id(Idx)
165886       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
165887       ,p_entity_code              => l_array_entity_code(Idx)
165888       ,p_transaction_num          => l_array_transaction_num(Idx)
165889       ,p_event_id                 => l_array_event_id(Idx)
165890       ,p_event_class_code         => l_array_class_code(Idx)
165891       ,p_event_type_code          => l_array_event_type(Idx)
165892       ,p_event_number             => l_array_event_number(Idx)
165893       ,p_event_date               => l_array_event_date(Idx)
165894       ,p_transaction_date         => l_array_transaction_date(Idx)
165895       ,p_reference_num_1          => l_array_reference_num_1(Idx)
165896       ,p_reference_num_2          => l_array_reference_num_2(Idx)
165897       ,p_reference_num_3          => l_array_reference_num_3(Idx)
165898       ,p_reference_num_4          => l_array_reference_num_4(Idx)
165899       ,p_reference_char_1         => l_array_reference_char_1(Idx)
165900       ,p_reference_char_2         => l_array_reference_char_2(Idx)
165901       ,p_reference_char_3         => l_array_reference_char_3(Idx)
165902       ,p_reference_char_4         => l_array_reference_char_4(Idx)
165903       ,p_reference_date_1         => l_array_reference_date_1(Idx)
165904       ,p_reference_date_2         => l_array_reference_date_2(Idx)
165905       ,p_reference_date_3         => l_array_reference_date_3(Idx)
165906       ,p_reference_date_4         => l_array_reference_date_4(Idx)
165907       ,p_event_created_by         => l_array_event_created_by(Idx)
165908       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
165909        --
165910 END IF;
165911 
165912 
165913 
165914 --
165915 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
165916 
165917 l_acct_reversal_source := SUBSTR(NULL, 1,30);
165918 
165919 IF l_continue_with_lines THEN
165920    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
165921       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
165922 
165923       xla_accounting_err_pkg.build_message
165924          (p_appli_s_name            => 'XLA'
165925          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
165926          ,p_token_1                 => 'LINE_NUMBER'
165927          ,p_value_1                 => l_array_extract_line_num(Idx)
165928          ,p_token_2                 => 'PRODUCT_NAME'
165929          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
165930          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
165931          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
165932          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
165933 
165934    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
165935       --
165936       -- following sets the accounting attributes needed to reverse
165937       -- accounting for a distributeion
165938       --
165939 
165940       --
165941       -- 5217187
165942       --
165943       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
165944       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
165945                                        g_array_event(l_event_id).array_value_num('header_index'));
165946       --
165947       --
165948 
165949       -- No reversal code generated
165950 
165951       xla_ae_lines_pkg.SetAcctReversalAttrs
165952          (p_event_id             => l_event_id
165953          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
165954          ,p_calculate_acctd_flag => l_calculate_acctd_flag
165955          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
165956    END IF;
165957 
165958    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
165959        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
165960 
165961 --
165962 AcctLineType_15 (
165963  p_application_id  => p_application_id
165964  ,p_event_id     => l_event_id
165965  ,p_calculate_acctd_flag => l_calculate_acctd_flag
165966  ,p_calculate_g_l_flag => l_calculate_g_l_flag
165967  ,p_actual_flag => l_actual_flag
165968  ,p_balance_type_code => l_balance_type_code
165969  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165970  
165971  , p_source_4 => l_array_source_4(Idx)
165972  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
165973  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
165974  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
165975  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
165976  , p_source_11 => l_array_source_11(Idx)
165977  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
165978  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
165979  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
165980  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
165981  , p_source_15 => l_array_source_15(Idx)
165982  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
165983  , p_source_18 => l_array_source_18(Idx)
165984  , p_source_19 => l_array_source_19(Idx)
165985  , p_source_20 => l_array_source_20(Idx)
165986  , p_source_21 => l_array_source_21(Idx)
165987  , p_source_22 => l_array_source_22(Idx)
165988  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
165989  , p_source_24 => l_array_source_24(Idx)
165990  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
165991  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
165992  );
165993 If(l_balance_type_code = 'A') THEN
165994   l_actual_gain_loss_ref := l_gain_or_loss_ref;
165995 END IF;
165996 
165997 --
165998 
165999 
166000 --
166001 AcctLineType_38 (
166002  p_application_id  => p_application_id
166003  ,p_event_id     => l_event_id
166004  ,p_calculate_acctd_flag => l_calculate_acctd_flag
166005  ,p_calculate_g_l_flag => l_calculate_g_l_flag
166006  ,p_actual_flag => l_actual_flag
166007  ,p_balance_type_code => l_balance_type_code
166008  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166009  
166010  , p_source_4 => l_array_source_4(Idx)
166011  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
166012  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
166013  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
166014  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
166015  , p_source_11 => l_array_source_11(Idx)
166016  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166017  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166018  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
166019  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
166020  , p_source_15 => l_array_source_15(Idx)
166021  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
166022  , p_source_18 => l_array_source_18(Idx)
166023  , p_source_19 => l_array_source_19(Idx)
166024  , p_source_20 => l_array_source_20(Idx)
166025  , p_source_21 => l_array_source_21(Idx)
166026  , p_source_22 => l_array_source_22(Idx)
166027  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
166028  , p_source_24 => l_array_source_24(Idx)
166029  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
166030  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
166031  );
166032 If(l_balance_type_code = 'A') THEN
166033   l_actual_gain_loss_ref := l_gain_or_loss_ref;
166034 END IF;
166035 
166036 --
166037 
166038 
166039 --
166040 AcctLineType_140 (
166041  p_application_id  => p_application_id
166042  ,p_event_id     => l_event_id
166043  ,p_calculate_acctd_flag => l_calculate_acctd_flag
166044  ,p_calculate_g_l_flag => l_calculate_g_l_flag
166045  ,p_actual_flag => l_actual_flag
166046  ,p_balance_type_code => l_balance_type_code
166047  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166048  
166049  , p_source_4 => l_array_source_4(Idx)
166050  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
166051  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
166052  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
166053  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
166054  , p_source_11 => l_array_source_11(Idx)
166055  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166056  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166057  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
166058  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
166059  , p_source_15 => l_array_source_15(Idx)
166060  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
166061  , p_source_18 => l_array_source_18(Idx)
166062  , p_source_19 => l_array_source_19(Idx)
166063  , p_source_20 => l_array_source_20(Idx)
166064  , p_source_21 => l_array_source_21(Idx)
166065  , p_source_22 => l_array_source_22(Idx)
166066  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
166067  , p_source_24 => l_array_source_24(Idx)
166068  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
166069  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
166070  );
166071 If(l_balance_type_code = 'A') THEN
166072   l_actual_gain_loss_ref := l_gain_or_loss_ref;
166073 END IF;
166074 
166075 --
166076 
166077 
166078 --
166079 AcctLineType_166 (
166080  p_application_id  => p_application_id
166081  ,p_event_id     => l_event_id
166082  ,p_calculate_acctd_flag => l_calculate_acctd_flag
166083  ,p_calculate_g_l_flag => l_calculate_g_l_flag
166084  ,p_actual_flag => l_actual_flag
166085  ,p_balance_type_code => l_balance_type_code
166086  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166087  
166088  , p_source_4 => l_array_source_4(Idx)
166089  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
166090  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
166091  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
166092  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
166093  , p_source_11 => l_array_source_11(Idx)
166094  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166095  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166096  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
166097  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
166098  , p_source_15 => l_array_source_15(Idx)
166099  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
166100  , p_source_18 => l_array_source_18(Idx)
166101  , p_source_19 => l_array_source_19(Idx)
166102  , p_source_20 => l_array_source_20(Idx)
166103  , p_source_21 => l_array_source_21(Idx)
166104  , p_source_22 => l_array_source_22(Idx)
166105  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
166106  , p_source_24 => l_array_source_24(Idx)
166107  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
166108  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
166109  );
166110 If(l_balance_type_code = 'A') THEN
166111   l_actual_gain_loss_ref := l_gain_or_loss_ref;
166112 END IF;
166113 
166114 --
166115 
166116 
166117 --
166118 AcctLineType_185 (
166119  p_application_id  => p_application_id
166120  ,p_event_id     => l_event_id
166121  ,p_calculate_acctd_flag => l_calculate_acctd_flag
166122  ,p_calculate_g_l_flag => l_calculate_g_l_flag
166123  ,p_actual_flag => l_actual_flag
166124  ,p_balance_type_code => l_balance_type_code
166125  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166126  
166127  , p_source_4 => l_array_source_4(Idx)
166128  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
166129  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
166130  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
166131  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
166132  , p_source_11 => l_array_source_11(Idx)
166133  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166134  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166135  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
166136  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
166137  , p_source_15 => l_array_source_15(Idx)
166138  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
166139  , p_source_18 => l_array_source_18(Idx)
166140  , p_source_19 => l_array_source_19(Idx)
166141  , p_source_20 => l_array_source_20(Idx)
166142  , p_source_21 => l_array_source_21(Idx)
166143  , p_source_22 => l_array_source_22(Idx)
166144  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
166145  , p_source_24 => l_array_source_24(Idx)
166146  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
166147  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
166148  );
166149 If(l_balance_type_code = 'A') THEN
166150   l_actual_gain_loss_ref := l_gain_or_loss_ref;
166151 END IF;
166152 
166153 --
166154 
166155 
166156 --
166157 AcctLineType_225 (
166158  p_application_id  => p_application_id
166159  ,p_event_id     => l_event_id
166160  ,p_calculate_acctd_flag => l_calculate_acctd_flag
166161  ,p_calculate_g_l_flag => l_calculate_g_l_flag
166162  ,p_actual_flag => l_actual_flag
166163  ,p_balance_type_code => l_balance_type_code
166164  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166165  
166166  , p_source_4 => l_array_source_4(Idx)
166167  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
166168  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
166169  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
166170  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
166171  , p_source_11 => l_array_source_11(Idx)
166172  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166173  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166174  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
166175  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
166176  , p_source_15 => l_array_source_15(Idx)
166177  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
166178  , p_source_18 => l_array_source_18(Idx)
166179  , p_source_19 => l_array_source_19(Idx)
166180  , p_source_20 => l_array_source_20(Idx)
166181  , p_source_21 => l_array_source_21(Idx)
166182  , p_source_22 => l_array_source_22(Idx)
166183  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
166184  , p_source_24 => l_array_source_24(Idx)
166185  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
166186  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
166187  );
166188 If(l_balance_type_code = 'A') THEN
166189   l_actual_gain_loss_ref := l_gain_or_loss_ref;
166190 END IF;
166191 
166192 --
166193 
166194 
166195 --
166196 AcctLineType_228 (
166197  p_application_id  => p_application_id
166198  ,p_event_id     => l_event_id
166199  ,p_calculate_acctd_flag => l_calculate_acctd_flag
166200  ,p_calculate_g_l_flag => l_calculate_g_l_flag
166201  ,p_actual_flag => l_actual_flag
166202  ,p_balance_type_code => l_balance_type_code
166203  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166204  
166205  , p_source_4 => l_array_source_4(Idx)
166206  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
166207  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
166208  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
166209  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
166210  , p_source_11 => l_array_source_11(Idx)
166211  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166212  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166213  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
166214  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
166215  , p_source_15 => l_array_source_15(Idx)
166216  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
166217  , p_source_18 => l_array_source_18(Idx)
166218  , p_source_19 => l_array_source_19(Idx)
166219  , p_source_20 => l_array_source_20(Idx)
166220  , p_source_21 => l_array_source_21(Idx)
166221  , p_source_22 => l_array_source_22(Idx)
166222  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
166223  , p_source_24 => l_array_source_24(Idx)
166224  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
166225  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
166226  );
166227 If(l_balance_type_code = 'A') THEN
166228   l_actual_gain_loss_ref := l_gain_or_loss_ref;
166229 END IF;
166230 
166231 --
166232 
166233 
166234 --
166235 AcctLineType_240 (
166236  p_application_id  => p_application_id
166237  ,p_event_id     => l_event_id
166238  ,p_calculate_acctd_flag => l_calculate_acctd_flag
166239  ,p_calculate_g_l_flag => l_calculate_g_l_flag
166240  ,p_actual_flag => l_actual_flag
166241  ,p_balance_type_code => l_balance_type_code
166242  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166243  
166244  , p_source_4 => l_array_source_4(Idx)
166245  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
166246  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
166247  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
166248  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
166249  , p_source_11 => l_array_source_11(Idx)
166250  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166251  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166252  , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
166253  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
166254  , p_source_15 => l_array_source_15(Idx)
166255  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
166256  , p_source_18 => l_array_source_18(Idx)
166257  , p_source_19 => l_array_source_19(Idx)
166258  , p_source_20 => l_array_source_20(Idx)
166259  , p_source_21 => l_array_source_21(Idx)
166260  , p_source_22 => l_array_source_22(Idx)
166261  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
166262  , p_source_24 => l_array_source_24(Idx)
166263  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
166264  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
166265  );
166266 If(l_balance_type_code = 'A') THEN
166267   l_actual_gain_loss_ref := l_gain_or_loss_ref;
166268 END IF;
166269 
166270 --
166271 
166272       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
166273       -- or secondary ledger that has different currency with primary
166274       -- or alc that is calculated by sla
166275       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
166276             (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'))
166277 
166278 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
166279 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
166280           AND (l_actual_flag = 'A')) THEN
166281         XLA_AE_LINES_PKG.CreateGainOrLossLines(
166282           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
166283          ,p_application_id   => p_application_id
166284          ,p_amb_context_code => 'DEFAULT'
166285          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
166286          ,p_event_class_code => C_EVENT_CLASS_CODE
166287          ,p_event_type_code  => C_EVENT_TYPE_CODE
166288          
166289          ,p_gain_ccid        => -1
166290          ,p_loss_ccid        => -1
166291 
166292          ,p_actual_flag      => l_actual_flag
166293          ,p_enc_flag         => null
166294          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
166295          ,p_enc_g_l_ref      => null
166296          );
166297       END IF;
166298    END IF;
166299 END IF;
166300 
166301    ELSE
166302       --
166303       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
166304       --
166305       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166306          trace
166307             (p_msg      => 'Trancaction revesal option is Y'
166308             ,p_level    => C_LEVEL_STATEMENT
166309             ,p_module   => l_log_module);
166310       END IF;
166311    END IF;
166312 
166313 END LOOP;
166314 l_result := XLA_AE_LINES_PKG.InsertLines ;
166315 end loop;
166316 close line_cur;
166317 
166318 
166319 --
166320 -- insert headers into xla_ae_headers_gt table
166321 --
166322 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
166323 
166324 -- insert into errors table here.
166325 
166326 END LOOP;
166327 
166328 --
166329 -- 4865292
166330 --
166331 -- Compare g_hdr_extract_count with event count in
166332 -- CreateHeadersAndLines.
166333 --
166334 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
166335 
166336 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166337    trace (p_msg     => '# rows extracted from header extract objects '
166338                     || ' (running total): '
166339                     || g_hdr_extract_count
166340          ,p_level   => C_LEVEL_STATEMENT
166341          ,p_module  => l_log_module);
166342 END IF;
166343 
166344 CLOSE header_cur;
166345 --
166346 
166347 --
166348 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166349    trace
166350       (p_msg      => 'END of EventClass_270'
166351       ,p_level    => C_LEVEL_PROCEDURE
166352       ,p_module   => l_log_module);
166353 END IF;
166354 --
166355 RETURN l_result;
166356 EXCEPTION
166357 WHEN xla_exceptions_pkg.application_exception THEN
166358    
166359 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
166360 
166361    
166362 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
166363 
166364    RAISE;
166365 
166366 WHEN NO_DATA_FOUND THEN
166367 
166368 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
166369 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
166370 
166371 FOR header_record IN header_cur
166372 LOOP
166373     l_array_header_events(header_record.event_id) := header_record.event_id;
166374 END LOOP;
166375 
166376 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
166377 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
166378 
166379 fnd_file.put_line(fnd_file.LOG, '                    ');
166380 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
166381 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
166382 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
166383 
166384 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
166385 LOOP
166386 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
166387 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
166388         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
166389 	END IF;
166390 END LOOP;
166391 
166392 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
166393 fnd_file.put_line(fnd_file.LOG, '                    ');
166394 
166395 
166396 xla_exceptions_pkg.raise_message
166397       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_270');
166398 
166399 
166400 WHEN OTHERS THEN
166401    xla_exceptions_pkg.raise_message
166402       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_270');
166403 END EventClass_270;
166404 --
166405 
166406 ---------------------------------------
166407 --
166408 -- PRIVATE PROCEDURE
166409 --         insert_sources_271
166410 --
166411 ----------------------------------------
166412 --
166413 PROCEDURE insert_sources_271(
166414                                 p_target_ledger_id       IN NUMBER
166415                               , p_language               IN VARCHAR2
166416                               , p_sla_ledger_id          IN NUMBER
166417                               , p_pad_start_date         IN DATE
166418                               , p_pad_end_date           IN DATE
166419                          )
166420 IS
166421 
166422 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RCPT_REC_INSP_ALL';
166423 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RCPT_REC_INSP';
166424 p_apps_owner                   VARCHAR2(30);
166425 l_log_module                   VARCHAR2(240);
166426 BEGIN
166427 IF g_log_enabled THEN
166428       l_log_module := C_DEFAULT_MODULE||'.insert_sources_271';
166429 END IF;
166430 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166431 
166432       trace
166433          (p_msg      => 'BEGIN of insert_sources_271'
166434          ,p_level    => C_LEVEL_PROCEDURE
166435          ,p_module   => l_log_module);
166436 
166437 END IF;
166438 
166439 -- select APPS owner
166440 SELECT oracle_username
166441   INTO p_apps_owner
166442   FROM fnd_oracle_userid
166443  WHERE read_only_flag = 'U'
166444 ;
166445 
166446 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166447       trace
166448          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
166449                         ' - p_language = '||p_language||
166450                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
166451                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
166452                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
166453                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
166454          ,p_level    => C_LEVEL_STATEMENT
166455          ,p_module   => l_log_module);
166456 END IF;
166457 
166458 
166459 --
166460 INSERT INTO xla_diag_sources --hdr2
166461 (
166462         event_id
166463       , ledger_id
166464       , sla_ledger_id
166465       , description_language
166466       , object_name
166467       , object_type_code
166468       , line_number
166469       , source_application_id
166470       , source_type_code
166471       , source_code
166472       , source_value
166473       , source_meaning
166474       , created_by
166475       , creation_date
166476       , last_update_date
166477       , last_updated_by
166478       , last_update_login
166479       , program_update_date
166480       , program_application_id
166481       , program_id
166482       , request_id
166483 )
166484 SELECT
166485         event_id
166486       , p_target_ledger_id
166487       , p_sla_ledger_id
166488       , p_language
166489       , object_name
166490       , object_type_code
166491       , line_number
166492       , source_application_id
166493       , source_type_code
166494       , source_code
166495       , SUBSTR(source_value ,1,1996)
166496       , SUBSTR(source_meaning ,1,200)
166497       , xla_environment_pkg.g_Usr_Id
166498       , TRUNC(SYSDATE)
166499       , TRUNC(SYSDATE)
166500       , xla_environment_pkg.g_Usr_Id
166501       , xla_environment_pkg.g_Login_Id
166502       , TRUNC(SYSDATE)
166503       , xla_environment_pkg.g_Prog_Appl_Id
166504       , xla_environment_pkg.g_Prog_Id
166505       , xla_environment_pkg.g_Req_Id
166506   FROM (
166507        SELECT xet.event_id                  event_id
166508             , 0                          line_number
166509             , CASE r
166510                WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V' 
166511                 WHEN 2 THEN 'CST_XLA_RCV_HEADERS_V' 
166512                 WHEN 3 THEN 'CST_XLA_RCV_HEADERS_V' 
166513                 WHEN 4 THEN 'CST_XLA_RCV_HEADERS_V' 
166514                 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V' 
166515                 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V' 
166516                 
166517                ELSE null
166518               END                           object_name
166519             , CASE r
166520                 WHEN 1 THEN 'HEADER' 
166521                 WHEN 2 THEN 'HEADER' 
166522                 WHEN 3 THEN 'HEADER' 
166523                 WHEN 4 THEN 'HEADER' 
166524                 WHEN 5 THEN 'HEADER' 
166525                 WHEN 6 THEN 'HEADER' 
166526                 
166527                 ELSE null
166528               END                           object_type_code
166529             , CASE r
166530                 WHEN 1 THEN '707' 
166531                 WHEN 2 THEN '707' 
166532                 WHEN 3 THEN '707' 
166533                 WHEN 4 THEN '707' 
166534                 WHEN 5 THEN '707' 
166535                 WHEN 6 THEN '707' 
166536                 
166537                 ELSE null
166538               END                           source_application_id
166539             , 'S'             source_type_code
166540             , CASE r
166541                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
166542                 WHEN 2 THEN 'CURRENCY_CODE' 
166543                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
166544                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
166545                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
166546                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
166547                 
166548                 ELSE null
166549               END                           source_code
166550             , CASE r
166551                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
166552                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
166553                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
166554                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
166555                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
166556                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
166557                 
166558                 ELSE null
166559               END                           source_value
166560             , CASE r
166561                 WHEN 1 THEN fvl12.meaning
166562                 WHEN 6 THEN fvl38.meaning
166563                 
166564                 ELSE null
166565               END               source_meaning
166566          FROM xla_events_gt     xet  
166567       , CST_XLA_RCV_HEADERS_V  h1
166568   , fnd_lookup_values    fvl12
166569   , fnd_lookup_values    fvl38
166570              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
166571          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
166572            AND xet.event_class_code = C_EVENT_CLASS_CODE
166573               AND h1.event_id = xet.event_id
166574    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
166575   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
166576   AND fvl12.view_application_id(+) = 700
166577   AND fvl12.language(+)            = USERENV('LANG')
166578      AND fvl38.lookup_type(+)         = 'YES_NO'
166579   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
166580   AND fvl38.view_application_id(+) = 0
166581   AND fvl38.language(+)            = USERENV('LANG')
166582   
166583 )
166584 ;
166585 --
166586 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166587 
166588       trace
166589          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
166590          ,p_level    => C_LEVEL_STATEMENT
166591          ,p_module   => l_log_module);
166592 
166593 END IF;
166594 --
166595 
166596 
166597 
166598 --
166599 INSERT INTO xla_diag_sources  --line2
166600 (
166601         event_id
166602       , ledger_id
166603       , sla_ledger_id
166604       , description_language
166605       , object_name
166606       , object_type_code
166607       , line_number
166608       , source_application_id
166609       , source_type_code
166610       , source_code
166611       , source_value
166612       , source_meaning
166613       , created_by
166614       , creation_date
166615       , last_update_date
166616       , last_updated_by
166617       , last_update_login
166618       , program_update_date
166619       , program_application_id
166620       , program_id
166621       , request_id
166622 )
166623 SELECT  event_id
166624       , p_target_ledger_id
166625       , p_sla_ledger_id
166626       , p_language
166627       , object_name
166628       , object_type_code
166629       , line_number
166630       , source_application_id
166631       , source_type_code
166632       , source_code
166633       , SUBSTR(source_value,1,1996)
166634       , SUBSTR(source_meaning ,1,200)
166635       , xla_environment_pkg.g_Usr_Id
166636       , TRUNC(SYSDATE)
166637       , TRUNC(SYSDATE)
166638       , xla_environment_pkg.g_Usr_Id
166639       , xla_environment_pkg.g_Login_Id
166640       , TRUNC(SYSDATE)
166641       , xla_environment_pkg.g_Prog_Appl_Id
166642       , xla_environment_pkg.g_Prog_Id
166643       , xla_environment_pkg.g_Req_Id
166644   FROM (
166645        SELECT xet.event_id                  event_id
166646             , l2.line_number                 line_number
166647             , CASE r
166648                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
166649                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
166650                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
166651                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
166652                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
166653                 
166654                ELSE null
166655               END                           object_name
166656             , CASE r
166657                 WHEN 1 THEN 'LINE' 
166658                 WHEN 2 THEN 'LINE' 
166659                 WHEN 3 THEN 'LINE' 
166660                 WHEN 4 THEN 'LINE' 
166661                 WHEN 5 THEN 'LINE' 
166662                 
166663                 ELSE null
166664               END                           object_type_code
166665             , CASE r
166666                 WHEN 1 THEN '707' 
166667                 WHEN 2 THEN '707' 
166668                 WHEN 3 THEN '707' 
166669                 WHEN 4 THEN '707' 
166670                 WHEN 5 THEN '707' 
166671                 
166672                 ELSE null
166673               END                           source_application_id
166674             , 'S'             source_type_code
166675             , CASE r
166676                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
166677                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
166678                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
166679                 WHEN 4 THEN 'ENTERED_AMOUNT' 
166680                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
166681                 
166682                 ELSE null
166683               END                           source_code
166684             , CASE r
166685                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
166686                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
166687                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
166688                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
166689                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
166690                 
166691                 ELSE null
166692               END                           source_value
166693             , null              source_meaning
166694          FROM  xla_events_gt     xet  
166695         , CST_XLA_RCV_LINES_V  l2
166696             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
166697         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
166698           AND xet.event_class_code = C_EVENT_CLASS_CODE
166699             AND l2.event_id          = xet.event_id
166700 
166701 )
166702 ;
166703 --
166704 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166705 
166706       trace
166707          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
166708          ,p_level    => C_LEVEL_STATEMENT
166709          ,p_module   => l_log_module);
166710 
166711 END IF;
166712 
166713 
166714 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166715       trace
166716          (p_msg      => 'END of insert_sources_271'
166717          ,p_level    => C_LEVEL_PROCEDURE
166718          ,p_module   => l_log_module);
166719 END IF;
166720 EXCEPTION
166721   WHEN xla_exceptions_pkg.application_exception THEN
166722       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
166723             trace
166724                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
166725                ,p_level    => C_LEVEL_EXCEPTION
166726                ,p_module   => l_log_module);
166727       END IF;
166728       RAISE;
166729   WHEN OTHERS THEN
166730       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
166731             trace
166732                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
166733                ,p_level    => C_LEVEL_EXCEPTION
166734                ,p_module   => l_log_module);
166735        END IF;
166736        xla_exceptions_pkg.raise_message
166737            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_271');
166738 END insert_sources_271;
166739 --
166740 
166741 ---------------------------------------
166742 --
166743 -- PRIVATE FUNCTION
166744 --         EventClass_271
166745 --
166746 ----------------------------------------
166747 --
166748 FUNCTION EventClass_271
166749        (p_application_id         IN NUMBER
166750        ,p_base_ledger_id         IN NUMBER
166751        ,p_target_ledger_id       IN NUMBER
166752        ,p_language               IN VARCHAR2
166753        ,p_currency_code          IN VARCHAR2
166754        ,p_sla_ledger_id          IN NUMBER
166755        ,p_pad_start_date         IN DATE
166756        ,p_pad_end_date           IN DATE
166757        ,p_primary_ledger_id      IN NUMBER)
166758 RETURN BOOLEAN IS
166759 --
166760 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RCPT_REC_INSP_ALL';
166761 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RCPT_REC_INSP';
166762 
166763 l_calculate_acctd_flag   VARCHAR2(1) :='N';
166764 l_calculate_g_l_flag     VARCHAR2(1) :='N';
166765 --
166766 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166767 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166768 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166769 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166770 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166771 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166772 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166773 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166774 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166775 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166776 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166777 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166778 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166779 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166780 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166781 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166782 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166783 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166784 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166785 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166786 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166787 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166788 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
166789 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166790 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
166791 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
166792 
166793 l_event_id                             NUMBER;
166794 l_previous_event_id                    NUMBER;
166795 l_first_event_id                       NUMBER;
166796 l_last_event_id                        NUMBER;
166797 
166798 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
166799 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
166800 --
166801 --
166802 l_result                    BOOLEAN := TRUE;
166803 l_rows                      NUMBER  := 1000;
166804 l_event_type_name           VARCHAR2(80) := 'All';
166805 l_event_class_name          VARCHAR2(80) := 'Receipt into Receiving Inspection';
166806 l_description               VARCHAR2(4000);
166807 l_transaction_reversal      NUMBER;
166808 l_ae_header_id              NUMBER;
166809 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
166810 l_log_module                VARCHAR2(240);
166811 --
166812 l_acct_reversal_source      VARCHAR2(30);
166813 l_trx_reversal_source       VARCHAR2(30);
166814 
166815 l_continue_with_lines       BOOLEAN := TRUE;
166816 --
166817 l_acc_rev_gl_date_source    DATE;                      -- 4262811
166818 --
166819 type t_array_event_id is table of number index by binary_integer;
166820 
166821 l_rec_array_event                    t_rec_array_event;
166822 l_null_rec_array_event               t_rec_array_event;
166823 l_array_ae_header_id                 xla_number_array_type;
166824 l_actual_flag                        VARCHAR2(1) := NULL;
166825 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
166826 l_balance_type_code                  VARCHAR2(1) :=NULL;
166827 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
166828 
166829 --
166830 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
166831 --
166832 
166833 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
166834 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
166835 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
166836 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
166837 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
166838 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
166839 
166840 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
166841 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
166842 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
166843 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
166844 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
166845 
166846 l_array_source_12              t_array_source_12;
166847 l_array_source_12_meaning      t_array_lookup_meaning;
166848 l_array_source_15              t_array_source_15;
166849 l_array_source_19              t_array_source_19;
166850 l_array_source_20              t_array_source_20;
166851 l_array_source_21              t_array_source_21;
166852 l_array_source_38              t_array_source_38;
166853 l_array_source_38_meaning      t_array_lookup_meaning;
166854 
166855 l_array_source_4      t_array_source_4;
166856 l_array_source_5      t_array_source_5;
166857 l_array_source_11      t_array_source_11;
166858 l_array_source_18      t_array_source_18;
166859 l_array_source_22      t_array_source_22;
166860 
166861 --
166862 CURSOR header_cur
166863 IS
166864 SELECT /*+ leading(xet) cardinality(xet,1) */
166865 -- Event Class Code: RCPT_REC_INSP
166866     xet.entity_id
166867    ,xet.legal_entity_id
166868    ,xet.entity_code
166869    ,xet.transaction_number
166870    ,xet.event_id
166871    ,xet.event_class_code
166872    ,xet.event_type_code
166873    ,xet.event_number
166874    ,xet.event_date
166875    ,xet.transaction_date
166876    ,xet.reference_num_1
166877    ,xet.reference_num_2
166878    ,xet.reference_num_3
166879    ,xet.reference_num_4
166880    ,xet.reference_char_1
166881    ,xet.reference_char_2
166882    ,xet.reference_char_3
166883    ,xet.reference_char_4
166884    ,xet.reference_date_1
166885    ,xet.reference_date_2
166886    ,xet.reference_date_3
166887    ,xet.reference_date_4
166888    ,xet.event_created_by
166889    ,xet.budgetary_control_flag 
166890   , h1.DISTRIBUTION_TYPE    source_12
166891   , fvl12.meaning   source_12_meaning
166892   , h1.CURRENCY_CODE    source_15
166893   , h1.CURRENCY_CONVERSION_DATE    source_19
166894   , h1.CURRENCY_CONVERSION_RATE    source_20
166895   , h1.CURRENCY_CONVERSION_TYPE    source_21
166896   , h1.TRANSFER_TO_GL_INDICATOR    source_38
166897   , fvl38.meaning   source_38_meaning
166898   FROM xla_events_gt     xet 
166899   , CST_XLA_RCV_HEADERS_V  h1
166900   , fnd_lookup_values    fvl12
166901   , fnd_lookup_values    fvl38
166902  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
166903    and xet.event_class_code = C_EVENT_CLASS_CODE
166904    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
166905    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
166906   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
166907   AND fvl12.view_application_id(+) = 700
166908   AND fvl12.language(+)            = USERENV('LANG')
166909      AND fvl38.lookup_type(+)         = 'YES_NO'
166910   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
166911   AND fvl38.view_application_id(+) = 0
166912   AND fvl38.language(+)            = USERENV('LANG')
166913   
166914  ORDER BY event_id
166915 ;
166916 
166917 
166918 --
166919 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
166920 IS
166921 SELECT  /*+ leading(xet) cardinality(xet,1) */
166922 -- Event Class Code: RCPT_REC_INSP
166923     xet.entity_id
166924    ,xet.legal_entity_id
166925    ,xet.entity_code
166926    ,xet.transaction_number
166927    ,xet.event_id
166928    ,xet.event_class_code
166929    ,xet.event_type_code
166930    ,xet.event_number
166931    ,xet.event_date
166932    ,xet.transaction_date
166933    ,xet.reference_num_1
166934    ,xet.reference_num_2
166935    ,xet.reference_num_3
166936    ,xet.reference_num_4
166937    ,xet.reference_char_1
166938    ,xet.reference_char_2
166939    ,xet.reference_char_3
166940    ,xet.reference_char_4
166941    ,xet.reference_date_1
166942    ,xet.reference_date_2
166943    ,xet.reference_date_3
166944    ,xet.reference_date_4
166945    ,xet.event_created_by
166946    ,xet.budgetary_control_flag
166947  , l2.LINE_NUMBER  
166948   , l2.CODE_COMBINATION_ID    source_4
166949   , l2.RCV_ACCOUNTING_LINE_TYPE    source_5
166950   , l2.DISTRIBUTION_IDENTIFIER    source_11
166951   , l2.ENTERED_AMOUNT    source_18
166952   , l2.ACCOUNTED_AMOUNT    source_22
166953   FROM xla_events_gt     xet 
166954   , CST_XLA_RCV_LINES_V  l2
166955  WHERE xet.event_id between x_first_event_id and x_last_event_id
166956    and xet.event_date between p_pad_start_date and p_pad_end_date
166957    and xet.event_class_code = C_EVENT_CLASS_CODE
166958    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
166959 ;
166960 
166961 --
166962 BEGIN
166963 IF g_log_enabled THEN
166964    l_log_module := C_DEFAULT_MODULE||'.EventClass_271';
166965 END IF;
166966 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166967    trace
166968       (p_msg      => 'BEGIN of EventClass_271'
166969       ,p_level    => C_LEVEL_PROCEDURE
166970       ,p_module   => l_log_module);
166971 END IF;
166972 
166973 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166974    trace
166975       (p_msg      => 'p_application_id = '||p_application_id||
166976                      ' - p_base_ledger_id = '||p_base_ledger_id||
166977                      ' - p_target_ledger_id  = '||p_target_ledger_id||
166978                      ' - p_language = '||p_language||
166979                      ' - p_currency_code = '||p_currency_code||
166980                      ' - p_sla_ledger_id = '||p_sla_ledger_id
166981       ,p_level    => C_LEVEL_STATEMENT
166982       ,p_module   => l_log_module);
166983 END IF;
166984 --
166985 -- initialze arrays
166986 --
166987 g_array_event.DELETE;
166988 l_rec_array_event := l_null_rec_array_event;
166989 --
166990 --------------------------------------
166991 -- 4262811 Initialze MPA Line Number
166992 --------------------------------------
166993 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
166994 
166995 --
166996 
166997 --
166998 OPEN header_cur;
166999 --
167000 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167001    trace
167002    (p_msg      => 'SQL - FETCH header_cur'
167003    ,p_level    => C_LEVEL_STATEMENT
167004    ,p_module   => l_log_module);
167005 END IF;
167006 --
167007 LOOP
167008 FETCH header_cur BULK COLLECT INTO
167009         l_array_entity_id
167010       , l_array_legal_entity_id
167011       , l_array_entity_code
167012       , l_array_transaction_num
167013       , l_array_event_id
167014       , l_array_class_code
167015       , l_array_event_type
167016       , l_array_event_number
167017       , l_array_event_date
167018       , l_array_transaction_date
167019       , l_array_reference_num_1
167020       , l_array_reference_num_2
167021       , l_array_reference_num_3
167022       , l_array_reference_num_4
167023       , l_array_reference_char_1
167024       , l_array_reference_char_2
167025       , l_array_reference_char_3
167026       , l_array_reference_char_4
167027       , l_array_reference_date_1
167028       , l_array_reference_date_2
167029       , l_array_reference_date_3
167030       , l_array_reference_date_4
167031       , l_array_event_created_by
167032       , l_array_budgetary_control_flag 
167033       , l_array_source_12
167034       , l_array_source_12_meaning
167035       , l_array_source_15
167036       , l_array_source_19
167037       , l_array_source_20
167038       , l_array_source_21
167039       , l_array_source_38
167040       , l_array_source_38_meaning
167041       LIMIT l_rows;
167042 --
167043 IF (C_LEVEL_EVENT >= g_log_level) THEN
167044    trace
167045    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
167046    ,p_level    => C_LEVEL_EVENT
167047    ,p_module   => l_log_module);
167048 END IF;
167049 --
167050 EXIT WHEN l_array_entity_id.COUNT = 0;
167051 
167052 -- initialize arrays
167053 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
167054 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
167055 
167056 --
167057 -- Bug 4458708
167058 --
167059 XLA_AE_LINES_PKG.g_LineNumber := 0;
167060 
167061 
167062 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
167063 g_last_hdr_idx := l_array_event_id.LAST;
167064 --
167065 -- loop for the headers. Each iteration is for each header extract row
167066 -- fetched in header cursor
167067 --
167068 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
167069 
167070 --
167071 -- set event info as cache for other routines to refer event attributes
167072 --
167073 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
167074    (p_application_id           => p_application_id
167075    ,p_primary_ledger_id        => p_primary_ledger_id
167076    ,p_base_ledger_id           => p_base_ledger_id
167077    ,p_target_ledger_id         => p_target_ledger_id
167078    ,p_entity_id                => l_array_entity_id(hdr_idx)
167079    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
167080    ,p_entity_code              => l_array_entity_code(hdr_idx)
167081    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
167082    ,p_event_id                 => l_array_event_id(hdr_idx)
167083    ,p_event_class_code         => l_array_class_code(hdr_idx)
167084    ,p_event_type_code          => l_array_event_type(hdr_idx)
167085    ,p_event_number             => l_array_event_number(hdr_idx)
167086    ,p_event_date               => l_array_event_date(hdr_idx)
167087    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
167088    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
167089    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
167090    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
167091    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
167092    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
167093    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
167094    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
167095    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
167096    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
167097    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
167098    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
167099    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
167100    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
167101    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
167102 
167103 --
167104 -- set the status of entry to C_VALID (0)
167105 --
167106 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
167107 
167108 --
167109 -- initialize a row for ae header
167110 --
167111 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
167112 
167113 l_event_id := l_array_event_id(hdr_idx);
167114 
167115 --
167116 -- storing the hdr_idx for event. May be used by line cursor.
167117 --
167118 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
167119 
167120 --
167121 -- store sources from header extract. This can be improved to
167122 -- store only those sources from header extract that may be used in lines
167123 --
167124 
167125 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
167126 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
167127 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
167128 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
167129 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
167130 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
167131 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
167132 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
167133 
167134 --
167135 -- initilaize the status of ae headers for diffrent balance types
167136 -- the status is initialised to C_NOT_CREATED (2)
167137 --
167138 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167139 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167140 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167141 
167142 --
167143 -- call api to validate and store accounting attributes for header
167144 --
167145 
167146 ------------------------------------------------------------
167147 -- Accrual Reversal : to get date for Standard Source (NONE)
167148 ------------------------------------------------------------
167149 l_acc_rev_gl_date_source := NULL;
167150 
167151      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
167152       l_rec_acct_attrs.array_date_value(1) := 
167153 xla_ae_sources_pkg.GetSystemSourceDate(
167154    p_source_code           => 'XLA_REFERENCE_DATE_1'
167155  , p_source_type_code      => 'Y'
167156  , p_source_application_id =>  602
167157 );
167158      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
167159       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
167160 
167161 
167162 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
167163 
167164 XLA_AE_HEADER_PKG.SetJeCategoryName;
167165 
167166 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
167167 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
167168 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
167169 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
167170 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
167171 
167172 
167173 -- No header level analytical criteria
167174 
167175 --
167176 --accounting attribute enhancement, bug 3612931
167177 --
167178 l_trx_reversal_source := SUBSTR(NULL, 1,30);
167179 
167180 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
167181    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
167182 
167183    xla_accounting_err_pkg.build_message
167184       (p_appli_s_name            => 'XLA'
167185       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
167186       ,p_token_1                 => 'ACCT_ATTR_NAME'
167187       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
167188       ,p_token_2                 => 'PRODUCT_NAME'
167189       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
167190       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
167191       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
167192       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
167193 
167194 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
167195    --
167196    -- following sets the accounting attributes needed to reverse
167197    -- accounting for a distributeion
167198    --
167199    xla_ae_lines_pkg.SetTrxReversalAttrs
167200       (p_event_id              => l_event_id
167201       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
167202       ,p_trx_reversal_source   => l_trx_reversal_source);
167203 
167204 END IF;
167205 
167206 
167207 ----------------------------------------------------------------
167208 -- 4262811 -  update the header statuses to invalid in need be
167209 ----------------------------------------------------------------
167210 --
167211 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
167212 
167213 
167214   -----------------------------------------------
167215   -- No accrual reversal for the event class/type
167216   -----------------------------------------------
167217 ----------------------------------------------------------------
167218 
167219 --
167220 -- this ends the header loop iteration for one bulk fetch
167221 --
167222 END LOOP;
167223 
167224 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
167225 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
167226 
167227 --
167228 -- insert dummy rows into lines gt table that were created due to
167229 -- transaction reversals
167230 --
167231 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
167232    l_result := XLA_AE_LINES_PKG.InsertLines;
167233 END IF;
167234 
167235 --
167236 -- reset the temp_line_num for each set of events fetched from header
167237 -- cursor rather than doing it for each new event in line cursor
167238 -- Bug 3939231
167239 --
167240 xla_ae_lines_pkg.g_temp_line_num := 0;
167241 
167242 
167243 
167244 --
167245 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
167246 --
167247 --
167248 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167249 
167250       trace
167251          (p_msg      => 'SQL - FETCH line_cur'
167252          ,p_level    => C_LEVEL_STATEMENT
167253          ,p_module   => l_log_module);
167254 
167255 END IF;
167256 --
167257 --
167258 LOOP
167259   --
167260   FETCH line_cur BULK COLLECT INTO
167261         l_array_entity_id
167262       , l_array_legal_entity_id
167263       , l_array_entity_code
167264       , l_array_transaction_num
167265       , l_array_event_id
167266       , l_array_class_code
167267       , l_array_event_type
167268       , l_array_event_number
167269       , l_array_event_date
167270       , l_array_transaction_date
167271       , l_array_reference_num_1
167272       , l_array_reference_num_2
167273       , l_array_reference_num_3
167274       , l_array_reference_num_4
167275       , l_array_reference_char_1
167276       , l_array_reference_char_2
167277       , l_array_reference_char_3
167278       , l_array_reference_char_4
167279       , l_array_reference_date_1
167280       , l_array_reference_date_2
167281       , l_array_reference_date_3
167282       , l_array_reference_date_4
167283       , l_array_event_created_by
167284       , l_array_budgetary_control_flag
167285       , l_array_extract_line_num 
167286       , l_array_source_4
167287       , l_array_source_5
167288       , l_array_source_11
167289       , l_array_source_18
167290       , l_array_source_22
167291       LIMIT l_rows;
167292 
167293   --
167294   IF (C_LEVEL_EVENT >= g_log_level) THEN
167295             trace
167296                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
167297                ,p_level    => C_LEVEL_EVENT
167298                ,p_module   => l_log_module);
167299   END IF;
167300   --
167301   EXIT WHEN l_array_entity_id.count = 0;
167302 
167303   XLA_AE_LINES_PKG.g_rec_lines := null;
167304 
167305 --
167306 -- Bug 4458708
167307 --
167308 XLA_AE_LINES_PKG.g_LineNumber := 0;
167309 --
167310 --
167311 
167312 FOR Idx IN 1..l_array_event_id.count LOOP
167313    --
167314    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
167315    --
167316    l_event_id := l_array_event_id(idx);  -- 5648433
167317 
167318    --
167319    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
167320    --
167321 
167322    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
167323              (g_array_event(l_event_id).array_value_num('header_index'))
167324          ,'N'
167325          ) <> 'Y'
167326    THEN
167327       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167328          trace
167329             (p_msg      => 'Trancaction revesal option is not Y '
167330             ,p_level    => C_LEVEL_STATEMENT
167331             ,p_module   => l_log_module);
167332       END IF;
167333 
167334 --
167335 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
167336 --
167337 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
167338 --
167339 -- set event info as cache for other routines to refer event attributes
167340 --
167341 
167342 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
167343    l_previous_event_id := l_event_id;
167344 
167345    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
167346       (p_application_id           => p_application_id
167347       ,p_primary_ledger_id        => p_primary_ledger_id
167348       ,p_base_ledger_id           => p_base_ledger_id
167349       ,p_target_ledger_id         => p_target_ledger_id
167350       ,p_entity_id                => l_array_entity_id(Idx)
167351       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
167352       ,p_entity_code              => l_array_entity_code(Idx)
167353       ,p_transaction_num          => l_array_transaction_num(Idx)
167354       ,p_event_id                 => l_array_event_id(Idx)
167355       ,p_event_class_code         => l_array_class_code(Idx)
167356       ,p_event_type_code          => l_array_event_type(Idx)
167357       ,p_event_number             => l_array_event_number(Idx)
167358       ,p_event_date               => l_array_event_date(Idx)
167359       ,p_transaction_date         => l_array_transaction_date(Idx)
167360       ,p_reference_num_1          => l_array_reference_num_1(Idx)
167361       ,p_reference_num_2          => l_array_reference_num_2(Idx)
167362       ,p_reference_num_3          => l_array_reference_num_3(Idx)
167363       ,p_reference_num_4          => l_array_reference_num_4(Idx)
167364       ,p_reference_char_1         => l_array_reference_char_1(Idx)
167365       ,p_reference_char_2         => l_array_reference_char_2(Idx)
167366       ,p_reference_char_3         => l_array_reference_char_3(Idx)
167367       ,p_reference_char_4         => l_array_reference_char_4(Idx)
167368       ,p_reference_date_1         => l_array_reference_date_1(Idx)
167369       ,p_reference_date_2         => l_array_reference_date_2(Idx)
167370       ,p_reference_date_3         => l_array_reference_date_3(Idx)
167371       ,p_reference_date_4         => l_array_reference_date_4(Idx)
167372       ,p_event_created_by         => l_array_event_created_by(Idx)
167373       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
167374        --
167375 END IF;
167376 
167377 
167378 
167379 --
167380 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
167381 
167382 l_acct_reversal_source := SUBSTR(NULL, 1,30);
167383 
167384 IF l_continue_with_lines THEN
167385    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
167386       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
167387 
167388       xla_accounting_err_pkg.build_message
167389          (p_appli_s_name            => 'XLA'
167390          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
167391          ,p_token_1                 => 'LINE_NUMBER'
167392          ,p_value_1                 => l_array_extract_line_num(Idx)
167393          ,p_token_2                 => 'PRODUCT_NAME'
167394          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
167395          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
167396          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
167397          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
167398 
167399    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
167400       --
167401       -- following sets the accounting attributes needed to reverse
167402       -- accounting for a distributeion
167403       --
167404 
167405       --
167406       -- 5217187
167407       --
167408       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
167409       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
167410                                        g_array_event(l_event_id).array_value_num('header_index'));
167411       --
167412       --
167413 
167414       -- No reversal code generated
167415 
167416       xla_ae_lines_pkg.SetAcctReversalAttrs
167417          (p_event_id             => l_event_id
167418          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
167419          ,p_calculate_acctd_flag => l_calculate_acctd_flag
167420          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
167421    END IF;
167422 
167423    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
167424        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
167425 
167426 --
167427 AcctLineType_9 (
167428  p_application_id  => p_application_id
167429  ,p_event_id     => l_event_id
167430  ,p_calculate_acctd_flag => l_calculate_acctd_flag
167431  ,p_calculate_g_l_flag => l_calculate_g_l_flag
167432  ,p_actual_flag => l_actual_flag
167433  ,p_balance_type_code => l_balance_type_code
167434  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
167435  
167436  , p_source_4 => l_array_source_4(Idx)
167437  , p_source_5 => l_array_source_5(Idx)
167438  , p_source_11 => l_array_source_11(Idx)
167439  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
167440  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
167441  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
167442  , p_source_18 => l_array_source_18(Idx)
167443  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
167444  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
167445  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
167446  , p_source_22 => l_array_source_22(Idx)
167447  );
167448 If(l_balance_type_code = 'A') THEN
167449   l_actual_gain_loss_ref := l_gain_or_loss_ref;
167450 END IF;
167451 
167452 --
167453 
167454 
167455 --
167456 AcctLineType_13 (
167457  p_application_id  => p_application_id
167458  ,p_event_id     => l_event_id
167459  ,p_calculate_acctd_flag => l_calculate_acctd_flag
167460  ,p_calculate_g_l_flag => l_calculate_g_l_flag
167461  ,p_actual_flag => l_actual_flag
167462  ,p_balance_type_code => l_balance_type_code
167463  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
167464  
167465  , p_source_4 => l_array_source_4(Idx)
167466  , p_source_5 => l_array_source_5(Idx)
167467  , p_source_11 => l_array_source_11(Idx)
167468  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
167469  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
167470  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
167471  , p_source_18 => l_array_source_18(Idx)
167472  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
167473  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
167474  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
167475  , p_source_22 => l_array_source_22(Idx)
167476  );
167477 If(l_balance_type_code = 'A') THEN
167478   l_actual_gain_loss_ref := l_gain_or_loss_ref;
167479 END IF;
167480 
167481 --
167482 
167483 
167484 --
167485 AcctLineType_50 (
167486  p_application_id  => p_application_id
167487  ,p_event_id     => l_event_id
167488  ,p_calculate_acctd_flag => l_calculate_acctd_flag
167489  ,p_calculate_g_l_flag => l_calculate_g_l_flag
167490  ,p_actual_flag => l_actual_flag
167491  ,p_balance_type_code => l_balance_type_code
167492  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
167493  
167494  , p_source_4 => l_array_source_4(Idx)
167495  , p_source_5 => l_array_source_5(Idx)
167496  , p_source_11 => l_array_source_11(Idx)
167497  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
167498  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
167499  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
167500  , p_source_18 => l_array_source_18(Idx)
167501  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
167502  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
167503  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
167504  , p_source_22 => l_array_source_22(Idx)
167505  );
167506 If(l_balance_type_code = 'A') THEN
167507   l_actual_gain_loss_ref := l_gain_or_loss_ref;
167508 END IF;
167509 
167510 --
167511 
167512 
167513 --
167514 AcctLineType_57 (
167515  p_application_id  => p_application_id
167516  ,p_event_id     => l_event_id
167517  ,p_calculate_acctd_flag => l_calculate_acctd_flag
167518  ,p_calculate_g_l_flag => l_calculate_g_l_flag
167519  ,p_actual_flag => l_actual_flag
167520  ,p_balance_type_code => l_balance_type_code
167521  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
167522  
167523  , p_source_4 => l_array_source_4(Idx)
167524  , p_source_5 => l_array_source_5(Idx)
167525  , p_source_11 => l_array_source_11(Idx)
167526  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
167527  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
167528  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
167529  , p_source_18 => l_array_source_18(Idx)
167530  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
167531  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
167532  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
167533  , p_source_22 => l_array_source_22(Idx)
167534  );
167535 If(l_balance_type_code = 'A') THEN
167536   l_actual_gain_loss_ref := l_gain_or_loss_ref;
167537 END IF;
167538 
167539 --
167540 
167541 
167542 --
167543 AcctLineType_156 (
167544  p_application_id  => p_application_id
167545  ,p_event_id     => l_event_id
167546  ,p_calculate_acctd_flag => l_calculate_acctd_flag
167547  ,p_calculate_g_l_flag => l_calculate_g_l_flag
167548  ,p_actual_flag => l_actual_flag
167549  ,p_balance_type_code => l_balance_type_code
167550  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
167551  
167552  , p_source_4 => l_array_source_4(Idx)
167553  , p_source_5 => l_array_source_5(Idx)
167554  , p_source_11 => l_array_source_11(Idx)
167555  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
167556  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
167557  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
167558  , p_source_18 => l_array_source_18(Idx)
167559  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
167560  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
167561  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
167562  , p_source_22 => l_array_source_22(Idx)
167563  );
167564 If(l_balance_type_code = 'A') THEN
167565   l_actual_gain_loss_ref := l_gain_or_loss_ref;
167566 END IF;
167567 
167568 --
167569 
167570 
167571 --
167572 AcctLineType_231 (
167573  p_application_id  => p_application_id
167574  ,p_event_id     => l_event_id
167575  ,p_calculate_acctd_flag => l_calculate_acctd_flag
167576  ,p_calculate_g_l_flag => l_calculate_g_l_flag
167577  ,p_actual_flag => l_actual_flag
167578  ,p_balance_type_code => l_balance_type_code
167579  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
167580  
167581  , p_source_4 => l_array_source_4(Idx)
167582  , p_source_5 => l_array_source_5(Idx)
167583  , p_source_11 => l_array_source_11(Idx)
167584  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
167585  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
167586  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
167587  , p_source_18 => l_array_source_18(Idx)
167588  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
167589  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
167590  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
167591  , p_source_22 => l_array_source_22(Idx)
167592  );
167593 If(l_balance_type_code = 'A') THEN
167594   l_actual_gain_loss_ref := l_gain_or_loss_ref;
167595 END IF;
167596 
167597 --
167598 
167599       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
167600       -- or secondary ledger that has different currency with primary
167601       -- or alc that is calculated by sla
167602       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
167603             (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'))
167604 
167605 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
167606 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
167607           AND (l_actual_flag = 'A')) THEN
167608         XLA_AE_LINES_PKG.CreateGainOrLossLines(
167609           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
167610          ,p_application_id   => p_application_id
167611          ,p_amb_context_code => 'DEFAULT'
167612          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
167613          ,p_event_class_code => C_EVENT_CLASS_CODE
167614          ,p_event_type_code  => C_EVENT_TYPE_CODE
167615          
167616          ,p_gain_ccid        => -1
167617          ,p_loss_ccid        => -1
167618 
167619          ,p_actual_flag      => l_actual_flag
167620          ,p_enc_flag         => null
167621          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
167622          ,p_enc_g_l_ref      => null
167623          );
167624       END IF;
167625    END IF;
167626 END IF;
167627 
167628    ELSE
167629       --
167630       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
167631       --
167632       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167633          trace
167634             (p_msg      => 'Trancaction revesal option is Y'
167635             ,p_level    => C_LEVEL_STATEMENT
167636             ,p_module   => l_log_module);
167637       END IF;
167638    END IF;
167639 
167640 END LOOP;
167641 l_result := XLA_AE_LINES_PKG.InsertLines ;
167642 end loop;
167643 close line_cur;
167644 
167645 
167646 --
167647 -- insert headers into xla_ae_headers_gt table
167648 --
167649 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
167650 
167651 -- insert into errors table here.
167652 
167653 END LOOP;
167654 
167655 --
167656 -- 4865292
167657 --
167658 -- Compare g_hdr_extract_count with event count in
167659 -- CreateHeadersAndLines.
167660 --
167661 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
167662 
167663 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167664    trace (p_msg     => '# rows extracted from header extract objects '
167665                     || ' (running total): '
167666                     || g_hdr_extract_count
167667          ,p_level   => C_LEVEL_STATEMENT
167668          ,p_module  => l_log_module);
167669 END IF;
167670 
167671 CLOSE header_cur;
167672 --
167673 
167674 --
167675 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167676    trace
167677       (p_msg      => 'END of EventClass_271'
167678       ,p_level    => C_LEVEL_PROCEDURE
167679       ,p_module   => l_log_module);
167680 END IF;
167681 --
167682 RETURN l_result;
167683 EXCEPTION
167684 WHEN xla_exceptions_pkg.application_exception THEN
167685    
167686 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
167687 
167688    
167689 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
167690 
167691    RAISE;
167692 
167693 WHEN NO_DATA_FOUND THEN
167694 
167695 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
167696 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
167697 
167698 FOR header_record IN header_cur
167699 LOOP
167700     l_array_header_events(header_record.event_id) := header_record.event_id;
167701 END LOOP;
167702 
167703 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
167704 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
167705 
167706 fnd_file.put_line(fnd_file.LOG, '                    ');
167707 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
167708 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
167709 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
167710 
167711 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
167712 LOOP
167713 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
167714 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
167715         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
167716 	END IF;
167717 END LOOP;
167718 
167719 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
167720 fnd_file.put_line(fnd_file.LOG, '                    ');
167721 
167722 
167723 xla_exceptions_pkg.raise_message
167724       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_271');
167725 
167726 
167727 WHEN OTHERS THEN
167728    xla_exceptions_pkg.raise_message
167729       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_271');
167730 END EventClass_271;
167731 --
167732 
167733 ---------------------------------------
167734 --
167735 -- PRIVATE PROCEDURE
167736 --         insert_sources_272
167737 --
167738 ----------------------------------------
167739 --
167740 PROCEDURE insert_sources_272(
167741                                 p_target_ledger_id       IN NUMBER
167742                               , p_language               IN VARCHAR2
167743                               , p_sla_ledger_id          IN NUMBER
167744                               , p_pad_start_date         IN DATE
167745                               , p_pad_end_date           IN DATE
167746                          )
167747 IS
167748 
167749 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETR_PRICE_ADJ_DEL_ALL';
167750 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RETR_PRICE_ADJ_DEL';
167751 p_apps_owner                   VARCHAR2(30);
167752 l_log_module                   VARCHAR2(240);
167753 BEGIN
167754 IF g_log_enabled THEN
167755       l_log_module := C_DEFAULT_MODULE||'.insert_sources_272';
167756 END IF;
167757 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167758 
167759       trace
167760          (p_msg      => 'BEGIN of insert_sources_272'
167761          ,p_level    => C_LEVEL_PROCEDURE
167762          ,p_module   => l_log_module);
167763 
167764 END IF;
167765 
167766 -- select APPS owner
167767 SELECT oracle_username
167768   INTO p_apps_owner
167769   FROM fnd_oracle_userid
167770  WHERE read_only_flag = 'U'
167771 ;
167772 
167773 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167774       trace
167775          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
167776                         ' - p_language = '||p_language||
167777                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
167778                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
167779                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
167780                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
167781          ,p_level    => C_LEVEL_STATEMENT
167782          ,p_module   => l_log_module);
167783 END IF;
167784 
167785 
167786 --
167787 INSERT INTO xla_diag_sources --hdr2
167788 (
167789         event_id
167790       , ledger_id
167791       , sla_ledger_id
167792       , description_language
167793       , object_name
167794       , object_type_code
167795       , line_number
167796       , source_application_id
167797       , source_type_code
167798       , source_code
167799       , source_value
167800       , source_meaning
167801       , created_by
167802       , creation_date
167803       , last_update_date
167804       , last_updated_by
167805       , last_update_login
167806       , program_update_date
167807       , program_application_id
167808       , program_id
167809       , request_id
167810 )
167811 SELECT
167812         event_id
167813       , p_target_ledger_id
167814       , p_sla_ledger_id
167815       , p_language
167816       , object_name
167817       , object_type_code
167818       , line_number
167819       , source_application_id
167820       , source_type_code
167821       , source_code
167822       , SUBSTR(source_value ,1,1996)
167823       , SUBSTR(source_meaning ,1,200)
167824       , xla_environment_pkg.g_Usr_Id
167825       , TRUNC(SYSDATE)
167826       , TRUNC(SYSDATE)
167827       , xla_environment_pkg.g_Usr_Id
167828       , xla_environment_pkg.g_Login_Id
167829       , TRUNC(SYSDATE)
167830       , xla_environment_pkg.g_Prog_Appl_Id
167831       , xla_environment_pkg.g_Prog_Id
167832       , xla_environment_pkg.g_Req_Id
167833   FROM (
167834        SELECT xet.event_id                  event_id
167835             , 0                          line_number
167836             , CASE r
167837                WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V' 
167838                 WHEN 2 THEN 'CST_XLA_RCV_HEADERS_V' 
167839                 WHEN 3 THEN 'CST_XLA_RCV_HEADERS_V' 
167840                 WHEN 4 THEN 'CST_XLA_RCV_HEADERS_V' 
167841                 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V' 
167842                 
167843                ELSE null
167844               END                           object_name
167845             , CASE r
167846                 WHEN 1 THEN 'HEADER' 
167847                 WHEN 2 THEN 'HEADER' 
167848                 WHEN 3 THEN 'HEADER' 
167849                 WHEN 4 THEN 'HEADER' 
167850                 WHEN 5 THEN 'HEADER' 
167851                 
167852                 ELSE null
167853               END                           object_type_code
167854             , CASE r
167855                 WHEN 1 THEN '707' 
167856                 WHEN 2 THEN '707' 
167857                 WHEN 3 THEN '707' 
167858                 WHEN 4 THEN '707' 
167859                 WHEN 5 THEN '707' 
167860                 
167861                 ELSE null
167862               END                           source_application_id
167863             , 'S'             source_type_code
167864             , CASE r
167865                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
167866                 WHEN 2 THEN 'CURRENCY_CODE' 
167867                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
167868                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
167869                 WHEN 5 THEN 'TRANSFER_TO_GL_INDICATOR' 
167870                 
167871                 ELSE null
167872               END                           source_code
167873             , CASE r
167874                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
167875                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
167876                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
167877                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
167878                 WHEN 5 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
167879                 
167880                 ELSE null
167881               END                           source_value
167882             , CASE r
167883                 WHEN 1 THEN fvl12.meaning
167884                 WHEN 5 THEN fvl38.meaning
167885                 
167886                 ELSE null
167887               END               source_meaning
167888          FROM xla_events_gt     xet  
167889       , CST_XLA_RCV_HEADERS_V  h1
167890   , fnd_lookup_values    fvl12
167891   , fnd_lookup_values    fvl38
167892              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
167893          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
167894            AND xet.event_class_code = C_EVENT_CLASS_CODE
167895               AND h1.event_id = xet.event_id
167896    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
167897   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
167898   AND fvl12.view_application_id(+) = 700
167899   AND fvl12.language(+)            = USERENV('LANG')
167900      AND fvl38.lookup_type(+)         = 'YES_NO'
167901   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
167902   AND fvl38.view_application_id(+) = 0
167903   AND fvl38.language(+)            = USERENV('LANG')
167904   
167905 )
167906 ;
167907 --
167908 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167909 
167910       trace
167911          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
167912          ,p_level    => C_LEVEL_STATEMENT
167913          ,p_module   => l_log_module);
167914 
167915 END IF;
167916 --
167917 
167918 
167919 
167920 --
167921 INSERT INTO xla_diag_sources  --line2
167922 (
167923         event_id
167924       , ledger_id
167925       , sla_ledger_id
167926       , description_language
167927       , object_name
167928       , object_type_code
167929       , line_number
167930       , source_application_id
167931       , source_type_code
167932       , source_code
167933       , source_value
167934       , source_meaning
167935       , created_by
167936       , creation_date
167937       , last_update_date
167938       , last_updated_by
167939       , last_update_login
167940       , program_update_date
167941       , program_application_id
167942       , program_id
167943       , request_id
167944 )
167945 SELECT  event_id
167946       , p_target_ledger_id
167947       , p_sla_ledger_id
167948       , p_language
167949       , object_name
167950       , object_type_code
167951       , line_number
167952       , source_application_id
167953       , source_type_code
167954       , source_code
167955       , SUBSTR(source_value,1,1996)
167956       , SUBSTR(source_meaning ,1,200)
167957       , xla_environment_pkg.g_Usr_Id
167958       , TRUNC(SYSDATE)
167959       , TRUNC(SYSDATE)
167960       , xla_environment_pkg.g_Usr_Id
167961       , xla_environment_pkg.g_Login_Id
167962       , TRUNC(SYSDATE)
167963       , xla_environment_pkg.g_Prog_Appl_Id
167964       , xla_environment_pkg.g_Prog_Id
167965       , xla_environment_pkg.g_Req_Id
167966   FROM (
167967        SELECT xet.event_id                  event_id
167968             , l2.line_number                 line_number
167969             , CASE r
167970                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
167971                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
167972                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
167973                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
167974                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
167975                 
167976                ELSE null
167977               END                           object_name
167978             , CASE r
167979                 WHEN 1 THEN 'LINE' 
167980                 WHEN 2 THEN 'LINE' 
167981                 WHEN 3 THEN 'LINE' 
167982                 WHEN 4 THEN 'LINE' 
167983                 WHEN 5 THEN 'LINE' 
167984                 
167985                 ELSE null
167986               END                           object_type_code
167987             , CASE r
167988                 WHEN 1 THEN '707' 
167989                 WHEN 2 THEN '707' 
167990                 WHEN 3 THEN '707' 
167991                 WHEN 4 THEN '707' 
167992                 WHEN 5 THEN '707' 
167993                 
167994                 ELSE null
167995               END                           source_application_id
167996             , 'S'             source_type_code
167997             , CASE r
167998                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
167999                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
168000                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
168001                 WHEN 4 THEN 'ENTERED_AMOUNT' 
168002                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
168003                 
168004                 ELSE null
168005               END                           source_code
168006             , CASE r
168007                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
168008                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
168009                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
168010                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
168011                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
168012                 
168013                 ELSE null
168014               END                           source_value
168015             , null              source_meaning
168016          FROM  xla_events_gt     xet  
168017         , CST_XLA_RCV_LINES_V  l2
168018             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
168019         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
168020           AND xet.event_class_code = C_EVENT_CLASS_CODE
168021             AND l2.event_id          = xet.event_id
168022 
168023 )
168024 ;
168025 --
168026 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168027 
168028       trace
168029          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
168030          ,p_level    => C_LEVEL_STATEMENT
168031          ,p_module   => l_log_module);
168032 
168033 END IF;
168034 
168035 
168036 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168037       trace
168038          (p_msg      => 'END of insert_sources_272'
168039          ,p_level    => C_LEVEL_PROCEDURE
168040          ,p_module   => l_log_module);
168041 END IF;
168042 EXCEPTION
168043   WHEN xla_exceptions_pkg.application_exception THEN
168044       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
168045             trace
168046                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
168047                ,p_level    => C_LEVEL_EXCEPTION
168048                ,p_module   => l_log_module);
168049       END IF;
168050       RAISE;
168051   WHEN OTHERS THEN
168052       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
168053             trace
168054                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
168055                ,p_level    => C_LEVEL_EXCEPTION
168056                ,p_module   => l_log_module);
168057        END IF;
168058        xla_exceptions_pkg.raise_message
168059            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_272');
168060 END insert_sources_272;
168061 --
168062 
168063 ---------------------------------------
168064 --
168065 -- PRIVATE FUNCTION
168066 --         EventClass_272
168067 --
168068 ----------------------------------------
168069 --
168070 FUNCTION EventClass_272
168071        (p_application_id         IN NUMBER
168072        ,p_base_ledger_id         IN NUMBER
168073        ,p_target_ledger_id       IN NUMBER
168074        ,p_language               IN VARCHAR2
168075        ,p_currency_code          IN VARCHAR2
168076        ,p_sla_ledger_id          IN NUMBER
168077        ,p_pad_start_date         IN DATE
168078        ,p_pad_end_date           IN DATE
168079        ,p_primary_ledger_id      IN NUMBER)
168080 RETURN BOOLEAN IS
168081 --
168082 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETR_PRICE_ADJ_DEL_ALL';
168083 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RETR_PRICE_ADJ_DEL';
168084 
168085 l_calculate_acctd_flag   VARCHAR2(1) :='N';
168086 l_calculate_g_l_flag     VARCHAR2(1) :='N';
168087 --
168088 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168089 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168090 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168091 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168092 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168093 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168094 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168095 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168096 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168097 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168098 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168099 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168100 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168101 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168102 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168103 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168104 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168105 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168106 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168107 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168108 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168109 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168110 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
168111 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168112 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
168113 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
168114 
168115 l_event_id                             NUMBER;
168116 l_previous_event_id                    NUMBER;
168117 l_first_event_id                       NUMBER;
168118 l_last_event_id                        NUMBER;
168119 
168120 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
168121 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
168122 --
168123 --
168124 l_result                    BOOLEAN := TRUE;
168125 l_rows                      NUMBER  := 1000;
168126 l_event_type_name           VARCHAR2(80) := 'All';
168127 l_event_class_name          VARCHAR2(80) := 'Retroactive Price Adjustment to Delivery';
168128 l_description               VARCHAR2(4000);
168129 l_transaction_reversal      NUMBER;
168130 l_ae_header_id              NUMBER;
168131 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
168132 l_log_module                VARCHAR2(240);
168133 --
168134 l_acct_reversal_source      VARCHAR2(30);
168135 l_trx_reversal_source       VARCHAR2(30);
168136 
168137 l_continue_with_lines       BOOLEAN := TRUE;
168138 --
168139 l_acc_rev_gl_date_source    DATE;                      -- 4262811
168140 --
168141 type t_array_event_id is table of number index by binary_integer;
168142 
168143 l_rec_array_event                    t_rec_array_event;
168144 l_null_rec_array_event               t_rec_array_event;
168145 l_array_ae_header_id                 xla_number_array_type;
168146 l_actual_flag                        VARCHAR2(1) := NULL;
168147 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
168148 l_balance_type_code                  VARCHAR2(1) :=NULL;
168149 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
168150 
168151 --
168152 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
168153 --
168154 
168155 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
168156 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
168157 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
168158 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
168159 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
168160 
168161 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
168162 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
168163 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
168164 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
168165 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
168166 
168167 l_array_source_12              t_array_source_12;
168168 l_array_source_12_meaning      t_array_lookup_meaning;
168169 l_array_source_15              t_array_source_15;
168170 l_array_source_19              t_array_source_19;
168171 l_array_source_20              t_array_source_20;
168172 l_array_source_38              t_array_source_38;
168173 l_array_source_38_meaning      t_array_lookup_meaning;
168174 
168175 l_array_source_4      t_array_source_4;
168176 l_array_source_5      t_array_source_5;
168177 l_array_source_11      t_array_source_11;
168178 l_array_source_18      t_array_source_18;
168179 l_array_source_22      t_array_source_22;
168180 
168181 --
168182 CURSOR header_cur
168183 IS
168184 SELECT /*+ leading(xet) cardinality(xet,1) */
168185 -- Event Class Code: RETR_PRICE_ADJ_DEL
168186     xet.entity_id
168187    ,xet.legal_entity_id
168188    ,xet.entity_code
168189    ,xet.transaction_number
168190    ,xet.event_id
168191    ,xet.event_class_code
168192    ,xet.event_type_code
168193    ,xet.event_number
168194    ,xet.event_date
168195    ,xet.transaction_date
168196    ,xet.reference_num_1
168197    ,xet.reference_num_2
168198    ,xet.reference_num_3
168199    ,xet.reference_num_4
168200    ,xet.reference_char_1
168201    ,xet.reference_char_2
168202    ,xet.reference_char_3
168203    ,xet.reference_char_4
168204    ,xet.reference_date_1
168205    ,xet.reference_date_2
168206    ,xet.reference_date_3
168207    ,xet.reference_date_4
168208    ,xet.event_created_by
168209    ,xet.budgetary_control_flag 
168210   , h1.DISTRIBUTION_TYPE    source_12
168211   , fvl12.meaning   source_12_meaning
168212   , h1.CURRENCY_CODE    source_15
168213   , h1.CURRENCY_CONVERSION_DATE    source_19
168214   , h1.CURRENCY_CONVERSION_RATE    source_20
168215   , h1.TRANSFER_TO_GL_INDICATOR    source_38
168216   , fvl38.meaning   source_38_meaning
168217   FROM xla_events_gt     xet 
168218   , CST_XLA_RCV_HEADERS_V  h1
168219   , fnd_lookup_values    fvl12
168220   , fnd_lookup_values    fvl38
168221  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
168222    and xet.event_class_code = C_EVENT_CLASS_CODE
168223    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
168224    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
168225   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
168226   AND fvl12.view_application_id(+) = 700
168227   AND fvl12.language(+)            = USERENV('LANG')
168228      AND fvl38.lookup_type(+)         = 'YES_NO'
168229   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
168230   AND fvl38.view_application_id(+) = 0
168231   AND fvl38.language(+)            = USERENV('LANG')
168232   
168233  ORDER BY event_id
168234 ;
168235 
168236 
168237 --
168238 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
168239 IS
168240 SELECT  /*+ leading(xet) cardinality(xet,1) */
168241 -- Event Class Code: RETR_PRICE_ADJ_DEL
168242     xet.entity_id
168243    ,xet.legal_entity_id
168244    ,xet.entity_code
168245    ,xet.transaction_number
168246    ,xet.event_id
168247    ,xet.event_class_code
168248    ,xet.event_type_code
168249    ,xet.event_number
168250    ,xet.event_date
168251    ,xet.transaction_date
168252    ,xet.reference_num_1
168253    ,xet.reference_num_2
168254    ,xet.reference_num_3
168255    ,xet.reference_num_4
168256    ,xet.reference_char_1
168257    ,xet.reference_char_2
168258    ,xet.reference_char_3
168259    ,xet.reference_char_4
168260    ,xet.reference_date_1
168261    ,xet.reference_date_2
168262    ,xet.reference_date_3
168263    ,xet.reference_date_4
168264    ,xet.event_created_by
168265    ,xet.budgetary_control_flag
168266  , l2.LINE_NUMBER  
168267   , l2.CODE_COMBINATION_ID    source_4
168268   , l2.RCV_ACCOUNTING_LINE_TYPE    source_5
168269   , l2.DISTRIBUTION_IDENTIFIER    source_11
168270   , l2.ENTERED_AMOUNT    source_18
168271   , l2.ACCOUNTED_AMOUNT    source_22
168272   FROM xla_events_gt     xet 
168273   , CST_XLA_RCV_LINES_V  l2
168274  WHERE xet.event_id between x_first_event_id and x_last_event_id
168275    and xet.event_date between p_pad_start_date and p_pad_end_date
168276    and xet.event_class_code = C_EVENT_CLASS_CODE
168277    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
168278 ;
168279 
168280 --
168281 BEGIN
168282 IF g_log_enabled THEN
168283    l_log_module := C_DEFAULT_MODULE||'.EventClass_272';
168284 END IF;
168285 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168286    trace
168287       (p_msg      => 'BEGIN of EventClass_272'
168288       ,p_level    => C_LEVEL_PROCEDURE
168289       ,p_module   => l_log_module);
168290 END IF;
168291 
168292 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168293    trace
168294       (p_msg      => 'p_application_id = '||p_application_id||
168295                      ' - p_base_ledger_id = '||p_base_ledger_id||
168296                      ' - p_target_ledger_id  = '||p_target_ledger_id||
168297                      ' - p_language = '||p_language||
168298                      ' - p_currency_code = '||p_currency_code||
168299                      ' - p_sla_ledger_id = '||p_sla_ledger_id
168300       ,p_level    => C_LEVEL_STATEMENT
168301       ,p_module   => l_log_module);
168302 END IF;
168303 --
168304 -- initialze arrays
168305 --
168306 g_array_event.DELETE;
168307 l_rec_array_event := l_null_rec_array_event;
168308 --
168309 --------------------------------------
168310 -- 4262811 Initialze MPA Line Number
168311 --------------------------------------
168312 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
168313 
168314 --
168315 
168316 --
168317 OPEN header_cur;
168318 --
168319 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168320    trace
168321    (p_msg      => 'SQL - FETCH header_cur'
168322    ,p_level    => C_LEVEL_STATEMENT
168323    ,p_module   => l_log_module);
168324 END IF;
168325 --
168326 LOOP
168327 FETCH header_cur BULK COLLECT INTO
168328         l_array_entity_id
168329       , l_array_legal_entity_id
168330       , l_array_entity_code
168331       , l_array_transaction_num
168332       , l_array_event_id
168333       , l_array_class_code
168334       , l_array_event_type
168335       , l_array_event_number
168336       , l_array_event_date
168337       , l_array_transaction_date
168338       , l_array_reference_num_1
168339       , l_array_reference_num_2
168340       , l_array_reference_num_3
168341       , l_array_reference_num_4
168342       , l_array_reference_char_1
168343       , l_array_reference_char_2
168344       , l_array_reference_char_3
168345       , l_array_reference_char_4
168346       , l_array_reference_date_1
168347       , l_array_reference_date_2
168348       , l_array_reference_date_3
168349       , l_array_reference_date_4
168350       , l_array_event_created_by
168351       , l_array_budgetary_control_flag 
168352       , l_array_source_12
168353       , l_array_source_12_meaning
168354       , l_array_source_15
168355       , l_array_source_19
168356       , l_array_source_20
168357       , l_array_source_38
168358       , l_array_source_38_meaning
168359       LIMIT l_rows;
168360 --
168361 IF (C_LEVEL_EVENT >= g_log_level) THEN
168362    trace
168363    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
168364    ,p_level    => C_LEVEL_EVENT
168365    ,p_module   => l_log_module);
168366 END IF;
168367 --
168368 EXIT WHEN l_array_entity_id.COUNT = 0;
168369 
168370 -- initialize arrays
168371 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
168372 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
168373 
168374 --
168375 -- Bug 4458708
168376 --
168377 XLA_AE_LINES_PKG.g_LineNumber := 0;
168378 
168379 
168380 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
168381 g_last_hdr_idx := l_array_event_id.LAST;
168382 --
168383 -- loop for the headers. Each iteration is for each header extract row
168384 -- fetched in header cursor
168385 --
168386 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
168387 
168388 --
168389 -- set event info as cache for other routines to refer event attributes
168390 --
168391 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
168392    (p_application_id           => p_application_id
168393    ,p_primary_ledger_id        => p_primary_ledger_id
168394    ,p_base_ledger_id           => p_base_ledger_id
168395    ,p_target_ledger_id         => p_target_ledger_id
168396    ,p_entity_id                => l_array_entity_id(hdr_idx)
168397    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
168398    ,p_entity_code              => l_array_entity_code(hdr_idx)
168399    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
168400    ,p_event_id                 => l_array_event_id(hdr_idx)
168401    ,p_event_class_code         => l_array_class_code(hdr_idx)
168402    ,p_event_type_code          => l_array_event_type(hdr_idx)
168403    ,p_event_number             => l_array_event_number(hdr_idx)
168404    ,p_event_date               => l_array_event_date(hdr_idx)
168405    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
168406    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
168407    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
168408    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
168409    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
168410    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
168411    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
168412    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
168413    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
168414    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
168415    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
168416    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
168417    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
168418    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
168419    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
168420 
168421 --
168422 -- set the status of entry to C_VALID (0)
168423 --
168424 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
168425 
168426 --
168427 -- initialize a row for ae header
168428 --
168429 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
168430 
168431 l_event_id := l_array_event_id(hdr_idx);
168432 
168433 --
168434 -- storing the hdr_idx for event. May be used by line cursor.
168435 --
168436 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
168437 
168438 --
168439 -- store sources from header extract. This can be improved to
168440 -- store only those sources from header extract that may be used in lines
168441 --
168442 
168443 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
168444 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
168445 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
168446 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
168447 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
168448 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
168449 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
168450 
168451 --
168452 -- initilaize the status of ae headers for diffrent balance types
168453 -- the status is initialised to C_NOT_CREATED (2)
168454 --
168455 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
168456 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
168457 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
168458 
168459 --
168460 -- call api to validate and store accounting attributes for header
168461 --
168462 
168463 ------------------------------------------------------------
168464 -- Accrual Reversal : to get date for Standard Source (NONE)
168465 ------------------------------------------------------------
168466 l_acc_rev_gl_date_source := NULL;
168467 
168468      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
168469       l_rec_acct_attrs.array_date_value(1) := 
168470 xla_ae_sources_pkg.GetSystemSourceDate(
168471    p_source_code           => 'XLA_REFERENCE_DATE_1'
168472  , p_source_type_code      => 'Y'
168473  , p_source_application_id =>  602
168474 );
168475      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
168476       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
168477 
168478 
168479 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
168480 
168481 XLA_AE_HEADER_PKG.SetJeCategoryName;
168482 
168483 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
168484 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
168485 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
168486 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
168487 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
168488 
168489 
168490 -- No header level analytical criteria
168491 
168492 --
168493 --accounting attribute enhancement, bug 3612931
168494 --
168495 l_trx_reversal_source := SUBSTR(NULL, 1,30);
168496 
168497 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
168498    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
168499 
168500    xla_accounting_err_pkg.build_message
168501       (p_appli_s_name            => 'XLA'
168502       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
168503       ,p_token_1                 => 'ACCT_ATTR_NAME'
168504       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
168505       ,p_token_2                 => 'PRODUCT_NAME'
168506       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
168507       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
168508       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
168509       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
168510 
168511 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
168512    --
168513    -- following sets the accounting attributes needed to reverse
168514    -- accounting for a distributeion
168515    --
168516    xla_ae_lines_pkg.SetTrxReversalAttrs
168517       (p_event_id              => l_event_id
168518       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
168519       ,p_trx_reversal_source   => l_trx_reversal_source);
168520 
168521 END IF;
168522 
168523 
168524 ----------------------------------------------------------------
168525 -- 4262811 -  update the header statuses to invalid in need be
168526 ----------------------------------------------------------------
168527 --
168528 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
168529 
168530 
168531   -----------------------------------------------
168532   -- No accrual reversal for the event class/type
168533   -----------------------------------------------
168534 ----------------------------------------------------------------
168535 
168536 --
168537 -- this ends the header loop iteration for one bulk fetch
168538 --
168539 END LOOP;
168540 
168541 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
168542 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
168543 
168544 --
168545 -- insert dummy rows into lines gt table that were created due to
168546 -- transaction reversals
168547 --
168548 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
168549    l_result := XLA_AE_LINES_PKG.InsertLines;
168550 END IF;
168551 
168552 --
168553 -- reset the temp_line_num for each set of events fetched from header
168554 -- cursor rather than doing it for each new event in line cursor
168555 -- Bug 3939231
168556 --
168557 xla_ae_lines_pkg.g_temp_line_num := 0;
168558 
168559 
168560 
168561 --
168562 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
168563 --
168564 --
168565 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168566 
168567       trace
168568          (p_msg      => 'SQL - FETCH line_cur'
168569          ,p_level    => C_LEVEL_STATEMENT
168570          ,p_module   => l_log_module);
168571 
168572 END IF;
168573 --
168574 --
168575 LOOP
168576   --
168577   FETCH line_cur BULK COLLECT INTO
168578         l_array_entity_id
168579       , l_array_legal_entity_id
168580       , l_array_entity_code
168581       , l_array_transaction_num
168582       , l_array_event_id
168583       , l_array_class_code
168584       , l_array_event_type
168585       , l_array_event_number
168586       , l_array_event_date
168587       , l_array_transaction_date
168588       , l_array_reference_num_1
168589       , l_array_reference_num_2
168590       , l_array_reference_num_3
168591       , l_array_reference_num_4
168592       , l_array_reference_char_1
168593       , l_array_reference_char_2
168594       , l_array_reference_char_3
168595       , l_array_reference_char_4
168596       , l_array_reference_date_1
168597       , l_array_reference_date_2
168598       , l_array_reference_date_3
168599       , l_array_reference_date_4
168600       , l_array_event_created_by
168601       , l_array_budgetary_control_flag
168602       , l_array_extract_line_num 
168603       , l_array_source_4
168604       , l_array_source_5
168605       , l_array_source_11
168606       , l_array_source_18
168607       , l_array_source_22
168608       LIMIT l_rows;
168609 
168610   --
168611   IF (C_LEVEL_EVENT >= g_log_level) THEN
168612             trace
168613                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
168614                ,p_level    => C_LEVEL_EVENT
168615                ,p_module   => l_log_module);
168616   END IF;
168617   --
168618   EXIT WHEN l_array_entity_id.count = 0;
168619 
168620   XLA_AE_LINES_PKG.g_rec_lines := null;
168621 
168622 --
168623 -- Bug 4458708
168624 --
168625 XLA_AE_LINES_PKG.g_LineNumber := 0;
168626 --
168627 --
168628 
168629 FOR Idx IN 1..l_array_event_id.count LOOP
168630    --
168631    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
168632    --
168633    l_event_id := l_array_event_id(idx);  -- 5648433
168634 
168635    --
168636    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
168637    --
168638 
168639    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
168640              (g_array_event(l_event_id).array_value_num('header_index'))
168641          ,'N'
168642          ) <> 'Y'
168643    THEN
168644       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168645          trace
168646             (p_msg      => 'Trancaction revesal option is not Y '
168647             ,p_level    => C_LEVEL_STATEMENT
168648             ,p_module   => l_log_module);
168649       END IF;
168650 
168651 --
168652 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
168653 --
168654 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
168655 --
168656 -- set event info as cache for other routines to refer event attributes
168657 --
168658 
168659 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
168660    l_previous_event_id := l_event_id;
168661 
168662    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
168663       (p_application_id           => p_application_id
168664       ,p_primary_ledger_id        => p_primary_ledger_id
168665       ,p_base_ledger_id           => p_base_ledger_id
168666       ,p_target_ledger_id         => p_target_ledger_id
168667       ,p_entity_id                => l_array_entity_id(Idx)
168668       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
168669       ,p_entity_code              => l_array_entity_code(Idx)
168670       ,p_transaction_num          => l_array_transaction_num(Idx)
168671       ,p_event_id                 => l_array_event_id(Idx)
168672       ,p_event_class_code         => l_array_class_code(Idx)
168673       ,p_event_type_code          => l_array_event_type(Idx)
168674       ,p_event_number             => l_array_event_number(Idx)
168675       ,p_event_date               => l_array_event_date(Idx)
168676       ,p_transaction_date         => l_array_transaction_date(Idx)
168677       ,p_reference_num_1          => l_array_reference_num_1(Idx)
168678       ,p_reference_num_2          => l_array_reference_num_2(Idx)
168679       ,p_reference_num_3          => l_array_reference_num_3(Idx)
168680       ,p_reference_num_4          => l_array_reference_num_4(Idx)
168681       ,p_reference_char_1         => l_array_reference_char_1(Idx)
168682       ,p_reference_char_2         => l_array_reference_char_2(Idx)
168683       ,p_reference_char_3         => l_array_reference_char_3(Idx)
168684       ,p_reference_char_4         => l_array_reference_char_4(Idx)
168685       ,p_reference_date_1         => l_array_reference_date_1(Idx)
168686       ,p_reference_date_2         => l_array_reference_date_2(Idx)
168687       ,p_reference_date_3         => l_array_reference_date_3(Idx)
168688       ,p_reference_date_4         => l_array_reference_date_4(Idx)
168689       ,p_event_created_by         => l_array_event_created_by(Idx)
168690       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
168691        --
168692 END IF;
168693 
168694 
168695 
168696 --
168697 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
168698 
168699 l_acct_reversal_source := SUBSTR(NULL, 1,30);
168700 
168701 IF l_continue_with_lines THEN
168702    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
168703       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
168704 
168705       xla_accounting_err_pkg.build_message
168706          (p_appli_s_name            => 'XLA'
168707          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
168708          ,p_token_1                 => 'LINE_NUMBER'
168709          ,p_value_1                 => l_array_extract_line_num(Idx)
168710          ,p_token_2                 => 'PRODUCT_NAME'
168711          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
168712          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
168713          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
168714          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
168715 
168716    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
168717       --
168718       -- following sets the accounting attributes needed to reverse
168719       -- accounting for a distributeion
168720       --
168721 
168722       --
168723       -- 5217187
168724       --
168725       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
168726       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
168727                                        g_array_event(l_event_id).array_value_num('header_index'));
168728       --
168729       --
168730 
168731       -- No reversal code generated
168732 
168733       xla_ae_lines_pkg.SetAcctReversalAttrs
168734          (p_event_id             => l_event_id
168735          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
168736          ,p_calculate_acctd_flag => l_calculate_acctd_flag
168737          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
168738    END IF;
168739 
168740    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
168741        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
168742 
168743 --
168744 AcctLineType_10 (
168745  p_application_id  => p_application_id
168746  ,p_event_id     => l_event_id
168747  ,p_calculate_acctd_flag => l_calculate_acctd_flag
168748  ,p_calculate_g_l_flag => l_calculate_g_l_flag
168749  ,p_actual_flag => l_actual_flag
168750  ,p_balance_type_code => l_balance_type_code
168751  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168752  
168753  , p_source_4 => l_array_source_4(Idx)
168754  , p_source_5 => l_array_source_5(Idx)
168755  , p_source_11 => l_array_source_11(Idx)
168756  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
168757  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
168758  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
168759  , p_source_18 => l_array_source_18(Idx)
168760  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
168761  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
168762  , p_source_22 => l_array_source_22(Idx)
168763  );
168764 If(l_balance_type_code = 'A') THEN
168765   l_actual_gain_loss_ref := l_gain_or_loss_ref;
168766 END IF;
168767 
168768 --
168769 
168770 
168771 --
168772 AcctLineType_232 (
168773  p_application_id  => p_application_id
168774  ,p_event_id     => l_event_id
168775  ,p_calculate_acctd_flag => l_calculate_acctd_flag
168776  ,p_calculate_g_l_flag => l_calculate_g_l_flag
168777  ,p_actual_flag => l_actual_flag
168778  ,p_balance_type_code => l_balance_type_code
168779  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168780  
168781  , p_source_4 => l_array_source_4(Idx)
168782  , p_source_5 => l_array_source_5(Idx)
168783  , p_source_11 => l_array_source_11(Idx)
168784  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
168785  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
168786  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
168787  , p_source_18 => l_array_source_18(Idx)
168788  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
168789  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
168790  , p_source_22 => l_array_source_22(Idx)
168791  );
168792 If(l_balance_type_code = 'A') THEN
168793   l_actual_gain_loss_ref := l_gain_or_loss_ref;
168794 END IF;
168795 
168796 --
168797 
168798 
168799 --
168800 AcctLineType_239 (
168801  p_application_id  => p_application_id
168802  ,p_event_id     => l_event_id
168803  ,p_calculate_acctd_flag => l_calculate_acctd_flag
168804  ,p_calculate_g_l_flag => l_calculate_g_l_flag
168805  ,p_actual_flag => l_actual_flag
168806  ,p_balance_type_code => l_balance_type_code
168807  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168808  
168809  , p_source_4 => l_array_source_4(Idx)
168810  , p_source_5 => l_array_source_5(Idx)
168811  , p_source_11 => l_array_source_11(Idx)
168812  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
168813  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
168814  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
168815  , p_source_18 => l_array_source_18(Idx)
168816  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
168817  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
168818  , p_source_22 => l_array_source_22(Idx)
168819  );
168820 If(l_balance_type_code = 'A') THEN
168821   l_actual_gain_loss_ref := l_gain_or_loss_ref;
168822 END IF;
168823 
168824 --
168825 
168826       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
168827       -- or secondary ledger that has different currency with primary
168828       -- or alc that is calculated by sla
168829       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
168830             (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'))
168831 
168832 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
168833 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
168834           AND (l_actual_flag = 'A')) THEN
168835         XLA_AE_LINES_PKG.CreateGainOrLossLines(
168836           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
168837          ,p_application_id   => p_application_id
168838          ,p_amb_context_code => 'DEFAULT'
168839          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
168840          ,p_event_class_code => C_EVENT_CLASS_CODE
168841          ,p_event_type_code  => C_EVENT_TYPE_CODE
168842          
168843          ,p_gain_ccid        => -1
168844          ,p_loss_ccid        => -1
168845 
168846          ,p_actual_flag      => l_actual_flag
168847          ,p_enc_flag         => null
168848          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
168849          ,p_enc_g_l_ref      => null
168850          );
168851       END IF;
168852    END IF;
168853 END IF;
168854 
168855    ELSE
168856       --
168857       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
168858       --
168859       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168860          trace
168861             (p_msg      => 'Trancaction revesal option is Y'
168862             ,p_level    => C_LEVEL_STATEMENT
168863             ,p_module   => l_log_module);
168864       END IF;
168865    END IF;
168866 
168867 END LOOP;
168868 l_result := XLA_AE_LINES_PKG.InsertLines ;
168869 end loop;
168870 close line_cur;
168871 
168872 
168873 --
168874 -- insert headers into xla_ae_headers_gt table
168875 --
168876 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
168877 
168878 -- insert into errors table here.
168879 
168880 END LOOP;
168881 
168882 --
168883 -- 4865292
168884 --
168885 -- Compare g_hdr_extract_count with event count in
168886 -- CreateHeadersAndLines.
168887 --
168888 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
168889 
168890 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168891    trace (p_msg     => '# rows extracted from header extract objects '
168892                     || ' (running total): '
168893                     || g_hdr_extract_count
168894          ,p_level   => C_LEVEL_STATEMENT
168895          ,p_module  => l_log_module);
168896 END IF;
168897 
168898 CLOSE header_cur;
168899 --
168900 
168901 --
168902 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168903    trace
168904       (p_msg      => 'END of EventClass_272'
168905       ,p_level    => C_LEVEL_PROCEDURE
168906       ,p_module   => l_log_module);
168907 END IF;
168908 --
168909 RETURN l_result;
168910 EXCEPTION
168911 WHEN xla_exceptions_pkg.application_exception THEN
168912    
168913 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
168914 
168915    
168916 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
168917 
168918    RAISE;
168919 
168920 WHEN NO_DATA_FOUND THEN
168921 
168922 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
168923 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
168924 
168925 FOR header_record IN header_cur
168926 LOOP
168927     l_array_header_events(header_record.event_id) := header_record.event_id;
168928 END LOOP;
168929 
168930 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
168931 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
168932 
168933 fnd_file.put_line(fnd_file.LOG, '                    ');
168934 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
168935 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
168936 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
168937 
168938 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
168939 LOOP
168940 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
168941 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
168942         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
168943 	END IF;
168944 END LOOP;
168945 
168946 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
168947 fnd_file.put_line(fnd_file.LOG, '                    ');
168948 
168949 
168950 xla_exceptions_pkg.raise_message
168951       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_272');
168952 
168953 
168954 WHEN OTHERS THEN
168955    xla_exceptions_pkg.raise_message
168956       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_272');
168957 END EventClass_272;
168958 --
168959 
168960 ---------------------------------------
168961 --
168962 -- PRIVATE PROCEDURE
168963 --         insert_sources_273
168964 --
168965 ----------------------------------------
168966 --
168967 PROCEDURE insert_sources_273(
168968                                 p_target_ledger_id       IN NUMBER
168969                               , p_language               IN VARCHAR2
168970                               , p_sla_ledger_id          IN NUMBER
168971                               , p_pad_start_date         IN DATE
168972                               , p_pad_end_date           IN DATE
168973                          )
168974 IS
168975 
168976 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETR_PRICE_ADJ_RCV_ALL';
168977 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RETR_PRICE_ADJ_RCV';
168978 p_apps_owner                   VARCHAR2(30);
168979 l_log_module                   VARCHAR2(240);
168980 BEGIN
168981 IF g_log_enabled THEN
168982       l_log_module := C_DEFAULT_MODULE||'.insert_sources_273';
168983 END IF;
168984 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168985 
168986       trace
168987          (p_msg      => 'BEGIN of insert_sources_273'
168988          ,p_level    => C_LEVEL_PROCEDURE
168989          ,p_module   => l_log_module);
168990 
168991 END IF;
168992 
168993 -- select APPS owner
168994 SELECT oracle_username
168995   INTO p_apps_owner
168996   FROM fnd_oracle_userid
168997  WHERE read_only_flag = 'U'
168998 ;
168999 
169000 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169001       trace
169002          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
169003                         ' - p_language = '||p_language||
169004                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
169005                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
169006                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
169007                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
169008          ,p_level    => C_LEVEL_STATEMENT
169009          ,p_module   => l_log_module);
169010 END IF;
169011 
169012 
169013 --
169014 INSERT INTO xla_diag_sources --hdr2
169015 (
169016         event_id
169017       , ledger_id
169018       , sla_ledger_id
169019       , description_language
169020       , object_name
169021       , object_type_code
169022       , line_number
169023       , source_application_id
169024       , source_type_code
169025       , source_code
169026       , source_value
169027       , source_meaning
169028       , created_by
169029       , creation_date
169030       , last_update_date
169031       , last_updated_by
169032       , last_update_login
169033       , program_update_date
169034       , program_application_id
169035       , program_id
169036       , request_id
169037 )
169038 SELECT
169039         event_id
169040       , p_target_ledger_id
169041       , p_sla_ledger_id
169042       , p_language
169043       , object_name
169044       , object_type_code
169045       , line_number
169046       , source_application_id
169047       , source_type_code
169048       , source_code
169049       , SUBSTR(source_value ,1,1996)
169050       , SUBSTR(source_meaning ,1,200)
169051       , xla_environment_pkg.g_Usr_Id
169052       , TRUNC(SYSDATE)
169053       , TRUNC(SYSDATE)
169054       , xla_environment_pkg.g_Usr_Id
169055       , xla_environment_pkg.g_Login_Id
169056       , TRUNC(SYSDATE)
169057       , xla_environment_pkg.g_Prog_Appl_Id
169058       , xla_environment_pkg.g_Prog_Id
169059       , xla_environment_pkg.g_Req_Id
169060   FROM (
169061        SELECT xet.event_id                  event_id
169062             , 0                          line_number
169063             , CASE r
169064                WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V' 
169065                 WHEN 2 THEN 'CST_XLA_RCV_HEADERS_V' 
169066                 WHEN 3 THEN 'CST_XLA_RCV_HEADERS_V' 
169067                 WHEN 4 THEN 'CST_XLA_RCV_HEADERS_V' 
169068                 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V' 
169069                 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V' 
169070                 
169071                ELSE null
169072               END                           object_name
169073             , CASE r
169074                 WHEN 1 THEN 'HEADER' 
169075                 WHEN 2 THEN 'HEADER' 
169076                 WHEN 3 THEN 'HEADER' 
169077                 WHEN 4 THEN 'HEADER' 
169078                 WHEN 5 THEN 'HEADER' 
169079                 WHEN 6 THEN 'HEADER' 
169080                 
169081                 ELSE null
169082               END                           object_type_code
169083             , CASE r
169084                 WHEN 1 THEN '707' 
169085                 WHEN 2 THEN '707' 
169086                 WHEN 3 THEN '707' 
169087                 WHEN 4 THEN '707' 
169088                 WHEN 5 THEN '707' 
169089                 WHEN 6 THEN '707' 
169090                 
169091                 ELSE null
169092               END                           source_application_id
169093             , 'S'             source_type_code
169094             , CASE r
169095                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
169096                 WHEN 2 THEN 'CURRENCY_CODE' 
169097                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
169098                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
169099                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
169100                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
169101                 
169102                 ELSE null
169103               END                           source_code
169104             , CASE r
169105                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
169106                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
169107                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
169108                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
169109                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
169110                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
169111                 
169112                 ELSE null
169113               END                           source_value
169114             , CASE r
169115                 WHEN 1 THEN fvl12.meaning
169116                 WHEN 6 THEN fvl38.meaning
169117                 
169118                 ELSE null
169119               END               source_meaning
169120          FROM xla_events_gt     xet  
169121       , CST_XLA_RCV_HEADERS_V  h1
169122   , fnd_lookup_values    fvl12
169123   , fnd_lookup_values    fvl38
169124              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
169125          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
169126            AND xet.event_class_code = C_EVENT_CLASS_CODE
169127               AND h1.event_id = xet.event_id
169128    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
169129   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
169130   AND fvl12.view_application_id(+) = 700
169131   AND fvl12.language(+)            = USERENV('LANG')
169132      AND fvl38.lookup_type(+)         = 'YES_NO'
169133   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
169134   AND fvl38.view_application_id(+) = 0
169135   AND fvl38.language(+)            = USERENV('LANG')
169136   
169137 )
169138 ;
169139 --
169140 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169141 
169142       trace
169143          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
169144          ,p_level    => C_LEVEL_STATEMENT
169145          ,p_module   => l_log_module);
169146 
169147 END IF;
169148 --
169149 
169150 
169151 
169152 --
169153 INSERT INTO xla_diag_sources  --line2
169154 (
169155         event_id
169156       , ledger_id
169157       , sla_ledger_id
169158       , description_language
169159       , object_name
169160       , object_type_code
169161       , line_number
169162       , source_application_id
169163       , source_type_code
169164       , source_code
169165       , source_value
169166       , source_meaning
169167       , created_by
169168       , creation_date
169169       , last_update_date
169170       , last_updated_by
169171       , last_update_login
169172       , program_update_date
169173       , program_application_id
169174       , program_id
169175       , request_id
169176 )
169177 SELECT  event_id
169178       , p_target_ledger_id
169179       , p_sla_ledger_id
169180       , p_language
169181       , object_name
169182       , object_type_code
169183       , line_number
169184       , source_application_id
169185       , source_type_code
169186       , source_code
169187       , SUBSTR(source_value,1,1996)
169188       , SUBSTR(source_meaning ,1,200)
169189       , xla_environment_pkg.g_Usr_Id
169190       , TRUNC(SYSDATE)
169191       , TRUNC(SYSDATE)
169192       , xla_environment_pkg.g_Usr_Id
169193       , xla_environment_pkg.g_Login_Id
169194       , TRUNC(SYSDATE)
169195       , xla_environment_pkg.g_Prog_Appl_Id
169196       , xla_environment_pkg.g_Prog_Id
169197       , xla_environment_pkg.g_Req_Id
169198   FROM (
169199        SELECT xet.event_id                  event_id
169200             , l2.line_number                 line_number
169201             , CASE r
169202                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
169203                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
169204                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
169205                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
169206                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
169207                 
169208                ELSE null
169209               END                           object_name
169210             , CASE r
169211                 WHEN 1 THEN 'LINE' 
169212                 WHEN 2 THEN 'LINE' 
169213                 WHEN 3 THEN 'LINE' 
169214                 WHEN 4 THEN 'LINE' 
169215                 WHEN 5 THEN 'LINE' 
169216                 
169217                 ELSE null
169218               END                           object_type_code
169219             , CASE r
169220                 WHEN 1 THEN '707' 
169221                 WHEN 2 THEN '707' 
169222                 WHEN 3 THEN '707' 
169223                 WHEN 4 THEN '707' 
169224                 WHEN 5 THEN '707' 
169225                 
169226                 ELSE null
169227               END                           source_application_id
169228             , 'S'             source_type_code
169229             , CASE r
169230                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
169231                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
169232                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
169233                 WHEN 4 THEN 'ENTERED_AMOUNT' 
169234                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
169235                 
169236                 ELSE null
169237               END                           source_code
169238             , CASE r
169239                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
169240                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
169241                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
169242                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
169243                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
169244                 
169245                 ELSE null
169246               END                           source_value
169247             , null              source_meaning
169248          FROM  xla_events_gt     xet  
169249         , CST_XLA_RCV_LINES_V  l2
169250             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
169251         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
169252           AND xet.event_class_code = C_EVENT_CLASS_CODE
169253             AND l2.event_id          = xet.event_id
169254 
169255 )
169256 ;
169257 --
169258 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169259 
169260       trace
169261          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
169262          ,p_level    => C_LEVEL_STATEMENT
169263          ,p_module   => l_log_module);
169264 
169265 END IF;
169266 
169267 
169268 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169269       trace
169270          (p_msg      => 'END of insert_sources_273'
169271          ,p_level    => C_LEVEL_PROCEDURE
169272          ,p_module   => l_log_module);
169273 END IF;
169274 EXCEPTION
169275   WHEN xla_exceptions_pkg.application_exception THEN
169276       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
169277             trace
169278                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
169279                ,p_level    => C_LEVEL_EXCEPTION
169280                ,p_module   => l_log_module);
169281       END IF;
169282       RAISE;
169283   WHEN OTHERS THEN
169284       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
169285             trace
169286                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
169287                ,p_level    => C_LEVEL_EXCEPTION
169288                ,p_module   => l_log_module);
169289        END IF;
169290        xla_exceptions_pkg.raise_message
169291            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_273');
169292 END insert_sources_273;
169293 --
169294 
169295 ---------------------------------------
169296 --
169297 -- PRIVATE FUNCTION
169298 --         EventClass_273
169299 --
169300 ----------------------------------------
169301 --
169302 FUNCTION EventClass_273
169303        (p_application_id         IN NUMBER
169304        ,p_base_ledger_id         IN NUMBER
169305        ,p_target_ledger_id       IN NUMBER
169306        ,p_language               IN VARCHAR2
169307        ,p_currency_code          IN VARCHAR2
169308        ,p_sla_ledger_id          IN NUMBER
169309        ,p_pad_start_date         IN DATE
169310        ,p_pad_end_date           IN DATE
169311        ,p_primary_ledger_id      IN NUMBER)
169312 RETURN BOOLEAN IS
169313 --
169314 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETR_PRICE_ADJ_RCV_ALL';
169315 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RETR_PRICE_ADJ_RCV';
169316 
169317 l_calculate_acctd_flag   VARCHAR2(1) :='N';
169318 l_calculate_g_l_flag     VARCHAR2(1) :='N';
169319 --
169320 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169321 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169322 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169323 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169324 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169325 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169326 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169327 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169328 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169329 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169330 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169331 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169332 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169333 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169334 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169335 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169336 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169337 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169338 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169339 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169340 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169341 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169342 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
169343 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169344 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
169345 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
169346 
169347 l_event_id                             NUMBER;
169348 l_previous_event_id                    NUMBER;
169349 l_first_event_id                       NUMBER;
169350 l_last_event_id                        NUMBER;
169351 
169352 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
169353 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
169354 --
169355 --
169356 l_result                    BOOLEAN := TRUE;
169357 l_rows                      NUMBER  := 1000;
169358 l_event_type_name           VARCHAR2(80) := 'All';
169359 l_event_class_name          VARCHAR2(80) := 'Retroactive Price Adjustment to Receipt';
169360 l_description               VARCHAR2(4000);
169361 l_transaction_reversal      NUMBER;
169362 l_ae_header_id              NUMBER;
169363 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
169364 l_log_module                VARCHAR2(240);
169365 --
169366 l_acct_reversal_source      VARCHAR2(30);
169367 l_trx_reversal_source       VARCHAR2(30);
169368 
169369 l_continue_with_lines       BOOLEAN := TRUE;
169370 --
169371 l_acc_rev_gl_date_source    DATE;                      -- 4262811
169372 --
169373 type t_array_event_id is table of number index by binary_integer;
169374 
169375 l_rec_array_event                    t_rec_array_event;
169376 l_null_rec_array_event               t_rec_array_event;
169377 l_array_ae_header_id                 xla_number_array_type;
169378 l_actual_flag                        VARCHAR2(1) := NULL;
169379 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
169380 l_balance_type_code                  VARCHAR2(1) :=NULL;
169381 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
169382 
169383 --
169384 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
169385 --
169386 
169387 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
169388 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
169389 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
169390 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
169391 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
169392 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
169393 
169394 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
169395 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
169396 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
169397 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
169398 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
169399 
169400 l_array_source_12              t_array_source_12;
169401 l_array_source_12_meaning      t_array_lookup_meaning;
169402 l_array_source_15              t_array_source_15;
169403 l_array_source_19              t_array_source_19;
169404 l_array_source_20              t_array_source_20;
169405 l_array_source_21              t_array_source_21;
169406 l_array_source_38              t_array_source_38;
169407 l_array_source_38_meaning      t_array_lookup_meaning;
169408 
169409 l_array_source_4      t_array_source_4;
169410 l_array_source_5      t_array_source_5;
169411 l_array_source_11      t_array_source_11;
169412 l_array_source_18      t_array_source_18;
169413 l_array_source_22      t_array_source_22;
169414 
169415 --
169416 CURSOR header_cur
169417 IS
169418 SELECT /*+ leading(xet) cardinality(xet,1) */
169419 -- Event Class Code: RETR_PRICE_ADJ_RCV
169420     xet.entity_id
169421    ,xet.legal_entity_id
169422    ,xet.entity_code
169423    ,xet.transaction_number
169424    ,xet.event_id
169425    ,xet.event_class_code
169426    ,xet.event_type_code
169427    ,xet.event_number
169428    ,xet.event_date
169429    ,xet.transaction_date
169430    ,xet.reference_num_1
169431    ,xet.reference_num_2
169432    ,xet.reference_num_3
169433    ,xet.reference_num_4
169434    ,xet.reference_char_1
169435    ,xet.reference_char_2
169436    ,xet.reference_char_3
169437    ,xet.reference_char_4
169438    ,xet.reference_date_1
169439    ,xet.reference_date_2
169440    ,xet.reference_date_3
169441    ,xet.reference_date_4
169442    ,xet.event_created_by
169443    ,xet.budgetary_control_flag 
169444   , h1.DISTRIBUTION_TYPE    source_12
169445   , fvl12.meaning   source_12_meaning
169446   , h1.CURRENCY_CODE    source_15
169447   , h1.CURRENCY_CONVERSION_DATE    source_19
169448   , h1.CURRENCY_CONVERSION_RATE    source_20
169449   , h1.CURRENCY_CONVERSION_TYPE    source_21
169450   , h1.TRANSFER_TO_GL_INDICATOR    source_38
169451   , fvl38.meaning   source_38_meaning
169452   FROM xla_events_gt     xet 
169453   , CST_XLA_RCV_HEADERS_V  h1
169454   , fnd_lookup_values    fvl12
169455   , fnd_lookup_values    fvl38
169456  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
169457    and xet.event_class_code = C_EVENT_CLASS_CODE
169458    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
169459    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
169460   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
169461   AND fvl12.view_application_id(+) = 700
169462   AND fvl12.language(+)            = USERENV('LANG')
169463      AND fvl38.lookup_type(+)         = 'YES_NO'
169464   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
169465   AND fvl38.view_application_id(+) = 0
169466   AND fvl38.language(+)            = USERENV('LANG')
169467   
169468  ORDER BY event_id
169469 ;
169470 
169471 
169472 --
169473 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
169474 IS
169475 SELECT  /*+ leading(xet) cardinality(xet,1) */
169476 -- Event Class Code: RETR_PRICE_ADJ_RCV
169477     xet.entity_id
169478    ,xet.legal_entity_id
169479    ,xet.entity_code
169480    ,xet.transaction_number
169481    ,xet.event_id
169482    ,xet.event_class_code
169483    ,xet.event_type_code
169484    ,xet.event_number
169485    ,xet.event_date
169486    ,xet.transaction_date
169487    ,xet.reference_num_1
169488    ,xet.reference_num_2
169489    ,xet.reference_num_3
169490    ,xet.reference_num_4
169491    ,xet.reference_char_1
169492    ,xet.reference_char_2
169493    ,xet.reference_char_3
169494    ,xet.reference_char_4
169495    ,xet.reference_date_1
169496    ,xet.reference_date_2
169497    ,xet.reference_date_3
169498    ,xet.reference_date_4
169499    ,xet.event_created_by
169500    ,xet.budgetary_control_flag
169501  , l2.LINE_NUMBER  
169502   , l2.CODE_COMBINATION_ID    source_4
169503   , l2.RCV_ACCOUNTING_LINE_TYPE    source_5
169504   , l2.DISTRIBUTION_IDENTIFIER    source_11
169505   , l2.ENTERED_AMOUNT    source_18
169506   , l2.ACCOUNTED_AMOUNT    source_22
169507   FROM xla_events_gt     xet 
169508   , CST_XLA_RCV_LINES_V  l2
169509  WHERE xet.event_id between x_first_event_id and x_last_event_id
169510    and xet.event_date between p_pad_start_date and p_pad_end_date
169511    and xet.event_class_code = C_EVENT_CLASS_CODE
169512    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
169513 ;
169514 
169515 --
169516 BEGIN
169517 IF g_log_enabled THEN
169518    l_log_module := C_DEFAULT_MODULE||'.EventClass_273';
169519 END IF;
169520 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169521    trace
169522       (p_msg      => 'BEGIN of EventClass_273'
169523       ,p_level    => C_LEVEL_PROCEDURE
169524       ,p_module   => l_log_module);
169525 END IF;
169526 
169527 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169528    trace
169529       (p_msg      => 'p_application_id = '||p_application_id||
169530                      ' - p_base_ledger_id = '||p_base_ledger_id||
169531                      ' - p_target_ledger_id  = '||p_target_ledger_id||
169532                      ' - p_language = '||p_language||
169533                      ' - p_currency_code = '||p_currency_code||
169534                      ' - p_sla_ledger_id = '||p_sla_ledger_id
169535       ,p_level    => C_LEVEL_STATEMENT
169536       ,p_module   => l_log_module);
169537 END IF;
169538 --
169539 -- initialze arrays
169540 --
169541 g_array_event.DELETE;
169542 l_rec_array_event := l_null_rec_array_event;
169543 --
169544 --------------------------------------
169545 -- 4262811 Initialze MPA Line Number
169546 --------------------------------------
169547 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
169548 
169549 --
169550 
169551 --
169552 OPEN header_cur;
169553 --
169554 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169555    trace
169556    (p_msg      => 'SQL - FETCH header_cur'
169557    ,p_level    => C_LEVEL_STATEMENT
169558    ,p_module   => l_log_module);
169559 END IF;
169560 --
169561 LOOP
169562 FETCH header_cur BULK COLLECT INTO
169563         l_array_entity_id
169564       , l_array_legal_entity_id
169565       , l_array_entity_code
169566       , l_array_transaction_num
169567       , l_array_event_id
169568       , l_array_class_code
169569       , l_array_event_type
169570       , l_array_event_number
169571       , l_array_event_date
169572       , l_array_transaction_date
169573       , l_array_reference_num_1
169574       , l_array_reference_num_2
169575       , l_array_reference_num_3
169576       , l_array_reference_num_4
169577       , l_array_reference_char_1
169578       , l_array_reference_char_2
169579       , l_array_reference_char_3
169580       , l_array_reference_char_4
169581       , l_array_reference_date_1
169582       , l_array_reference_date_2
169583       , l_array_reference_date_3
169584       , l_array_reference_date_4
169585       , l_array_event_created_by
169586       , l_array_budgetary_control_flag 
169587       , l_array_source_12
169588       , l_array_source_12_meaning
169589       , l_array_source_15
169590       , l_array_source_19
169591       , l_array_source_20
169592       , l_array_source_21
169593       , l_array_source_38
169594       , l_array_source_38_meaning
169595       LIMIT l_rows;
169596 --
169597 IF (C_LEVEL_EVENT >= g_log_level) THEN
169598    trace
169599    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
169600    ,p_level    => C_LEVEL_EVENT
169601    ,p_module   => l_log_module);
169602 END IF;
169603 --
169604 EXIT WHEN l_array_entity_id.COUNT = 0;
169605 
169606 -- initialize arrays
169607 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
169608 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
169609 
169610 --
169611 -- Bug 4458708
169612 --
169613 XLA_AE_LINES_PKG.g_LineNumber := 0;
169614 
169615 
169616 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
169617 g_last_hdr_idx := l_array_event_id.LAST;
169618 --
169619 -- loop for the headers. Each iteration is for each header extract row
169620 -- fetched in header cursor
169621 --
169622 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
169623 
169624 --
169625 -- set event info as cache for other routines to refer event attributes
169626 --
169627 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
169628    (p_application_id           => p_application_id
169629    ,p_primary_ledger_id        => p_primary_ledger_id
169630    ,p_base_ledger_id           => p_base_ledger_id
169631    ,p_target_ledger_id         => p_target_ledger_id
169632    ,p_entity_id                => l_array_entity_id(hdr_idx)
169633    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
169634    ,p_entity_code              => l_array_entity_code(hdr_idx)
169635    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
169636    ,p_event_id                 => l_array_event_id(hdr_idx)
169637    ,p_event_class_code         => l_array_class_code(hdr_idx)
169638    ,p_event_type_code          => l_array_event_type(hdr_idx)
169639    ,p_event_number             => l_array_event_number(hdr_idx)
169640    ,p_event_date               => l_array_event_date(hdr_idx)
169641    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
169642    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
169643    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
169644    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
169645    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
169646    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
169647    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
169648    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
169649    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
169650    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
169651    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
169652    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
169653    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
169654    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
169655    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
169656 
169657 --
169658 -- set the status of entry to C_VALID (0)
169659 --
169660 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
169661 
169662 --
169663 -- initialize a row for ae header
169664 --
169665 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
169666 
169667 l_event_id := l_array_event_id(hdr_idx);
169668 
169669 --
169670 -- storing the hdr_idx for event. May be used by line cursor.
169671 --
169672 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
169673 
169674 --
169675 -- store sources from header extract. This can be improved to
169676 -- store only those sources from header extract that may be used in lines
169677 --
169678 
169679 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
169680 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
169681 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
169682 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
169683 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
169684 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
169685 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
169686 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
169687 
169688 --
169689 -- initilaize the status of ae headers for diffrent balance types
169690 -- the status is initialised to C_NOT_CREATED (2)
169691 --
169692 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169693 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169694 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169695 
169696 --
169697 -- call api to validate and store accounting attributes for header
169698 --
169699 
169700 ------------------------------------------------------------
169701 -- Accrual Reversal : to get date for Standard Source (NONE)
169702 ------------------------------------------------------------
169703 l_acc_rev_gl_date_source := NULL;
169704 
169705      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
169706       l_rec_acct_attrs.array_date_value(1) := 
169707 xla_ae_sources_pkg.GetSystemSourceDate(
169708    p_source_code           => 'XLA_REFERENCE_DATE_1'
169709  , p_source_type_code      => 'Y'
169710  , p_source_application_id =>  602
169711 );
169712      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
169713       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
169714 
169715 
169716 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
169717 
169718 XLA_AE_HEADER_PKG.SetJeCategoryName;
169719 
169720 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
169721 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
169722 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
169723 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
169724 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
169725 
169726 
169727 -- No header level analytical criteria
169728 
169729 --
169730 --accounting attribute enhancement, bug 3612931
169731 --
169732 l_trx_reversal_source := SUBSTR(NULL, 1,30);
169733 
169734 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
169735    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
169736 
169737    xla_accounting_err_pkg.build_message
169738       (p_appli_s_name            => 'XLA'
169739       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
169740       ,p_token_1                 => 'ACCT_ATTR_NAME'
169741       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
169742       ,p_token_2                 => 'PRODUCT_NAME'
169743       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
169744       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
169745       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
169746       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
169747 
169748 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
169749    --
169750    -- following sets the accounting attributes needed to reverse
169751    -- accounting for a distributeion
169752    --
169753    xla_ae_lines_pkg.SetTrxReversalAttrs
169754       (p_event_id              => l_event_id
169755       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
169756       ,p_trx_reversal_source   => l_trx_reversal_source);
169757 
169758 END IF;
169759 
169760 
169761 ----------------------------------------------------------------
169762 -- 4262811 -  update the header statuses to invalid in need be
169763 ----------------------------------------------------------------
169764 --
169765 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
169766 
169767 
169768   -----------------------------------------------
169769   -- No accrual reversal for the event class/type
169770   -----------------------------------------------
169771 ----------------------------------------------------------------
169772 
169773 --
169774 -- this ends the header loop iteration for one bulk fetch
169775 --
169776 END LOOP;
169777 
169778 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
169779 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
169780 
169781 --
169782 -- insert dummy rows into lines gt table that were created due to
169783 -- transaction reversals
169784 --
169785 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
169786    l_result := XLA_AE_LINES_PKG.InsertLines;
169787 END IF;
169788 
169789 --
169790 -- reset the temp_line_num for each set of events fetched from header
169791 -- cursor rather than doing it for each new event in line cursor
169792 -- Bug 3939231
169793 --
169794 xla_ae_lines_pkg.g_temp_line_num := 0;
169795 
169796 
169797 
169798 --
169799 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
169800 --
169801 --
169802 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169803 
169804       trace
169805          (p_msg      => 'SQL - FETCH line_cur'
169806          ,p_level    => C_LEVEL_STATEMENT
169807          ,p_module   => l_log_module);
169808 
169809 END IF;
169810 --
169811 --
169812 LOOP
169813   --
169814   FETCH line_cur BULK COLLECT INTO
169815         l_array_entity_id
169816       , l_array_legal_entity_id
169817       , l_array_entity_code
169818       , l_array_transaction_num
169819       , l_array_event_id
169820       , l_array_class_code
169821       , l_array_event_type
169822       , l_array_event_number
169823       , l_array_event_date
169824       , l_array_transaction_date
169825       , l_array_reference_num_1
169826       , l_array_reference_num_2
169827       , l_array_reference_num_3
169828       , l_array_reference_num_4
169829       , l_array_reference_char_1
169830       , l_array_reference_char_2
169831       , l_array_reference_char_3
169832       , l_array_reference_char_4
169833       , l_array_reference_date_1
169834       , l_array_reference_date_2
169835       , l_array_reference_date_3
169836       , l_array_reference_date_4
169837       , l_array_event_created_by
169838       , l_array_budgetary_control_flag
169839       , l_array_extract_line_num 
169840       , l_array_source_4
169841       , l_array_source_5
169842       , l_array_source_11
169843       , l_array_source_18
169844       , l_array_source_22
169845       LIMIT l_rows;
169846 
169847   --
169848   IF (C_LEVEL_EVENT >= g_log_level) THEN
169849             trace
169850                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
169851                ,p_level    => C_LEVEL_EVENT
169852                ,p_module   => l_log_module);
169853   END IF;
169854   --
169855   EXIT WHEN l_array_entity_id.count = 0;
169856 
169857   XLA_AE_LINES_PKG.g_rec_lines := null;
169858 
169859 --
169860 -- Bug 4458708
169861 --
169862 XLA_AE_LINES_PKG.g_LineNumber := 0;
169863 --
169864 --
169865 
169866 FOR Idx IN 1..l_array_event_id.count LOOP
169867    --
169868    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
169869    --
169870    l_event_id := l_array_event_id(idx);  -- 5648433
169871 
169872    --
169873    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
169874    --
169875 
169876    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
169877              (g_array_event(l_event_id).array_value_num('header_index'))
169878          ,'N'
169879          ) <> 'Y'
169880    THEN
169881       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169882          trace
169883             (p_msg      => 'Trancaction revesal option is not Y '
169884             ,p_level    => C_LEVEL_STATEMENT
169885             ,p_module   => l_log_module);
169886       END IF;
169887 
169888 --
169889 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
169890 --
169891 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
169892 --
169893 -- set event info as cache for other routines to refer event attributes
169894 --
169895 
169896 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
169897    l_previous_event_id := l_event_id;
169898 
169899    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
169900       (p_application_id           => p_application_id
169901       ,p_primary_ledger_id        => p_primary_ledger_id
169902       ,p_base_ledger_id           => p_base_ledger_id
169903       ,p_target_ledger_id         => p_target_ledger_id
169904       ,p_entity_id                => l_array_entity_id(Idx)
169905       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
169906       ,p_entity_code              => l_array_entity_code(Idx)
169907       ,p_transaction_num          => l_array_transaction_num(Idx)
169908       ,p_event_id                 => l_array_event_id(Idx)
169909       ,p_event_class_code         => l_array_class_code(Idx)
169910       ,p_event_type_code          => l_array_event_type(Idx)
169911       ,p_event_number             => l_array_event_number(Idx)
169912       ,p_event_date               => l_array_event_date(Idx)
169913       ,p_transaction_date         => l_array_transaction_date(Idx)
169914       ,p_reference_num_1          => l_array_reference_num_1(Idx)
169915       ,p_reference_num_2          => l_array_reference_num_2(Idx)
169916       ,p_reference_num_3          => l_array_reference_num_3(Idx)
169917       ,p_reference_num_4          => l_array_reference_num_4(Idx)
169918       ,p_reference_char_1         => l_array_reference_char_1(Idx)
169919       ,p_reference_char_2         => l_array_reference_char_2(Idx)
169920       ,p_reference_char_3         => l_array_reference_char_3(Idx)
169921       ,p_reference_char_4         => l_array_reference_char_4(Idx)
169922       ,p_reference_date_1         => l_array_reference_date_1(Idx)
169923       ,p_reference_date_2         => l_array_reference_date_2(Idx)
169924       ,p_reference_date_3         => l_array_reference_date_3(Idx)
169925       ,p_reference_date_4         => l_array_reference_date_4(Idx)
169926       ,p_event_created_by         => l_array_event_created_by(Idx)
169927       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
169928        --
169929 END IF;
169930 
169931 
169932 
169933 --
169934 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
169935 
169936 l_acct_reversal_source := SUBSTR(NULL, 1,30);
169937 
169938 IF l_continue_with_lines THEN
169939    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
169940       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
169941 
169942       xla_accounting_err_pkg.build_message
169943          (p_appli_s_name            => 'XLA'
169944          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
169945          ,p_token_1                 => 'LINE_NUMBER'
169946          ,p_value_1                 => l_array_extract_line_num(Idx)
169947          ,p_token_2                 => 'PRODUCT_NAME'
169948          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
169949          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
169950          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
169951          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
169952 
169953    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
169954       --
169955       -- following sets the accounting attributes needed to reverse
169956       -- accounting for a distributeion
169957       --
169958 
169959       --
169960       -- 5217187
169961       --
169962       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
169963       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
169964                                        g_array_event(l_event_id).array_value_num('header_index'));
169965       --
169966       --
169967 
169968       -- No reversal code generated
169969 
169970       xla_ae_lines_pkg.SetAcctReversalAttrs
169971          (p_event_id             => l_event_id
169972          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
169973          ,p_calculate_acctd_flag => l_calculate_acctd_flag
169974          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
169975    END IF;
169976 
169977    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
169978        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
169979 
169980 --
169981 AcctLineType_8 (
169982  p_application_id  => p_application_id
169983  ,p_event_id     => l_event_id
169984  ,p_calculate_acctd_flag => l_calculate_acctd_flag
169985  ,p_calculate_g_l_flag => l_calculate_g_l_flag
169986  ,p_actual_flag => l_actual_flag
169987  ,p_balance_type_code => l_balance_type_code
169988  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169989  
169990  , p_source_4 => l_array_source_4(Idx)
169991  , p_source_5 => l_array_source_5(Idx)
169992  , p_source_11 => l_array_source_11(Idx)
169993  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
169994  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
169995  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
169996  , p_source_18 => l_array_source_18(Idx)
169997  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
169998  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
169999  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
170000  , p_source_22 => l_array_source_22(Idx)
170001  );
170002 If(l_balance_type_code = 'A') THEN
170003   l_actual_gain_loss_ref := l_gain_or_loss_ref;
170004 END IF;
170005 
170006 --
170007 
170008 
170009 --
170010 AcctLineType_56 (
170011  p_application_id  => p_application_id
170012  ,p_event_id     => l_event_id
170013  ,p_calculate_acctd_flag => l_calculate_acctd_flag
170014  ,p_calculate_g_l_flag => l_calculate_g_l_flag
170015  ,p_actual_flag => l_actual_flag
170016  ,p_balance_type_code => l_balance_type_code
170017  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170018  
170019  , p_source_4 => l_array_source_4(Idx)
170020  , p_source_5 => l_array_source_5(Idx)
170021  , p_source_11 => l_array_source_11(Idx)
170022  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170023  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170024  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170025  , p_source_18 => l_array_source_18(Idx)
170026  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170027  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170028  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
170029  , p_source_22 => l_array_source_22(Idx)
170030  );
170031 If(l_balance_type_code = 'A') THEN
170032   l_actual_gain_loss_ref := l_gain_or_loss_ref;
170033 END IF;
170034 
170035 --
170036 
170037 
170038 --
170039 AcctLineType_234 (
170040  p_application_id  => p_application_id
170041  ,p_event_id     => l_event_id
170042  ,p_calculate_acctd_flag => l_calculate_acctd_flag
170043  ,p_calculate_g_l_flag => l_calculate_g_l_flag
170044  ,p_actual_flag => l_actual_flag
170045  ,p_balance_type_code => l_balance_type_code
170046  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170047  
170048  , p_source_4 => l_array_source_4(Idx)
170049  , p_source_5 => l_array_source_5(Idx)
170050  , p_source_11 => l_array_source_11(Idx)
170051  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170052  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170053  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170054  , p_source_18 => l_array_source_18(Idx)
170055  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170056  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170057  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
170058  , p_source_22 => l_array_source_22(Idx)
170059  );
170060 If(l_balance_type_code = 'A') THEN
170061   l_actual_gain_loss_ref := l_gain_or_loss_ref;
170062 END IF;
170063 
170064 --
170065 
170066 
170067 --
170068 AcctLineType_238 (
170069  p_application_id  => p_application_id
170070  ,p_event_id     => l_event_id
170071  ,p_calculate_acctd_flag => l_calculate_acctd_flag
170072  ,p_calculate_g_l_flag => l_calculate_g_l_flag
170073  ,p_actual_flag => l_actual_flag
170074  ,p_balance_type_code => l_balance_type_code
170075  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170076  
170077  , p_source_4 => l_array_source_4(Idx)
170078  , p_source_5 => l_array_source_5(Idx)
170079  , p_source_11 => l_array_source_11(Idx)
170080  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170081  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170082  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170083  , p_source_18 => l_array_source_18(Idx)
170084  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170085  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170086  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
170087  , p_source_22 => l_array_source_22(Idx)
170088  );
170089 If(l_balance_type_code = 'A') THEN
170090   l_actual_gain_loss_ref := l_gain_or_loss_ref;
170091 END IF;
170092 
170093 --
170094 
170095       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
170096       -- or secondary ledger that has different currency with primary
170097       -- or alc that is calculated by sla
170098       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
170099             (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'))
170100 
170101 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
170102 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
170103           AND (l_actual_flag = 'A')) THEN
170104         XLA_AE_LINES_PKG.CreateGainOrLossLines(
170105           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
170106          ,p_application_id   => p_application_id
170107          ,p_amb_context_code => 'DEFAULT'
170108          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
170109          ,p_event_class_code => C_EVENT_CLASS_CODE
170110          ,p_event_type_code  => C_EVENT_TYPE_CODE
170111          
170112          ,p_gain_ccid        => -1
170113          ,p_loss_ccid        => -1
170114 
170115          ,p_actual_flag      => l_actual_flag
170116          ,p_enc_flag         => null
170117          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
170118          ,p_enc_g_l_ref      => null
170119          );
170120       END IF;
170121    END IF;
170122 END IF;
170123 
170124    ELSE
170125       --
170126       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
170127       --
170128       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170129          trace
170130             (p_msg      => 'Trancaction revesal option is Y'
170131             ,p_level    => C_LEVEL_STATEMENT
170132             ,p_module   => l_log_module);
170133       END IF;
170134    END IF;
170135 
170136 END LOOP;
170137 l_result := XLA_AE_LINES_PKG.InsertLines ;
170138 end loop;
170139 close line_cur;
170140 
170141 
170142 --
170143 -- insert headers into xla_ae_headers_gt table
170144 --
170145 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
170146 
170147 -- insert into errors table here.
170148 
170149 END LOOP;
170150 
170151 --
170152 -- 4865292
170153 --
170154 -- Compare g_hdr_extract_count with event count in
170155 -- CreateHeadersAndLines.
170156 --
170157 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
170158 
170159 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170160    trace (p_msg     => '# rows extracted from header extract objects '
170161                     || ' (running total): '
170162                     || g_hdr_extract_count
170163          ,p_level   => C_LEVEL_STATEMENT
170164          ,p_module  => l_log_module);
170165 END IF;
170166 
170167 CLOSE header_cur;
170168 --
170169 
170170 --
170171 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170172    trace
170173       (p_msg      => 'END of EventClass_273'
170174       ,p_level    => C_LEVEL_PROCEDURE
170175       ,p_module   => l_log_module);
170176 END IF;
170177 --
170178 RETURN l_result;
170179 EXCEPTION
170180 WHEN xla_exceptions_pkg.application_exception THEN
170181    
170182 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
170183 
170184    
170185 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
170186 
170187    RAISE;
170188 
170189 WHEN NO_DATA_FOUND THEN
170190 
170191 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
170192 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
170193 
170194 FOR header_record IN header_cur
170195 LOOP
170196     l_array_header_events(header_record.event_id) := header_record.event_id;
170197 END LOOP;
170198 
170199 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
170200 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
170201 
170202 fnd_file.put_line(fnd_file.LOG, '                    ');
170203 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
170204 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
170205 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
170206 
170207 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
170208 LOOP
170209 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
170210 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
170211         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
170212 	END IF;
170213 END LOOP;
170214 
170215 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
170216 fnd_file.put_line(fnd_file.LOG, '                    ');
170217 
170218 
170219 xla_exceptions_pkg.raise_message
170220       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_273');
170221 
170222 
170223 WHEN OTHERS THEN
170224    xla_exceptions_pkg.raise_message
170225       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_273');
170226 END EventClass_273;
170227 --
170228 
170229 ---------------------------------------
170230 --
170231 -- PRIVATE PROCEDURE
170232 --         insert_sources_274
170233 --
170234 ----------------------------------------
170235 --
170236 PROCEDURE insert_sources_274(
170237                                 p_target_ledger_id       IN NUMBER
170238                               , p_language               IN VARCHAR2
170239                               , p_sla_ledger_id          IN NUMBER
170240                               , p_pad_start_date         IN DATE
170241                               , p_pad_end_date           IN DATE
170242                          )
170243 IS
170244 
170245 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SALES_ORDER_ALL';
170246 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
170247 p_apps_owner                   VARCHAR2(30);
170248 l_log_module                   VARCHAR2(240);
170249 BEGIN
170250 IF g_log_enabled THEN
170251       l_log_module := C_DEFAULT_MODULE||'.insert_sources_274';
170252 END IF;
170253 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170254 
170255       trace
170256          (p_msg      => 'BEGIN of insert_sources_274'
170257          ,p_level    => C_LEVEL_PROCEDURE
170258          ,p_module   => l_log_module);
170259 
170260 END IF;
170261 
170262 -- select APPS owner
170263 SELECT oracle_username
170264   INTO p_apps_owner
170265   FROM fnd_oracle_userid
170266  WHERE read_only_flag = 'U'
170267 ;
170268 
170269 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170270       trace
170271          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
170272                         ' - p_language = '||p_language||
170273                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
170274                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
170275                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
170276                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
170277          ,p_level    => C_LEVEL_STATEMENT
170278          ,p_module   => l_log_module);
170279 END IF;
170280 
170281 
170282 --
170283 INSERT INTO xla_diag_sources --hdr2
170284 (
170285         event_id
170286       , ledger_id
170287       , sla_ledger_id
170288       , description_language
170289       , object_name
170290       , object_type_code
170291       , line_number
170292       , source_application_id
170293       , source_type_code
170294       , source_code
170295       , source_value
170296       , source_meaning
170297       , created_by
170298       , creation_date
170299       , last_update_date
170300       , last_updated_by
170301       , last_update_login
170302       , program_update_date
170303       , program_application_id
170304       , program_id
170305       , request_id
170306 )
170307 SELECT
170308         event_id
170309       , p_target_ledger_id
170310       , p_sla_ledger_id
170311       , p_language
170312       , object_name
170313       , object_type_code
170314       , line_number
170315       , source_application_id
170316       , source_type_code
170317       , source_code
170318       , SUBSTR(source_value ,1,1996)
170319       , SUBSTR(source_meaning ,1,200)
170320       , xla_environment_pkg.g_Usr_Id
170321       , TRUNC(SYSDATE)
170322       , TRUNC(SYSDATE)
170323       , xla_environment_pkg.g_Usr_Id
170324       , xla_environment_pkg.g_Login_Id
170325       , TRUNC(SYSDATE)
170326       , xla_environment_pkg.g_Prog_Appl_Id
170327       , xla_environment_pkg.g_Prog_Id
170328       , xla_environment_pkg.g_Req_Id
170329   FROM (
170330        SELECT xet.event_id                  event_id
170331             , 0                          line_number
170332             , CASE r
170333                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
170334                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
170335                 
170336                ELSE null
170337               END                           object_name
170338             , CASE r
170339                 WHEN 1 THEN 'HEADER' 
170340                 WHEN 2 THEN 'HEADER' 
170341                 
170342                 ELSE null
170343               END                           object_type_code
170344             , CASE r
170345                 WHEN 1 THEN '707' 
170346                 WHEN 2 THEN '707' 
170347                 
170348                 ELSE null
170349               END                           source_application_id
170350             , 'S'             source_type_code
170351             , CASE r
170352                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
170353                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
170354                 
170355                 ELSE null
170356               END                           source_code
170357             , CASE r
170358                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
170359                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
170360                 
170361                 ELSE null
170362               END                           source_value
170363             , CASE r
170364                 WHEN 1 THEN fvl12.meaning
170365                 WHEN 2 THEN fvl38.meaning
170366                 
170367                 ELSE null
170368               END               source_meaning
170369          FROM xla_events_gt     xet  
170370       , CST_XLA_INV_HEADERS_V  h1
170371   , fnd_lookup_values    fvl12
170372   , fnd_lookup_values    fvl38
170373              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
170374          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
170375            AND xet.event_class_code = C_EVENT_CLASS_CODE
170376               AND h1.event_id = xet.event_id
170377    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
170378   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
170379   AND fvl12.view_application_id(+) = 700
170380   AND fvl12.language(+)            = USERENV('LANG')
170381      AND fvl38.lookup_type(+)         = 'YES_NO'
170382   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
170383   AND fvl38.view_application_id(+) = 0
170384   AND fvl38.language(+)            = USERENV('LANG')
170385   
170386 )
170387 ;
170388 --
170389 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170390 
170391       trace
170392          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
170393          ,p_level    => C_LEVEL_STATEMENT
170394          ,p_module   => l_log_module);
170395 
170396 END IF;
170397 --
170398 
170399 
170400 
170401 --
170402 INSERT INTO xla_diag_sources  --line2
170403 (
170404         event_id
170405       , ledger_id
170406       , sla_ledger_id
170407       , description_language
170408       , object_name
170409       , object_type_code
170410       , line_number
170411       , source_application_id
170412       , source_type_code
170413       , source_code
170414       , source_value
170415       , source_meaning
170416       , created_by
170417       , creation_date
170418       , last_update_date
170419       , last_updated_by
170420       , last_update_login
170421       , program_update_date
170422       , program_application_id
170423       , program_id
170424       , request_id
170425 )
170426 SELECT  event_id
170427       , p_target_ledger_id
170428       , p_sla_ledger_id
170429       , p_language
170430       , object_name
170431       , object_type_code
170432       , line_number
170433       , source_application_id
170434       , source_type_code
170435       , source_code
170436       , SUBSTR(source_value,1,1996)
170437       , SUBSTR(source_meaning ,1,200)
170438       , xla_environment_pkg.g_Usr_Id
170439       , TRUNC(SYSDATE)
170440       , TRUNC(SYSDATE)
170441       , xla_environment_pkg.g_Usr_Id
170442       , xla_environment_pkg.g_Login_Id
170443       , TRUNC(SYSDATE)
170444       , xla_environment_pkg.g_Prog_Appl_Id
170445       , xla_environment_pkg.g_Prog_Id
170446       , xla_environment_pkg.g_Req_Id
170447   FROM (
170448        SELECT xet.event_id                  event_id
170449             , l2.line_number                 line_number
170450             , CASE r
170451                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
170452                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
170453                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
170454                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
170455                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
170456                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
170457                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
170458                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
170459                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
170460                 
170461                ELSE null
170462               END                           object_name
170463             , CASE r
170464                 WHEN 1 THEN 'LINE' 
170465                 WHEN 2 THEN 'LINE' 
170466                 WHEN 3 THEN 'LINE' 
170467                 WHEN 4 THEN 'LINE' 
170468                 WHEN 5 THEN 'LINE' 
170469                 WHEN 6 THEN 'LINE' 
170470                 WHEN 7 THEN 'LINE' 
170471                 WHEN 8 THEN 'LINE' 
170472                 WHEN 9 THEN 'LINE' 
170473                 
170474                 ELSE null
170475               END                           object_type_code
170476             , CASE r
170477                 WHEN 1 THEN '707' 
170478                 WHEN 2 THEN '707' 
170479                 WHEN 3 THEN '707' 
170480                 WHEN 4 THEN '707' 
170481                 WHEN 5 THEN '707' 
170482                 WHEN 6 THEN '707' 
170483                 WHEN 7 THEN '707' 
170484                 WHEN 8 THEN '707' 
170485                 WHEN 9 THEN '707' 
170486                 
170487                 ELSE null
170488               END                           source_application_id
170489             , 'S'             source_type_code
170490             , CASE r
170491                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
170492                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
170493                 WHEN 3 THEN 'CURRENCY_CODE' 
170494                 WHEN 4 THEN 'ENTERED_AMOUNT' 
170495                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
170496                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
170497                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
170498                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
170499                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
170500                 
170501                 ELSE null
170502               END                           source_code
170503             , CASE r
170504                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
170505                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
170506                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
170507                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
170508                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
170509                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
170510                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
170511                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
170512                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
170513                 
170514                 ELSE null
170515               END                           source_value
170516             , null              source_meaning
170517          FROM  xla_events_gt     xet  
170518         , CST_XLA_INV_LINES_V  l2
170519             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
170520         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
170521           AND xet.event_class_code = C_EVENT_CLASS_CODE
170522             AND l2.event_id          = xet.event_id
170523 
170524 )
170525 ;
170526 --
170527 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170528 
170529       trace
170530          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
170531          ,p_level    => C_LEVEL_STATEMENT
170532          ,p_module   => l_log_module);
170533 
170534 END IF;
170535 
170536 
170537 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170538       trace
170539          (p_msg      => 'END of insert_sources_274'
170540          ,p_level    => C_LEVEL_PROCEDURE
170541          ,p_module   => l_log_module);
170542 END IF;
170543 EXCEPTION
170544   WHEN xla_exceptions_pkg.application_exception THEN
170545       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
170546             trace
170547                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
170548                ,p_level    => C_LEVEL_EXCEPTION
170549                ,p_module   => l_log_module);
170550       END IF;
170551       RAISE;
170552   WHEN OTHERS THEN
170553       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
170554             trace
170555                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
170556                ,p_level    => C_LEVEL_EXCEPTION
170557                ,p_module   => l_log_module);
170558        END IF;
170559        xla_exceptions_pkg.raise_message
170560            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_274');
170561 END insert_sources_274;
170562 --
170563 
170564 ---------------------------------------
170565 --
170566 -- PRIVATE FUNCTION
170567 --         EventClass_274
170568 --
170569 ----------------------------------------
170570 --
170571 FUNCTION EventClass_274
170572        (p_application_id         IN NUMBER
170573        ,p_base_ledger_id         IN NUMBER
170574        ,p_target_ledger_id       IN NUMBER
170575        ,p_language               IN VARCHAR2
170576        ,p_currency_code          IN VARCHAR2
170577        ,p_sla_ledger_id          IN NUMBER
170578        ,p_pad_start_date         IN DATE
170579        ,p_pad_end_date           IN DATE
170580        ,p_primary_ledger_id      IN NUMBER)
170581 RETURN BOOLEAN IS
170582 --
170583 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SALES_ORDER_ALL';
170584 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
170585 
170586 l_calculate_acctd_flag   VARCHAR2(1) :='N';
170587 l_calculate_g_l_flag     VARCHAR2(1) :='N';
170588 --
170589 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
170590 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
170591 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
170592 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170593 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
170594 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
170595 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
170596 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
170597 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170598 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170599 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
170600 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
170601 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
170602 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
170603 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170604 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170605 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170606 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170607 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170608 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170609 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170610 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170611 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
170612 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
170613 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
170614 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
170615 
170616 l_event_id                             NUMBER;
170617 l_previous_event_id                    NUMBER;
170618 l_first_event_id                       NUMBER;
170619 l_last_event_id                        NUMBER;
170620 
170621 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
170622 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
170623 --
170624 --
170625 l_result                    BOOLEAN := TRUE;
170626 l_rows                      NUMBER  := 1000;
170627 l_event_type_name           VARCHAR2(80) := 'All';
170628 l_event_class_name          VARCHAR2(80) := 'Sales Order Issue';
170629 l_description               VARCHAR2(4000);
170630 l_transaction_reversal      NUMBER;
170631 l_ae_header_id              NUMBER;
170632 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
170633 l_log_module                VARCHAR2(240);
170634 --
170635 l_acct_reversal_source      VARCHAR2(30);
170636 l_trx_reversal_source       VARCHAR2(30);
170637 
170638 l_continue_with_lines       BOOLEAN := TRUE;
170639 --
170640 l_acc_rev_gl_date_source    DATE;                      -- 4262811
170641 --
170642 type t_array_event_id is table of number index by binary_integer;
170643 
170644 l_rec_array_event                    t_rec_array_event;
170645 l_null_rec_array_event               t_rec_array_event;
170646 l_array_ae_header_id                 xla_number_array_type;
170647 l_actual_flag                        VARCHAR2(1) := NULL;
170648 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
170649 l_balance_type_code                  VARCHAR2(1) :=NULL;
170650 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
170651 
170652 --
170653 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
170654 --
170655 
170656 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
170657 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
170658 
170659 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
170660 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
170661 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
170662 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
170663 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
170664 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
170665 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
170666 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
170667 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
170668 
170669 l_array_source_12              t_array_source_12;
170670 l_array_source_12_meaning      t_array_lookup_meaning;
170671 l_array_source_38              t_array_source_38;
170672 l_array_source_38_meaning      t_array_lookup_meaning;
170673 
170674 l_array_source_4      t_array_source_4;
170675 l_array_source_11      t_array_source_11;
170676 l_array_source_15      t_array_source_15;
170677 l_array_source_18      t_array_source_18;
170678 l_array_source_19      t_array_source_19;
170679 l_array_source_20      t_array_source_20;
170680 l_array_source_21      t_array_source_21;
170681 l_array_source_22      t_array_source_22;
170682 l_array_source_24      t_array_source_24;
170683 
170684 --
170685 CURSOR header_cur
170686 IS
170687 SELECT /*+ leading(xet) cardinality(xet,1) */
170688 -- Event Class Code: SALES_ORDER
170689     xet.entity_id
170690    ,xet.legal_entity_id
170691    ,xet.entity_code
170692    ,xet.transaction_number
170693    ,xet.event_id
170694    ,xet.event_class_code
170695    ,xet.event_type_code
170696    ,xet.event_number
170697    ,xet.event_date
170698    ,xet.transaction_date
170699    ,xet.reference_num_1
170700    ,xet.reference_num_2
170701    ,xet.reference_num_3
170702    ,xet.reference_num_4
170703    ,xet.reference_char_1
170704    ,xet.reference_char_2
170705    ,xet.reference_char_3
170706    ,xet.reference_char_4
170707    ,xet.reference_date_1
170708    ,xet.reference_date_2
170709    ,xet.reference_date_3
170710    ,xet.reference_date_4
170711    ,xet.event_created_by
170712    ,xet.budgetary_control_flag 
170713   , h1.DISTRIBUTION_TYPE    source_12
170714   , fvl12.meaning   source_12_meaning
170715   , h1.TRANSFER_TO_GL_INDICATOR    source_38
170716   , fvl38.meaning   source_38_meaning
170717   FROM xla_events_gt     xet 
170718   , CST_XLA_INV_HEADERS_V  h1
170719   , fnd_lookup_values    fvl12
170720   , fnd_lookup_values    fvl38
170721  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
170722    and xet.event_class_code = C_EVENT_CLASS_CODE
170723    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
170724    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
170725   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
170726   AND fvl12.view_application_id(+) = 700
170727   AND fvl12.language(+)            = USERENV('LANG')
170728      AND fvl38.lookup_type(+)         = 'YES_NO'
170729   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
170730   AND fvl38.view_application_id(+) = 0
170731   AND fvl38.language(+)            = USERENV('LANG')
170732   
170733  ORDER BY event_id
170734 ;
170735 
170736 
170737 --
170738 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
170739 IS
170740 SELECT  /*+ leading(xet) cardinality(xet,1) */
170741 -- Event Class Code: SALES_ORDER
170742     xet.entity_id
170743    ,xet.legal_entity_id
170744    ,xet.entity_code
170745    ,xet.transaction_number
170746    ,xet.event_id
170747    ,xet.event_class_code
170748    ,xet.event_type_code
170749    ,xet.event_number
170750    ,xet.event_date
170751    ,xet.transaction_date
170752    ,xet.reference_num_1
170753    ,xet.reference_num_2
170754    ,xet.reference_num_3
170755    ,xet.reference_num_4
170756    ,xet.reference_char_1
170757    ,xet.reference_char_2
170758    ,xet.reference_char_3
170759    ,xet.reference_char_4
170760    ,xet.reference_date_1
170761    ,xet.reference_date_2
170762    ,xet.reference_date_3
170763    ,xet.reference_date_4
170764    ,xet.event_created_by
170765    ,xet.budgetary_control_flag
170766  , l2.LINE_NUMBER  
170767   , l2.CODE_COMBINATION_ID    source_4
170768   , l2.DISTRIBUTION_IDENTIFIER    source_11
170769   , l2.CURRENCY_CODE    source_15
170770   , l2.ENTERED_AMOUNT    source_18
170771   , l2.CURRENCY_CONVERSION_DATE    source_19
170772   , l2.CURRENCY_CONVERSION_RATE    source_20
170773   , l2.CURRENCY_CONVERSION_TYPE    source_21
170774   , l2.ACCOUNTED_AMOUNT    source_22
170775   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
170776   FROM xla_events_gt     xet 
170777   , CST_XLA_INV_LINES_V  l2
170778  WHERE xet.event_id between x_first_event_id and x_last_event_id
170779    and xet.event_date between p_pad_start_date and p_pad_end_date
170780    and xet.event_class_code = C_EVENT_CLASS_CODE
170781    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
170782 ;
170783 
170784 --
170785 BEGIN
170786 IF g_log_enabled THEN
170787    l_log_module := C_DEFAULT_MODULE||'.EventClass_274';
170788 END IF;
170789 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170790    trace
170791       (p_msg      => 'BEGIN of EventClass_274'
170792       ,p_level    => C_LEVEL_PROCEDURE
170793       ,p_module   => l_log_module);
170794 END IF;
170795 
170796 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170797    trace
170798       (p_msg      => 'p_application_id = '||p_application_id||
170799                      ' - p_base_ledger_id = '||p_base_ledger_id||
170800                      ' - p_target_ledger_id  = '||p_target_ledger_id||
170801                      ' - p_language = '||p_language||
170802                      ' - p_currency_code = '||p_currency_code||
170803                      ' - p_sla_ledger_id = '||p_sla_ledger_id
170804       ,p_level    => C_LEVEL_STATEMENT
170805       ,p_module   => l_log_module);
170806 END IF;
170807 --
170808 -- initialze arrays
170809 --
170810 g_array_event.DELETE;
170811 l_rec_array_event := l_null_rec_array_event;
170812 --
170813 --------------------------------------
170814 -- 4262811 Initialze MPA Line Number
170815 --------------------------------------
170816 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
170817 
170818 --
170819 
170820 --
170821 OPEN header_cur;
170822 --
170823 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170824    trace
170825    (p_msg      => 'SQL - FETCH header_cur'
170826    ,p_level    => C_LEVEL_STATEMENT
170827    ,p_module   => l_log_module);
170828 END IF;
170829 --
170830 LOOP
170831 FETCH header_cur BULK COLLECT INTO
170832         l_array_entity_id
170833       , l_array_legal_entity_id
170834       , l_array_entity_code
170835       , l_array_transaction_num
170836       , l_array_event_id
170837       , l_array_class_code
170838       , l_array_event_type
170839       , l_array_event_number
170840       , l_array_event_date
170841       , l_array_transaction_date
170842       , l_array_reference_num_1
170843       , l_array_reference_num_2
170844       , l_array_reference_num_3
170845       , l_array_reference_num_4
170846       , l_array_reference_char_1
170847       , l_array_reference_char_2
170848       , l_array_reference_char_3
170849       , l_array_reference_char_4
170850       , l_array_reference_date_1
170851       , l_array_reference_date_2
170852       , l_array_reference_date_3
170853       , l_array_reference_date_4
170854       , l_array_event_created_by
170855       , l_array_budgetary_control_flag 
170856       , l_array_source_12
170857       , l_array_source_12_meaning
170858       , l_array_source_38
170859       , l_array_source_38_meaning
170860       LIMIT l_rows;
170861 --
170862 IF (C_LEVEL_EVENT >= g_log_level) THEN
170863    trace
170864    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
170865    ,p_level    => C_LEVEL_EVENT
170866    ,p_module   => l_log_module);
170867 END IF;
170868 --
170869 EXIT WHEN l_array_entity_id.COUNT = 0;
170870 
170871 -- initialize arrays
170872 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
170873 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
170874 
170875 --
170876 -- Bug 4458708
170877 --
170878 XLA_AE_LINES_PKG.g_LineNumber := 0;
170879 
170880 
170881 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
170882 g_last_hdr_idx := l_array_event_id.LAST;
170883 --
170884 -- loop for the headers. Each iteration is for each header extract row
170885 -- fetched in header cursor
170886 --
170887 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
170888 
170889 --
170890 -- set event info as cache for other routines to refer event attributes
170891 --
170892 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
170893    (p_application_id           => p_application_id
170894    ,p_primary_ledger_id        => p_primary_ledger_id
170895    ,p_base_ledger_id           => p_base_ledger_id
170896    ,p_target_ledger_id         => p_target_ledger_id
170897    ,p_entity_id                => l_array_entity_id(hdr_idx)
170898    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
170899    ,p_entity_code              => l_array_entity_code(hdr_idx)
170900    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
170901    ,p_event_id                 => l_array_event_id(hdr_idx)
170902    ,p_event_class_code         => l_array_class_code(hdr_idx)
170903    ,p_event_type_code          => l_array_event_type(hdr_idx)
170904    ,p_event_number             => l_array_event_number(hdr_idx)
170905    ,p_event_date               => l_array_event_date(hdr_idx)
170906    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
170907    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
170908    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
170909    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
170910    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
170911    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
170912    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
170913    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
170914    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
170915    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
170916    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
170917    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
170918    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
170919    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
170920    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
170921 
170922 --
170923 -- set the status of entry to C_VALID (0)
170924 --
170925 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
170926 
170927 --
170928 -- initialize a row for ae header
170929 --
170930 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
170931 
170932 l_event_id := l_array_event_id(hdr_idx);
170933 
170934 --
170935 -- storing the hdr_idx for event. May be used by line cursor.
170936 --
170937 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
170938 
170939 --
170940 -- store sources from header extract. This can be improved to
170941 -- store only those sources from header extract that may be used in lines
170942 --
170943 
170944 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
170945 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
170946 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
170947 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
170948 
170949 --
170950 -- initilaize the status of ae headers for diffrent balance types
170951 -- the status is initialised to C_NOT_CREATED (2)
170952 --
170953 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170954 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170955 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170956 
170957 --
170958 -- call api to validate and store accounting attributes for header
170959 --
170960 
170961 ------------------------------------------------------------
170962 -- Accrual Reversal : to get date for Standard Source (NONE)
170963 ------------------------------------------------------------
170964 l_acc_rev_gl_date_source := NULL;
170965 
170966      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
170967       l_rec_acct_attrs.array_date_value(1) := 
170968 xla_ae_sources_pkg.GetSystemSourceDate(
170969    p_source_code           => 'XLA_REFERENCE_DATE_1'
170970  , p_source_type_code      => 'Y'
170971  , p_source_application_id =>  602
170972 );
170973      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
170974       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
170975 
170976 
170977 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
170978 
170979 XLA_AE_HEADER_PKG.SetJeCategoryName;
170980 
170981 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
170982 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
170983 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
170984 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
170985 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
170986 
170987 
170988 -- No header level analytical criteria
170989 
170990 --
170991 --accounting attribute enhancement, bug 3612931
170992 --
170993 l_trx_reversal_source := SUBSTR(NULL, 1,30);
170994 
170995 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
170996    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
170997 
170998    xla_accounting_err_pkg.build_message
170999       (p_appli_s_name            => 'XLA'
171000       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
171001       ,p_token_1                 => 'ACCT_ATTR_NAME'
171002       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
171003       ,p_token_2                 => 'PRODUCT_NAME'
171004       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
171005       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
171006       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
171007       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
171008 
171009 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
171010    --
171011    -- following sets the accounting attributes needed to reverse
171012    -- accounting for a distributeion
171013    --
171014    xla_ae_lines_pkg.SetTrxReversalAttrs
171015       (p_event_id              => l_event_id
171016       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
171017       ,p_trx_reversal_source   => l_trx_reversal_source);
171018 
171019 END IF;
171020 
171021 
171022 ----------------------------------------------------------------
171023 -- 4262811 -  update the header statuses to invalid in need be
171024 ----------------------------------------------------------------
171025 --
171026 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
171027 
171028 
171029   -----------------------------------------------
171030   -- No accrual reversal for the event class/type
171031   -----------------------------------------------
171032 ----------------------------------------------------------------
171033 
171034 --
171035 -- this ends the header loop iteration for one bulk fetch
171036 --
171037 END LOOP;
171038 
171039 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
171040 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
171041 
171042 --
171043 -- insert dummy rows into lines gt table that were created due to
171044 -- transaction reversals
171045 --
171046 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
171047    l_result := XLA_AE_LINES_PKG.InsertLines;
171048 END IF;
171049 
171050 --
171051 -- reset the temp_line_num for each set of events fetched from header
171052 -- cursor rather than doing it for each new event in line cursor
171053 -- Bug 3939231
171054 --
171055 xla_ae_lines_pkg.g_temp_line_num := 0;
171056 
171057 
171058 
171059 --
171060 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
171061 --
171062 --
171063 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171064 
171065       trace
171066          (p_msg      => 'SQL - FETCH line_cur'
171067          ,p_level    => C_LEVEL_STATEMENT
171068          ,p_module   => l_log_module);
171069 
171070 END IF;
171071 --
171072 --
171073 LOOP
171074   --
171075   FETCH line_cur BULK COLLECT INTO
171076         l_array_entity_id
171077       , l_array_legal_entity_id
171078       , l_array_entity_code
171079       , l_array_transaction_num
171080       , l_array_event_id
171081       , l_array_class_code
171082       , l_array_event_type
171083       , l_array_event_number
171084       , l_array_event_date
171085       , l_array_transaction_date
171086       , l_array_reference_num_1
171087       , l_array_reference_num_2
171088       , l_array_reference_num_3
171089       , l_array_reference_num_4
171090       , l_array_reference_char_1
171091       , l_array_reference_char_2
171092       , l_array_reference_char_3
171093       , l_array_reference_char_4
171094       , l_array_reference_date_1
171095       , l_array_reference_date_2
171096       , l_array_reference_date_3
171097       , l_array_reference_date_4
171098       , l_array_event_created_by
171099       , l_array_budgetary_control_flag
171100       , l_array_extract_line_num 
171101       , l_array_source_4
171102       , l_array_source_11
171103       , l_array_source_15
171104       , l_array_source_18
171105       , l_array_source_19
171106       , l_array_source_20
171107       , l_array_source_21
171108       , l_array_source_22
171109       , l_array_source_24
171110       LIMIT l_rows;
171111 
171112   --
171113   IF (C_LEVEL_EVENT >= g_log_level) THEN
171114             trace
171115                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
171116                ,p_level    => C_LEVEL_EVENT
171117                ,p_module   => l_log_module);
171118   END IF;
171119   --
171120   EXIT WHEN l_array_entity_id.count = 0;
171121 
171122   XLA_AE_LINES_PKG.g_rec_lines := null;
171123 
171124 --
171125 -- Bug 4458708
171126 --
171127 XLA_AE_LINES_PKG.g_LineNumber := 0;
171128 --
171129 --
171130 
171131 FOR Idx IN 1..l_array_event_id.count LOOP
171132    --
171133    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
171134    --
171135    l_event_id := l_array_event_id(idx);  -- 5648433
171136 
171137    --
171138    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
171139    --
171140 
171141    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
171142              (g_array_event(l_event_id).array_value_num('header_index'))
171143          ,'N'
171144          ) <> 'Y'
171145    THEN
171146       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171147          trace
171148             (p_msg      => 'Trancaction revesal option is not Y '
171149             ,p_level    => C_LEVEL_STATEMENT
171150             ,p_module   => l_log_module);
171151       END IF;
171152 
171153 --
171154 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
171155 --
171156 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
171157 --
171158 -- set event info as cache for other routines to refer event attributes
171159 --
171160 
171161 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
171162    l_previous_event_id := l_event_id;
171163 
171164    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
171165       (p_application_id           => p_application_id
171166       ,p_primary_ledger_id        => p_primary_ledger_id
171167       ,p_base_ledger_id           => p_base_ledger_id
171168       ,p_target_ledger_id         => p_target_ledger_id
171169       ,p_entity_id                => l_array_entity_id(Idx)
171170       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
171171       ,p_entity_code              => l_array_entity_code(Idx)
171172       ,p_transaction_num          => l_array_transaction_num(Idx)
171173       ,p_event_id                 => l_array_event_id(Idx)
171174       ,p_event_class_code         => l_array_class_code(Idx)
171175       ,p_event_type_code          => l_array_event_type(Idx)
171176       ,p_event_number             => l_array_event_number(Idx)
171177       ,p_event_date               => l_array_event_date(Idx)
171178       ,p_transaction_date         => l_array_transaction_date(Idx)
171179       ,p_reference_num_1          => l_array_reference_num_1(Idx)
171180       ,p_reference_num_2          => l_array_reference_num_2(Idx)
171181       ,p_reference_num_3          => l_array_reference_num_3(Idx)
171182       ,p_reference_num_4          => l_array_reference_num_4(Idx)
171183       ,p_reference_char_1         => l_array_reference_char_1(Idx)
171184       ,p_reference_char_2         => l_array_reference_char_2(Idx)
171185       ,p_reference_char_3         => l_array_reference_char_3(Idx)
171186       ,p_reference_char_4         => l_array_reference_char_4(Idx)
171187       ,p_reference_date_1         => l_array_reference_date_1(Idx)
171188       ,p_reference_date_2         => l_array_reference_date_2(Idx)
171189       ,p_reference_date_3         => l_array_reference_date_3(Idx)
171190       ,p_reference_date_4         => l_array_reference_date_4(Idx)
171191       ,p_event_created_by         => l_array_event_created_by(Idx)
171192       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
171193        --
171194 END IF;
171195 
171196 
171197 
171198 --
171199 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
171200 
171201 l_acct_reversal_source := SUBSTR(NULL, 1,30);
171202 
171203 IF l_continue_with_lines THEN
171204    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
171205       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
171206 
171207       xla_accounting_err_pkg.build_message
171208          (p_appli_s_name            => 'XLA'
171209          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
171210          ,p_token_1                 => 'LINE_NUMBER'
171211          ,p_value_1                 => l_array_extract_line_num(Idx)
171212          ,p_token_2                 => 'PRODUCT_NAME'
171213          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
171214          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
171215          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
171216          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
171217 
171218    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
171219       --
171220       -- following sets the accounting attributes needed to reverse
171221       -- accounting for a distributeion
171222       --
171223 
171224       --
171225       -- 5217187
171226       --
171227       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
171228       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
171229                                        g_array_event(l_event_id).array_value_num('header_index'));
171230       --
171231       --
171232 
171233       -- No reversal code generated
171234 
171235       xla_ae_lines_pkg.SetAcctReversalAttrs
171236          (p_event_id             => l_event_id
171237          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
171238          ,p_calculate_acctd_flag => l_calculate_acctd_flag
171239          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
171240    END IF;
171241 
171242    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
171243        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
171244 
171245 --
171246 AcctLineType_18 (
171247  p_application_id  => p_application_id
171248  ,p_event_id     => l_event_id
171249  ,p_calculate_acctd_flag => l_calculate_acctd_flag
171250  ,p_calculate_g_l_flag => l_calculate_g_l_flag
171251  ,p_actual_flag => l_actual_flag
171252  ,p_balance_type_code => l_balance_type_code
171253  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
171254  
171255  , p_source_4 => l_array_source_4(Idx)
171256  , p_source_11 => l_array_source_11(Idx)
171257  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
171258  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
171259  , p_source_15 => l_array_source_15(Idx)
171260  , p_source_18 => l_array_source_18(Idx)
171261  , p_source_19 => l_array_source_19(Idx)
171262  , p_source_20 => l_array_source_20(Idx)
171263  , p_source_21 => l_array_source_21(Idx)
171264  , p_source_22 => l_array_source_22(Idx)
171265  , p_source_24 => l_array_source_24(Idx)
171266  );
171267 If(l_balance_type_code = 'A') THEN
171268   l_actual_gain_loss_ref := l_gain_or_loss_ref;
171269 END IF;
171270 
171271 --
171272 
171273 
171274 --
171275 AcctLineType_23 (
171276  p_application_id  => p_application_id
171277  ,p_event_id     => l_event_id
171278  ,p_calculate_acctd_flag => l_calculate_acctd_flag
171279  ,p_calculate_g_l_flag => l_calculate_g_l_flag
171280  ,p_actual_flag => l_actual_flag
171281  ,p_balance_type_code => l_balance_type_code
171282  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
171283  
171284  , p_source_4 => l_array_source_4(Idx)
171285  , p_source_11 => l_array_source_11(Idx)
171286  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
171287  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
171288  , p_source_15 => l_array_source_15(Idx)
171289  , p_source_18 => l_array_source_18(Idx)
171290  , p_source_19 => l_array_source_19(Idx)
171291  , p_source_20 => l_array_source_20(Idx)
171292  , p_source_21 => l_array_source_21(Idx)
171293  , p_source_22 => l_array_source_22(Idx)
171294  , p_source_24 => l_array_source_24(Idx)
171295  );
171296 If(l_balance_type_code = 'A') THEN
171297   l_actual_gain_loss_ref := l_gain_or_loss_ref;
171298 END IF;
171299 
171300 --
171301 
171302 
171303 --
171304 AcctLineType_32 (
171305  p_application_id  => p_application_id
171306  ,p_event_id     => l_event_id
171307  ,p_calculate_acctd_flag => l_calculate_acctd_flag
171308  ,p_calculate_g_l_flag => l_calculate_g_l_flag
171309  ,p_actual_flag => l_actual_flag
171310  ,p_balance_type_code => l_balance_type_code
171311  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
171312  
171313  , p_source_4 => l_array_source_4(Idx)
171314  , p_source_11 => l_array_source_11(Idx)
171315  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
171316  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
171317  , p_source_15 => l_array_source_15(Idx)
171318  , p_source_18 => l_array_source_18(Idx)
171319  , p_source_19 => l_array_source_19(Idx)
171320  , p_source_20 => l_array_source_20(Idx)
171321  , p_source_21 => l_array_source_21(Idx)
171322  , p_source_22 => l_array_source_22(Idx)
171323  , p_source_24 => l_array_source_24(Idx)
171324  );
171325 If(l_balance_type_code = 'A') THEN
171326   l_actual_gain_loss_ref := l_gain_or_loss_ref;
171327 END IF;
171328 
171329 --
171330 
171331 
171332 --
171333 AcctLineType_45 (
171334  p_application_id  => p_application_id
171335  ,p_event_id     => l_event_id
171336  ,p_calculate_acctd_flag => l_calculate_acctd_flag
171337  ,p_calculate_g_l_flag => l_calculate_g_l_flag
171338  ,p_actual_flag => l_actual_flag
171339  ,p_balance_type_code => l_balance_type_code
171340  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
171341  
171342  , p_source_4 => l_array_source_4(Idx)
171343  , p_source_11 => l_array_source_11(Idx)
171344  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
171345  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
171346  , p_source_15 => l_array_source_15(Idx)
171347  , p_source_18 => l_array_source_18(Idx)
171348  , p_source_19 => l_array_source_19(Idx)
171349  , p_source_20 => l_array_source_20(Idx)
171350  , p_source_21 => l_array_source_21(Idx)
171351  , p_source_22 => l_array_source_22(Idx)
171352  , p_source_24 => l_array_source_24(Idx)
171353  );
171354 If(l_balance_type_code = 'A') THEN
171355   l_actual_gain_loss_ref := l_gain_or_loss_ref;
171356 END IF;
171357 
171358 --
171359 
171360 
171361 --
171362 AcctLineType_127 (
171363  p_application_id  => p_application_id
171364  ,p_event_id     => l_event_id
171365  ,p_calculate_acctd_flag => l_calculate_acctd_flag
171366  ,p_calculate_g_l_flag => l_calculate_g_l_flag
171367  ,p_actual_flag => l_actual_flag
171368  ,p_balance_type_code => l_balance_type_code
171369  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
171370  
171371  , p_source_4 => l_array_source_4(Idx)
171372  , p_source_11 => l_array_source_11(Idx)
171373  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
171374  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
171375  , p_source_15 => l_array_source_15(Idx)
171376  , p_source_18 => l_array_source_18(Idx)
171377  , p_source_19 => l_array_source_19(Idx)
171378  , p_source_20 => l_array_source_20(Idx)
171379  , p_source_21 => l_array_source_21(Idx)
171380  , p_source_22 => l_array_source_22(Idx)
171381  , p_source_24 => l_array_source_24(Idx)
171382  );
171383 If(l_balance_type_code = 'A') THEN
171384   l_actual_gain_loss_ref := l_gain_or_loss_ref;
171385 END IF;
171386 
171387 --
171388 
171389       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
171390       -- or secondary ledger that has different currency with primary
171391       -- or alc that is calculated by sla
171392       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
171393             (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'))
171394 
171395 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
171396 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
171397           AND (l_actual_flag = 'A')) THEN
171398         XLA_AE_LINES_PKG.CreateGainOrLossLines(
171399           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
171400          ,p_application_id   => p_application_id
171401          ,p_amb_context_code => 'DEFAULT'
171402          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
171403          ,p_event_class_code => C_EVENT_CLASS_CODE
171404          ,p_event_type_code  => C_EVENT_TYPE_CODE
171405          
171406          ,p_gain_ccid        => -1
171407          ,p_loss_ccid        => -1
171408 
171409          ,p_actual_flag      => l_actual_flag
171410          ,p_enc_flag         => null
171411          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
171412          ,p_enc_g_l_ref      => null
171413          );
171414       END IF;
171415    END IF;
171416 END IF;
171417 
171418    ELSE
171419       --
171420       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
171421       --
171422       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171423          trace
171424             (p_msg      => 'Trancaction revesal option is Y'
171425             ,p_level    => C_LEVEL_STATEMENT
171426             ,p_module   => l_log_module);
171427       END IF;
171428    END IF;
171429 
171430 END LOOP;
171431 l_result := XLA_AE_LINES_PKG.InsertLines ;
171432 end loop;
171433 close line_cur;
171434 
171435 
171436 --
171437 -- insert headers into xla_ae_headers_gt table
171438 --
171439 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
171440 
171441 -- insert into errors table here.
171442 
171443 END LOOP;
171444 
171445 --
171446 -- 4865292
171447 --
171448 -- Compare g_hdr_extract_count with event count in
171449 -- CreateHeadersAndLines.
171450 --
171451 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
171452 
171453 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171454    trace (p_msg     => '# rows extracted from header extract objects '
171455                     || ' (running total): '
171456                     || g_hdr_extract_count
171457          ,p_level   => C_LEVEL_STATEMENT
171458          ,p_module  => l_log_module);
171459 END IF;
171460 
171461 CLOSE header_cur;
171462 --
171463 
171464 --
171465 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171466    trace
171467       (p_msg      => 'END of EventClass_274'
171468       ,p_level    => C_LEVEL_PROCEDURE
171469       ,p_module   => l_log_module);
171470 END IF;
171471 --
171472 RETURN l_result;
171473 EXCEPTION
171474 WHEN xla_exceptions_pkg.application_exception THEN
171475    
171476 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
171477 
171478    
171479 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
171480 
171481    RAISE;
171482 
171483 WHEN NO_DATA_FOUND THEN
171484 
171485 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
171486 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
171487 
171488 FOR header_record IN header_cur
171489 LOOP
171490     l_array_header_events(header_record.event_id) := header_record.event_id;
171491 END LOOP;
171492 
171493 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
171494 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
171495 
171496 fnd_file.put_line(fnd_file.LOG, '                    ');
171497 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
171498 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
171499 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
171500 
171501 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
171502 LOOP
171503 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
171504 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
171505         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
171506 	END IF;
171507 END LOOP;
171508 
171509 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
171510 fnd_file.put_line(fnd_file.LOG, '                    ');
171511 
171512 
171513 xla_exceptions_pkg.raise_message
171514       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_274');
171515 
171516 
171517 WHEN OTHERS THEN
171518    xla_exceptions_pkg.raise_message
171519       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_274');
171520 END EventClass_274;
171521 --
171522 
171523 ---------------------------------------
171524 --
171525 -- PRIVATE PROCEDURE
171526 --         insert_sources_275
171527 --
171528 ----------------------------------------
171529 --
171530 PROCEDURE insert_sources_275(
171531                                 p_target_ledger_id       IN NUMBER
171532                               , p_language               IN VARCHAR2
171533                               , p_sla_ledger_id          IN NUMBER
171534                               , p_pad_start_date         IN DATE
171535                               , p_pad_end_date           IN DATE
171536                          )
171537 IS
171538 
171539 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UAVG_COST_UPD';
171540 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
171541 p_apps_owner                   VARCHAR2(30);
171542 l_log_module                   VARCHAR2(240);
171543 BEGIN
171544 IF g_log_enabled THEN
171545       l_log_module := C_DEFAULT_MODULE||'.insert_sources_275';
171546 END IF;
171547 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171548 
171549       trace
171550          (p_msg      => 'BEGIN of insert_sources_275'
171551          ,p_level    => C_LEVEL_PROCEDURE
171552          ,p_module   => l_log_module);
171553 
171554 END IF;
171555 
171556 -- select APPS owner
171557 SELECT oracle_username
171558   INTO p_apps_owner
171559   FROM fnd_oracle_userid
171560  WHERE read_only_flag = 'U'
171561 ;
171562 
171563 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171564       trace
171565          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
171566                         ' - p_language = '||p_language||
171567                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
171568                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
171569                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
171570                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
171571          ,p_level    => C_LEVEL_STATEMENT
171572          ,p_module   => l_log_module);
171573 END IF;
171574 
171575 
171576 --
171577 INSERT INTO xla_diag_sources --hdr1
171578 (
171579         event_id
171580       , ledger_id
171581       , sla_ledger_id
171582       , description_language
171583       , object_name
171584       , object_type_code
171585       , line_number
171586       , source_application_id
171587       , source_type_code
171588       , source_code
171589       , source_value
171590       , source_meaning
171591       , created_by
171592       , creation_date
171593       , last_update_date
171594       , last_updated_by
171595       , last_update_login
171596       , program_update_date
171597       , program_application_id
171598       , program_id
171599       , request_id
171600 )
171601 SELECT
171602         event_id
171603       , p_target_ledger_id
171604       , p_sla_ledger_id
171605       , p_language
171606       , object_name
171607       , object_type_code
171608       , line_number
171609       , source_application_id
171610       , source_type_code
171611       , source_code
171612       , SUBSTR(source_value ,1,1996)
171613       , SUBSTR(source_meaning,1,200)
171614       , xla_environment_pkg.g_Usr_Id
171615       , TRUNC(SYSDATE)
171616       , TRUNC(SYSDATE)
171617       , xla_environment_pkg.g_Usr_Id
171618       , xla_environment_pkg.g_Login_Id
171619       , TRUNC(SYSDATE)
171620       , xla_environment_pkg.g_Prog_Appl_Id
171621       , xla_environment_pkg.g_Prog_Id
171622       , xla_environment_pkg.g_Req_Id
171623   FROM (
171624        SELECT xet.event_id                  event_id
171625             , 0                             line_number
171626             , CASE r
171627                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
171628                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
171629                 
171630                ELSE null
171631               END                           object_name
171632             , CASE r
171633                 WHEN 1 THEN 'HEADER' 
171634                 WHEN 2 THEN 'HEADER' 
171635                 
171636                 ELSE null
171637               END                           object_type_code
171638             , CASE r
171639                 WHEN 1 THEN '707' 
171640                 WHEN 2 THEN '707' 
171641                 
171642                 ELSE null
171643               END                           source_application_id
171644             , 'S'             source_type_code
171645             , CASE r
171646                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
171647                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
171648                 
171649                 ELSE null
171650               END                           source_code
171651             , CASE r
171652                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
171653                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
171654                 
171655                 ELSE null
171656               END                           source_value
171657             , CASE r
171658                 WHEN 1 THEN fvl12.meaning
171659                 WHEN 2 THEN fvl38.meaning
171660                 
171661                 ELSE null
171662               END               source_meaning
171663         FROM xla_events_gt     xet  
171664       , CST_XLA_INV_HEADERS_V  h1
171665   , fnd_lookup_values    fvl12
171666   , fnd_lookup_values    fvl38
171667             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
171668        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
171669          AND xet.event_type_code = C_EVENT_TYPE_CODE
171670             AND h1.event_id = xet.event_id
171671    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
171672   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
171673   AND fvl12.view_application_id(+) = 700
171674   AND fvl12.language(+)            = USERENV('LANG')
171675      AND fvl38.lookup_type(+)         = 'YES_NO'
171676   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
171677   AND fvl38.view_application_id(+) = 0
171678   AND fvl38.language(+)            = USERENV('LANG')
171679   
171680 )
171681 ;
171682 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171683 
171684       trace
171685          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
171686          ,p_level    => C_LEVEL_STATEMENT
171687          ,p_module   => l_log_module);
171688 
171689 END IF;
171690 --
171691 
171692 
171693 
171694 --
171695 INSERT INTO xla_diag_sources --line1
171696 (
171697         event_id
171698       , ledger_id
171699       , sla_ledger_id
171700       , description_language
171701       , object_name
171702       , object_type_code
171703       , line_number
171704       , source_application_id
171705       , source_type_code
171706       , source_code
171707       , source_value
171708       , source_meaning
171709       , created_by
171710       , creation_date
171711       , last_update_date
171712       , last_updated_by
171713       , last_update_login
171714       , program_update_date
171715       , program_application_id
171716       , program_id
171717       , request_id
171718 )
171719 SELECT  event_id
171720       , p_target_ledger_id
171721       , p_sla_ledger_id
171722       , p_language
171723       , object_name
171724       , object_type_code
171725       , line_number
171726       , source_application_id
171727       , source_type_code
171728       , source_code
171729       , SUBSTR(source_value,1,1996)
171730       , SUBSTR(source_meaning,1,200)
171731       , xla_environment_pkg.g_Usr_Id
171732       , TRUNC(SYSDATE)
171733       , TRUNC(SYSDATE)
171734       , xla_environment_pkg.g_Usr_Id
171735       , xla_environment_pkg.g_Login_Id
171736       , TRUNC(SYSDATE)
171737       , xla_environment_pkg.g_Prog_Appl_Id
171738       , xla_environment_pkg.g_Prog_Id
171739       , xla_environment_pkg.g_Req_Id
171740   FROM (
171741        SELECT xet.event_id                  event_id
171742             , l2.line_number                 line_number
171743             , CASE r
171744                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
171745                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
171746                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
171747                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
171748                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
171749                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
171750                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
171751                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
171752                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
171753                 
171754                ELSE null
171755               END                           object_name
171756             , CASE r
171757                 WHEN 1 THEN 'LINE' 
171758                 WHEN 2 THEN 'LINE' 
171759                 WHEN 3 THEN 'LINE' 
171760                 WHEN 4 THEN 'LINE' 
171761                 WHEN 5 THEN 'LINE' 
171762                 WHEN 6 THEN 'LINE' 
171763                 WHEN 7 THEN 'LINE' 
171764                 WHEN 8 THEN 'LINE' 
171765                 WHEN 9 THEN 'LINE' 
171766                 
171767                 ELSE null
171768               END                           object_type_code
171769             , CASE r
171770                 WHEN 1 THEN '707' 
171771                 WHEN 2 THEN '707' 
171772                 WHEN 3 THEN '707' 
171773                 WHEN 4 THEN '707' 
171774                 WHEN 5 THEN '707' 
171775                 WHEN 6 THEN '707' 
171776                 WHEN 7 THEN '707' 
171777                 WHEN 8 THEN '707' 
171778                 WHEN 9 THEN '707' 
171779                 
171780                 ELSE null
171781               END                           source_application_id
171782             , 'S'             source_type_code
171783             , CASE r
171784                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
171785                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
171786                 WHEN 3 THEN 'CURRENCY_CODE' 
171787                 WHEN 4 THEN 'ENTERED_AMOUNT' 
171788                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
171789                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
171790                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
171791                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
171792                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
171793                 
171794                 ELSE null
171795               END                           source_code
171796             , CASE r
171797                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
171798                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
171799                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
171800                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
171801                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
171802                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
171803                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
171804                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
171805                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
171806                 
171807                 ELSE null
171808               END                           source_value
171809             , null              source_meaning
171810          FROM  xla_events_gt     xet  
171811         , CST_XLA_INV_LINES_V  l2
171812             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
171813         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
171814           AND xet.event_type_code = C_EVENT_TYPE_CODE
171815             AND l2.event_id          = xet.event_id
171816 
171817 )
171818 ;
171819 --
171820 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171821 
171822       trace
171823          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
171824          ,p_level    => C_LEVEL_STATEMENT
171825          ,p_module   => l_log_module);
171826 
171827 END IF;
171828 
171829 
171830 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171831       trace
171832          (p_msg      => 'END of insert_sources_275'
171833          ,p_level    => C_LEVEL_PROCEDURE
171834          ,p_module   => l_log_module);
171835 END IF;
171836 EXCEPTION
171837   WHEN xla_exceptions_pkg.application_exception THEN
171838       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
171839             trace
171840                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
171841                ,p_level    => C_LEVEL_EXCEPTION
171842                ,p_module   => l_log_module);
171843       END IF;
171844       RAISE;
171845   WHEN OTHERS THEN
171846       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
171847             trace
171848                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
171849                ,p_level    => C_LEVEL_EXCEPTION
171850                ,p_module   => l_log_module);
171851        END IF;
171852        xla_exceptions_pkg.raise_message
171853            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_275');
171854 END insert_sources_275;
171855 --
171856 
171857 ---------------------------------------
171858 --
171859 -- PRIVATE FUNCTION
171860 --         EventType_275
171861 --
171862 ----------------------------------------
171863 --
171864 FUNCTION EventType_275
171865        (p_application_id         IN NUMBER
171866        ,p_base_ledger_id         IN NUMBER
171867        ,p_target_ledger_id       IN NUMBER
171868        ,p_language               IN VARCHAR2
171869        ,p_currency_code          IN VARCHAR2
171870        ,p_sla_ledger_id          IN NUMBER
171871        ,p_pad_start_date         IN DATE
171872        ,p_pad_end_date           IN DATE
171873        ,p_primary_ledger_id      IN NUMBER)
171874 RETURN BOOLEAN IS
171875 --
171876 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UAVG_COST_UPD';
171877 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
171878 
171879 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
171880 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
171881 --
171882 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171883 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171884 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171885 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171886 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171887 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171888 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171889 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171890 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171891 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171892 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171893 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171894 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171895 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171896 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171897 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171898 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171899 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171900 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171901 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171902 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171903 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171904 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
171905 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171906 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
171907 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
171908 
171909 l_event_id                             NUMBER;
171910 l_previous_event_id                    NUMBER;
171911 l_first_event_id                       NUMBER;
171912 l_last_event_id                        NUMBER;
171913 
171914 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
171915 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
171916 --
171917 --
171918 l_result                    BOOLEAN := TRUE;
171919 l_rows                      NUMBER  := 1000;
171920 l_event_type_name           VARCHAR2(80) := 'User-defined Cost Update';
171921 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
171922 l_description               VARCHAR2(4000);
171923 l_transaction_reversal      NUMBER;
171924 l_ae_header_id              NUMBER;
171925 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
171926 l_log_module                VARCHAR2(240);
171927 --
171928 l_acct_reversal_source      VARCHAR2(30);
171929 l_trx_reversal_source       VARCHAR2(30);
171930 
171931 l_continue_with_lines       BOOLEAN := TRUE;
171932 --
171933 l_acc_rev_gl_date_source    DATE;                      -- 4262811
171934 --
171935 type t_array_event_id is table of number index by binary_integer;
171936 
171937 l_rec_array_event                    t_rec_array_event;
171938 l_null_rec_array_event               t_rec_array_event;
171939 l_array_ae_header_id                 xla_number_array_type;
171940 l_actual_flag                        VARCHAR2(1) := NULL;
171941 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
171942 l_balance_type_code                  VARCHAR2(1) :=NULL;
171943 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
171944 
171945 --
171946 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
171947 --
171948 
171949 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
171950 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
171951 
171952 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
171953 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
171954 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
171955 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
171956 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
171957 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
171958 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
171959 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
171960 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
171961 
171962 l_array_source_12              t_array_source_12;
171963 l_array_source_12_meaning      t_array_lookup_meaning;
171964 l_array_source_38              t_array_source_38;
171965 l_array_source_38_meaning      t_array_lookup_meaning;
171966 
171967 l_array_source_4      t_array_source_4;
171968 l_array_source_11      t_array_source_11;
171969 l_array_source_15      t_array_source_15;
171970 l_array_source_18      t_array_source_18;
171971 l_array_source_19      t_array_source_19;
171972 l_array_source_20      t_array_source_20;
171973 l_array_source_21      t_array_source_21;
171974 l_array_source_22      t_array_source_22;
171975 l_array_source_24      t_array_source_24;
171976 
171977 --
171978 CURSOR header_cur
171979 IS
171980 SELECT /*+ leading(xet) cardinality(xet,1) */
171981 -- Event Type Code: UAVG_COST_UPD
171982 -- Event Class Code: USER_DEFINE
171983     xet.entity_id
171984   , xet.legal_entity_id
171985   , xet.entity_code
171986   , xet.transaction_number
171987   , xet.event_id
171988   , xet.event_class_code
171989   , xet.event_type_code
171990   , xet.event_number
171991   , xet.event_date
171992   , xet.transaction_date
171993   , xet.reference_num_1
171994   , xet.reference_num_2
171995   , xet.reference_num_3
171996   , xet.reference_num_4
171997   , xet.reference_char_1
171998   , xet.reference_char_2
171999   , xet.reference_char_3
172000   , xet.reference_char_4
172001   , xet.reference_date_1
172002   , xet.reference_date_2
172003   , xet.reference_date_3
172004   , xet.reference_date_4
172005   , xet.event_created_by
172006   , xet.budgetary_control_flag 
172007   , h1.DISTRIBUTION_TYPE    source_12
172008   , fvl12.meaning   source_12_meaning
172009   , h1.TRANSFER_TO_GL_INDICATOR    source_38
172010   , fvl38.meaning   source_38_meaning
172011   FROM xla_events_gt     xet 
172012   , CST_XLA_INV_HEADERS_V  h1
172013   , fnd_lookup_values    fvl12
172014   , fnd_lookup_values    fvl38
172015  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
172016    and xet.event_type_code = C_EVENT_TYPE_CODE
172017    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
172018    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
172019   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
172020   AND fvl12.view_application_id(+) = 700
172021   AND fvl12.language(+)            = USERENV('LANG')
172022      AND fvl38.lookup_type(+)         = 'YES_NO'
172023   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
172024   AND fvl38.view_application_id(+) = 0
172025   AND fvl38.language(+)            = USERENV('LANG')
172026   
172027  ORDER BY event_id
172028 ;
172029 
172030 
172031 --
172032 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
172033 IS
172034 SELECT /*+ leading(xet) cardinality(xet,1) */
172035 -- Event Type Code: UAVG_COST_UPD
172036 -- Event Class Code: USER_DEFINE
172037     xet.entity_id
172038    ,xet.legal_entity_id
172039    ,xet.entity_code
172040    ,xet.transaction_number
172041    ,xet.event_id
172042    ,xet.event_class_code
172043    ,xet.event_type_code
172044    ,xet.event_number
172045    ,xet.event_date
172046    ,xet.transaction_date
172047    ,xet.reference_num_1
172048    ,xet.reference_num_2
172049    ,xet.reference_num_3
172050    ,xet.reference_num_4
172051    ,xet.reference_char_1
172052    ,xet.reference_char_2
172053    ,xet.reference_char_3
172054    ,xet.reference_char_4
172055    ,xet.reference_date_1
172056    ,xet.reference_date_2
172057    ,xet.reference_date_3
172058    ,xet.reference_date_4
172059    ,xet.event_created_by
172060    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
172061   , l2.CODE_COMBINATION_ID    source_4
172062   , l2.DISTRIBUTION_IDENTIFIER    source_11
172063   , l2.CURRENCY_CODE    source_15
172064   , l2.ENTERED_AMOUNT    source_18
172065   , l2.CURRENCY_CONVERSION_DATE    source_19
172066   , l2.CURRENCY_CONVERSION_RATE    source_20
172067   , l2.CURRENCY_CONVERSION_TYPE    source_21
172068   , l2.ACCOUNTED_AMOUNT    source_22
172069   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
172070   FROM xla_events_gt     xet 
172071   , CST_XLA_INV_LINES_V  l2
172072  WHERE xet.event_id between x_first_event_id and x_last_event_id
172073    and xet.event_date between p_pad_start_date and p_pad_end_date
172074    and xet.event_type_code = C_EVENT_TYPE_CODE
172075    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
172076 ;
172077 
172078 --
172079 BEGIN
172080 IF g_log_enabled THEN
172081    l_log_module := C_DEFAULT_MODULE||'.EventType_275';
172082 END IF;
172083 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172084    trace
172085       (p_msg      => 'BEGIN of EventType_275'
172086       ,p_level    => C_LEVEL_PROCEDURE
172087       ,p_module   => l_log_module);
172088 END IF;
172089 
172090 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172091    trace
172092       (p_msg      => 'p_application_id = '||p_application_id||
172093                      ' - p_base_ledger_id = '||p_base_ledger_id||
172094                      ' - p_target_ledger_id  = '||p_target_ledger_id||
172095                      ' - p_language = '||p_language||
172096                      ' - p_currency_code = '||p_currency_code||
172097                      ' - p_sla_ledger_id = '||p_sla_ledger_id
172098       ,p_level    => C_LEVEL_STATEMENT
172099       ,p_module   => l_log_module);
172100 END IF;
172101 --
172102 -- initialze arrays
172103 --
172104 g_array_event.DELETE;
172105 l_rec_array_event := l_null_rec_array_event;
172106 --
172107 --------------------------------------
172108 -- 4262811 Initialze MPA Line Number
172109 --------------------------------------
172110 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
172111 
172112 --
172113 
172114 --
172115 OPEN header_cur;
172116 --
172117 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172118    trace
172119    (p_msg      => 'SQL - FETCH header_cur'
172120    ,p_level    => C_LEVEL_STATEMENT
172121    ,p_module   => l_log_module);
172122 END IF;
172123 --
172124 LOOP
172125 FETCH header_cur BULK COLLECT INTO
172126         l_array_entity_id
172127       , l_array_legal_entity_id
172128       , l_array_entity_code
172129       , l_array_transaction_num
172130       , l_array_event_id
172131       , l_array_class_code
172132       , l_array_event_type
172133       , l_array_event_number
172134       , l_array_event_date
172135       , l_array_transaction_date
172136       , l_array_reference_num_1
172137       , l_array_reference_num_2
172138       , l_array_reference_num_3
172139       , l_array_reference_num_4
172140       , l_array_reference_char_1
172141       , l_array_reference_char_2
172142       , l_array_reference_char_3
172143       , l_array_reference_char_4
172144       , l_array_reference_date_1
172145       , l_array_reference_date_2
172146       , l_array_reference_date_3
172147       , l_array_reference_date_4
172148       , l_array_event_created_by
172149       , l_array_budgetary_control_flag 
172150       , l_array_source_12
172151       , l_array_source_12_meaning
172152       , l_array_source_38
172153       , l_array_source_38_meaning
172154       LIMIT l_rows;
172155 --
172156 IF (C_LEVEL_EVENT >= g_log_level) THEN
172157    trace
172158    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
172159    ,p_level    => C_LEVEL_EVENT
172160    ,p_module   => l_log_module);
172161 END IF;
172162 --
172163 EXIT WHEN l_array_entity_id.COUNT = 0;
172164 
172165 -- initialize arrays
172166 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
172167 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
172168 
172169 --
172170 -- Bug 4458708
172171 --
172172 XLA_AE_LINES_PKG.g_LineNumber := 0;
172173 
172174 
172175 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
172176 g_last_hdr_idx := l_array_event_id.LAST;
172177 --
172178 -- loop for the headers. Each iteration is for each header extract row
172179 -- fetched in header cursor
172180 --
172181 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
172182 
172183 --
172184 -- set event info as cache for other routines to refer event attributes
172185 --
172186 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
172187    (p_application_id           => p_application_id
172188    ,p_primary_ledger_id        => p_primary_ledger_id
172189    ,p_base_ledger_id           => p_base_ledger_id
172190    ,p_target_ledger_id         => p_target_ledger_id
172191    ,p_entity_id                => l_array_entity_id(hdr_idx)
172192    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
172193    ,p_entity_code              => l_array_entity_code(hdr_idx)
172194    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
172195    ,p_event_id                 => l_array_event_id(hdr_idx)
172196    ,p_event_class_code         => l_array_class_code(hdr_idx)
172197    ,p_event_type_code          => l_array_event_type(hdr_idx)
172198    ,p_event_number             => l_array_event_number(hdr_idx)
172199    ,p_event_date               => l_array_event_date(hdr_idx)
172200    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
172201    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
172202    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
172203    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
172204    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
172205    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
172206    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
172207    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
172208    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
172209    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
172210    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
172211    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
172212    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
172213    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
172214    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
172215 
172216 --
172217 -- set the status of entry to C_VALID (0)
172218 --
172219 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
172220 
172221 --
172222 -- initialize a row for ae header
172223 --
172224 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
172225 
172226 l_event_id := l_array_event_id(hdr_idx);
172227 
172228 --
172229 -- storing the hdr_idx for event. May be used by line cursor.
172230 --
172231 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
172232 
172233 --
172234 -- store sources from header extract. This can be improved to
172235 -- store only those sources from header extract that may be used in lines
172236 --
172237 
172238 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
172239 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
172240 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
172241 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
172242 
172243 --
172244 -- initilaize the status of ae headers for diffrent balance types
172245 -- the status is initialised to C_NOT_CREATED (2)
172246 --
172247 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
172248 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
172249 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
172250 
172251 --
172252 -- call api to validate and store accounting attributes for header
172253 --
172254 
172255 ------------------------------------------------------------
172256 -- Accrual Reversal : to get date for Standard Source (NONE)
172257 ------------------------------------------------------------
172258 l_acc_rev_gl_date_source := NULL;
172259 
172260      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
172261       l_rec_acct_attrs.array_date_value(1) := 
172262 xla_ae_sources_pkg.GetSystemSourceDate(
172263    p_source_code           => 'XLA_REFERENCE_DATE_1'
172264  , p_source_type_code      => 'Y'
172265  , p_source_application_id =>  602
172266 );
172267      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
172268       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
172269 
172270 
172271 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
172272 
172273 XLA_AE_HEADER_PKG.SetJeCategoryName;
172274 
172275 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
172276 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
172277 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
172278 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
172279 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
172280 
172281 
172282 -- No header level analytical criteria
172283 
172284 --
172285 --accounting attribute enhancement, bug 3612931
172286 --
172287 l_trx_reversal_source := SUBSTR(NULL, 1,30);
172288 
172289 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
172290    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
172291 
172292    xla_accounting_err_pkg.build_message
172293       (p_appli_s_name            => 'XLA'
172294       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
172295       ,p_token_1                 => 'ACCT_ATTR_NAME'
172296       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
172297       ,p_token_2                 => 'PRODUCT_NAME'
172298       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
172299       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
172300       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
172301       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
172302 
172303 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
172304    --
172305    -- following sets the accounting attributes needed to reverse
172306    -- accounting for a distributeion
172307    --
172308    xla_ae_lines_pkg.SetTrxReversalAttrs
172309       (p_event_id              => l_event_id
172310       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
172311       ,p_trx_reversal_source   => l_trx_reversal_source);
172312 
172313 END IF;
172314 
172315 
172316 ----------------------------------------------------------------
172317 -- 4262811 -  update the header statuses to invalid in need be
172318 ----------------------------------------------------------------
172319 --
172320 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
172321 
172322 
172323   -----------------------------------------------
172324   -- No accrual reversal for the event class/type
172325   -----------------------------------------------
172326 ----------------------------------------------------------------
172327 
172328 --
172329 -- this ends the header loop iteration for one bulk fetch
172330 --
172331 END LOOP;
172332 
172333 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
172334 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
172335 
172336 --
172337 -- insert dummy rows into lines gt table that were created due to
172338 -- transaction reversals
172339 --
172340 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
172341    l_result := XLA_AE_LINES_PKG.InsertLines;
172342 END IF;
172343 
172344 --
172345 -- reset the temp_line_num for each set of events fetched from header
172346 -- cursor rather than doing it for each new event in line cursor
172347 -- Bug 3939231
172348 --
172349 xla_ae_lines_pkg.g_temp_line_num := 0;
172350 
172351 
172352 
172353 --
172354 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
172355 --
172356 --
172357 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172358 
172359       trace
172360          (p_msg      => 'SQL - FETCH line_cur'
172361          ,p_level    => C_LEVEL_STATEMENT
172362          ,p_module   => l_log_module);
172363 
172364 END IF;
172365 --
172366 --
172367 LOOP
172368   --
172369   FETCH line_cur BULK COLLECT INTO
172370         l_array_entity_id
172371       , l_array_legal_entity_id
172372       , l_array_entity_code
172373       , l_array_transaction_num
172374       , l_array_event_id
172375       , l_array_class_code
172376       , l_array_event_type
172377       , l_array_event_number
172378       , l_array_event_date
172379       , l_array_transaction_date
172380       , l_array_reference_num_1
172381       , l_array_reference_num_2
172382       , l_array_reference_num_3
172383       , l_array_reference_num_4
172384       , l_array_reference_char_1
172385       , l_array_reference_char_2
172386       , l_array_reference_char_3
172387       , l_array_reference_char_4
172388       , l_array_reference_date_1
172389       , l_array_reference_date_2
172390       , l_array_reference_date_3
172391       , l_array_reference_date_4
172392       , l_array_event_created_by
172393       , l_array_budgetary_control_flag
172394       , l_array_extract_line_num 
172395       , l_array_source_4
172396       , l_array_source_11
172397       , l_array_source_15
172398       , l_array_source_18
172399       , l_array_source_19
172400       , l_array_source_20
172401       , l_array_source_21
172402       , l_array_source_22
172403       , l_array_source_24
172404       LIMIT l_rows;
172405 
172406   --
172407   IF (C_LEVEL_EVENT >= g_log_level) THEN
172408             trace
172409                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
172410                ,p_level    => C_LEVEL_EVENT
172411                ,p_module   => l_log_module);
172412   END IF;
172413   --
172414   EXIT WHEN l_array_entity_id.count = 0;
172415 
172416   XLA_AE_LINES_PKG.g_rec_lines := null;
172417 
172418 --
172419 -- Bug 4458708
172420 --
172421 XLA_AE_LINES_PKG.g_LineNumber := 0;
172422 --
172423 --
172424 
172425 FOR Idx IN 1..l_array_event_id.count LOOP
172426    --
172427    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
172428    --
172429    l_event_id := l_array_event_id(idx);  -- 5648433
172430 
172431    --
172432    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
172433    --
172434 
172435    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
172436              (g_array_event(l_event_id).array_value_num('header_index'))
172437          ,'N'
172438          ) <> 'Y'
172439    THEN
172440       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172441          trace
172442             (p_msg      => 'Trancaction revesal option is not Y '
172443             ,p_level    => C_LEVEL_STATEMENT
172444             ,p_module   => l_log_module);
172445       END IF;
172446 
172447 --
172448 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
172449 --
172450 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
172451 --
172452 -- set event info as cache for other routines to refer event attributes
172453 --
172454 
172455 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
172456    l_previous_event_id := l_event_id;
172457 
172458    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
172459       (p_application_id           => p_application_id
172460       ,p_primary_ledger_id        => p_primary_ledger_id
172461       ,p_base_ledger_id           => p_base_ledger_id
172462       ,p_target_ledger_id         => p_target_ledger_id
172463       ,p_entity_id                => l_array_entity_id(Idx)
172464       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
172465       ,p_entity_code              => l_array_entity_code(Idx)
172466       ,p_transaction_num          => l_array_transaction_num(Idx)
172467       ,p_event_id                 => l_array_event_id(Idx)
172468       ,p_event_class_code         => l_array_class_code(Idx)
172469       ,p_event_type_code          => l_array_event_type(Idx)
172470       ,p_event_number             => l_array_event_number(Idx)
172471       ,p_event_date               => l_array_event_date(Idx)
172472       ,p_transaction_date         => l_array_transaction_date(Idx)
172473       ,p_reference_num_1          => l_array_reference_num_1(Idx)
172474       ,p_reference_num_2          => l_array_reference_num_2(Idx)
172475       ,p_reference_num_3          => l_array_reference_num_3(Idx)
172476       ,p_reference_num_4          => l_array_reference_num_4(Idx)
172477       ,p_reference_char_1         => l_array_reference_char_1(Idx)
172478       ,p_reference_char_2         => l_array_reference_char_2(Idx)
172479       ,p_reference_char_3         => l_array_reference_char_3(Idx)
172480       ,p_reference_char_4         => l_array_reference_char_4(Idx)
172481       ,p_reference_date_1         => l_array_reference_date_1(Idx)
172482       ,p_reference_date_2         => l_array_reference_date_2(Idx)
172483       ,p_reference_date_3         => l_array_reference_date_3(Idx)
172484       ,p_reference_date_4         => l_array_reference_date_4(Idx)
172485       ,p_event_created_by         => l_array_event_created_by(Idx)
172486       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
172487        --
172488 END IF;
172489 
172490 
172491 
172492 --
172493 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
172494 
172495 l_acct_reversal_source := SUBSTR(NULL, 1,30);
172496 
172497 IF l_continue_with_lines THEN
172498    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
172499       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
172500 
172501       xla_accounting_err_pkg.build_message
172502          (p_appli_s_name            => 'XLA'
172503          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
172504          ,p_token_1                 => 'LINE_NUMBER'
172505          ,p_value_1                 => l_array_extract_line_num(Idx)
172506          ,p_token_2                 => 'PRODUCT_NAME'
172507          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
172508          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
172509          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
172510          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
172511 
172512    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
172513       --
172514       -- following sets the accounting attributes needed to reverse
172515       -- accounting for a distributeion
172516       --
172517 
172518       --
172519       -- 5217187
172520       --
172521       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
172522       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
172523                                        g_array_event(l_event_id).array_value_num('header_index'));
172524       --
172525       --
172526 
172527       -- No reversal code generated
172528 
172529       xla_ae_lines_pkg.SetAcctReversalAttrs
172530          (p_event_id             => l_event_id
172531          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
172532          ,p_calculate_acctd_flag => l_calculate_acctd_flag
172533          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
172534    END IF;
172535 
172536    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
172537        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
172538 
172539 --
172540 AcctLineType_24 (
172541  p_application_id  => p_application_id
172542  ,p_event_id     => l_event_id
172543  ,p_calculate_acctd_flag => l_calculate_acctd_flag
172544  ,p_calculate_g_l_flag => l_calculate_g_l_flag
172545  ,p_actual_flag => l_actual_flag
172546  ,p_balance_type_code => l_balance_type_code
172547  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
172548  
172549  , p_source_4 => l_array_source_4(Idx)
172550  , p_source_11 => l_array_source_11(Idx)
172551  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
172552  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
172553  , p_source_15 => l_array_source_15(Idx)
172554  , p_source_18 => l_array_source_18(Idx)
172555  , p_source_19 => l_array_source_19(Idx)
172556  , p_source_20 => l_array_source_20(Idx)
172557  , p_source_21 => l_array_source_21(Idx)
172558  , p_source_22 => l_array_source_22(Idx)
172559  , p_source_24 => l_array_source_24(Idx)
172560  );
172561 If(l_balance_type_code = 'A') THEN
172562   l_actual_gain_loss_ref := l_gain_or_loss_ref;
172563 END IF;
172564 
172565 --
172566 
172567 
172568 --
172569 AcctLineType_25 (
172570  p_application_id  => p_application_id
172571  ,p_event_id     => l_event_id
172572  ,p_calculate_acctd_flag => l_calculate_acctd_flag
172573  ,p_calculate_g_l_flag => l_calculate_g_l_flag
172574  ,p_actual_flag => l_actual_flag
172575  ,p_balance_type_code => l_balance_type_code
172576  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
172577  
172578  , p_source_4 => l_array_source_4(Idx)
172579  , p_source_11 => l_array_source_11(Idx)
172580  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
172581  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
172582  , p_source_15 => l_array_source_15(Idx)
172583  , p_source_18 => l_array_source_18(Idx)
172584  , p_source_19 => l_array_source_19(Idx)
172585  , p_source_20 => l_array_source_20(Idx)
172586  , p_source_21 => l_array_source_21(Idx)
172587  , p_source_22 => l_array_source_22(Idx)
172588  , p_source_24 => l_array_source_24(Idx)
172589  );
172590 If(l_balance_type_code = 'A') THEN
172591   l_actual_gain_loss_ref := l_gain_or_loss_ref;
172592 END IF;
172593 
172594 --
172595 
172596 
172597 --
172598 AcctLineType_47 (
172599  p_application_id  => p_application_id
172600  ,p_event_id     => l_event_id
172601  ,p_calculate_acctd_flag => l_calculate_acctd_flag
172602  ,p_calculate_g_l_flag => l_calculate_g_l_flag
172603  ,p_actual_flag => l_actual_flag
172604  ,p_balance_type_code => l_balance_type_code
172605  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
172606  
172607  , p_source_4 => l_array_source_4(Idx)
172608  , p_source_11 => l_array_source_11(Idx)
172609  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
172610  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
172611  , p_source_15 => l_array_source_15(Idx)
172612  , p_source_18 => l_array_source_18(Idx)
172613  , p_source_19 => l_array_source_19(Idx)
172614  , p_source_20 => l_array_source_20(Idx)
172615  , p_source_21 => l_array_source_21(Idx)
172616  , p_source_22 => l_array_source_22(Idx)
172617  , p_source_24 => l_array_source_24(Idx)
172618  );
172619 If(l_balance_type_code = 'A') THEN
172620   l_actual_gain_loss_ref := l_gain_or_loss_ref;
172621 END IF;
172622 
172623 --
172624 
172625 
172626 --
172627 AcctLineType_118 (
172628  p_application_id  => p_application_id
172629  ,p_event_id     => l_event_id
172630  ,p_calculate_acctd_flag => l_calculate_acctd_flag
172631  ,p_calculate_g_l_flag => l_calculate_g_l_flag
172632  ,p_actual_flag => l_actual_flag
172633  ,p_balance_type_code => l_balance_type_code
172634  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
172635  
172636  , p_source_4 => l_array_source_4(Idx)
172637  , p_source_11 => l_array_source_11(Idx)
172638  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
172639  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
172640  , p_source_15 => l_array_source_15(Idx)
172641  , p_source_18 => l_array_source_18(Idx)
172642  , p_source_19 => l_array_source_19(Idx)
172643  , p_source_20 => l_array_source_20(Idx)
172644  , p_source_21 => l_array_source_21(Idx)
172645  , p_source_22 => l_array_source_22(Idx)
172646  , p_source_24 => l_array_source_24(Idx)
172647  );
172648 If(l_balance_type_code = 'A') THEN
172649   l_actual_gain_loss_ref := l_gain_or_loss_ref;
172650 END IF;
172651 
172652 --
172653 
172654 
172655 --
172656 AcctLineType_135 (
172657  p_application_id  => p_application_id
172658  ,p_event_id     => l_event_id
172659  ,p_calculate_acctd_flag => l_calculate_acctd_flag
172660  ,p_calculate_g_l_flag => l_calculate_g_l_flag
172661  ,p_actual_flag => l_actual_flag
172662  ,p_balance_type_code => l_balance_type_code
172663  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
172664  
172665  , p_source_4 => l_array_source_4(Idx)
172666  , p_source_11 => l_array_source_11(Idx)
172667  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
172668  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
172669  , p_source_15 => l_array_source_15(Idx)
172670  , p_source_18 => l_array_source_18(Idx)
172671  , p_source_19 => l_array_source_19(Idx)
172672  , p_source_20 => l_array_source_20(Idx)
172673  , p_source_21 => l_array_source_21(Idx)
172674  , p_source_22 => l_array_source_22(Idx)
172675  , p_source_24 => l_array_source_24(Idx)
172676  );
172677 If(l_balance_type_code = 'A') THEN
172678   l_actual_gain_loss_ref := l_gain_or_loss_ref;
172679 END IF;
172680 
172681 --
172682 
172683       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
172684       -- or secondary ledger that has different currency with primary
172685       -- or alc that is calculated by sla
172686       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
172687             (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'))
172688 
172689 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
172690 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
172691           AND (l_actual_flag = 'A')) THEN
172692         XLA_AE_LINES_PKG.CreateGainOrLossLines(
172693           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
172694          ,p_application_id   => p_application_id
172695          ,p_amb_context_code => 'DEFAULT'
172696          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
172697          ,p_event_class_code => C_EVENT_CLASS_CODE
172698          ,p_event_type_code  => C_EVENT_TYPE_CODE
172699          
172700          ,p_gain_ccid        => -1
172701          ,p_loss_ccid        => -1
172702 
172703          ,p_actual_flag      => l_actual_flag
172704          ,p_enc_flag         => null
172705          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
172706          ,p_enc_g_l_ref      => null
172707          );
172708       END IF;
172709    END IF;
172710 END IF;
172711 
172712    ELSE
172713       --
172714       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
172715       --
172716       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172717          trace
172718             (p_msg      => 'Trancaction revesal option is Y'
172719             ,p_level    => C_LEVEL_STATEMENT
172720             ,p_module   => l_log_module);
172721       END IF;
172722    END IF;
172723 
172724 END LOOP;
172725 l_result := XLA_AE_LINES_PKG.InsertLines ;
172726 end loop;
172727 close line_cur;
172728 
172729 
172730 --
172731 -- insert headers into xla_ae_headers_gt table
172732 --
172733 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
172734 
172735 -- insert into errors table here.
172736 
172737 END LOOP;
172738 
172739 --
172740 -- 4865292
172741 --
172742 -- Compare g_hdr_extract_count with event count in
172743 -- CreateHeadersAndLines.
172744 --
172745 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
172746 
172747 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172748    trace (p_msg     => '# rows extracted from header extract objects '
172749                     || ' (running total): '
172750                     || g_hdr_extract_count
172751          ,p_level   => C_LEVEL_STATEMENT
172752          ,p_module  => l_log_module);
172753 END IF;
172754 
172755 CLOSE header_cur;
172756 --
172757 
172758 --
172759 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172760    trace
172761       (p_msg      => 'END of EventType_275'
172762       ,p_level    => C_LEVEL_PROCEDURE
172763       ,p_module   => l_log_module);
172764 END IF;
172765 --
172766 RETURN l_result;
172767 EXCEPTION
172768 WHEN xla_exceptions_pkg.application_exception THEN
172769    
172770 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
172771 
172772    
172773 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
172774 
172775    RAISE;
172776 
172777 WHEN NO_DATA_FOUND THEN
172778 
172779 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
172780 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
172781 
172782 FOR header_record IN header_cur
172783 LOOP
172784     l_array_header_events(header_record.event_id) := header_record.event_id;
172785 END LOOP;
172786 
172787 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
172788 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
172789 
172790 fnd_file.put_line(fnd_file.LOG, '                    ');
172791 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
172792 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
172793 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
172794 
172795 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
172796 LOOP
172797 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
172798 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
172799         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
172800 	END IF;
172801 END LOOP;
172802 
172803 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
172804 fnd_file.put_line(fnd_file.LOG, '                    ');
172805 
172806 
172807 xla_exceptions_pkg.raise_message
172808       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_275');
172809 
172810 
172811 WHEN OTHERS THEN
172812    xla_exceptions_pkg.raise_message
172813       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_275');
172814 END EventType_275;
172815 --
172816 
172817 ---------------------------------------
172818 --
172819 -- PRIVATE PROCEDURE
172820 --         insert_sources_276
172821 --
172822 ----------------------------------------
172823 --
172824 PROCEDURE insert_sources_276(
172825                                 p_target_ledger_id       IN NUMBER
172826                               , p_language               IN VARCHAR2
172827                               , p_sla_ledger_id          IN NUMBER
172828                               , p_pad_start_date         IN DATE
172829                               , p_pad_end_date           IN DATE
172830                          )
172831 IS
172832 
172833 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UCG_TXFR';
172834 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
172835 p_apps_owner                   VARCHAR2(30);
172836 l_log_module                   VARCHAR2(240);
172837 BEGIN
172838 IF g_log_enabled THEN
172839       l_log_module := C_DEFAULT_MODULE||'.insert_sources_276';
172840 END IF;
172841 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172842 
172843       trace
172844          (p_msg      => 'BEGIN of insert_sources_276'
172845          ,p_level    => C_LEVEL_PROCEDURE
172846          ,p_module   => l_log_module);
172847 
172848 END IF;
172849 
172850 -- select APPS owner
172851 SELECT oracle_username
172852   INTO p_apps_owner
172853   FROM fnd_oracle_userid
172854  WHERE read_only_flag = 'U'
172855 ;
172856 
172857 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172858       trace
172859          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
172860                         ' - p_language = '||p_language||
172861                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
172862                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
172863                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
172864                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
172865          ,p_level    => C_LEVEL_STATEMENT
172866          ,p_module   => l_log_module);
172867 END IF;
172868 
172869 
172870 --
172871 INSERT INTO xla_diag_sources --hdr1
172872 (
172873         event_id
172874       , ledger_id
172875       , sla_ledger_id
172876       , description_language
172877       , object_name
172878       , object_type_code
172879       , line_number
172880       , source_application_id
172881       , source_type_code
172882       , source_code
172883       , source_value
172884       , source_meaning
172885       , created_by
172886       , creation_date
172887       , last_update_date
172888       , last_updated_by
172889       , last_update_login
172890       , program_update_date
172891       , program_application_id
172892       , program_id
172893       , request_id
172894 )
172895 SELECT
172896         event_id
172897       , p_target_ledger_id
172898       , p_sla_ledger_id
172899       , p_language
172900       , object_name
172901       , object_type_code
172902       , line_number
172903       , source_application_id
172904       , source_type_code
172905       , source_code
172906       , SUBSTR(source_value ,1,1996)
172907       , SUBSTR(source_meaning,1,200)
172908       , xla_environment_pkg.g_Usr_Id
172909       , TRUNC(SYSDATE)
172910       , TRUNC(SYSDATE)
172911       , xla_environment_pkg.g_Usr_Id
172912       , xla_environment_pkg.g_Login_Id
172913       , TRUNC(SYSDATE)
172914       , xla_environment_pkg.g_Prog_Appl_Id
172915       , xla_environment_pkg.g_Prog_Id
172916       , xla_environment_pkg.g_Req_Id
172917   FROM (
172918        SELECT xet.event_id                  event_id
172919             , 0                             line_number
172920             , CASE r
172921                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
172922                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
172923                 
172924                ELSE null
172925               END                           object_name
172926             , CASE r
172927                 WHEN 1 THEN 'HEADER' 
172928                 WHEN 2 THEN 'HEADER' 
172929                 
172930                 ELSE null
172931               END                           object_type_code
172932             , CASE r
172933                 WHEN 1 THEN '707' 
172934                 WHEN 2 THEN '707' 
172935                 
172936                 ELSE null
172937               END                           source_application_id
172938             , 'S'             source_type_code
172939             , CASE r
172940                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
172941                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
172942                 
172943                 ELSE null
172944               END                           source_code
172945             , CASE r
172946                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
172947                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
172948                 
172949                 ELSE null
172950               END                           source_value
172951             , CASE r
172952                 WHEN 1 THEN fvl12.meaning
172953                 WHEN 2 THEN fvl38.meaning
172954                 
172955                 ELSE null
172956               END               source_meaning
172957         FROM xla_events_gt     xet  
172958       , CST_XLA_INV_HEADERS_V  h1
172959   , fnd_lookup_values    fvl12
172960   , fnd_lookup_values    fvl38
172961             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
172962        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
172963          AND xet.event_type_code = C_EVENT_TYPE_CODE
172964             AND h1.event_id = xet.event_id
172965    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
172966   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
172967   AND fvl12.view_application_id(+) = 700
172968   AND fvl12.language(+)            = USERENV('LANG')
172969      AND fvl38.lookup_type(+)         = 'YES_NO'
172970   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
172971   AND fvl38.view_application_id(+) = 0
172972   AND fvl38.language(+)            = USERENV('LANG')
172973   
172974 )
172975 ;
172976 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172977 
172978       trace
172979          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
172980          ,p_level    => C_LEVEL_STATEMENT
172981          ,p_module   => l_log_module);
172982 
172983 END IF;
172984 --
172985 
172986 
172987 
172988 --
172989 INSERT INTO xla_diag_sources --line1
172990 (
172991         event_id
172992       , ledger_id
172993       , sla_ledger_id
172994       , description_language
172995       , object_name
172996       , object_type_code
172997       , line_number
172998       , source_application_id
172999       , source_type_code
173000       , source_code
173001       , source_value
173002       , source_meaning
173003       , created_by
173004       , creation_date
173005       , last_update_date
173006       , last_updated_by
173007       , last_update_login
173008       , program_update_date
173009       , program_application_id
173010       , program_id
173011       , request_id
173012 )
173013 SELECT  event_id
173014       , p_target_ledger_id
173015       , p_sla_ledger_id
173016       , p_language
173017       , object_name
173018       , object_type_code
173019       , line_number
173020       , source_application_id
173021       , source_type_code
173022       , source_code
173023       , SUBSTR(source_value,1,1996)
173024       , SUBSTR(source_meaning,1,200)
173025       , xla_environment_pkg.g_Usr_Id
173026       , TRUNC(SYSDATE)
173027       , TRUNC(SYSDATE)
173028       , xla_environment_pkg.g_Usr_Id
173029       , xla_environment_pkg.g_Login_Id
173030       , TRUNC(SYSDATE)
173031       , xla_environment_pkg.g_Prog_Appl_Id
173032       , xla_environment_pkg.g_Prog_Id
173033       , xla_environment_pkg.g_Req_Id
173034   FROM (
173035        SELECT xet.event_id                  event_id
173036             , l2.line_number                 line_number
173037             , CASE r
173038                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
173039                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
173040                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
173041                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
173042                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
173043                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
173044                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
173045                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
173046                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
173047                 
173048                ELSE null
173049               END                           object_name
173050             , CASE r
173051                 WHEN 1 THEN 'LINE' 
173052                 WHEN 2 THEN 'LINE' 
173053                 WHEN 3 THEN 'LINE' 
173054                 WHEN 4 THEN 'LINE' 
173055                 WHEN 5 THEN 'LINE' 
173056                 WHEN 6 THEN 'LINE' 
173057                 WHEN 7 THEN 'LINE' 
173058                 WHEN 8 THEN 'LINE' 
173059                 WHEN 9 THEN 'LINE' 
173060                 
173061                 ELSE null
173062               END                           object_type_code
173063             , CASE r
173064                 WHEN 1 THEN '707' 
173065                 WHEN 2 THEN '707' 
173066                 WHEN 3 THEN '707' 
173067                 WHEN 4 THEN '707' 
173068                 WHEN 5 THEN '707' 
173069                 WHEN 6 THEN '707' 
173070                 WHEN 7 THEN '707' 
173071                 WHEN 8 THEN '707' 
173072                 WHEN 9 THEN '707' 
173073                 
173074                 ELSE null
173075               END                           source_application_id
173076             , 'S'             source_type_code
173077             , CASE r
173078                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
173079                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
173080                 WHEN 3 THEN 'CURRENCY_CODE' 
173081                 WHEN 4 THEN 'ENTERED_AMOUNT' 
173082                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
173083                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
173084                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
173085                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
173086                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
173087                 
173088                 ELSE null
173089               END                           source_code
173090             , CASE r
173091                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
173092                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
173093                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
173094                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
173095                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
173096                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
173097                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
173098                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
173099                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
173100                 
173101                 ELSE null
173102               END                           source_value
173103             , null              source_meaning
173104          FROM  xla_events_gt     xet  
173105         , CST_XLA_INV_LINES_V  l2
173106             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
173107         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
173108           AND xet.event_type_code = C_EVENT_TYPE_CODE
173109             AND l2.event_id          = xet.event_id
173110 
173111 )
173112 ;
173113 --
173114 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173115 
173116       trace
173117          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
173118          ,p_level    => C_LEVEL_STATEMENT
173119          ,p_module   => l_log_module);
173120 
173121 END IF;
173122 
173123 
173124 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173125       trace
173126          (p_msg      => 'END of insert_sources_276'
173127          ,p_level    => C_LEVEL_PROCEDURE
173128          ,p_module   => l_log_module);
173129 END IF;
173130 EXCEPTION
173131   WHEN xla_exceptions_pkg.application_exception THEN
173132       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
173133             trace
173134                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
173135                ,p_level    => C_LEVEL_EXCEPTION
173136                ,p_module   => l_log_module);
173137       END IF;
173138       RAISE;
173139   WHEN OTHERS THEN
173140       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
173141             trace
173142                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
173143                ,p_level    => C_LEVEL_EXCEPTION
173144                ,p_module   => l_log_module);
173145        END IF;
173146        xla_exceptions_pkg.raise_message
173147            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_276');
173148 END insert_sources_276;
173149 --
173150 
173151 ---------------------------------------
173152 --
173153 -- PRIVATE FUNCTION
173154 --         EventType_276
173155 --
173156 ----------------------------------------
173157 --
173158 FUNCTION EventType_276
173159        (p_application_id         IN NUMBER
173160        ,p_base_ledger_id         IN NUMBER
173161        ,p_target_ledger_id       IN NUMBER
173162        ,p_language               IN VARCHAR2
173163        ,p_currency_code          IN VARCHAR2
173164        ,p_sla_ledger_id          IN NUMBER
173165        ,p_pad_start_date         IN DATE
173166        ,p_pad_end_date           IN DATE
173167        ,p_primary_ledger_id      IN NUMBER)
173168 RETURN BOOLEAN IS
173169 --
173170 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UCG_TXFR';
173171 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
173172 
173173 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
173174 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
173175 --
173176 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173177 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173178 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
173179 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173180 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173181 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
173182 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
173183 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173184 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173185 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173186 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173187 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173188 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173189 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173190 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173191 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173192 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173193 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173194 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173195 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173196 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173197 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173198 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
173199 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
173200 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
173201 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
173202 
173203 l_event_id                             NUMBER;
173204 l_previous_event_id                    NUMBER;
173205 l_first_event_id                       NUMBER;
173206 l_last_event_id                        NUMBER;
173207 
173208 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
173209 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
173210 --
173211 --
173212 l_result                    BOOLEAN := TRUE;
173213 l_rows                      NUMBER  := 1000;
173214 l_event_type_name           VARCHAR2(80) := 'User-defined Cost Group Transfer';
173215 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
173216 l_description               VARCHAR2(4000);
173217 l_transaction_reversal      NUMBER;
173218 l_ae_header_id              NUMBER;
173219 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
173220 l_log_module                VARCHAR2(240);
173221 --
173222 l_acct_reversal_source      VARCHAR2(30);
173223 l_trx_reversal_source       VARCHAR2(30);
173224 
173225 l_continue_with_lines       BOOLEAN := TRUE;
173226 --
173227 l_acc_rev_gl_date_source    DATE;                      -- 4262811
173228 --
173229 type t_array_event_id is table of number index by binary_integer;
173230 
173231 l_rec_array_event                    t_rec_array_event;
173232 l_null_rec_array_event               t_rec_array_event;
173233 l_array_ae_header_id                 xla_number_array_type;
173234 l_actual_flag                        VARCHAR2(1) := NULL;
173235 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
173236 l_balance_type_code                  VARCHAR2(1) :=NULL;
173237 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
173238 
173239 --
173240 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
173241 --
173242 
173243 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
173244 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
173245 
173246 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
173247 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
173248 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
173249 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
173250 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
173251 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
173252 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
173253 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
173254 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
173255 
173256 l_array_source_12              t_array_source_12;
173257 l_array_source_12_meaning      t_array_lookup_meaning;
173258 l_array_source_38              t_array_source_38;
173259 l_array_source_38_meaning      t_array_lookup_meaning;
173260 
173261 l_array_source_4      t_array_source_4;
173262 l_array_source_11      t_array_source_11;
173263 l_array_source_15      t_array_source_15;
173264 l_array_source_18      t_array_source_18;
173265 l_array_source_19      t_array_source_19;
173266 l_array_source_20      t_array_source_20;
173267 l_array_source_21      t_array_source_21;
173268 l_array_source_22      t_array_source_22;
173269 l_array_source_24      t_array_source_24;
173270 
173271 --
173272 CURSOR header_cur
173273 IS
173274 SELECT /*+ leading(xet) cardinality(xet,1) */
173275 -- Event Type Code: UCG_TXFR
173276 -- Event Class Code: USER_DEFINE
173277     xet.entity_id
173278   , xet.legal_entity_id
173279   , xet.entity_code
173280   , xet.transaction_number
173281   , xet.event_id
173282   , xet.event_class_code
173283   , xet.event_type_code
173284   , xet.event_number
173285   , xet.event_date
173286   , xet.transaction_date
173287   , xet.reference_num_1
173288   , xet.reference_num_2
173289   , xet.reference_num_3
173290   , xet.reference_num_4
173291   , xet.reference_char_1
173292   , xet.reference_char_2
173293   , xet.reference_char_3
173294   , xet.reference_char_4
173295   , xet.reference_date_1
173296   , xet.reference_date_2
173297   , xet.reference_date_3
173298   , xet.reference_date_4
173299   , xet.event_created_by
173300   , xet.budgetary_control_flag 
173301   , h1.DISTRIBUTION_TYPE    source_12
173302   , fvl12.meaning   source_12_meaning
173303   , h1.TRANSFER_TO_GL_INDICATOR    source_38
173304   , fvl38.meaning   source_38_meaning
173305   FROM xla_events_gt     xet 
173306   , CST_XLA_INV_HEADERS_V  h1
173307   , fnd_lookup_values    fvl12
173308   , fnd_lookup_values    fvl38
173309  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
173310    and xet.event_type_code = C_EVENT_TYPE_CODE
173311    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
173312    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
173313   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
173314   AND fvl12.view_application_id(+) = 700
173315   AND fvl12.language(+)            = USERENV('LANG')
173316      AND fvl38.lookup_type(+)         = 'YES_NO'
173317   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
173318   AND fvl38.view_application_id(+) = 0
173319   AND fvl38.language(+)            = USERENV('LANG')
173320   
173321  ORDER BY event_id
173322 ;
173323 
173324 
173325 --
173326 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
173327 IS
173328 SELECT /*+ leading(xet) cardinality(xet,1) */
173329 -- Event Type Code: UCG_TXFR
173330 -- Event Class Code: USER_DEFINE
173331     xet.entity_id
173332    ,xet.legal_entity_id
173333    ,xet.entity_code
173334    ,xet.transaction_number
173335    ,xet.event_id
173336    ,xet.event_class_code
173337    ,xet.event_type_code
173338    ,xet.event_number
173339    ,xet.event_date
173340    ,xet.transaction_date
173341    ,xet.reference_num_1
173342    ,xet.reference_num_2
173343    ,xet.reference_num_3
173344    ,xet.reference_num_4
173345    ,xet.reference_char_1
173346    ,xet.reference_char_2
173347    ,xet.reference_char_3
173348    ,xet.reference_char_4
173349    ,xet.reference_date_1
173350    ,xet.reference_date_2
173351    ,xet.reference_date_3
173352    ,xet.reference_date_4
173353    ,xet.event_created_by
173354    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
173355   , l2.CODE_COMBINATION_ID    source_4
173356   , l2.DISTRIBUTION_IDENTIFIER    source_11
173357   , l2.CURRENCY_CODE    source_15
173358   , l2.ENTERED_AMOUNT    source_18
173359   , l2.CURRENCY_CONVERSION_DATE    source_19
173360   , l2.CURRENCY_CONVERSION_RATE    source_20
173361   , l2.CURRENCY_CONVERSION_TYPE    source_21
173362   , l2.ACCOUNTED_AMOUNT    source_22
173363   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
173364   FROM xla_events_gt     xet 
173365   , CST_XLA_INV_LINES_V  l2
173366  WHERE xet.event_id between x_first_event_id and x_last_event_id
173367    and xet.event_date between p_pad_start_date and p_pad_end_date
173368    and xet.event_type_code = C_EVENT_TYPE_CODE
173369    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
173370 ;
173371 
173372 --
173373 BEGIN
173374 IF g_log_enabled THEN
173375    l_log_module := C_DEFAULT_MODULE||'.EventType_276';
173376 END IF;
173377 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173378    trace
173379       (p_msg      => 'BEGIN of EventType_276'
173380       ,p_level    => C_LEVEL_PROCEDURE
173381       ,p_module   => l_log_module);
173382 END IF;
173383 
173384 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173385    trace
173386       (p_msg      => 'p_application_id = '||p_application_id||
173387                      ' - p_base_ledger_id = '||p_base_ledger_id||
173388                      ' - p_target_ledger_id  = '||p_target_ledger_id||
173389                      ' - p_language = '||p_language||
173390                      ' - p_currency_code = '||p_currency_code||
173391                      ' - p_sla_ledger_id = '||p_sla_ledger_id
173392       ,p_level    => C_LEVEL_STATEMENT
173393       ,p_module   => l_log_module);
173394 END IF;
173395 --
173396 -- initialze arrays
173397 --
173398 g_array_event.DELETE;
173399 l_rec_array_event := l_null_rec_array_event;
173400 --
173401 --------------------------------------
173402 -- 4262811 Initialze MPA Line Number
173403 --------------------------------------
173404 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
173405 
173406 --
173407 
173408 --
173409 OPEN header_cur;
173410 --
173411 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173412    trace
173413    (p_msg      => 'SQL - FETCH header_cur'
173414    ,p_level    => C_LEVEL_STATEMENT
173415    ,p_module   => l_log_module);
173416 END IF;
173417 --
173418 LOOP
173419 FETCH header_cur BULK COLLECT INTO
173420         l_array_entity_id
173421       , l_array_legal_entity_id
173422       , l_array_entity_code
173423       , l_array_transaction_num
173424       , l_array_event_id
173425       , l_array_class_code
173426       , l_array_event_type
173427       , l_array_event_number
173428       , l_array_event_date
173429       , l_array_transaction_date
173430       , l_array_reference_num_1
173431       , l_array_reference_num_2
173432       , l_array_reference_num_3
173433       , l_array_reference_num_4
173434       , l_array_reference_char_1
173435       , l_array_reference_char_2
173436       , l_array_reference_char_3
173437       , l_array_reference_char_4
173438       , l_array_reference_date_1
173439       , l_array_reference_date_2
173440       , l_array_reference_date_3
173441       , l_array_reference_date_4
173442       , l_array_event_created_by
173443       , l_array_budgetary_control_flag 
173444       , l_array_source_12
173445       , l_array_source_12_meaning
173446       , l_array_source_38
173447       , l_array_source_38_meaning
173448       LIMIT l_rows;
173449 --
173450 IF (C_LEVEL_EVENT >= g_log_level) THEN
173451    trace
173452    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
173453    ,p_level    => C_LEVEL_EVENT
173454    ,p_module   => l_log_module);
173455 END IF;
173456 --
173457 EXIT WHEN l_array_entity_id.COUNT = 0;
173458 
173459 -- initialize arrays
173460 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
173461 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
173462 
173463 --
173464 -- Bug 4458708
173465 --
173466 XLA_AE_LINES_PKG.g_LineNumber := 0;
173467 
173468 
173469 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
173470 g_last_hdr_idx := l_array_event_id.LAST;
173471 --
173472 -- loop for the headers. Each iteration is for each header extract row
173473 -- fetched in header cursor
173474 --
173475 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
173476 
173477 --
173478 -- set event info as cache for other routines to refer event attributes
173479 --
173480 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
173481    (p_application_id           => p_application_id
173482    ,p_primary_ledger_id        => p_primary_ledger_id
173483    ,p_base_ledger_id           => p_base_ledger_id
173484    ,p_target_ledger_id         => p_target_ledger_id
173485    ,p_entity_id                => l_array_entity_id(hdr_idx)
173486    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
173487    ,p_entity_code              => l_array_entity_code(hdr_idx)
173488    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
173489    ,p_event_id                 => l_array_event_id(hdr_idx)
173490    ,p_event_class_code         => l_array_class_code(hdr_idx)
173491    ,p_event_type_code          => l_array_event_type(hdr_idx)
173492    ,p_event_number             => l_array_event_number(hdr_idx)
173493    ,p_event_date               => l_array_event_date(hdr_idx)
173494    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
173495    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
173496    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
173497    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
173498    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
173499    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
173500    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
173501    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
173502    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
173503    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
173504    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
173505    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
173506    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
173507    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
173508    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
173509 
173510 --
173511 -- set the status of entry to C_VALID (0)
173512 --
173513 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
173514 
173515 --
173516 -- initialize a row for ae header
173517 --
173518 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
173519 
173520 l_event_id := l_array_event_id(hdr_idx);
173521 
173522 --
173523 -- storing the hdr_idx for event. May be used by line cursor.
173524 --
173525 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
173526 
173527 --
173528 -- store sources from header extract. This can be improved to
173529 -- store only those sources from header extract that may be used in lines
173530 --
173531 
173532 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
173533 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
173534 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
173535 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
173536 
173537 --
173538 -- initilaize the status of ae headers for diffrent balance types
173539 -- the status is initialised to C_NOT_CREATED (2)
173540 --
173541 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173542 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173543 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173544 
173545 --
173546 -- call api to validate and store accounting attributes for header
173547 --
173548 
173549 ------------------------------------------------------------
173550 -- Accrual Reversal : to get date for Standard Source (NONE)
173551 ------------------------------------------------------------
173552 l_acc_rev_gl_date_source := NULL;
173553 
173554      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
173555       l_rec_acct_attrs.array_date_value(1) := 
173556 xla_ae_sources_pkg.GetSystemSourceDate(
173557    p_source_code           => 'XLA_REFERENCE_DATE_1'
173558  , p_source_type_code      => 'Y'
173559  , p_source_application_id =>  602
173560 );
173561      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
173562       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
173563 
173564 
173565 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
173566 
173567 XLA_AE_HEADER_PKG.SetJeCategoryName;
173568 
173569 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
173570 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
173571 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
173572 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
173573 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
173574 
173575 
173576 -- No header level analytical criteria
173577 
173578 --
173579 --accounting attribute enhancement, bug 3612931
173580 --
173581 l_trx_reversal_source := SUBSTR(NULL, 1,30);
173582 
173583 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
173584    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
173585 
173586    xla_accounting_err_pkg.build_message
173587       (p_appli_s_name            => 'XLA'
173588       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
173589       ,p_token_1                 => 'ACCT_ATTR_NAME'
173590       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
173591       ,p_token_2                 => 'PRODUCT_NAME'
173592       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
173593       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
173594       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
173595       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
173596 
173597 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
173598    --
173599    -- following sets the accounting attributes needed to reverse
173600    -- accounting for a distributeion
173601    --
173602    xla_ae_lines_pkg.SetTrxReversalAttrs
173603       (p_event_id              => l_event_id
173604       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
173605       ,p_trx_reversal_source   => l_trx_reversal_source);
173606 
173607 END IF;
173608 
173609 
173610 ----------------------------------------------------------------
173611 -- 4262811 -  update the header statuses to invalid in need be
173612 ----------------------------------------------------------------
173613 --
173614 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
173615 
173616 
173617   -----------------------------------------------
173618   -- No accrual reversal for the event class/type
173619   -----------------------------------------------
173620 ----------------------------------------------------------------
173621 
173622 --
173623 -- this ends the header loop iteration for one bulk fetch
173624 --
173625 END LOOP;
173626 
173627 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
173628 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
173629 
173630 --
173631 -- insert dummy rows into lines gt table that were created due to
173632 -- transaction reversals
173633 --
173634 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
173635    l_result := XLA_AE_LINES_PKG.InsertLines;
173636 END IF;
173637 
173638 --
173639 -- reset the temp_line_num for each set of events fetched from header
173640 -- cursor rather than doing it for each new event in line cursor
173641 -- Bug 3939231
173642 --
173643 xla_ae_lines_pkg.g_temp_line_num := 0;
173644 
173645 
173646 
173647 --
173648 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
173649 --
173650 --
173651 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173652 
173653       trace
173654          (p_msg      => 'SQL - FETCH line_cur'
173655          ,p_level    => C_LEVEL_STATEMENT
173656          ,p_module   => l_log_module);
173657 
173658 END IF;
173659 --
173660 --
173661 LOOP
173662   --
173663   FETCH line_cur BULK COLLECT INTO
173664         l_array_entity_id
173665       , l_array_legal_entity_id
173666       , l_array_entity_code
173667       , l_array_transaction_num
173668       , l_array_event_id
173669       , l_array_class_code
173670       , l_array_event_type
173671       , l_array_event_number
173672       , l_array_event_date
173673       , l_array_transaction_date
173674       , l_array_reference_num_1
173675       , l_array_reference_num_2
173676       , l_array_reference_num_3
173677       , l_array_reference_num_4
173678       , l_array_reference_char_1
173679       , l_array_reference_char_2
173680       , l_array_reference_char_3
173681       , l_array_reference_char_4
173682       , l_array_reference_date_1
173683       , l_array_reference_date_2
173684       , l_array_reference_date_3
173685       , l_array_reference_date_4
173686       , l_array_event_created_by
173687       , l_array_budgetary_control_flag
173688       , l_array_extract_line_num 
173689       , l_array_source_4
173690       , l_array_source_11
173691       , l_array_source_15
173692       , l_array_source_18
173693       , l_array_source_19
173694       , l_array_source_20
173695       , l_array_source_21
173696       , l_array_source_22
173697       , l_array_source_24
173698       LIMIT l_rows;
173699 
173700   --
173701   IF (C_LEVEL_EVENT >= g_log_level) THEN
173702             trace
173703                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
173704                ,p_level    => C_LEVEL_EVENT
173705                ,p_module   => l_log_module);
173706   END IF;
173707   --
173708   EXIT WHEN l_array_entity_id.count = 0;
173709 
173710   XLA_AE_LINES_PKG.g_rec_lines := null;
173711 
173712 --
173713 -- Bug 4458708
173714 --
173715 XLA_AE_LINES_PKG.g_LineNumber := 0;
173716 --
173717 --
173718 
173719 FOR Idx IN 1..l_array_event_id.count LOOP
173720    --
173721    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
173722    --
173723    l_event_id := l_array_event_id(idx);  -- 5648433
173724 
173725    --
173726    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
173727    --
173728 
173729    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
173730              (g_array_event(l_event_id).array_value_num('header_index'))
173731          ,'N'
173732          ) <> 'Y'
173733    THEN
173734       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173735          trace
173736             (p_msg      => 'Trancaction revesal option is not Y '
173737             ,p_level    => C_LEVEL_STATEMENT
173738             ,p_module   => l_log_module);
173739       END IF;
173740 
173741 --
173742 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
173743 --
173744 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
173745 --
173746 -- set event info as cache for other routines to refer event attributes
173747 --
173748 
173749 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
173750    l_previous_event_id := l_event_id;
173751 
173752    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
173753       (p_application_id           => p_application_id
173754       ,p_primary_ledger_id        => p_primary_ledger_id
173755       ,p_base_ledger_id           => p_base_ledger_id
173756       ,p_target_ledger_id         => p_target_ledger_id
173757       ,p_entity_id                => l_array_entity_id(Idx)
173758       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
173759       ,p_entity_code              => l_array_entity_code(Idx)
173760       ,p_transaction_num          => l_array_transaction_num(Idx)
173761       ,p_event_id                 => l_array_event_id(Idx)
173762       ,p_event_class_code         => l_array_class_code(Idx)
173763       ,p_event_type_code          => l_array_event_type(Idx)
173764       ,p_event_number             => l_array_event_number(Idx)
173765       ,p_event_date               => l_array_event_date(Idx)
173766       ,p_transaction_date         => l_array_transaction_date(Idx)
173767       ,p_reference_num_1          => l_array_reference_num_1(Idx)
173768       ,p_reference_num_2          => l_array_reference_num_2(Idx)
173769       ,p_reference_num_3          => l_array_reference_num_3(Idx)
173770       ,p_reference_num_4          => l_array_reference_num_4(Idx)
173771       ,p_reference_char_1         => l_array_reference_char_1(Idx)
173772       ,p_reference_char_2         => l_array_reference_char_2(Idx)
173773       ,p_reference_char_3         => l_array_reference_char_3(Idx)
173774       ,p_reference_char_4         => l_array_reference_char_4(Idx)
173775       ,p_reference_date_1         => l_array_reference_date_1(Idx)
173776       ,p_reference_date_2         => l_array_reference_date_2(Idx)
173777       ,p_reference_date_3         => l_array_reference_date_3(Idx)
173778       ,p_reference_date_4         => l_array_reference_date_4(Idx)
173779       ,p_event_created_by         => l_array_event_created_by(Idx)
173780       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
173781        --
173782 END IF;
173783 
173784 
173785 
173786 --
173787 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
173788 
173789 l_acct_reversal_source := SUBSTR(NULL, 1,30);
173790 
173791 IF l_continue_with_lines THEN
173792    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
173793       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
173794 
173795       xla_accounting_err_pkg.build_message
173796          (p_appli_s_name            => 'XLA'
173797          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
173798          ,p_token_1                 => 'LINE_NUMBER'
173799          ,p_value_1                 => l_array_extract_line_num(Idx)
173800          ,p_token_2                 => 'PRODUCT_NAME'
173801          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
173802          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
173803          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
173804          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
173805 
173806    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
173807       --
173808       -- following sets the accounting attributes needed to reverse
173809       -- accounting for a distributeion
173810       --
173811 
173812       --
173813       -- 5217187
173814       --
173815       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
173816       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
173817                                        g_array_event(l_event_id).array_value_num('header_index'));
173818       --
173819       --
173820 
173821       -- No reversal code generated
173822 
173823       xla_ae_lines_pkg.SetAcctReversalAttrs
173824          (p_event_id             => l_event_id
173825          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
173826          ,p_calculate_acctd_flag => l_calculate_acctd_flag
173827          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
173828    END IF;
173829 
173830    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
173831        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
173832 
173833 --
173834 AcctLineType_41 (
173835  p_application_id  => p_application_id
173836  ,p_event_id     => l_event_id
173837  ,p_calculate_acctd_flag => l_calculate_acctd_flag
173838  ,p_calculate_g_l_flag => l_calculate_g_l_flag
173839  ,p_actual_flag => l_actual_flag
173840  ,p_balance_type_code => l_balance_type_code
173841  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173842  
173843  , p_source_4 => l_array_source_4(Idx)
173844  , p_source_11 => l_array_source_11(Idx)
173845  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173846  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173847  , p_source_15 => l_array_source_15(Idx)
173848  , p_source_18 => l_array_source_18(Idx)
173849  , p_source_19 => l_array_source_19(Idx)
173850  , p_source_20 => l_array_source_20(Idx)
173851  , p_source_21 => l_array_source_21(Idx)
173852  , p_source_22 => l_array_source_22(Idx)
173853  , p_source_24 => l_array_source_24(Idx)
173854  );
173855 If(l_balance_type_code = 'A') THEN
173856   l_actual_gain_loss_ref := l_gain_or_loss_ref;
173857 END IF;
173858 
173859 --
173860 
173861 
173862 --
173863 AcctLineType_131 (
173864  p_application_id  => p_application_id
173865  ,p_event_id     => l_event_id
173866  ,p_calculate_acctd_flag => l_calculate_acctd_flag
173867  ,p_calculate_g_l_flag => l_calculate_g_l_flag
173868  ,p_actual_flag => l_actual_flag
173869  ,p_balance_type_code => l_balance_type_code
173870  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173871  
173872  , p_source_4 => l_array_source_4(Idx)
173873  , p_source_11 => l_array_source_11(Idx)
173874  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173875  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173876  , p_source_15 => l_array_source_15(Idx)
173877  , p_source_18 => l_array_source_18(Idx)
173878  , p_source_19 => l_array_source_19(Idx)
173879  , p_source_20 => l_array_source_20(Idx)
173880  , p_source_21 => l_array_source_21(Idx)
173881  , p_source_22 => l_array_source_22(Idx)
173882  , p_source_24 => l_array_source_24(Idx)
173883  );
173884 If(l_balance_type_code = 'A') THEN
173885   l_actual_gain_loss_ref := l_gain_or_loss_ref;
173886 END IF;
173887 
173888 --
173889 
173890 
173891 --
173892 AcctLineType_173 (
173893  p_application_id  => p_application_id
173894  ,p_event_id     => l_event_id
173895  ,p_calculate_acctd_flag => l_calculate_acctd_flag
173896  ,p_calculate_g_l_flag => l_calculate_g_l_flag
173897  ,p_actual_flag => l_actual_flag
173898  ,p_balance_type_code => l_balance_type_code
173899  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173900  
173901  , p_source_4 => l_array_source_4(Idx)
173902  , p_source_11 => l_array_source_11(Idx)
173903  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173904  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173905  , p_source_15 => l_array_source_15(Idx)
173906  , p_source_18 => l_array_source_18(Idx)
173907  , p_source_19 => l_array_source_19(Idx)
173908  , p_source_20 => l_array_source_20(Idx)
173909  , p_source_21 => l_array_source_21(Idx)
173910  , p_source_22 => l_array_source_22(Idx)
173911  , p_source_24 => l_array_source_24(Idx)
173912  );
173913 If(l_balance_type_code = 'A') THEN
173914   l_actual_gain_loss_ref := l_gain_or_loss_ref;
173915 END IF;
173916 
173917 --
173918 
173919       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
173920       -- or secondary ledger that has different currency with primary
173921       -- or alc that is calculated by sla
173922       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
173923             (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'))
173924 
173925 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
173926 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
173927           AND (l_actual_flag = 'A')) THEN
173928         XLA_AE_LINES_PKG.CreateGainOrLossLines(
173929           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
173930          ,p_application_id   => p_application_id
173931          ,p_amb_context_code => 'DEFAULT'
173932          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
173933          ,p_event_class_code => C_EVENT_CLASS_CODE
173934          ,p_event_type_code  => C_EVENT_TYPE_CODE
173935          
173936          ,p_gain_ccid        => -1
173937          ,p_loss_ccid        => -1
173938 
173939          ,p_actual_flag      => l_actual_flag
173940          ,p_enc_flag         => null
173941          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
173942          ,p_enc_g_l_ref      => null
173943          );
173944       END IF;
173945    END IF;
173946 END IF;
173947 
173948    ELSE
173949       --
173950       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
173951       --
173952       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173953          trace
173954             (p_msg      => 'Trancaction revesal option is Y'
173955             ,p_level    => C_LEVEL_STATEMENT
173956             ,p_module   => l_log_module);
173957       END IF;
173958    END IF;
173959 
173960 END LOOP;
173961 l_result := XLA_AE_LINES_PKG.InsertLines ;
173962 end loop;
173963 close line_cur;
173964 
173965 
173966 --
173967 -- insert headers into xla_ae_headers_gt table
173968 --
173969 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
173970 
173971 -- insert into errors table here.
173972 
173973 END LOOP;
173974 
173975 --
173976 -- 4865292
173977 --
173978 -- Compare g_hdr_extract_count with event count in
173979 -- CreateHeadersAndLines.
173980 --
173981 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
173982 
173983 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173984    trace (p_msg     => '# rows extracted from header extract objects '
173985                     || ' (running total): '
173986                     || g_hdr_extract_count
173987          ,p_level   => C_LEVEL_STATEMENT
173988          ,p_module  => l_log_module);
173989 END IF;
173990 
173991 CLOSE header_cur;
173992 --
173993 
173994 --
173995 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173996    trace
173997       (p_msg      => 'END of EventType_276'
173998       ,p_level    => C_LEVEL_PROCEDURE
173999       ,p_module   => l_log_module);
174000 END IF;
174001 --
174002 RETURN l_result;
174003 EXCEPTION
174004 WHEN xla_exceptions_pkg.application_exception THEN
174005    
174006 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
174007 
174008    
174009 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
174010 
174011    RAISE;
174012 
174013 WHEN NO_DATA_FOUND THEN
174014 
174015 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
174016 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
174017 
174018 FOR header_record IN header_cur
174019 LOOP
174020     l_array_header_events(header_record.event_id) := header_record.event_id;
174021 END LOOP;
174022 
174023 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
174024 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
174025 
174026 fnd_file.put_line(fnd_file.LOG, '                    ');
174027 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
174028 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
174029 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
174030 
174031 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
174032 LOOP
174033 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
174034 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
174035         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
174036 	END IF;
174037 END LOOP;
174038 
174039 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
174040 fnd_file.put_line(fnd_file.LOG, '                    ');
174041 
174042 
174043 xla_exceptions_pkg.raise_message
174044       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_276');
174045 
174046 
174047 WHEN OTHERS THEN
174048    xla_exceptions_pkg.raise_message
174049       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_276');
174050 END EventType_276;
174051 --
174052 
174053 ---------------------------------------
174054 --
174055 -- PRIVATE PROCEDURE
174056 --         insert_sources_277
174057 --
174058 ----------------------------------------
174059 --
174060 PROCEDURE insert_sources_277(
174061                                 p_target_ledger_id       IN NUMBER
174062                               , p_language               IN VARCHAR2
174063                               , p_sla_ledger_id          IN NUMBER
174064                               , p_pad_start_date         IN DATE
174065                               , p_pad_end_date           IN DATE
174066                          )
174067 IS
174068 
174069 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT';
174070 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
174071 p_apps_owner                   VARCHAR2(30);
174072 l_log_module                   VARCHAR2(240);
174073 BEGIN
174074 IF g_log_enabled THEN
174075       l_log_module := C_DEFAULT_MODULE||'.insert_sources_277';
174076 END IF;
174077 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174078 
174079       trace
174080          (p_msg      => 'BEGIN of insert_sources_277'
174081          ,p_level    => C_LEVEL_PROCEDURE
174082          ,p_module   => l_log_module);
174083 
174084 END IF;
174085 
174086 -- select APPS owner
174087 SELECT oracle_username
174088   INTO p_apps_owner
174089   FROM fnd_oracle_userid
174090  WHERE read_only_flag = 'U'
174091 ;
174092 
174093 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174094       trace
174095          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
174096                         ' - p_language = '||p_language||
174097                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
174098                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
174099                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
174100                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
174101          ,p_level    => C_LEVEL_STATEMENT
174102          ,p_module   => l_log_module);
174103 END IF;
174104 
174105 
174106 --
174107 INSERT INTO xla_diag_sources --hdr1
174108 (
174109         event_id
174110       , ledger_id
174111       , sla_ledger_id
174112       , description_language
174113       , object_name
174114       , object_type_code
174115       , line_number
174116       , source_application_id
174117       , source_type_code
174118       , source_code
174119       , source_value
174120       , source_meaning
174121       , created_by
174122       , creation_date
174123       , last_update_date
174124       , last_updated_by
174125       , last_update_login
174126       , program_update_date
174127       , program_application_id
174128       , program_id
174129       , request_id
174130 )
174131 SELECT
174132         event_id
174133       , p_target_ledger_id
174134       , p_sla_ledger_id
174135       , p_language
174136       , object_name
174137       , object_type_code
174138       , line_number
174139       , source_application_id
174140       , source_type_code
174141       , source_code
174142       , SUBSTR(source_value ,1,1996)
174143       , SUBSTR(source_meaning,1,200)
174144       , xla_environment_pkg.g_Usr_Id
174145       , TRUNC(SYSDATE)
174146       , TRUNC(SYSDATE)
174147       , xla_environment_pkg.g_Usr_Id
174148       , xla_environment_pkg.g_Login_Id
174149       , TRUNC(SYSDATE)
174150       , xla_environment_pkg.g_Prog_Appl_Id
174151       , xla_environment_pkg.g_Prog_Id
174152       , xla_environment_pkg.g_Req_Id
174153   FROM (
174154        SELECT xet.event_id                  event_id
174155             , 0                             line_number
174156             , CASE r
174157                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
174158                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
174159                 
174160                ELSE null
174161               END                           object_name
174162             , CASE r
174163                 WHEN 1 THEN 'HEADER' 
174164                 WHEN 2 THEN 'HEADER' 
174165                 
174166                 ELSE null
174167               END                           object_type_code
174168             , CASE r
174169                 WHEN 1 THEN '707' 
174170                 WHEN 2 THEN '707' 
174171                 
174172                 ELSE null
174173               END                           source_application_id
174174             , 'S'             source_type_code
174175             , CASE r
174176                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
174177                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
174178                 
174179                 ELSE null
174180               END                           source_code
174181             , CASE r
174182                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
174183                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
174184                 
174185                 ELSE null
174186               END                           source_value
174187             , CASE r
174188                 WHEN 1 THEN fvl12.meaning
174189                 WHEN 2 THEN fvl38.meaning
174190                 
174191                 ELSE null
174192               END               source_meaning
174193         FROM xla_events_gt     xet  
174194       , CST_XLA_INV_HEADERS_V  h1
174195   , fnd_lookup_values    fvl12
174196   , fnd_lookup_values    fvl38
174197             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
174198        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
174199          AND xet.event_type_code = C_EVENT_TYPE_CODE
174200             AND h1.event_id = xet.event_id
174201    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
174202   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
174203   AND fvl12.view_application_id(+) = 700
174204   AND fvl12.language(+)            = USERENV('LANG')
174205      AND fvl38.lookup_type(+)         = 'YES_NO'
174206   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
174207   AND fvl38.view_application_id(+) = 0
174208   AND fvl38.language(+)            = USERENV('LANG')
174209   
174210 )
174211 ;
174212 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174213 
174214       trace
174215          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
174216          ,p_level    => C_LEVEL_STATEMENT
174217          ,p_module   => l_log_module);
174218 
174219 END IF;
174220 --
174221 
174222 
174223 
174224 --
174225 INSERT INTO xla_diag_sources --line1
174226 (
174227         event_id
174228       , ledger_id
174229       , sla_ledger_id
174230       , description_language
174231       , object_name
174232       , object_type_code
174233       , line_number
174234       , source_application_id
174235       , source_type_code
174236       , source_code
174237       , source_value
174238       , source_meaning
174239       , created_by
174240       , creation_date
174241       , last_update_date
174242       , last_updated_by
174243       , last_update_login
174244       , program_update_date
174245       , program_application_id
174246       , program_id
174247       , request_id
174248 )
174249 SELECT  event_id
174250       , p_target_ledger_id
174251       , p_sla_ledger_id
174252       , p_language
174253       , object_name
174254       , object_type_code
174255       , line_number
174256       , source_application_id
174257       , source_type_code
174258       , source_code
174259       , SUBSTR(source_value,1,1996)
174260       , SUBSTR(source_meaning,1,200)
174261       , xla_environment_pkg.g_Usr_Id
174262       , TRUNC(SYSDATE)
174263       , TRUNC(SYSDATE)
174264       , xla_environment_pkg.g_Usr_Id
174265       , xla_environment_pkg.g_Login_Id
174266       , TRUNC(SYSDATE)
174267       , xla_environment_pkg.g_Prog_Appl_Id
174268       , xla_environment_pkg.g_Prog_Id
174269       , xla_environment_pkg.g_Req_Id
174270   FROM (
174271        SELECT xet.event_id                  event_id
174272             , l2.line_number                 line_number
174273             , CASE r
174274                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
174275                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
174276                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
174277                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
174278                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
174279                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
174280                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
174281                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
174282                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
174283                 
174284                ELSE null
174285               END                           object_name
174286             , CASE r
174287                 WHEN 1 THEN 'LINE' 
174288                 WHEN 2 THEN 'LINE' 
174289                 WHEN 3 THEN 'LINE' 
174290                 WHEN 4 THEN 'LINE' 
174291                 WHEN 5 THEN 'LINE' 
174292                 WHEN 6 THEN 'LINE' 
174293                 WHEN 7 THEN 'LINE' 
174294                 WHEN 8 THEN 'LINE' 
174295                 WHEN 9 THEN 'LINE' 
174296                 
174297                 ELSE null
174298               END                           object_type_code
174299             , CASE r
174300                 WHEN 1 THEN '707' 
174301                 WHEN 2 THEN '707' 
174302                 WHEN 3 THEN '707' 
174303                 WHEN 4 THEN '707' 
174304                 WHEN 5 THEN '707' 
174305                 WHEN 6 THEN '707' 
174306                 WHEN 7 THEN '707' 
174307                 WHEN 8 THEN '707' 
174308                 WHEN 9 THEN '707' 
174309                 
174310                 ELSE null
174311               END                           source_application_id
174312             , 'S'             source_type_code
174313             , CASE r
174314                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
174315                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
174316                 WHEN 3 THEN 'CURRENCY_CODE' 
174317                 WHEN 4 THEN 'ENTERED_AMOUNT' 
174318                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
174319                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
174320                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
174321                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
174322                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
174323                 
174324                 ELSE null
174325               END                           source_code
174326             , CASE r
174327                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
174328                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
174329                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
174330                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
174331                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
174332                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
174333                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
174334                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
174335                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
174336                 
174337                 ELSE null
174338               END                           source_value
174339             , null              source_meaning
174340          FROM  xla_events_gt     xet  
174341         , CST_XLA_INV_LINES_V  l2
174342             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
174343         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
174344           AND xet.event_type_code = C_EVENT_TYPE_CODE
174345             AND l2.event_id          = xet.event_id
174346 
174347 )
174348 ;
174349 --
174350 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174351 
174352       trace
174353          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
174354          ,p_level    => C_LEVEL_STATEMENT
174355          ,p_module   => l_log_module);
174356 
174357 END IF;
174358 
174359 
174360 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174361       trace
174362          (p_msg      => 'END of insert_sources_277'
174363          ,p_level    => C_LEVEL_PROCEDURE
174364          ,p_module   => l_log_module);
174365 END IF;
174366 EXCEPTION
174367   WHEN xla_exceptions_pkg.application_exception THEN
174368       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
174369             trace
174370                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
174371                ,p_level    => C_LEVEL_EXCEPTION
174372                ,p_module   => l_log_module);
174373       END IF;
174374       RAISE;
174375   WHEN OTHERS THEN
174376       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
174377             trace
174378                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
174379                ,p_level    => C_LEVEL_EXCEPTION
174380                ,p_module   => l_log_module);
174381        END IF;
174382        xla_exceptions_pkg.raise_message
174383            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_277');
174384 END insert_sources_277;
174385 --
174386 
174387 ---------------------------------------
174388 --
174389 -- PRIVATE FUNCTION
174390 --         EventType_277
174391 --
174392 ----------------------------------------
174393 --
174394 FUNCTION EventType_277
174395        (p_application_id         IN NUMBER
174396        ,p_base_ledger_id         IN NUMBER
174397        ,p_target_ledger_id       IN NUMBER
174398        ,p_language               IN VARCHAR2
174399        ,p_currency_code          IN VARCHAR2
174400        ,p_sla_ledger_id          IN NUMBER
174401        ,p_pad_start_date         IN DATE
174402        ,p_pad_end_date           IN DATE
174403        ,p_primary_ledger_id      IN NUMBER)
174404 RETURN BOOLEAN IS
174405 --
174406 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT';
174407 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
174408 
174409 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
174410 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
174411 --
174412 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174413 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174414 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174415 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174416 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174417 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174418 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174419 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174420 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174421 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174422 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174423 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174424 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174425 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174426 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174427 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174428 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174429 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174430 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174431 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174432 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174433 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174434 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
174435 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174436 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
174437 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
174438 
174439 l_event_id                             NUMBER;
174440 l_previous_event_id                    NUMBER;
174441 l_first_event_id                       NUMBER;
174442 l_last_event_id                        NUMBER;
174443 
174444 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
174445 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
174446 --
174447 --
174448 l_result                    BOOLEAN := TRUE;
174449 l_rows                      NUMBER  := 1000;
174450 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Receipt';
174451 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
174452 l_description               VARCHAR2(4000);
174453 l_transaction_reversal      NUMBER;
174454 l_ae_header_id              NUMBER;
174455 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
174456 l_log_module                VARCHAR2(240);
174457 --
174458 l_acct_reversal_source      VARCHAR2(30);
174459 l_trx_reversal_source       VARCHAR2(30);
174460 
174461 l_continue_with_lines       BOOLEAN := TRUE;
174462 --
174463 l_acc_rev_gl_date_source    DATE;                      -- 4262811
174464 --
174465 type t_array_event_id is table of number index by binary_integer;
174466 
174467 l_rec_array_event                    t_rec_array_event;
174468 l_null_rec_array_event               t_rec_array_event;
174469 l_array_ae_header_id                 xla_number_array_type;
174470 l_actual_flag                        VARCHAR2(1) := NULL;
174471 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
174472 l_balance_type_code                  VARCHAR2(1) :=NULL;
174473 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
174474 
174475 --
174476 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
174477 --
174478 
174479 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
174480 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
174481 
174482 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
174483 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
174484 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
174485 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
174486 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
174487 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
174488 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
174489 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
174490 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
174491 
174492 l_array_source_12              t_array_source_12;
174493 l_array_source_12_meaning      t_array_lookup_meaning;
174494 l_array_source_38              t_array_source_38;
174495 l_array_source_38_meaning      t_array_lookup_meaning;
174496 
174497 l_array_source_4      t_array_source_4;
174498 l_array_source_11      t_array_source_11;
174499 l_array_source_15      t_array_source_15;
174500 l_array_source_18      t_array_source_18;
174501 l_array_source_19      t_array_source_19;
174502 l_array_source_20      t_array_source_20;
174503 l_array_source_21      t_array_source_21;
174504 l_array_source_22      t_array_source_22;
174505 l_array_source_24      t_array_source_24;
174506 
174507 --
174508 CURSOR header_cur
174509 IS
174510 SELECT /*+ leading(xet) cardinality(xet,1) */
174511 -- Event Type Code: UDIR_INTERORG_RCPT
174512 -- Event Class Code: USER_DEFINE
174513     xet.entity_id
174514   , xet.legal_entity_id
174515   , xet.entity_code
174516   , xet.transaction_number
174517   , xet.event_id
174518   , xet.event_class_code
174519   , xet.event_type_code
174520   , xet.event_number
174521   , xet.event_date
174522   , xet.transaction_date
174523   , xet.reference_num_1
174524   , xet.reference_num_2
174525   , xet.reference_num_3
174526   , xet.reference_num_4
174527   , xet.reference_char_1
174528   , xet.reference_char_2
174529   , xet.reference_char_3
174530   , xet.reference_char_4
174531   , xet.reference_date_1
174532   , xet.reference_date_2
174533   , xet.reference_date_3
174534   , xet.reference_date_4
174535   , xet.event_created_by
174536   , xet.budgetary_control_flag 
174537   , h1.DISTRIBUTION_TYPE    source_12
174538   , fvl12.meaning   source_12_meaning
174539   , h1.TRANSFER_TO_GL_INDICATOR    source_38
174540   , fvl38.meaning   source_38_meaning
174541   FROM xla_events_gt     xet 
174542   , CST_XLA_INV_HEADERS_V  h1
174543   , fnd_lookup_values    fvl12
174544   , fnd_lookup_values    fvl38
174545  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
174546    and xet.event_type_code = C_EVENT_TYPE_CODE
174547    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
174548    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
174549   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
174550   AND fvl12.view_application_id(+) = 700
174551   AND fvl12.language(+)            = USERENV('LANG')
174552      AND fvl38.lookup_type(+)         = 'YES_NO'
174553   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
174554   AND fvl38.view_application_id(+) = 0
174555   AND fvl38.language(+)            = USERENV('LANG')
174556   
174557  ORDER BY event_id
174558 ;
174559 
174560 
174561 --
174562 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
174563 IS
174564 SELECT /*+ leading(xet) cardinality(xet,1) */
174565 -- Event Type Code: UDIR_INTERORG_RCPT
174566 -- Event Class Code: USER_DEFINE
174567     xet.entity_id
174568    ,xet.legal_entity_id
174569    ,xet.entity_code
174570    ,xet.transaction_number
174571    ,xet.event_id
174572    ,xet.event_class_code
174573    ,xet.event_type_code
174574    ,xet.event_number
174575    ,xet.event_date
174576    ,xet.transaction_date
174577    ,xet.reference_num_1
174578    ,xet.reference_num_2
174579    ,xet.reference_num_3
174580    ,xet.reference_num_4
174581    ,xet.reference_char_1
174582    ,xet.reference_char_2
174583    ,xet.reference_char_3
174584    ,xet.reference_char_4
174585    ,xet.reference_date_1
174586    ,xet.reference_date_2
174587    ,xet.reference_date_3
174588    ,xet.reference_date_4
174589    ,xet.event_created_by
174590    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
174591   , l2.CODE_COMBINATION_ID    source_4
174592   , l2.DISTRIBUTION_IDENTIFIER    source_11
174593   , l2.CURRENCY_CODE    source_15
174594   , l2.ENTERED_AMOUNT    source_18
174595   , l2.CURRENCY_CONVERSION_DATE    source_19
174596   , l2.CURRENCY_CONVERSION_RATE    source_20
174597   , l2.CURRENCY_CONVERSION_TYPE    source_21
174598   , l2.ACCOUNTED_AMOUNT    source_22
174599   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
174600   FROM xla_events_gt     xet 
174601   , CST_XLA_INV_LINES_V  l2
174602  WHERE xet.event_id between x_first_event_id and x_last_event_id
174603    and xet.event_date between p_pad_start_date and p_pad_end_date
174604    and xet.event_type_code = C_EVENT_TYPE_CODE
174605    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
174606 ;
174607 
174608 --
174609 BEGIN
174610 IF g_log_enabled THEN
174611    l_log_module := C_DEFAULT_MODULE||'.EventType_277';
174612 END IF;
174613 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174614    trace
174615       (p_msg      => 'BEGIN of EventType_277'
174616       ,p_level    => C_LEVEL_PROCEDURE
174617       ,p_module   => l_log_module);
174618 END IF;
174619 
174620 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174621    trace
174622       (p_msg      => 'p_application_id = '||p_application_id||
174623                      ' - p_base_ledger_id = '||p_base_ledger_id||
174624                      ' - p_target_ledger_id  = '||p_target_ledger_id||
174625                      ' - p_language = '||p_language||
174626                      ' - p_currency_code = '||p_currency_code||
174627                      ' - p_sla_ledger_id = '||p_sla_ledger_id
174628       ,p_level    => C_LEVEL_STATEMENT
174629       ,p_module   => l_log_module);
174630 END IF;
174631 --
174632 -- initialze arrays
174633 --
174634 g_array_event.DELETE;
174635 l_rec_array_event := l_null_rec_array_event;
174636 --
174637 --------------------------------------
174638 -- 4262811 Initialze MPA Line Number
174639 --------------------------------------
174640 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
174641 
174642 --
174643 
174644 --
174645 OPEN header_cur;
174646 --
174647 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174648    trace
174649    (p_msg      => 'SQL - FETCH header_cur'
174650    ,p_level    => C_LEVEL_STATEMENT
174651    ,p_module   => l_log_module);
174652 END IF;
174653 --
174654 LOOP
174655 FETCH header_cur BULK COLLECT INTO
174656         l_array_entity_id
174657       , l_array_legal_entity_id
174658       , l_array_entity_code
174659       , l_array_transaction_num
174660       , l_array_event_id
174661       , l_array_class_code
174662       , l_array_event_type
174663       , l_array_event_number
174664       , l_array_event_date
174665       , l_array_transaction_date
174666       , l_array_reference_num_1
174667       , l_array_reference_num_2
174668       , l_array_reference_num_3
174669       , l_array_reference_num_4
174670       , l_array_reference_char_1
174671       , l_array_reference_char_2
174672       , l_array_reference_char_3
174673       , l_array_reference_char_4
174674       , l_array_reference_date_1
174675       , l_array_reference_date_2
174676       , l_array_reference_date_3
174677       , l_array_reference_date_4
174678       , l_array_event_created_by
174679       , l_array_budgetary_control_flag 
174680       , l_array_source_12
174681       , l_array_source_12_meaning
174682       , l_array_source_38
174683       , l_array_source_38_meaning
174684       LIMIT l_rows;
174685 --
174686 IF (C_LEVEL_EVENT >= g_log_level) THEN
174687    trace
174688    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
174689    ,p_level    => C_LEVEL_EVENT
174690    ,p_module   => l_log_module);
174691 END IF;
174692 --
174693 EXIT WHEN l_array_entity_id.COUNT = 0;
174694 
174695 -- initialize arrays
174696 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
174697 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
174698 
174699 --
174700 -- Bug 4458708
174701 --
174702 XLA_AE_LINES_PKG.g_LineNumber := 0;
174703 
174704 
174705 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
174706 g_last_hdr_idx := l_array_event_id.LAST;
174707 --
174708 -- loop for the headers. Each iteration is for each header extract row
174709 -- fetched in header cursor
174710 --
174711 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
174712 
174713 --
174714 -- set event info as cache for other routines to refer event attributes
174715 --
174716 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
174717    (p_application_id           => p_application_id
174718    ,p_primary_ledger_id        => p_primary_ledger_id
174719    ,p_base_ledger_id           => p_base_ledger_id
174720    ,p_target_ledger_id         => p_target_ledger_id
174721    ,p_entity_id                => l_array_entity_id(hdr_idx)
174722    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
174723    ,p_entity_code              => l_array_entity_code(hdr_idx)
174724    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
174725    ,p_event_id                 => l_array_event_id(hdr_idx)
174726    ,p_event_class_code         => l_array_class_code(hdr_idx)
174727    ,p_event_type_code          => l_array_event_type(hdr_idx)
174728    ,p_event_number             => l_array_event_number(hdr_idx)
174729    ,p_event_date               => l_array_event_date(hdr_idx)
174730    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
174731    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
174732    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
174733    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
174734    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
174735    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
174736    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
174737    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
174738    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
174739    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
174740    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
174741    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
174742    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
174743    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
174744    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
174745 
174746 --
174747 -- set the status of entry to C_VALID (0)
174748 --
174749 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
174750 
174751 --
174752 -- initialize a row for ae header
174753 --
174754 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
174755 
174756 l_event_id := l_array_event_id(hdr_idx);
174757 
174758 --
174759 -- storing the hdr_idx for event. May be used by line cursor.
174760 --
174761 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
174762 
174763 --
174764 -- store sources from header extract. This can be improved to
174765 -- store only those sources from header extract that may be used in lines
174766 --
174767 
174768 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
174769 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
174770 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
174771 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
174772 
174773 --
174774 -- initilaize the status of ae headers for diffrent balance types
174775 -- the status is initialised to C_NOT_CREATED (2)
174776 --
174777 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
174778 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
174779 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
174780 
174781 --
174782 -- call api to validate and store accounting attributes for header
174783 --
174784 
174785 ------------------------------------------------------------
174786 -- Accrual Reversal : to get date for Standard Source (NONE)
174787 ------------------------------------------------------------
174788 l_acc_rev_gl_date_source := NULL;
174789 
174790      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
174791       l_rec_acct_attrs.array_date_value(1) := 
174792 xla_ae_sources_pkg.GetSystemSourceDate(
174793    p_source_code           => 'XLA_REFERENCE_DATE_1'
174794  , p_source_type_code      => 'Y'
174795  , p_source_application_id =>  602
174796 );
174797      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
174798       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
174799 
174800 
174801 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
174802 
174803 XLA_AE_HEADER_PKG.SetJeCategoryName;
174804 
174805 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
174806 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
174807 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
174808 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
174809 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
174810 
174811 
174812 -- No header level analytical criteria
174813 
174814 --
174815 --accounting attribute enhancement, bug 3612931
174816 --
174817 l_trx_reversal_source := SUBSTR(NULL, 1,30);
174818 
174819 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
174820    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
174821 
174822    xla_accounting_err_pkg.build_message
174823       (p_appli_s_name            => 'XLA'
174824       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
174825       ,p_token_1                 => 'ACCT_ATTR_NAME'
174826       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
174827       ,p_token_2                 => 'PRODUCT_NAME'
174828       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
174829       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
174830       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
174831       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
174832 
174833 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
174834    --
174835    -- following sets the accounting attributes needed to reverse
174836    -- accounting for a distributeion
174837    --
174838    xla_ae_lines_pkg.SetTrxReversalAttrs
174839       (p_event_id              => l_event_id
174840       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
174841       ,p_trx_reversal_source   => l_trx_reversal_source);
174842 
174843 END IF;
174844 
174845 
174846 ----------------------------------------------------------------
174847 -- 4262811 -  update the header statuses to invalid in need be
174848 ----------------------------------------------------------------
174849 --
174850 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
174851 
174852 
174853   -----------------------------------------------
174854   -- No accrual reversal for the event class/type
174855   -----------------------------------------------
174856 ----------------------------------------------------------------
174857 
174858 --
174859 -- this ends the header loop iteration for one bulk fetch
174860 --
174861 END LOOP;
174862 
174863 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
174864 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
174865 
174866 --
174867 -- insert dummy rows into lines gt table that were created due to
174868 -- transaction reversals
174869 --
174870 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
174871    l_result := XLA_AE_LINES_PKG.InsertLines;
174872 END IF;
174873 
174874 --
174875 -- reset the temp_line_num for each set of events fetched from header
174876 -- cursor rather than doing it for each new event in line cursor
174877 -- Bug 3939231
174878 --
174879 xla_ae_lines_pkg.g_temp_line_num := 0;
174880 
174881 
174882 
174883 --
174884 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
174885 --
174886 --
174887 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174888 
174889       trace
174890          (p_msg      => 'SQL - FETCH line_cur'
174891          ,p_level    => C_LEVEL_STATEMENT
174892          ,p_module   => l_log_module);
174893 
174894 END IF;
174895 --
174896 --
174897 LOOP
174898   --
174899   FETCH line_cur BULK COLLECT INTO
174900         l_array_entity_id
174901       , l_array_legal_entity_id
174902       , l_array_entity_code
174903       , l_array_transaction_num
174904       , l_array_event_id
174905       , l_array_class_code
174906       , l_array_event_type
174907       , l_array_event_number
174908       , l_array_event_date
174909       , l_array_transaction_date
174910       , l_array_reference_num_1
174911       , l_array_reference_num_2
174912       , l_array_reference_num_3
174913       , l_array_reference_num_4
174914       , l_array_reference_char_1
174915       , l_array_reference_char_2
174916       , l_array_reference_char_3
174917       , l_array_reference_char_4
174918       , l_array_reference_date_1
174919       , l_array_reference_date_2
174920       , l_array_reference_date_3
174921       , l_array_reference_date_4
174922       , l_array_event_created_by
174923       , l_array_budgetary_control_flag
174924       , l_array_extract_line_num 
174925       , l_array_source_4
174926       , l_array_source_11
174927       , l_array_source_15
174928       , l_array_source_18
174929       , l_array_source_19
174930       , l_array_source_20
174931       , l_array_source_21
174932       , l_array_source_22
174933       , l_array_source_24
174934       LIMIT l_rows;
174935 
174936   --
174937   IF (C_LEVEL_EVENT >= g_log_level) THEN
174938             trace
174939                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
174940                ,p_level    => C_LEVEL_EVENT
174941                ,p_module   => l_log_module);
174942   END IF;
174943   --
174944   EXIT WHEN l_array_entity_id.count = 0;
174945 
174946   XLA_AE_LINES_PKG.g_rec_lines := null;
174947 
174948 --
174949 -- Bug 4458708
174950 --
174951 XLA_AE_LINES_PKG.g_LineNumber := 0;
174952 --
174953 --
174954 
174955 FOR Idx IN 1..l_array_event_id.count LOOP
174956    --
174957    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
174958    --
174959    l_event_id := l_array_event_id(idx);  -- 5648433
174960 
174961    --
174962    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
174963    --
174964 
174965    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
174966              (g_array_event(l_event_id).array_value_num('header_index'))
174967          ,'N'
174968          ) <> 'Y'
174969    THEN
174970       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174971          trace
174972             (p_msg      => 'Trancaction revesal option is not Y '
174973             ,p_level    => C_LEVEL_STATEMENT
174974             ,p_module   => l_log_module);
174975       END IF;
174976 
174977 --
174978 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
174979 --
174980 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
174981 --
174982 -- set event info as cache for other routines to refer event attributes
174983 --
174984 
174985 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
174986    l_previous_event_id := l_event_id;
174987 
174988    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
174989       (p_application_id           => p_application_id
174990       ,p_primary_ledger_id        => p_primary_ledger_id
174991       ,p_base_ledger_id           => p_base_ledger_id
174992       ,p_target_ledger_id         => p_target_ledger_id
174993       ,p_entity_id                => l_array_entity_id(Idx)
174994       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
174995       ,p_entity_code              => l_array_entity_code(Idx)
174996       ,p_transaction_num          => l_array_transaction_num(Idx)
174997       ,p_event_id                 => l_array_event_id(Idx)
174998       ,p_event_class_code         => l_array_class_code(Idx)
174999       ,p_event_type_code          => l_array_event_type(Idx)
175000       ,p_event_number             => l_array_event_number(Idx)
175001       ,p_event_date               => l_array_event_date(Idx)
175002       ,p_transaction_date         => l_array_transaction_date(Idx)
175003       ,p_reference_num_1          => l_array_reference_num_1(Idx)
175004       ,p_reference_num_2          => l_array_reference_num_2(Idx)
175005       ,p_reference_num_3          => l_array_reference_num_3(Idx)
175006       ,p_reference_num_4          => l_array_reference_num_4(Idx)
175007       ,p_reference_char_1         => l_array_reference_char_1(Idx)
175008       ,p_reference_char_2         => l_array_reference_char_2(Idx)
175009       ,p_reference_char_3         => l_array_reference_char_3(Idx)
175010       ,p_reference_char_4         => l_array_reference_char_4(Idx)
175011       ,p_reference_date_1         => l_array_reference_date_1(Idx)
175012       ,p_reference_date_2         => l_array_reference_date_2(Idx)
175013       ,p_reference_date_3         => l_array_reference_date_3(Idx)
175014       ,p_reference_date_4         => l_array_reference_date_4(Idx)
175015       ,p_event_created_by         => l_array_event_created_by(Idx)
175016       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
175017        --
175018 END IF;
175019 
175020 
175021 
175022 --
175023 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
175024 
175025 l_acct_reversal_source := SUBSTR(NULL, 1,30);
175026 
175027 IF l_continue_with_lines THEN
175028    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
175029       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
175030 
175031       xla_accounting_err_pkg.build_message
175032          (p_appli_s_name            => 'XLA'
175033          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
175034          ,p_token_1                 => 'LINE_NUMBER'
175035          ,p_value_1                 => l_array_extract_line_num(Idx)
175036          ,p_token_2                 => 'PRODUCT_NAME'
175037          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
175038          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
175039          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
175040          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
175041 
175042    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
175043       --
175044       -- following sets the accounting attributes needed to reverse
175045       -- accounting for a distributeion
175046       --
175047 
175048       --
175049       -- 5217187
175050       --
175051       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
175052       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
175053                                        g_array_event(l_event_id).array_value_num('header_index'));
175054       --
175055       --
175056 
175057       -- No reversal code generated
175058 
175059       xla_ae_lines_pkg.SetAcctReversalAttrs
175060          (p_event_id             => l_event_id
175061          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
175062          ,p_calculate_acctd_flag => l_calculate_acctd_flag
175063          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
175064    END IF;
175065 
175066    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
175067        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
175068 
175069 --
175070 AcctLineType_37 (
175071  p_application_id  => p_application_id
175072  ,p_event_id     => l_event_id
175073  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175074  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175075  ,p_actual_flag => l_actual_flag
175076  ,p_balance_type_code => l_balance_type_code
175077  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175078  
175079  , p_source_4 => l_array_source_4(Idx)
175080  , p_source_11 => l_array_source_11(Idx)
175081  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175082  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175083  , p_source_15 => l_array_source_15(Idx)
175084  , p_source_18 => l_array_source_18(Idx)
175085  , p_source_19 => l_array_source_19(Idx)
175086  , p_source_20 => l_array_source_20(Idx)
175087  , p_source_21 => l_array_source_21(Idx)
175088  , p_source_22 => l_array_source_22(Idx)
175089  , p_source_24 => l_array_source_24(Idx)
175090  );
175091 If(l_balance_type_code = 'A') THEN
175092   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175093 END IF;
175094 
175095 --
175096 
175097 
175098 --
175099 AcctLineType_64 (
175100  p_application_id  => p_application_id
175101  ,p_event_id     => l_event_id
175102  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175103  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175104  ,p_actual_flag => l_actual_flag
175105  ,p_balance_type_code => l_balance_type_code
175106  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175107  
175108  , p_source_4 => l_array_source_4(Idx)
175109  , p_source_11 => l_array_source_11(Idx)
175110  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175111  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175112  , p_source_15 => l_array_source_15(Idx)
175113  , p_source_18 => l_array_source_18(Idx)
175114  , p_source_19 => l_array_source_19(Idx)
175115  , p_source_20 => l_array_source_20(Idx)
175116  , p_source_21 => l_array_source_21(Idx)
175117  , p_source_22 => l_array_source_22(Idx)
175118  , p_source_24 => l_array_source_24(Idx)
175119  );
175120 If(l_balance_type_code = 'A') THEN
175121   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175122 END IF;
175123 
175124 --
175125 
175126 
175127 --
175128 AcctLineType_82 (
175129  p_application_id  => p_application_id
175130  ,p_event_id     => l_event_id
175131  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175132  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175133  ,p_actual_flag => l_actual_flag
175134  ,p_balance_type_code => l_balance_type_code
175135  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175136  
175137  , p_source_4 => l_array_source_4(Idx)
175138  , p_source_11 => l_array_source_11(Idx)
175139  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175140  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175141  , p_source_15 => l_array_source_15(Idx)
175142  , p_source_18 => l_array_source_18(Idx)
175143  , p_source_19 => l_array_source_19(Idx)
175144  , p_source_20 => l_array_source_20(Idx)
175145  , p_source_21 => l_array_source_21(Idx)
175146  , p_source_22 => l_array_source_22(Idx)
175147  , p_source_24 => l_array_source_24(Idx)
175148  );
175149 If(l_balance_type_code = 'A') THEN
175150   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175151 END IF;
175152 
175153 --
175154 
175155 
175156 --
175157 AcctLineType_103 (
175158  p_application_id  => p_application_id
175159  ,p_event_id     => l_event_id
175160  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175161  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175162  ,p_actual_flag => l_actual_flag
175163  ,p_balance_type_code => l_balance_type_code
175164  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175165  
175166  , p_source_4 => l_array_source_4(Idx)
175167  , p_source_11 => l_array_source_11(Idx)
175168  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175169  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175170  , p_source_15 => l_array_source_15(Idx)
175171  , p_source_18 => l_array_source_18(Idx)
175172  , p_source_19 => l_array_source_19(Idx)
175173  , p_source_20 => l_array_source_20(Idx)
175174  , p_source_21 => l_array_source_21(Idx)
175175  , p_source_22 => l_array_source_22(Idx)
175176  , p_source_24 => l_array_source_24(Idx)
175177  );
175178 If(l_balance_type_code = 'A') THEN
175179   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175180 END IF;
175181 
175182 --
175183 
175184 
175185 --
175186 AcctLineType_110 (
175187  p_application_id  => p_application_id
175188  ,p_event_id     => l_event_id
175189  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175190  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175191  ,p_actual_flag => l_actual_flag
175192  ,p_balance_type_code => l_balance_type_code
175193  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175194  
175195  , p_source_4 => l_array_source_4(Idx)
175196  , p_source_11 => l_array_source_11(Idx)
175197  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175198  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175199  , p_source_15 => l_array_source_15(Idx)
175200  , p_source_18 => l_array_source_18(Idx)
175201  , p_source_19 => l_array_source_19(Idx)
175202  , p_source_20 => l_array_source_20(Idx)
175203  , p_source_21 => l_array_source_21(Idx)
175204  , p_source_22 => l_array_source_22(Idx)
175205  , p_source_24 => l_array_source_24(Idx)
175206  );
175207 If(l_balance_type_code = 'A') THEN
175208   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175209 END IF;
175210 
175211 --
175212 
175213 
175214 --
175215 AcctLineType_136 (
175216  p_application_id  => p_application_id
175217  ,p_event_id     => l_event_id
175218  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175219  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175220  ,p_actual_flag => l_actual_flag
175221  ,p_balance_type_code => l_balance_type_code
175222  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175223  
175224  , p_source_4 => l_array_source_4(Idx)
175225  , p_source_11 => l_array_source_11(Idx)
175226  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175227  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175228  , p_source_15 => l_array_source_15(Idx)
175229  , p_source_18 => l_array_source_18(Idx)
175230  , p_source_19 => l_array_source_19(Idx)
175231  , p_source_20 => l_array_source_20(Idx)
175232  , p_source_21 => l_array_source_21(Idx)
175233  , p_source_22 => l_array_source_22(Idx)
175234  , p_source_24 => l_array_source_24(Idx)
175235  );
175236 If(l_balance_type_code = 'A') THEN
175237   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175238 END IF;
175239 
175240 --
175241 
175242 
175243 --
175244 AcctLineType_162 (
175245  p_application_id  => p_application_id
175246  ,p_event_id     => l_event_id
175247  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175248  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175249  ,p_actual_flag => l_actual_flag
175250  ,p_balance_type_code => l_balance_type_code
175251  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175252  
175253  , p_source_4 => l_array_source_4(Idx)
175254  , p_source_11 => l_array_source_11(Idx)
175255  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175256  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175257  , p_source_15 => l_array_source_15(Idx)
175258  , p_source_18 => l_array_source_18(Idx)
175259  , p_source_19 => l_array_source_19(Idx)
175260  , p_source_20 => l_array_source_20(Idx)
175261  , p_source_21 => l_array_source_21(Idx)
175262  , p_source_22 => l_array_source_22(Idx)
175263  , p_source_24 => l_array_source_24(Idx)
175264  );
175265 If(l_balance_type_code = 'A') THEN
175266   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175267 END IF;
175268 
175269 --
175270 
175271 
175272 --
175273 AcctLineType_186 (
175274  p_application_id  => p_application_id
175275  ,p_event_id     => l_event_id
175276  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175277  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175278  ,p_actual_flag => l_actual_flag
175279  ,p_balance_type_code => l_balance_type_code
175280  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175281  
175282  , p_source_4 => l_array_source_4(Idx)
175283  , p_source_11 => l_array_source_11(Idx)
175284  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175285  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175286  , p_source_15 => l_array_source_15(Idx)
175287  , p_source_18 => l_array_source_18(Idx)
175288  , p_source_19 => l_array_source_19(Idx)
175289  , p_source_20 => l_array_source_20(Idx)
175290  , p_source_21 => l_array_source_21(Idx)
175291  , p_source_22 => l_array_source_22(Idx)
175292  , p_source_24 => l_array_source_24(Idx)
175293  );
175294 If(l_balance_type_code = 'A') THEN
175295   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175296 END IF;
175297 
175298 --
175299 
175300 
175301 --
175302 AcctLineType_215 (
175303  p_application_id  => p_application_id
175304  ,p_event_id     => l_event_id
175305  ,p_calculate_acctd_flag => l_calculate_acctd_flag
175306  ,p_calculate_g_l_flag => l_calculate_g_l_flag
175307  ,p_actual_flag => l_actual_flag
175308  ,p_balance_type_code => l_balance_type_code
175309  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175310  
175311  , p_source_4 => l_array_source_4(Idx)
175312  , p_source_11 => l_array_source_11(Idx)
175313  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175314  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175315  , p_source_15 => l_array_source_15(Idx)
175316  , p_source_18 => l_array_source_18(Idx)
175317  , p_source_19 => l_array_source_19(Idx)
175318  , p_source_20 => l_array_source_20(Idx)
175319  , p_source_21 => l_array_source_21(Idx)
175320  , p_source_22 => l_array_source_22(Idx)
175321  , p_source_24 => l_array_source_24(Idx)
175322  );
175323 If(l_balance_type_code = 'A') THEN
175324   l_actual_gain_loss_ref := l_gain_or_loss_ref;
175325 END IF;
175326 
175327 --
175328 
175329       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
175330       -- or secondary ledger that has different currency with primary
175331       -- or alc that is calculated by sla
175332       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
175333             (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'))
175334 
175335 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
175336 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
175337           AND (l_actual_flag = 'A')) THEN
175338         XLA_AE_LINES_PKG.CreateGainOrLossLines(
175339           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
175340          ,p_application_id   => p_application_id
175341          ,p_amb_context_code => 'DEFAULT'
175342          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
175343          ,p_event_class_code => C_EVENT_CLASS_CODE
175344          ,p_event_type_code  => C_EVENT_TYPE_CODE
175345          
175346          ,p_gain_ccid        => -1
175347          ,p_loss_ccid        => -1
175348 
175349          ,p_actual_flag      => l_actual_flag
175350          ,p_enc_flag         => null
175351          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
175352          ,p_enc_g_l_ref      => null
175353          );
175354       END IF;
175355    END IF;
175356 END IF;
175357 
175358    ELSE
175359       --
175360       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
175361       --
175362       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175363          trace
175364             (p_msg      => 'Trancaction revesal option is Y'
175365             ,p_level    => C_LEVEL_STATEMENT
175366             ,p_module   => l_log_module);
175367       END IF;
175368    END IF;
175369 
175370 END LOOP;
175371 l_result := XLA_AE_LINES_PKG.InsertLines ;
175372 end loop;
175373 close line_cur;
175374 
175375 
175376 --
175377 -- insert headers into xla_ae_headers_gt table
175378 --
175379 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
175380 
175381 -- insert into errors table here.
175382 
175383 END LOOP;
175384 
175385 --
175386 -- 4865292
175387 --
175388 -- Compare g_hdr_extract_count with event count in
175389 -- CreateHeadersAndLines.
175390 --
175391 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
175392 
175393 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175394    trace (p_msg     => '# rows extracted from header extract objects '
175395                     || ' (running total): '
175396                     || g_hdr_extract_count
175397          ,p_level   => C_LEVEL_STATEMENT
175398          ,p_module  => l_log_module);
175399 END IF;
175400 
175401 CLOSE header_cur;
175402 --
175403 
175404 --
175405 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175406    trace
175407       (p_msg      => 'END of EventType_277'
175408       ,p_level    => C_LEVEL_PROCEDURE
175409       ,p_module   => l_log_module);
175410 END IF;
175411 --
175412 RETURN l_result;
175413 EXCEPTION
175414 WHEN xla_exceptions_pkg.application_exception THEN
175415    
175416 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
175417 
175418    
175419 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
175420 
175421    RAISE;
175422 
175423 WHEN NO_DATA_FOUND THEN
175424 
175425 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
175426 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
175427 
175428 FOR header_record IN header_cur
175429 LOOP
175430     l_array_header_events(header_record.event_id) := header_record.event_id;
175431 END LOOP;
175432 
175433 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
175434 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
175435 
175436 fnd_file.put_line(fnd_file.LOG, '                    ');
175437 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
175438 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
175439 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
175440 
175441 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
175442 LOOP
175443 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
175444 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
175445         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
175446 	END IF;
175447 END LOOP;
175448 
175449 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
175450 fnd_file.put_line(fnd_file.LOG, '                    ');
175451 
175452 
175453 xla_exceptions_pkg.raise_message
175454       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_277');
175455 
175456 
175457 WHEN OTHERS THEN
175458    xla_exceptions_pkg.raise_message
175459       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_277');
175460 END EventType_277;
175461 --
175462 
175463 ---------------------------------------
175464 --
175465 -- PRIVATE PROCEDURE
175466 --         insert_sources_278
175467 --
175468 ----------------------------------------
175469 --
175470 PROCEDURE insert_sources_278(
175471                                 p_target_ledger_id       IN NUMBER
175472                               , p_language               IN VARCHAR2
175473                               , p_sla_ledger_id          IN NUMBER
175474                               , p_pad_start_date         IN DATE
175475                               , p_pad_end_date           IN DATE
175476                          )
175477 IS
175478 
175479 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT_NO_TP';
175480 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
175481 p_apps_owner                   VARCHAR2(30);
175482 l_log_module                   VARCHAR2(240);
175483 BEGIN
175484 IF g_log_enabled THEN
175485       l_log_module := C_DEFAULT_MODULE||'.insert_sources_278';
175486 END IF;
175487 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175488 
175489       trace
175490          (p_msg      => 'BEGIN of insert_sources_278'
175491          ,p_level    => C_LEVEL_PROCEDURE
175492          ,p_module   => l_log_module);
175493 
175494 END IF;
175495 
175496 -- select APPS owner
175497 SELECT oracle_username
175498   INTO p_apps_owner
175499   FROM fnd_oracle_userid
175500  WHERE read_only_flag = 'U'
175501 ;
175502 
175503 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175504       trace
175505          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
175506                         ' - p_language = '||p_language||
175507                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
175508                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
175509                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
175510                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
175511          ,p_level    => C_LEVEL_STATEMENT
175512          ,p_module   => l_log_module);
175513 END IF;
175514 
175515 
175516 --
175517 INSERT INTO xla_diag_sources --hdr1
175518 (
175519         event_id
175520       , ledger_id
175521       , sla_ledger_id
175522       , description_language
175523       , object_name
175524       , object_type_code
175525       , line_number
175526       , source_application_id
175527       , source_type_code
175528       , source_code
175529       , source_value
175530       , source_meaning
175531       , created_by
175532       , creation_date
175533       , last_update_date
175534       , last_updated_by
175535       , last_update_login
175536       , program_update_date
175537       , program_application_id
175538       , program_id
175539       , request_id
175540 )
175541 SELECT
175542         event_id
175543       , p_target_ledger_id
175544       , p_sla_ledger_id
175545       , p_language
175546       , object_name
175547       , object_type_code
175548       , line_number
175549       , source_application_id
175550       , source_type_code
175551       , source_code
175552       , SUBSTR(source_value ,1,1996)
175553       , SUBSTR(source_meaning,1,200)
175554       , xla_environment_pkg.g_Usr_Id
175555       , TRUNC(SYSDATE)
175556       , TRUNC(SYSDATE)
175557       , xla_environment_pkg.g_Usr_Id
175558       , xla_environment_pkg.g_Login_Id
175559       , TRUNC(SYSDATE)
175560       , xla_environment_pkg.g_Prog_Appl_Id
175561       , xla_environment_pkg.g_Prog_Id
175562       , xla_environment_pkg.g_Req_Id
175563   FROM (
175564        SELECT xet.event_id                  event_id
175565             , 0                             line_number
175566             , CASE r
175567                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
175568                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
175569                 
175570                ELSE null
175571               END                           object_name
175572             , CASE r
175573                 WHEN 1 THEN 'HEADER' 
175574                 WHEN 2 THEN 'HEADER' 
175575                 
175576                 ELSE null
175577               END                           object_type_code
175578             , CASE r
175579                 WHEN 1 THEN '707' 
175580                 WHEN 2 THEN '707' 
175581                 
175582                 ELSE null
175583               END                           source_application_id
175584             , 'S'             source_type_code
175585             , CASE r
175586                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
175587                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
175588                 
175589                 ELSE null
175590               END                           source_code
175591             , CASE r
175592                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
175593                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
175594                 
175595                 ELSE null
175596               END                           source_value
175597             , CASE r
175598                 WHEN 1 THEN fvl12.meaning
175599                 WHEN 2 THEN fvl38.meaning
175600                 
175601                 ELSE null
175602               END               source_meaning
175603         FROM xla_events_gt     xet  
175604       , CST_XLA_INV_HEADERS_V  h1
175605   , fnd_lookup_values    fvl12
175606   , fnd_lookup_values    fvl38
175607             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
175608        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
175609          AND xet.event_type_code = C_EVENT_TYPE_CODE
175610             AND h1.event_id = xet.event_id
175611    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
175612   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
175613   AND fvl12.view_application_id(+) = 700
175614   AND fvl12.language(+)            = USERENV('LANG')
175615      AND fvl38.lookup_type(+)         = 'YES_NO'
175616   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
175617   AND fvl38.view_application_id(+) = 0
175618   AND fvl38.language(+)            = USERENV('LANG')
175619   
175620 )
175621 ;
175622 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175623 
175624       trace
175625          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
175626          ,p_level    => C_LEVEL_STATEMENT
175627          ,p_module   => l_log_module);
175628 
175629 END IF;
175630 --
175631 
175632 
175633 
175634 --
175635 INSERT INTO xla_diag_sources --line1
175636 (
175637         event_id
175638       , ledger_id
175639       , sla_ledger_id
175640       , description_language
175641       , object_name
175642       , object_type_code
175643       , line_number
175644       , source_application_id
175645       , source_type_code
175646       , source_code
175647       , source_value
175648       , source_meaning
175649       , created_by
175650       , creation_date
175651       , last_update_date
175652       , last_updated_by
175653       , last_update_login
175654       , program_update_date
175655       , program_application_id
175656       , program_id
175657       , request_id
175658 )
175659 SELECT  event_id
175660       , p_target_ledger_id
175661       , p_sla_ledger_id
175662       , p_language
175663       , object_name
175664       , object_type_code
175665       , line_number
175666       , source_application_id
175667       , source_type_code
175668       , source_code
175669       , SUBSTR(source_value,1,1996)
175670       , SUBSTR(source_meaning,1,200)
175671       , xla_environment_pkg.g_Usr_Id
175672       , TRUNC(SYSDATE)
175673       , TRUNC(SYSDATE)
175674       , xla_environment_pkg.g_Usr_Id
175675       , xla_environment_pkg.g_Login_Id
175676       , TRUNC(SYSDATE)
175677       , xla_environment_pkg.g_Prog_Appl_Id
175678       , xla_environment_pkg.g_Prog_Id
175679       , xla_environment_pkg.g_Req_Id
175680   FROM (
175681        SELECT xet.event_id                  event_id
175682             , l2.line_number                 line_number
175683             , CASE r
175684                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
175685                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
175686                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
175687                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
175688                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
175689                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
175690                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
175691                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
175692                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
175693                 
175694                ELSE null
175695               END                           object_name
175696             , CASE r
175697                 WHEN 1 THEN 'LINE' 
175698                 WHEN 2 THEN 'LINE' 
175699                 WHEN 3 THEN 'LINE' 
175700                 WHEN 4 THEN 'LINE' 
175701                 WHEN 5 THEN 'LINE' 
175702                 WHEN 6 THEN 'LINE' 
175703                 WHEN 7 THEN 'LINE' 
175704                 WHEN 8 THEN 'LINE' 
175705                 WHEN 9 THEN 'LINE' 
175706                 
175707                 ELSE null
175708               END                           object_type_code
175709             , CASE r
175710                 WHEN 1 THEN '707' 
175711                 WHEN 2 THEN '707' 
175712                 WHEN 3 THEN '707' 
175713                 WHEN 4 THEN '707' 
175714                 WHEN 5 THEN '707' 
175715                 WHEN 6 THEN '707' 
175716                 WHEN 7 THEN '707' 
175717                 WHEN 8 THEN '707' 
175718                 WHEN 9 THEN '707' 
175719                 
175720                 ELSE null
175721               END                           source_application_id
175722             , 'S'             source_type_code
175723             , CASE r
175724                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
175725                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
175726                 WHEN 3 THEN 'CURRENCY_CODE' 
175727                 WHEN 4 THEN 'ENTERED_AMOUNT' 
175728                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
175729                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
175730                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
175731                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
175732                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
175733                 
175734                 ELSE null
175735               END                           source_code
175736             , CASE r
175737                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
175738                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
175739                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
175740                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
175741                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
175742                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
175743                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
175744                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
175745                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
175746                 
175747                 ELSE null
175748               END                           source_value
175749             , null              source_meaning
175750          FROM  xla_events_gt     xet  
175751         , CST_XLA_INV_LINES_V  l2
175752             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
175753         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
175754           AND xet.event_type_code = C_EVENT_TYPE_CODE
175755             AND l2.event_id          = xet.event_id
175756 
175757 )
175758 ;
175759 --
175760 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175761 
175762       trace
175763          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
175764          ,p_level    => C_LEVEL_STATEMENT
175765          ,p_module   => l_log_module);
175766 
175767 END IF;
175768 
175769 
175770 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175771       trace
175772          (p_msg      => 'END of insert_sources_278'
175773          ,p_level    => C_LEVEL_PROCEDURE
175774          ,p_module   => l_log_module);
175775 END IF;
175776 EXCEPTION
175777   WHEN xla_exceptions_pkg.application_exception THEN
175778       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
175779             trace
175780                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
175781                ,p_level    => C_LEVEL_EXCEPTION
175782                ,p_module   => l_log_module);
175783       END IF;
175784       RAISE;
175785   WHEN OTHERS THEN
175786       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
175787             trace
175788                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
175789                ,p_level    => C_LEVEL_EXCEPTION
175790                ,p_module   => l_log_module);
175791        END IF;
175792        xla_exceptions_pkg.raise_message
175793            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_278');
175794 END insert_sources_278;
175795 --
175796 
175797 ---------------------------------------
175798 --
175799 -- PRIVATE FUNCTION
175800 --         EventType_278
175801 --
175802 ----------------------------------------
175803 --
175804 FUNCTION EventType_278
175805        (p_application_id         IN NUMBER
175806        ,p_base_ledger_id         IN NUMBER
175807        ,p_target_ledger_id       IN NUMBER
175808        ,p_language               IN VARCHAR2
175809        ,p_currency_code          IN VARCHAR2
175810        ,p_sla_ledger_id          IN NUMBER
175811        ,p_pad_start_date         IN DATE
175812        ,p_pad_end_date           IN DATE
175813        ,p_primary_ledger_id      IN NUMBER)
175814 RETURN BOOLEAN IS
175815 --
175816 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT_NO_TP';
175817 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
175818 
175819 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
175820 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
175821 --
175822 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175823 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175824 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175825 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175826 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175827 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175828 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175829 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175830 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175831 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175832 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175833 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175834 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175835 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175836 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175837 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175838 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175839 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175840 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175841 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175842 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175843 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175844 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
175845 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175846 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
175847 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
175848 
175849 l_event_id                             NUMBER;
175850 l_previous_event_id                    NUMBER;
175851 l_first_event_id                       NUMBER;
175852 l_last_event_id                        NUMBER;
175853 
175854 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
175855 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
175856 --
175857 --
175858 l_result                    BOOLEAN := TRUE;
175859 l_rows                      NUMBER  := 1000;
175860 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Receipt, No Transfer Price';
175861 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
175862 l_description               VARCHAR2(4000);
175863 l_transaction_reversal      NUMBER;
175864 l_ae_header_id              NUMBER;
175865 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
175866 l_log_module                VARCHAR2(240);
175867 --
175868 l_acct_reversal_source      VARCHAR2(30);
175869 l_trx_reversal_source       VARCHAR2(30);
175870 
175871 l_continue_with_lines       BOOLEAN := TRUE;
175872 --
175873 l_acc_rev_gl_date_source    DATE;                      -- 4262811
175874 --
175875 type t_array_event_id is table of number index by binary_integer;
175876 
175877 l_rec_array_event                    t_rec_array_event;
175878 l_null_rec_array_event               t_rec_array_event;
175879 l_array_ae_header_id                 xla_number_array_type;
175880 l_actual_flag                        VARCHAR2(1) := NULL;
175881 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
175882 l_balance_type_code                  VARCHAR2(1) :=NULL;
175883 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
175884 
175885 --
175886 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
175887 --
175888 
175889 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
175890 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
175891 
175892 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
175893 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
175894 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
175895 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
175896 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
175897 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
175898 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
175899 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
175900 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
175901 
175902 l_array_source_12              t_array_source_12;
175903 l_array_source_12_meaning      t_array_lookup_meaning;
175904 l_array_source_38              t_array_source_38;
175905 l_array_source_38_meaning      t_array_lookup_meaning;
175906 
175907 l_array_source_4      t_array_source_4;
175908 l_array_source_11      t_array_source_11;
175909 l_array_source_15      t_array_source_15;
175910 l_array_source_18      t_array_source_18;
175911 l_array_source_19      t_array_source_19;
175912 l_array_source_20      t_array_source_20;
175913 l_array_source_21      t_array_source_21;
175914 l_array_source_22      t_array_source_22;
175915 l_array_source_24      t_array_source_24;
175916 
175917 --
175918 CURSOR header_cur
175919 IS
175920 SELECT /*+ leading(xet) cardinality(xet,1) */
175921 -- Event Type Code: UDIR_INTERORG_RCPT_NO_TP
175922 -- Event Class Code: USER_DEFINE
175923     xet.entity_id
175924   , xet.legal_entity_id
175925   , xet.entity_code
175926   , xet.transaction_number
175927   , xet.event_id
175928   , xet.event_class_code
175929   , xet.event_type_code
175930   , xet.event_number
175931   , xet.event_date
175932   , xet.transaction_date
175933   , xet.reference_num_1
175934   , xet.reference_num_2
175935   , xet.reference_num_3
175936   , xet.reference_num_4
175937   , xet.reference_char_1
175938   , xet.reference_char_2
175939   , xet.reference_char_3
175940   , xet.reference_char_4
175941   , xet.reference_date_1
175942   , xet.reference_date_2
175943   , xet.reference_date_3
175944   , xet.reference_date_4
175945   , xet.event_created_by
175946   , xet.budgetary_control_flag 
175947   , h1.DISTRIBUTION_TYPE    source_12
175948   , fvl12.meaning   source_12_meaning
175949   , h1.TRANSFER_TO_GL_INDICATOR    source_38
175950   , fvl38.meaning   source_38_meaning
175951   FROM xla_events_gt     xet 
175952   , CST_XLA_INV_HEADERS_V  h1
175953   , fnd_lookup_values    fvl12
175954   , fnd_lookup_values    fvl38
175955  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
175956    and xet.event_type_code = C_EVENT_TYPE_CODE
175957    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
175958    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
175959   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
175960   AND fvl12.view_application_id(+) = 700
175961   AND fvl12.language(+)            = USERENV('LANG')
175962      AND fvl38.lookup_type(+)         = 'YES_NO'
175963   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
175964   AND fvl38.view_application_id(+) = 0
175965   AND fvl38.language(+)            = USERENV('LANG')
175966   
175967  ORDER BY event_id
175968 ;
175969 
175970 
175971 --
175972 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
175973 IS
175974 SELECT /*+ leading(xet) cardinality(xet,1) */
175975 -- Event Type Code: UDIR_INTERORG_RCPT_NO_TP
175976 -- Event Class Code: USER_DEFINE
175977     xet.entity_id
175978    ,xet.legal_entity_id
175979    ,xet.entity_code
175980    ,xet.transaction_number
175981    ,xet.event_id
175982    ,xet.event_class_code
175983    ,xet.event_type_code
175984    ,xet.event_number
175985    ,xet.event_date
175986    ,xet.transaction_date
175987    ,xet.reference_num_1
175988    ,xet.reference_num_2
175989    ,xet.reference_num_3
175990    ,xet.reference_num_4
175991    ,xet.reference_char_1
175992    ,xet.reference_char_2
175993    ,xet.reference_char_3
175994    ,xet.reference_char_4
175995    ,xet.reference_date_1
175996    ,xet.reference_date_2
175997    ,xet.reference_date_3
175998    ,xet.reference_date_4
175999    ,xet.event_created_by
176000    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
176001   , l2.CODE_COMBINATION_ID    source_4
176002   , l2.DISTRIBUTION_IDENTIFIER    source_11
176003   , l2.CURRENCY_CODE    source_15
176004   , l2.ENTERED_AMOUNT    source_18
176005   , l2.CURRENCY_CONVERSION_DATE    source_19
176006   , l2.CURRENCY_CONVERSION_RATE    source_20
176007   , l2.CURRENCY_CONVERSION_TYPE    source_21
176008   , l2.ACCOUNTED_AMOUNT    source_22
176009   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
176010   FROM xla_events_gt     xet 
176011   , CST_XLA_INV_LINES_V  l2
176012  WHERE xet.event_id between x_first_event_id and x_last_event_id
176013    and xet.event_date between p_pad_start_date and p_pad_end_date
176014    and xet.event_type_code = C_EVENT_TYPE_CODE
176015    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
176016 ;
176017 
176018 --
176019 BEGIN
176020 IF g_log_enabled THEN
176021    l_log_module := C_DEFAULT_MODULE||'.EventType_278';
176022 END IF;
176023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176024    trace
176025       (p_msg      => 'BEGIN of EventType_278'
176026       ,p_level    => C_LEVEL_PROCEDURE
176027       ,p_module   => l_log_module);
176028 END IF;
176029 
176030 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176031    trace
176032       (p_msg      => 'p_application_id = '||p_application_id||
176033                      ' - p_base_ledger_id = '||p_base_ledger_id||
176034                      ' - p_target_ledger_id  = '||p_target_ledger_id||
176035                      ' - p_language = '||p_language||
176036                      ' - p_currency_code = '||p_currency_code||
176037                      ' - p_sla_ledger_id = '||p_sla_ledger_id
176038       ,p_level    => C_LEVEL_STATEMENT
176039       ,p_module   => l_log_module);
176040 END IF;
176041 --
176042 -- initialze arrays
176043 --
176044 g_array_event.DELETE;
176045 l_rec_array_event := l_null_rec_array_event;
176046 --
176047 --------------------------------------
176048 -- 4262811 Initialze MPA Line Number
176049 --------------------------------------
176050 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
176051 
176052 --
176053 
176054 --
176055 OPEN header_cur;
176056 --
176057 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176058    trace
176059    (p_msg      => 'SQL - FETCH header_cur'
176060    ,p_level    => C_LEVEL_STATEMENT
176061    ,p_module   => l_log_module);
176062 END IF;
176063 --
176064 LOOP
176065 FETCH header_cur BULK COLLECT INTO
176066         l_array_entity_id
176067       , l_array_legal_entity_id
176068       , l_array_entity_code
176069       , l_array_transaction_num
176070       , l_array_event_id
176071       , l_array_class_code
176072       , l_array_event_type
176073       , l_array_event_number
176074       , l_array_event_date
176075       , l_array_transaction_date
176076       , l_array_reference_num_1
176077       , l_array_reference_num_2
176078       , l_array_reference_num_3
176079       , l_array_reference_num_4
176080       , l_array_reference_char_1
176081       , l_array_reference_char_2
176082       , l_array_reference_char_3
176083       , l_array_reference_char_4
176084       , l_array_reference_date_1
176085       , l_array_reference_date_2
176086       , l_array_reference_date_3
176087       , l_array_reference_date_4
176088       , l_array_event_created_by
176089       , l_array_budgetary_control_flag 
176090       , l_array_source_12
176091       , l_array_source_12_meaning
176092       , l_array_source_38
176093       , l_array_source_38_meaning
176094       LIMIT l_rows;
176095 --
176096 IF (C_LEVEL_EVENT >= g_log_level) THEN
176097    trace
176098    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
176099    ,p_level    => C_LEVEL_EVENT
176100    ,p_module   => l_log_module);
176101 END IF;
176102 --
176103 EXIT WHEN l_array_entity_id.COUNT = 0;
176104 
176105 -- initialize arrays
176106 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
176107 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
176108 
176109 --
176110 -- Bug 4458708
176111 --
176112 XLA_AE_LINES_PKG.g_LineNumber := 0;
176113 
176114 
176115 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
176116 g_last_hdr_idx := l_array_event_id.LAST;
176117 --
176118 -- loop for the headers. Each iteration is for each header extract row
176119 -- fetched in header cursor
176120 --
176121 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
176122 
176123 --
176124 -- set event info as cache for other routines to refer event attributes
176125 --
176126 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
176127    (p_application_id           => p_application_id
176128    ,p_primary_ledger_id        => p_primary_ledger_id
176129    ,p_base_ledger_id           => p_base_ledger_id
176130    ,p_target_ledger_id         => p_target_ledger_id
176131    ,p_entity_id                => l_array_entity_id(hdr_idx)
176132    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
176133    ,p_entity_code              => l_array_entity_code(hdr_idx)
176134    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
176135    ,p_event_id                 => l_array_event_id(hdr_idx)
176136    ,p_event_class_code         => l_array_class_code(hdr_idx)
176137    ,p_event_type_code          => l_array_event_type(hdr_idx)
176138    ,p_event_number             => l_array_event_number(hdr_idx)
176139    ,p_event_date               => l_array_event_date(hdr_idx)
176140    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
176141    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
176142    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
176143    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
176144    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
176145    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
176146    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
176147    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
176148    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
176149    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
176150    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
176151    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
176152    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
176153    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
176154    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
176155 
176156 --
176157 -- set the status of entry to C_VALID (0)
176158 --
176159 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
176160 
176161 --
176162 -- initialize a row for ae header
176163 --
176164 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
176165 
176166 l_event_id := l_array_event_id(hdr_idx);
176167 
176168 --
176169 -- storing the hdr_idx for event. May be used by line cursor.
176170 --
176171 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
176172 
176173 --
176174 -- store sources from header extract. This can be improved to
176175 -- store only those sources from header extract that may be used in lines
176176 --
176177 
176178 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
176179 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
176180 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
176181 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
176182 
176183 --
176184 -- initilaize the status of ae headers for diffrent balance types
176185 -- the status is initialised to C_NOT_CREATED (2)
176186 --
176187 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
176188 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
176189 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
176190 
176191 --
176192 -- call api to validate and store accounting attributes for header
176193 --
176194 
176195 ------------------------------------------------------------
176196 -- Accrual Reversal : to get date for Standard Source (NONE)
176197 ------------------------------------------------------------
176198 l_acc_rev_gl_date_source := NULL;
176199 
176200      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
176201       l_rec_acct_attrs.array_date_value(1) := 
176202 xla_ae_sources_pkg.GetSystemSourceDate(
176203    p_source_code           => 'XLA_REFERENCE_DATE_1'
176204  , p_source_type_code      => 'Y'
176205  , p_source_application_id =>  602
176206 );
176207      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
176208       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
176209 
176210 
176211 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
176212 
176213 XLA_AE_HEADER_PKG.SetJeCategoryName;
176214 
176215 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
176216 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
176217 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
176218 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
176219 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
176220 
176221 
176222 -- No header level analytical criteria
176223 
176224 --
176225 --accounting attribute enhancement, bug 3612931
176226 --
176227 l_trx_reversal_source := SUBSTR(NULL, 1,30);
176228 
176229 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
176230    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
176231 
176232    xla_accounting_err_pkg.build_message
176233       (p_appli_s_name            => 'XLA'
176234       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
176235       ,p_token_1                 => 'ACCT_ATTR_NAME'
176236       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
176237       ,p_token_2                 => 'PRODUCT_NAME'
176238       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
176239       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
176240       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
176241       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
176242 
176243 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
176244    --
176245    -- following sets the accounting attributes needed to reverse
176246    -- accounting for a distributeion
176247    --
176248    xla_ae_lines_pkg.SetTrxReversalAttrs
176249       (p_event_id              => l_event_id
176250       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
176251       ,p_trx_reversal_source   => l_trx_reversal_source);
176252 
176253 END IF;
176254 
176255 
176256 ----------------------------------------------------------------
176257 -- 4262811 -  update the header statuses to invalid in need be
176258 ----------------------------------------------------------------
176259 --
176260 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
176261 
176262 
176263   -----------------------------------------------
176264   -- No accrual reversal for the event class/type
176265   -----------------------------------------------
176266 ----------------------------------------------------------------
176267 
176268 --
176269 -- this ends the header loop iteration for one bulk fetch
176270 --
176271 END LOOP;
176272 
176273 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
176274 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
176275 
176276 --
176277 -- insert dummy rows into lines gt table that were created due to
176278 -- transaction reversals
176279 --
176280 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
176281    l_result := XLA_AE_LINES_PKG.InsertLines;
176282 END IF;
176283 
176284 --
176285 -- reset the temp_line_num for each set of events fetched from header
176286 -- cursor rather than doing it for each new event in line cursor
176287 -- Bug 3939231
176288 --
176289 xla_ae_lines_pkg.g_temp_line_num := 0;
176290 
176291 
176292 
176293 --
176294 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
176295 --
176296 --
176297 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176298 
176299       trace
176300          (p_msg      => 'SQL - FETCH line_cur'
176301          ,p_level    => C_LEVEL_STATEMENT
176302          ,p_module   => l_log_module);
176303 
176304 END IF;
176305 --
176306 --
176307 LOOP
176308   --
176309   FETCH line_cur BULK COLLECT INTO
176310         l_array_entity_id
176311       , l_array_legal_entity_id
176312       , l_array_entity_code
176313       , l_array_transaction_num
176314       , l_array_event_id
176315       , l_array_class_code
176316       , l_array_event_type
176317       , l_array_event_number
176318       , l_array_event_date
176319       , l_array_transaction_date
176320       , l_array_reference_num_1
176321       , l_array_reference_num_2
176322       , l_array_reference_num_3
176323       , l_array_reference_num_4
176324       , l_array_reference_char_1
176325       , l_array_reference_char_2
176326       , l_array_reference_char_3
176327       , l_array_reference_char_4
176328       , l_array_reference_date_1
176329       , l_array_reference_date_2
176330       , l_array_reference_date_3
176331       , l_array_reference_date_4
176332       , l_array_event_created_by
176333       , l_array_budgetary_control_flag
176334       , l_array_extract_line_num 
176335       , l_array_source_4
176336       , l_array_source_11
176337       , l_array_source_15
176338       , l_array_source_18
176339       , l_array_source_19
176340       , l_array_source_20
176341       , l_array_source_21
176342       , l_array_source_22
176343       , l_array_source_24
176344       LIMIT l_rows;
176345 
176346   --
176347   IF (C_LEVEL_EVENT >= g_log_level) THEN
176348             trace
176349                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
176350                ,p_level    => C_LEVEL_EVENT
176351                ,p_module   => l_log_module);
176352   END IF;
176353   --
176354   EXIT WHEN l_array_entity_id.count = 0;
176355 
176356   XLA_AE_LINES_PKG.g_rec_lines := null;
176357 
176358 --
176359 -- Bug 4458708
176360 --
176361 XLA_AE_LINES_PKG.g_LineNumber := 0;
176362 --
176363 --
176364 
176365 FOR Idx IN 1..l_array_event_id.count LOOP
176366    --
176367    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
176368    --
176369    l_event_id := l_array_event_id(idx);  -- 5648433
176370 
176371    --
176372    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
176373    --
176374 
176375    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
176376              (g_array_event(l_event_id).array_value_num('header_index'))
176377          ,'N'
176378          ) <> 'Y'
176379    THEN
176380       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176381          trace
176382             (p_msg      => 'Trancaction revesal option is not Y '
176383             ,p_level    => C_LEVEL_STATEMENT
176384             ,p_module   => l_log_module);
176385       END IF;
176386 
176387 --
176388 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
176389 --
176390 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
176391 --
176392 -- set event info as cache for other routines to refer event attributes
176393 --
176394 
176395 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
176396    l_previous_event_id := l_event_id;
176397 
176398    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
176399       (p_application_id           => p_application_id
176400       ,p_primary_ledger_id        => p_primary_ledger_id
176401       ,p_base_ledger_id           => p_base_ledger_id
176402       ,p_target_ledger_id         => p_target_ledger_id
176403       ,p_entity_id                => l_array_entity_id(Idx)
176404       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
176405       ,p_entity_code              => l_array_entity_code(Idx)
176406       ,p_transaction_num          => l_array_transaction_num(Idx)
176407       ,p_event_id                 => l_array_event_id(Idx)
176408       ,p_event_class_code         => l_array_class_code(Idx)
176409       ,p_event_type_code          => l_array_event_type(Idx)
176410       ,p_event_number             => l_array_event_number(Idx)
176411       ,p_event_date               => l_array_event_date(Idx)
176412       ,p_transaction_date         => l_array_transaction_date(Idx)
176413       ,p_reference_num_1          => l_array_reference_num_1(Idx)
176414       ,p_reference_num_2          => l_array_reference_num_2(Idx)
176415       ,p_reference_num_3          => l_array_reference_num_3(Idx)
176416       ,p_reference_num_4          => l_array_reference_num_4(Idx)
176417       ,p_reference_char_1         => l_array_reference_char_1(Idx)
176418       ,p_reference_char_2         => l_array_reference_char_2(Idx)
176419       ,p_reference_char_3         => l_array_reference_char_3(Idx)
176420       ,p_reference_char_4         => l_array_reference_char_4(Idx)
176421       ,p_reference_date_1         => l_array_reference_date_1(Idx)
176422       ,p_reference_date_2         => l_array_reference_date_2(Idx)
176423       ,p_reference_date_3         => l_array_reference_date_3(Idx)
176424       ,p_reference_date_4         => l_array_reference_date_4(Idx)
176425       ,p_event_created_by         => l_array_event_created_by(Idx)
176426       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
176427        --
176428 END IF;
176429 
176430 
176431 
176432 --
176433 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
176434 
176435 l_acct_reversal_source := SUBSTR(NULL, 1,30);
176436 
176437 IF l_continue_with_lines THEN
176438    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
176439       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
176440 
176441       xla_accounting_err_pkg.build_message
176442          (p_appli_s_name            => 'XLA'
176443          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
176444          ,p_token_1                 => 'LINE_NUMBER'
176445          ,p_value_1                 => l_array_extract_line_num(Idx)
176446          ,p_token_2                 => 'PRODUCT_NAME'
176447          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
176448          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
176449          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
176450          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
176451 
176452    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
176453       --
176454       -- following sets the accounting attributes needed to reverse
176455       -- accounting for a distributeion
176456       --
176457 
176458       --
176459       -- 5217187
176460       --
176461       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
176462       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
176463                                        g_array_event(l_event_id).array_value_num('header_index'));
176464       --
176465       --
176466 
176467       -- No reversal code generated
176468 
176469       xla_ae_lines_pkg.SetAcctReversalAttrs
176470          (p_event_id             => l_event_id
176471          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
176472          ,p_calculate_acctd_flag => l_calculate_acctd_flag
176473          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
176474    END IF;
176475 
176476    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
176477        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
176478 
176479 --
176480 AcctLineType_36 (
176481  p_application_id  => p_application_id
176482  ,p_event_id     => l_event_id
176483  ,p_calculate_acctd_flag => l_calculate_acctd_flag
176484  ,p_calculate_g_l_flag => l_calculate_g_l_flag
176485  ,p_actual_flag => l_actual_flag
176486  ,p_balance_type_code => l_balance_type_code
176487  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176488  
176489  , p_source_4 => l_array_source_4(Idx)
176490  , p_source_11 => l_array_source_11(Idx)
176491  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176492  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176493  , p_source_15 => l_array_source_15(Idx)
176494  , p_source_18 => l_array_source_18(Idx)
176495  , p_source_19 => l_array_source_19(Idx)
176496  , p_source_20 => l_array_source_20(Idx)
176497  , p_source_21 => l_array_source_21(Idx)
176498  , p_source_22 => l_array_source_22(Idx)
176499  , p_source_24 => l_array_source_24(Idx)
176500  );
176501 If(l_balance_type_code = 'A') THEN
176502   l_actual_gain_loss_ref := l_gain_or_loss_ref;
176503 END IF;
176504 
176505 --
176506 
176507 
176508 --
176509 AcctLineType_59 (
176510  p_application_id  => p_application_id
176511  ,p_event_id     => l_event_id
176512  ,p_calculate_acctd_flag => l_calculate_acctd_flag
176513  ,p_calculate_g_l_flag => l_calculate_g_l_flag
176514  ,p_actual_flag => l_actual_flag
176515  ,p_balance_type_code => l_balance_type_code
176516  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176517  
176518  , p_source_4 => l_array_source_4(Idx)
176519  , p_source_11 => l_array_source_11(Idx)
176520  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176521  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176522  , p_source_15 => l_array_source_15(Idx)
176523  , p_source_18 => l_array_source_18(Idx)
176524  , p_source_19 => l_array_source_19(Idx)
176525  , p_source_20 => l_array_source_20(Idx)
176526  , p_source_21 => l_array_source_21(Idx)
176527  , p_source_22 => l_array_source_22(Idx)
176528  , p_source_24 => l_array_source_24(Idx)
176529  );
176530 If(l_balance_type_code = 'A') THEN
176531   l_actual_gain_loss_ref := l_gain_or_loss_ref;
176532 END IF;
176533 
176534 --
176535 
176536 
176537 --
176538 AcctLineType_70 (
176539  p_application_id  => p_application_id
176540  ,p_event_id     => l_event_id
176541  ,p_calculate_acctd_flag => l_calculate_acctd_flag
176542  ,p_calculate_g_l_flag => l_calculate_g_l_flag
176543  ,p_actual_flag => l_actual_flag
176544  ,p_balance_type_code => l_balance_type_code
176545  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176546  
176547  , p_source_4 => l_array_source_4(Idx)
176548  , p_source_11 => l_array_source_11(Idx)
176549  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176550  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176551  , p_source_15 => l_array_source_15(Idx)
176552  , p_source_18 => l_array_source_18(Idx)
176553  , p_source_19 => l_array_source_19(Idx)
176554  , p_source_20 => l_array_source_20(Idx)
176555  , p_source_21 => l_array_source_21(Idx)
176556  , p_source_22 => l_array_source_22(Idx)
176557  , p_source_24 => l_array_source_24(Idx)
176558  );
176559 If(l_balance_type_code = 'A') THEN
176560   l_actual_gain_loss_ref := l_gain_or_loss_ref;
176561 END IF;
176562 
176563 --
176564 
176565 
176566 --
176567 AcctLineType_92 (
176568  p_application_id  => p_application_id
176569  ,p_event_id     => l_event_id
176570  ,p_calculate_acctd_flag => l_calculate_acctd_flag
176571  ,p_calculate_g_l_flag => l_calculate_g_l_flag
176572  ,p_actual_flag => l_actual_flag
176573  ,p_balance_type_code => l_balance_type_code
176574  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176575  
176576  , p_source_4 => l_array_source_4(Idx)
176577  , p_source_11 => l_array_source_11(Idx)
176578  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176579  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176580  , p_source_15 => l_array_source_15(Idx)
176581  , p_source_18 => l_array_source_18(Idx)
176582  , p_source_19 => l_array_source_19(Idx)
176583  , p_source_20 => l_array_source_20(Idx)
176584  , p_source_21 => l_array_source_21(Idx)
176585  , p_source_22 => l_array_source_22(Idx)
176586  , p_source_24 => l_array_source_24(Idx)
176587  );
176588 If(l_balance_type_code = 'A') THEN
176589   l_actual_gain_loss_ref := l_gain_or_loss_ref;
176590 END IF;
176591 
176592 --
176593 
176594 
176595 --
176596 AcctLineType_106 (
176597  p_application_id  => p_application_id
176598  ,p_event_id     => l_event_id
176599  ,p_calculate_acctd_flag => l_calculate_acctd_flag
176600  ,p_calculate_g_l_flag => l_calculate_g_l_flag
176601  ,p_actual_flag => l_actual_flag
176602  ,p_balance_type_code => l_balance_type_code
176603  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176604  
176605  , p_source_4 => l_array_source_4(Idx)
176606  , p_source_11 => l_array_source_11(Idx)
176607  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176608  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176609  , p_source_15 => l_array_source_15(Idx)
176610  , p_source_18 => l_array_source_18(Idx)
176611  , p_source_19 => l_array_source_19(Idx)
176612  , p_source_20 => l_array_source_20(Idx)
176613  , p_source_21 => l_array_source_21(Idx)
176614  , p_source_22 => l_array_source_22(Idx)
176615  , p_source_24 => l_array_source_24(Idx)
176616  );
176617 If(l_balance_type_code = 'A') THEN
176618   l_actual_gain_loss_ref := l_gain_or_loss_ref;
176619 END IF;
176620 
176621 --
176622 
176623 
176624 --
176625 AcctLineType_137 (
176626  p_application_id  => p_application_id
176627  ,p_event_id     => l_event_id
176628  ,p_calculate_acctd_flag => l_calculate_acctd_flag
176629  ,p_calculate_g_l_flag => l_calculate_g_l_flag
176630  ,p_actual_flag => l_actual_flag
176631  ,p_balance_type_code => l_balance_type_code
176632  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176633  
176634  , p_source_4 => l_array_source_4(Idx)
176635  , p_source_11 => l_array_source_11(Idx)
176636  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176637  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176638  , p_source_15 => l_array_source_15(Idx)
176639  , p_source_18 => l_array_source_18(Idx)
176640  , p_source_19 => l_array_source_19(Idx)
176641  , p_source_20 => l_array_source_20(Idx)
176642  , p_source_21 => l_array_source_21(Idx)
176643  , p_source_22 => l_array_source_22(Idx)
176644  , p_source_24 => l_array_source_24(Idx)
176645  );
176646 If(l_balance_type_code = 'A') THEN
176647   l_actual_gain_loss_ref := l_gain_or_loss_ref;
176648 END IF;
176649 
176650 --
176651 
176652 
176653 --
176654 AcctLineType_167 (
176655  p_application_id  => p_application_id
176656  ,p_event_id     => l_event_id
176657  ,p_calculate_acctd_flag => l_calculate_acctd_flag
176658  ,p_calculate_g_l_flag => l_calculate_g_l_flag
176659  ,p_actual_flag => l_actual_flag
176660  ,p_balance_type_code => l_balance_type_code
176661  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176662  
176663  , p_source_4 => l_array_source_4(Idx)
176664  , p_source_11 => l_array_source_11(Idx)
176665  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176666  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176667  , p_source_15 => l_array_source_15(Idx)
176668  , p_source_18 => l_array_source_18(Idx)
176669  , p_source_19 => l_array_source_19(Idx)
176670  , p_source_20 => l_array_source_20(Idx)
176671  , p_source_21 => l_array_source_21(Idx)
176672  , p_source_22 => l_array_source_22(Idx)
176673  , p_source_24 => l_array_source_24(Idx)
176674  );
176675 If(l_balance_type_code = 'A') THEN
176676   l_actual_gain_loss_ref := l_gain_or_loss_ref;
176677 END IF;
176678 
176679 --
176680 
176681 
176682 --
176683 AcctLineType_194 (
176684  p_application_id  => p_application_id
176685  ,p_event_id     => l_event_id
176686  ,p_calculate_acctd_flag => l_calculate_acctd_flag
176687  ,p_calculate_g_l_flag => l_calculate_g_l_flag
176688  ,p_actual_flag => l_actual_flag
176689  ,p_balance_type_code => l_balance_type_code
176690  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176691  
176692  , p_source_4 => l_array_source_4(Idx)
176693  , p_source_11 => l_array_source_11(Idx)
176694  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176695  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176696  , p_source_15 => l_array_source_15(Idx)
176697  , p_source_18 => l_array_source_18(Idx)
176698  , p_source_19 => l_array_source_19(Idx)
176699  , p_source_20 => l_array_source_20(Idx)
176700  , p_source_21 => l_array_source_21(Idx)
176701  , p_source_22 => l_array_source_22(Idx)
176702  , p_source_24 => l_array_source_24(Idx)
176703  );
176704 If(l_balance_type_code = 'A') THEN
176705   l_actual_gain_loss_ref := l_gain_or_loss_ref;
176706 END IF;
176707 
176708 --
176709 
176710 
176711 --
176712 AcctLineType_220 (
176713  p_application_id  => p_application_id
176714  ,p_event_id     => l_event_id
176715  ,p_calculate_acctd_flag => l_calculate_acctd_flag
176716  ,p_calculate_g_l_flag => l_calculate_g_l_flag
176717  ,p_actual_flag => l_actual_flag
176718  ,p_balance_type_code => l_balance_type_code
176719  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176720  
176721  , p_source_4 => l_array_source_4(Idx)
176722  , p_source_11 => l_array_source_11(Idx)
176723  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176724  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176725  , p_source_15 => l_array_source_15(Idx)
176726  , p_source_18 => l_array_source_18(Idx)
176727  , p_source_19 => l_array_source_19(Idx)
176728  , p_source_20 => l_array_source_20(Idx)
176729  , p_source_21 => l_array_source_21(Idx)
176730  , p_source_22 => l_array_source_22(Idx)
176731  , p_source_24 => l_array_source_24(Idx)
176732  );
176733 If(l_balance_type_code = 'A') THEN
176734   l_actual_gain_loss_ref := l_gain_or_loss_ref;
176735 END IF;
176736 
176737 --
176738 
176739       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
176740       -- or secondary ledger that has different currency with primary
176741       -- or alc that is calculated by sla
176742       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
176743             (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'))
176744 
176745 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
176746 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
176747           AND (l_actual_flag = 'A')) THEN
176748         XLA_AE_LINES_PKG.CreateGainOrLossLines(
176749           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
176750          ,p_application_id   => p_application_id
176751          ,p_amb_context_code => 'DEFAULT'
176752          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
176753          ,p_event_class_code => C_EVENT_CLASS_CODE
176754          ,p_event_type_code  => C_EVENT_TYPE_CODE
176755          
176756          ,p_gain_ccid        => -1
176757          ,p_loss_ccid        => -1
176758 
176759          ,p_actual_flag      => l_actual_flag
176760          ,p_enc_flag         => null
176761          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
176762          ,p_enc_g_l_ref      => null
176763          );
176764       END IF;
176765    END IF;
176766 END IF;
176767 
176768    ELSE
176769       --
176770       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
176771       --
176772       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176773          trace
176774             (p_msg      => 'Trancaction revesal option is Y'
176775             ,p_level    => C_LEVEL_STATEMENT
176776             ,p_module   => l_log_module);
176777       END IF;
176778    END IF;
176779 
176780 END LOOP;
176781 l_result := XLA_AE_LINES_PKG.InsertLines ;
176782 end loop;
176783 close line_cur;
176784 
176785 
176786 --
176787 -- insert headers into xla_ae_headers_gt table
176788 --
176789 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
176790 
176791 -- insert into errors table here.
176792 
176793 END LOOP;
176794 
176795 --
176796 -- 4865292
176797 --
176798 -- Compare g_hdr_extract_count with event count in
176799 -- CreateHeadersAndLines.
176800 --
176801 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
176802 
176803 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176804    trace (p_msg     => '# rows extracted from header extract objects '
176805                     || ' (running total): '
176806                     || g_hdr_extract_count
176807          ,p_level   => C_LEVEL_STATEMENT
176808          ,p_module  => l_log_module);
176809 END IF;
176810 
176811 CLOSE header_cur;
176812 --
176813 
176814 --
176815 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176816    trace
176817       (p_msg      => 'END of EventType_278'
176818       ,p_level    => C_LEVEL_PROCEDURE
176819       ,p_module   => l_log_module);
176820 END IF;
176821 --
176822 RETURN l_result;
176823 EXCEPTION
176824 WHEN xla_exceptions_pkg.application_exception THEN
176825    
176826 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
176827 
176828    
176829 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
176830 
176831    RAISE;
176832 
176833 WHEN NO_DATA_FOUND THEN
176834 
176835 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
176836 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
176837 
176838 FOR header_record IN header_cur
176839 LOOP
176840     l_array_header_events(header_record.event_id) := header_record.event_id;
176841 END LOOP;
176842 
176843 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
176844 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
176845 
176846 fnd_file.put_line(fnd_file.LOG, '                    ');
176847 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
176848 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
176849 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
176850 
176851 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
176852 LOOP
176853 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
176854 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
176855         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
176856 	END IF;
176857 END LOOP;
176858 
176859 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
176860 fnd_file.put_line(fnd_file.LOG, '                    ');
176861 
176862 
176863 xla_exceptions_pkg.raise_message
176864       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_278');
176865 
176866 
176867 WHEN OTHERS THEN
176868    xla_exceptions_pkg.raise_message
176869       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_278');
176870 END EventType_278;
176871 --
176872 
176873 ---------------------------------------
176874 --
176875 -- PRIVATE PROCEDURE
176876 --         insert_sources_279
176877 --
176878 ----------------------------------------
176879 --
176880 PROCEDURE insert_sources_279(
176881                                 p_target_ledger_id       IN NUMBER
176882                               , p_language               IN VARCHAR2
176883                               , p_sla_ledger_id          IN NUMBER
176884                               , p_pad_start_date         IN DATE
176885                               , p_pad_end_date           IN DATE
176886                          )
176887 IS
176888 
176889 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT_TP';
176890 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
176891 p_apps_owner                   VARCHAR2(30);
176892 l_log_module                   VARCHAR2(240);
176893 BEGIN
176894 IF g_log_enabled THEN
176895       l_log_module := C_DEFAULT_MODULE||'.insert_sources_279';
176896 END IF;
176897 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176898 
176899       trace
176900          (p_msg      => 'BEGIN of insert_sources_279'
176901          ,p_level    => C_LEVEL_PROCEDURE
176902          ,p_module   => l_log_module);
176903 
176904 END IF;
176905 
176906 -- select APPS owner
176907 SELECT oracle_username
176908   INTO p_apps_owner
176909   FROM fnd_oracle_userid
176910  WHERE read_only_flag = 'U'
176911 ;
176912 
176913 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176914       trace
176915          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
176916                         ' - p_language = '||p_language||
176917                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
176918                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
176919                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
176920                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
176921          ,p_level    => C_LEVEL_STATEMENT
176922          ,p_module   => l_log_module);
176923 END IF;
176924 
176925 
176926 --
176927 INSERT INTO xla_diag_sources --hdr1
176928 (
176929         event_id
176930       , ledger_id
176931       , sla_ledger_id
176932       , description_language
176933       , object_name
176934       , object_type_code
176935       , line_number
176936       , source_application_id
176937       , source_type_code
176938       , source_code
176939       , source_value
176940       , source_meaning
176941       , created_by
176942       , creation_date
176943       , last_update_date
176944       , last_updated_by
176945       , last_update_login
176946       , program_update_date
176947       , program_application_id
176948       , program_id
176949       , request_id
176950 )
176951 SELECT
176952         event_id
176953       , p_target_ledger_id
176954       , p_sla_ledger_id
176955       , p_language
176956       , object_name
176957       , object_type_code
176958       , line_number
176959       , source_application_id
176960       , source_type_code
176961       , source_code
176962       , SUBSTR(source_value ,1,1996)
176963       , SUBSTR(source_meaning,1,200)
176964       , xla_environment_pkg.g_Usr_Id
176965       , TRUNC(SYSDATE)
176966       , TRUNC(SYSDATE)
176967       , xla_environment_pkg.g_Usr_Id
176968       , xla_environment_pkg.g_Login_Id
176969       , TRUNC(SYSDATE)
176970       , xla_environment_pkg.g_Prog_Appl_Id
176971       , xla_environment_pkg.g_Prog_Id
176972       , xla_environment_pkg.g_Req_Id
176973   FROM (
176974        SELECT xet.event_id                  event_id
176975             , 0                             line_number
176976             , CASE r
176977                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
176978                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
176979                 
176980                ELSE null
176981               END                           object_name
176982             , CASE r
176983                 WHEN 1 THEN 'HEADER' 
176984                 WHEN 2 THEN 'HEADER' 
176985                 
176986                 ELSE null
176987               END                           object_type_code
176988             , CASE r
176989                 WHEN 1 THEN '707' 
176990                 WHEN 2 THEN '707' 
176991                 
176992                 ELSE null
176993               END                           source_application_id
176994             , 'S'             source_type_code
176995             , CASE r
176996                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
176997                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
176998                 
176999                 ELSE null
177000               END                           source_code
177001             , CASE r
177002                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
177003                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
177004                 
177005                 ELSE null
177006               END                           source_value
177007             , CASE r
177008                 WHEN 1 THEN fvl12.meaning
177009                 WHEN 2 THEN fvl38.meaning
177010                 
177011                 ELSE null
177012               END               source_meaning
177013         FROM xla_events_gt     xet  
177014       , CST_XLA_INV_HEADERS_V  h1
177015   , fnd_lookup_values    fvl12
177016   , fnd_lookup_values    fvl38
177017             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
177018        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
177019          AND xet.event_type_code = C_EVENT_TYPE_CODE
177020             AND h1.event_id = xet.event_id
177021    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
177022   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
177023   AND fvl12.view_application_id(+) = 700
177024   AND fvl12.language(+)            = USERENV('LANG')
177025      AND fvl38.lookup_type(+)         = 'YES_NO'
177026   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
177027   AND fvl38.view_application_id(+) = 0
177028   AND fvl38.language(+)            = USERENV('LANG')
177029   
177030 )
177031 ;
177032 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177033 
177034       trace
177035          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
177036          ,p_level    => C_LEVEL_STATEMENT
177037          ,p_module   => l_log_module);
177038 
177039 END IF;
177040 --
177041 
177042 
177043 
177044 --
177045 INSERT INTO xla_diag_sources --line1
177046 (
177047         event_id
177048       , ledger_id
177049       , sla_ledger_id
177050       , description_language
177051       , object_name
177052       , object_type_code
177053       , line_number
177054       , source_application_id
177055       , source_type_code
177056       , source_code
177057       , source_value
177058       , source_meaning
177059       , created_by
177060       , creation_date
177061       , last_update_date
177062       , last_updated_by
177063       , last_update_login
177064       , program_update_date
177065       , program_application_id
177066       , program_id
177067       , request_id
177068 )
177069 SELECT  event_id
177070       , p_target_ledger_id
177071       , p_sla_ledger_id
177072       , p_language
177073       , object_name
177074       , object_type_code
177075       , line_number
177076       , source_application_id
177077       , source_type_code
177078       , source_code
177079       , SUBSTR(source_value,1,1996)
177080       , SUBSTR(source_meaning,1,200)
177081       , xla_environment_pkg.g_Usr_Id
177082       , TRUNC(SYSDATE)
177083       , TRUNC(SYSDATE)
177084       , xla_environment_pkg.g_Usr_Id
177085       , xla_environment_pkg.g_Login_Id
177086       , TRUNC(SYSDATE)
177087       , xla_environment_pkg.g_Prog_Appl_Id
177088       , xla_environment_pkg.g_Prog_Id
177089       , xla_environment_pkg.g_Req_Id
177090   FROM (
177091        SELECT xet.event_id                  event_id
177092             , l2.line_number                 line_number
177093             , CASE r
177094                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
177095                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
177096                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
177097                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
177098                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
177099                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
177100                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
177101                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
177102                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
177103                 
177104                ELSE null
177105               END                           object_name
177106             , CASE r
177107                 WHEN 1 THEN 'LINE' 
177108                 WHEN 2 THEN 'LINE' 
177109                 WHEN 3 THEN 'LINE' 
177110                 WHEN 4 THEN 'LINE' 
177111                 WHEN 5 THEN 'LINE' 
177112                 WHEN 6 THEN 'LINE' 
177113                 WHEN 7 THEN 'LINE' 
177114                 WHEN 8 THEN 'LINE' 
177115                 WHEN 9 THEN 'LINE' 
177116                 
177117                 ELSE null
177118               END                           object_type_code
177119             , CASE r
177120                 WHEN 1 THEN '707' 
177121                 WHEN 2 THEN '707' 
177122                 WHEN 3 THEN '707' 
177123                 WHEN 4 THEN '707' 
177124                 WHEN 5 THEN '707' 
177125                 WHEN 6 THEN '707' 
177126                 WHEN 7 THEN '707' 
177127                 WHEN 8 THEN '707' 
177128                 WHEN 9 THEN '707' 
177129                 
177130                 ELSE null
177131               END                           source_application_id
177132             , 'S'             source_type_code
177133             , CASE r
177134                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
177135                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
177136                 WHEN 3 THEN 'CURRENCY_CODE' 
177137                 WHEN 4 THEN 'ENTERED_AMOUNT' 
177138                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
177139                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
177140                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
177141                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
177142                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
177143                 
177144                 ELSE null
177145               END                           source_code
177146             , CASE r
177147                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
177148                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
177149                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
177150                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
177151                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
177152                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
177153                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
177154                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
177155                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
177156                 
177157                 ELSE null
177158               END                           source_value
177159             , null              source_meaning
177160          FROM  xla_events_gt     xet  
177161         , CST_XLA_INV_LINES_V  l2
177162             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
177163         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
177164           AND xet.event_type_code = C_EVENT_TYPE_CODE
177165             AND l2.event_id          = xet.event_id
177166 
177167 )
177168 ;
177169 --
177170 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177171 
177172       trace
177173          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
177174          ,p_level    => C_LEVEL_STATEMENT
177175          ,p_module   => l_log_module);
177176 
177177 END IF;
177178 
177179 
177180 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177181       trace
177182          (p_msg      => 'END of insert_sources_279'
177183          ,p_level    => C_LEVEL_PROCEDURE
177184          ,p_module   => l_log_module);
177185 END IF;
177186 EXCEPTION
177187   WHEN xla_exceptions_pkg.application_exception THEN
177188       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
177189             trace
177190                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
177191                ,p_level    => C_LEVEL_EXCEPTION
177192                ,p_module   => l_log_module);
177193       END IF;
177194       RAISE;
177195   WHEN OTHERS THEN
177196       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
177197             trace
177198                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
177199                ,p_level    => C_LEVEL_EXCEPTION
177200                ,p_module   => l_log_module);
177201        END IF;
177202        xla_exceptions_pkg.raise_message
177203            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_279');
177204 END insert_sources_279;
177205 --
177206 
177207 ---------------------------------------
177208 --
177209 -- PRIVATE FUNCTION
177210 --         EventType_279
177211 --
177212 ----------------------------------------
177213 --
177214 FUNCTION EventType_279
177215        (p_application_id         IN NUMBER
177216        ,p_base_ledger_id         IN NUMBER
177217        ,p_target_ledger_id       IN NUMBER
177218        ,p_language               IN VARCHAR2
177219        ,p_currency_code          IN VARCHAR2
177220        ,p_sla_ledger_id          IN NUMBER
177221        ,p_pad_start_date         IN DATE
177222        ,p_pad_end_date           IN DATE
177223        ,p_primary_ledger_id      IN NUMBER)
177224 RETURN BOOLEAN IS
177225 --
177226 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT_TP';
177227 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
177228 
177229 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
177230 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
177231 --
177232 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177233 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177234 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
177235 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177236 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177237 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
177238 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
177239 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177240 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177241 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177242 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177243 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177244 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177245 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177246 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177247 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177248 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177249 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177250 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177251 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177252 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177253 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177254 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
177255 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
177256 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
177257 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
177258 
177259 l_event_id                             NUMBER;
177260 l_previous_event_id                    NUMBER;
177261 l_first_event_id                       NUMBER;
177262 l_last_event_id                        NUMBER;
177263 
177264 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
177265 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
177266 --
177267 --
177268 l_result                    BOOLEAN := TRUE;
177269 l_rows                      NUMBER  := 1000;
177270 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Receipt, Transfer Price';
177271 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
177272 l_description               VARCHAR2(4000);
177273 l_transaction_reversal      NUMBER;
177274 l_ae_header_id              NUMBER;
177275 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
177276 l_log_module                VARCHAR2(240);
177277 --
177278 l_acct_reversal_source      VARCHAR2(30);
177279 l_trx_reversal_source       VARCHAR2(30);
177280 
177281 l_continue_with_lines       BOOLEAN := TRUE;
177282 --
177283 l_acc_rev_gl_date_source    DATE;                      -- 4262811
177284 --
177285 type t_array_event_id is table of number index by binary_integer;
177286 
177287 l_rec_array_event                    t_rec_array_event;
177288 l_null_rec_array_event               t_rec_array_event;
177289 l_array_ae_header_id                 xla_number_array_type;
177290 l_actual_flag                        VARCHAR2(1) := NULL;
177291 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
177292 l_balance_type_code                  VARCHAR2(1) :=NULL;
177293 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
177294 
177295 --
177296 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
177297 --
177298 
177299 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
177300 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
177301 
177302 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
177303 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
177304 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
177305 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
177306 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
177307 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
177308 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
177309 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
177310 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
177311 
177312 l_array_source_12              t_array_source_12;
177313 l_array_source_12_meaning      t_array_lookup_meaning;
177314 l_array_source_38              t_array_source_38;
177315 l_array_source_38_meaning      t_array_lookup_meaning;
177316 
177317 l_array_source_4      t_array_source_4;
177318 l_array_source_11      t_array_source_11;
177319 l_array_source_15      t_array_source_15;
177320 l_array_source_18      t_array_source_18;
177321 l_array_source_19      t_array_source_19;
177322 l_array_source_20      t_array_source_20;
177323 l_array_source_21      t_array_source_21;
177324 l_array_source_22      t_array_source_22;
177325 l_array_source_24      t_array_source_24;
177326 
177327 --
177328 CURSOR header_cur
177329 IS
177330 SELECT /*+ leading(xet) cardinality(xet,1) */
177331 -- Event Type Code: UDIR_INTERORG_RCPT_TP
177332 -- Event Class Code: USER_DEFINE
177333     xet.entity_id
177334   , xet.legal_entity_id
177335   , xet.entity_code
177336   , xet.transaction_number
177337   , xet.event_id
177338   , xet.event_class_code
177339   , xet.event_type_code
177340   , xet.event_number
177341   , xet.event_date
177342   , xet.transaction_date
177343   , xet.reference_num_1
177344   , xet.reference_num_2
177345   , xet.reference_num_3
177346   , xet.reference_num_4
177347   , xet.reference_char_1
177348   , xet.reference_char_2
177349   , xet.reference_char_3
177350   , xet.reference_char_4
177351   , xet.reference_date_1
177352   , xet.reference_date_2
177353   , xet.reference_date_3
177354   , xet.reference_date_4
177355   , xet.event_created_by
177356   , xet.budgetary_control_flag 
177357   , h1.DISTRIBUTION_TYPE    source_12
177358   , fvl12.meaning   source_12_meaning
177359   , h1.TRANSFER_TO_GL_INDICATOR    source_38
177360   , fvl38.meaning   source_38_meaning
177361   FROM xla_events_gt     xet 
177362   , CST_XLA_INV_HEADERS_V  h1
177363   , fnd_lookup_values    fvl12
177364   , fnd_lookup_values    fvl38
177365  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
177366    and xet.event_type_code = C_EVENT_TYPE_CODE
177367    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
177368    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
177369   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
177370   AND fvl12.view_application_id(+) = 700
177371   AND fvl12.language(+)            = USERENV('LANG')
177372      AND fvl38.lookup_type(+)         = 'YES_NO'
177373   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
177374   AND fvl38.view_application_id(+) = 0
177375   AND fvl38.language(+)            = USERENV('LANG')
177376   
177377  ORDER BY event_id
177378 ;
177379 
177380 
177381 --
177382 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
177383 IS
177384 SELECT /*+ leading(xet) cardinality(xet,1) */
177385 -- Event Type Code: UDIR_INTERORG_RCPT_TP
177386 -- Event Class Code: USER_DEFINE
177387     xet.entity_id
177388    ,xet.legal_entity_id
177389    ,xet.entity_code
177390    ,xet.transaction_number
177391    ,xet.event_id
177392    ,xet.event_class_code
177393    ,xet.event_type_code
177394    ,xet.event_number
177395    ,xet.event_date
177396    ,xet.transaction_date
177397    ,xet.reference_num_1
177398    ,xet.reference_num_2
177399    ,xet.reference_num_3
177400    ,xet.reference_num_4
177401    ,xet.reference_char_1
177402    ,xet.reference_char_2
177403    ,xet.reference_char_3
177404    ,xet.reference_char_4
177405    ,xet.reference_date_1
177406    ,xet.reference_date_2
177407    ,xet.reference_date_3
177408    ,xet.reference_date_4
177409    ,xet.event_created_by
177410    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
177411   , l2.CODE_COMBINATION_ID    source_4
177412   , l2.DISTRIBUTION_IDENTIFIER    source_11
177413   , l2.CURRENCY_CODE    source_15
177414   , l2.ENTERED_AMOUNT    source_18
177415   , l2.CURRENCY_CONVERSION_DATE    source_19
177416   , l2.CURRENCY_CONVERSION_RATE    source_20
177417   , l2.CURRENCY_CONVERSION_TYPE    source_21
177418   , l2.ACCOUNTED_AMOUNT    source_22
177419   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
177420   FROM xla_events_gt     xet 
177421   , CST_XLA_INV_LINES_V  l2
177422  WHERE xet.event_id between x_first_event_id and x_last_event_id
177423    and xet.event_date between p_pad_start_date and p_pad_end_date
177424    and xet.event_type_code = C_EVENT_TYPE_CODE
177425    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
177426 ;
177427 
177428 --
177429 BEGIN
177430 IF g_log_enabled THEN
177431    l_log_module := C_DEFAULT_MODULE||'.EventType_279';
177432 END IF;
177433 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177434    trace
177435       (p_msg      => 'BEGIN of EventType_279'
177436       ,p_level    => C_LEVEL_PROCEDURE
177437       ,p_module   => l_log_module);
177438 END IF;
177439 
177440 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177441    trace
177442       (p_msg      => 'p_application_id = '||p_application_id||
177443                      ' - p_base_ledger_id = '||p_base_ledger_id||
177444                      ' - p_target_ledger_id  = '||p_target_ledger_id||
177445                      ' - p_language = '||p_language||
177446                      ' - p_currency_code = '||p_currency_code||
177447                      ' - p_sla_ledger_id = '||p_sla_ledger_id
177448       ,p_level    => C_LEVEL_STATEMENT
177449       ,p_module   => l_log_module);
177450 END IF;
177451 --
177452 -- initialze arrays
177453 --
177454 g_array_event.DELETE;
177455 l_rec_array_event := l_null_rec_array_event;
177456 --
177457 --------------------------------------
177458 -- 4262811 Initialze MPA Line Number
177459 --------------------------------------
177460 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
177461 
177462 --
177463 
177464 --
177465 OPEN header_cur;
177466 --
177467 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177468    trace
177469    (p_msg      => 'SQL - FETCH header_cur'
177470    ,p_level    => C_LEVEL_STATEMENT
177471    ,p_module   => l_log_module);
177472 END IF;
177473 --
177474 LOOP
177475 FETCH header_cur BULK COLLECT INTO
177476         l_array_entity_id
177477       , l_array_legal_entity_id
177478       , l_array_entity_code
177479       , l_array_transaction_num
177480       , l_array_event_id
177481       , l_array_class_code
177482       , l_array_event_type
177483       , l_array_event_number
177484       , l_array_event_date
177485       , l_array_transaction_date
177486       , l_array_reference_num_1
177487       , l_array_reference_num_2
177488       , l_array_reference_num_3
177489       , l_array_reference_num_4
177490       , l_array_reference_char_1
177491       , l_array_reference_char_2
177492       , l_array_reference_char_3
177493       , l_array_reference_char_4
177494       , l_array_reference_date_1
177495       , l_array_reference_date_2
177496       , l_array_reference_date_3
177497       , l_array_reference_date_4
177498       , l_array_event_created_by
177499       , l_array_budgetary_control_flag 
177500       , l_array_source_12
177501       , l_array_source_12_meaning
177502       , l_array_source_38
177503       , l_array_source_38_meaning
177504       LIMIT l_rows;
177505 --
177506 IF (C_LEVEL_EVENT >= g_log_level) THEN
177507    trace
177508    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
177509    ,p_level    => C_LEVEL_EVENT
177510    ,p_module   => l_log_module);
177511 END IF;
177512 --
177513 EXIT WHEN l_array_entity_id.COUNT = 0;
177514 
177515 -- initialize arrays
177516 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
177517 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
177518 
177519 --
177520 -- Bug 4458708
177521 --
177522 XLA_AE_LINES_PKG.g_LineNumber := 0;
177523 
177524 
177525 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
177526 g_last_hdr_idx := l_array_event_id.LAST;
177527 --
177528 -- loop for the headers. Each iteration is for each header extract row
177529 -- fetched in header cursor
177530 --
177531 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
177532 
177533 --
177534 -- set event info as cache for other routines to refer event attributes
177535 --
177536 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
177537    (p_application_id           => p_application_id
177538    ,p_primary_ledger_id        => p_primary_ledger_id
177539    ,p_base_ledger_id           => p_base_ledger_id
177540    ,p_target_ledger_id         => p_target_ledger_id
177541    ,p_entity_id                => l_array_entity_id(hdr_idx)
177542    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
177543    ,p_entity_code              => l_array_entity_code(hdr_idx)
177544    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
177545    ,p_event_id                 => l_array_event_id(hdr_idx)
177546    ,p_event_class_code         => l_array_class_code(hdr_idx)
177547    ,p_event_type_code          => l_array_event_type(hdr_idx)
177548    ,p_event_number             => l_array_event_number(hdr_idx)
177549    ,p_event_date               => l_array_event_date(hdr_idx)
177550    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
177551    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
177552    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
177553    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
177554    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
177555    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
177556    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
177557    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
177558    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
177559    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
177560    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
177561    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
177562    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
177563    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
177564    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
177565 
177566 --
177567 -- set the status of entry to C_VALID (0)
177568 --
177569 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
177570 
177571 --
177572 -- initialize a row for ae header
177573 --
177574 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
177575 
177576 l_event_id := l_array_event_id(hdr_idx);
177577 
177578 --
177579 -- storing the hdr_idx for event. May be used by line cursor.
177580 --
177581 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
177582 
177583 --
177584 -- store sources from header extract. This can be improved to
177585 -- store only those sources from header extract that may be used in lines
177586 --
177587 
177588 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
177589 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
177590 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
177591 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
177592 
177593 --
177594 -- initilaize the status of ae headers for diffrent balance types
177595 -- the status is initialised to C_NOT_CREATED (2)
177596 --
177597 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177598 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177599 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177600 
177601 --
177602 -- call api to validate and store accounting attributes for header
177603 --
177604 
177605 ------------------------------------------------------------
177606 -- Accrual Reversal : to get date for Standard Source (NONE)
177607 ------------------------------------------------------------
177608 l_acc_rev_gl_date_source := NULL;
177609 
177610      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
177611       l_rec_acct_attrs.array_date_value(1) := 
177612 xla_ae_sources_pkg.GetSystemSourceDate(
177613    p_source_code           => 'XLA_REFERENCE_DATE_1'
177614  , p_source_type_code      => 'Y'
177615  , p_source_application_id =>  602
177616 );
177617      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
177618       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
177619 
177620 
177621 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
177622 
177623 XLA_AE_HEADER_PKG.SetJeCategoryName;
177624 
177625 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
177626 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
177627 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
177628 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
177629 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
177630 
177631 
177632 -- No header level analytical criteria
177633 
177634 --
177635 --accounting attribute enhancement, bug 3612931
177636 --
177637 l_trx_reversal_source := SUBSTR(NULL, 1,30);
177638 
177639 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
177640    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
177641 
177642    xla_accounting_err_pkg.build_message
177643       (p_appli_s_name            => 'XLA'
177644       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
177645       ,p_token_1                 => 'ACCT_ATTR_NAME'
177646       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
177647       ,p_token_2                 => 'PRODUCT_NAME'
177648       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
177649       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
177650       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
177651       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
177652 
177653 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
177654    --
177655    -- following sets the accounting attributes needed to reverse
177656    -- accounting for a distributeion
177657    --
177658    xla_ae_lines_pkg.SetTrxReversalAttrs
177659       (p_event_id              => l_event_id
177660       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
177661       ,p_trx_reversal_source   => l_trx_reversal_source);
177662 
177663 END IF;
177664 
177665 
177666 ----------------------------------------------------------------
177667 -- 4262811 -  update the header statuses to invalid in need be
177668 ----------------------------------------------------------------
177669 --
177670 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
177671 
177672 
177673   -----------------------------------------------
177674   -- No accrual reversal for the event class/type
177675   -----------------------------------------------
177676 ----------------------------------------------------------------
177677 
177678 --
177679 -- this ends the header loop iteration for one bulk fetch
177680 --
177681 END LOOP;
177682 
177683 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
177684 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
177685 
177686 --
177687 -- insert dummy rows into lines gt table that were created due to
177688 -- transaction reversals
177689 --
177690 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
177691    l_result := XLA_AE_LINES_PKG.InsertLines;
177692 END IF;
177693 
177694 --
177695 -- reset the temp_line_num for each set of events fetched from header
177696 -- cursor rather than doing it for each new event in line cursor
177697 -- Bug 3939231
177698 --
177699 xla_ae_lines_pkg.g_temp_line_num := 0;
177700 
177701 
177702 
177703 --
177704 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
177705 --
177706 --
177707 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177708 
177709       trace
177710          (p_msg      => 'SQL - FETCH line_cur'
177711          ,p_level    => C_LEVEL_STATEMENT
177712          ,p_module   => l_log_module);
177713 
177714 END IF;
177715 --
177716 --
177717 LOOP
177718   --
177719   FETCH line_cur BULK COLLECT INTO
177720         l_array_entity_id
177721       , l_array_legal_entity_id
177722       , l_array_entity_code
177723       , l_array_transaction_num
177724       , l_array_event_id
177725       , l_array_class_code
177726       , l_array_event_type
177727       , l_array_event_number
177728       , l_array_event_date
177729       , l_array_transaction_date
177730       , l_array_reference_num_1
177731       , l_array_reference_num_2
177732       , l_array_reference_num_3
177733       , l_array_reference_num_4
177734       , l_array_reference_char_1
177735       , l_array_reference_char_2
177736       , l_array_reference_char_3
177737       , l_array_reference_char_4
177738       , l_array_reference_date_1
177739       , l_array_reference_date_2
177740       , l_array_reference_date_3
177741       , l_array_reference_date_4
177742       , l_array_event_created_by
177743       , l_array_budgetary_control_flag
177744       , l_array_extract_line_num 
177745       , l_array_source_4
177746       , l_array_source_11
177747       , l_array_source_15
177748       , l_array_source_18
177749       , l_array_source_19
177750       , l_array_source_20
177751       , l_array_source_21
177752       , l_array_source_22
177753       , l_array_source_24
177754       LIMIT l_rows;
177755 
177756   --
177757   IF (C_LEVEL_EVENT >= g_log_level) THEN
177758             trace
177759                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
177760                ,p_level    => C_LEVEL_EVENT
177761                ,p_module   => l_log_module);
177762   END IF;
177763   --
177764   EXIT WHEN l_array_entity_id.count = 0;
177765 
177766   XLA_AE_LINES_PKG.g_rec_lines := null;
177767 
177768 --
177769 -- Bug 4458708
177770 --
177771 XLA_AE_LINES_PKG.g_LineNumber := 0;
177772 --
177773 --
177774 
177775 FOR Idx IN 1..l_array_event_id.count LOOP
177776    --
177777    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
177778    --
177779    l_event_id := l_array_event_id(idx);  -- 5648433
177780 
177781    --
177782    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
177783    --
177784 
177785    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
177786              (g_array_event(l_event_id).array_value_num('header_index'))
177787          ,'N'
177788          ) <> 'Y'
177789    THEN
177790       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177791          trace
177792             (p_msg      => 'Trancaction revesal option is not Y '
177793             ,p_level    => C_LEVEL_STATEMENT
177794             ,p_module   => l_log_module);
177795       END IF;
177796 
177797 --
177798 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
177799 --
177800 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
177801 --
177802 -- set event info as cache for other routines to refer event attributes
177803 --
177804 
177805 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
177806    l_previous_event_id := l_event_id;
177807 
177808    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
177809       (p_application_id           => p_application_id
177810       ,p_primary_ledger_id        => p_primary_ledger_id
177811       ,p_base_ledger_id           => p_base_ledger_id
177812       ,p_target_ledger_id         => p_target_ledger_id
177813       ,p_entity_id                => l_array_entity_id(Idx)
177814       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
177815       ,p_entity_code              => l_array_entity_code(Idx)
177816       ,p_transaction_num          => l_array_transaction_num(Idx)
177817       ,p_event_id                 => l_array_event_id(Idx)
177818       ,p_event_class_code         => l_array_class_code(Idx)
177819       ,p_event_type_code          => l_array_event_type(Idx)
177820       ,p_event_number             => l_array_event_number(Idx)
177821       ,p_event_date               => l_array_event_date(Idx)
177822       ,p_transaction_date         => l_array_transaction_date(Idx)
177823       ,p_reference_num_1          => l_array_reference_num_1(Idx)
177824       ,p_reference_num_2          => l_array_reference_num_2(Idx)
177825       ,p_reference_num_3          => l_array_reference_num_3(Idx)
177826       ,p_reference_num_4          => l_array_reference_num_4(Idx)
177827       ,p_reference_char_1         => l_array_reference_char_1(Idx)
177828       ,p_reference_char_2         => l_array_reference_char_2(Idx)
177829       ,p_reference_char_3         => l_array_reference_char_3(Idx)
177830       ,p_reference_char_4         => l_array_reference_char_4(Idx)
177831       ,p_reference_date_1         => l_array_reference_date_1(Idx)
177832       ,p_reference_date_2         => l_array_reference_date_2(Idx)
177833       ,p_reference_date_3         => l_array_reference_date_3(Idx)
177834       ,p_reference_date_4         => l_array_reference_date_4(Idx)
177835       ,p_event_created_by         => l_array_event_created_by(Idx)
177836       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
177837        --
177838 END IF;
177839 
177840 
177841 
177842 --
177843 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
177844 
177845 l_acct_reversal_source := SUBSTR(NULL, 1,30);
177846 
177847 IF l_continue_with_lines THEN
177848    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
177849       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
177850 
177851       xla_accounting_err_pkg.build_message
177852          (p_appli_s_name            => 'XLA'
177853          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
177854          ,p_token_1                 => 'LINE_NUMBER'
177855          ,p_value_1                 => l_array_extract_line_num(Idx)
177856          ,p_token_2                 => 'PRODUCT_NAME'
177857          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
177858          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
177859          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
177860          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
177861 
177862    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
177863       --
177864       -- following sets the accounting attributes needed to reverse
177865       -- accounting for a distributeion
177866       --
177867 
177868       --
177869       -- 5217187
177870       --
177871       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
177872       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
177873                                        g_array_event(l_event_id).array_value_num('header_index'));
177874       --
177875       --
177876 
177877       -- No reversal code generated
177878 
177879       xla_ae_lines_pkg.SetAcctReversalAttrs
177880          (p_event_id             => l_event_id
177881          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
177882          ,p_calculate_acctd_flag => l_calculate_acctd_flag
177883          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
177884    END IF;
177885 
177886    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
177887        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
177888 
177889 --
177890 AcctLineType_31 (
177891  p_application_id  => p_application_id
177892  ,p_event_id     => l_event_id
177893  ,p_calculate_acctd_flag => l_calculate_acctd_flag
177894  ,p_calculate_g_l_flag => l_calculate_g_l_flag
177895  ,p_actual_flag => l_actual_flag
177896  ,p_balance_type_code => l_balance_type_code
177897  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177898  
177899  , p_source_4 => l_array_source_4(Idx)
177900  , p_source_11 => l_array_source_11(Idx)
177901  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
177902  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
177903  , p_source_15 => l_array_source_15(Idx)
177904  , p_source_18 => l_array_source_18(Idx)
177905  , p_source_19 => l_array_source_19(Idx)
177906  , p_source_20 => l_array_source_20(Idx)
177907  , p_source_21 => l_array_source_21(Idx)
177908  , p_source_22 => l_array_source_22(Idx)
177909  , p_source_24 => l_array_source_24(Idx)
177910  );
177911 If(l_balance_type_code = 'A') THEN
177912   l_actual_gain_loss_ref := l_gain_or_loss_ref;
177913 END IF;
177914 
177915 --
177916 
177917 
177918 --
177919 AcctLineType_68 (
177920  p_application_id  => p_application_id
177921  ,p_event_id     => l_event_id
177922  ,p_calculate_acctd_flag => l_calculate_acctd_flag
177923  ,p_calculate_g_l_flag => l_calculate_g_l_flag
177924  ,p_actual_flag => l_actual_flag
177925  ,p_balance_type_code => l_balance_type_code
177926  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177927  
177928  , p_source_4 => l_array_source_4(Idx)
177929  , p_source_11 => l_array_source_11(Idx)
177930  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
177931  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
177932  , p_source_15 => l_array_source_15(Idx)
177933  , p_source_18 => l_array_source_18(Idx)
177934  , p_source_19 => l_array_source_19(Idx)
177935  , p_source_20 => l_array_source_20(Idx)
177936  , p_source_21 => l_array_source_21(Idx)
177937  , p_source_22 => l_array_source_22(Idx)
177938  , p_source_24 => l_array_source_24(Idx)
177939  );
177940 If(l_balance_type_code = 'A') THEN
177941   l_actual_gain_loss_ref := l_gain_or_loss_ref;
177942 END IF;
177943 
177944 --
177945 
177946 
177947 --
177948 AcctLineType_77 (
177949  p_application_id  => p_application_id
177950  ,p_event_id     => l_event_id
177951  ,p_calculate_acctd_flag => l_calculate_acctd_flag
177952  ,p_calculate_g_l_flag => l_calculate_g_l_flag
177953  ,p_actual_flag => l_actual_flag
177954  ,p_balance_type_code => l_balance_type_code
177955  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177956  
177957  , p_source_4 => l_array_source_4(Idx)
177958  , p_source_11 => l_array_source_11(Idx)
177959  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
177960  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
177961  , p_source_15 => l_array_source_15(Idx)
177962  , p_source_18 => l_array_source_18(Idx)
177963  , p_source_19 => l_array_source_19(Idx)
177964  , p_source_20 => l_array_source_20(Idx)
177965  , p_source_21 => l_array_source_21(Idx)
177966  , p_source_22 => l_array_source_22(Idx)
177967  , p_source_24 => l_array_source_24(Idx)
177968  );
177969 If(l_balance_type_code = 'A') THEN
177970   l_actual_gain_loss_ref := l_gain_or_loss_ref;
177971 END IF;
177972 
177973 --
177974 
177975 
177976 --
177977 AcctLineType_104 (
177978  p_application_id  => p_application_id
177979  ,p_event_id     => l_event_id
177980  ,p_calculate_acctd_flag => l_calculate_acctd_flag
177981  ,p_calculate_g_l_flag => l_calculate_g_l_flag
177982  ,p_actual_flag => l_actual_flag
177983  ,p_balance_type_code => l_balance_type_code
177984  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177985  
177986  , p_source_4 => l_array_source_4(Idx)
177987  , p_source_11 => l_array_source_11(Idx)
177988  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
177989  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
177990  , p_source_15 => l_array_source_15(Idx)
177991  , p_source_18 => l_array_source_18(Idx)
177992  , p_source_19 => l_array_source_19(Idx)
177993  , p_source_20 => l_array_source_20(Idx)
177994  , p_source_21 => l_array_source_21(Idx)
177995  , p_source_22 => l_array_source_22(Idx)
177996  , p_source_24 => l_array_source_24(Idx)
177997  );
177998 If(l_balance_type_code = 'A') THEN
177999   l_actual_gain_loss_ref := l_gain_or_loss_ref;
178000 END IF;
178001 
178002 --
178003 
178004 
178005 --
178006 AcctLineType_105 (
178007  p_application_id  => p_application_id
178008  ,p_event_id     => l_event_id
178009  ,p_calculate_acctd_flag => l_calculate_acctd_flag
178010  ,p_calculate_g_l_flag => l_calculate_g_l_flag
178011  ,p_actual_flag => l_actual_flag
178012  ,p_balance_type_code => l_balance_type_code
178013  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178014  
178015  , p_source_4 => l_array_source_4(Idx)
178016  , p_source_11 => l_array_source_11(Idx)
178017  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178018  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178019  , p_source_15 => l_array_source_15(Idx)
178020  , p_source_18 => l_array_source_18(Idx)
178021  , p_source_19 => l_array_source_19(Idx)
178022  , p_source_20 => l_array_source_20(Idx)
178023  , p_source_21 => l_array_source_21(Idx)
178024  , p_source_22 => l_array_source_22(Idx)
178025  , p_source_24 => l_array_source_24(Idx)
178026  );
178027 If(l_balance_type_code = 'A') THEN
178028   l_actual_gain_loss_ref := l_gain_or_loss_ref;
178029 END IF;
178030 
178031 --
178032 
178033 
178034 --
178035 AcctLineType_132 (
178036  p_application_id  => p_application_id
178037  ,p_event_id     => l_event_id
178038  ,p_calculate_acctd_flag => l_calculate_acctd_flag
178039  ,p_calculate_g_l_flag => l_calculate_g_l_flag
178040  ,p_actual_flag => l_actual_flag
178041  ,p_balance_type_code => l_balance_type_code
178042  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178043  
178044  , p_source_4 => l_array_source_4(Idx)
178045  , p_source_11 => l_array_source_11(Idx)
178046  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178047  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178048  , p_source_15 => l_array_source_15(Idx)
178049  , p_source_18 => l_array_source_18(Idx)
178050  , p_source_19 => l_array_source_19(Idx)
178051  , p_source_20 => l_array_source_20(Idx)
178052  , p_source_21 => l_array_source_21(Idx)
178053  , p_source_22 => l_array_source_22(Idx)
178054  , p_source_24 => l_array_source_24(Idx)
178055  );
178056 If(l_balance_type_code = 'A') THEN
178057   l_actual_gain_loss_ref := l_gain_or_loss_ref;
178058 END IF;
178059 
178060 --
178061 
178062 
178063 --
178064 AcctLineType_168 (
178065  p_application_id  => p_application_id
178066  ,p_event_id     => l_event_id
178067  ,p_calculate_acctd_flag => l_calculate_acctd_flag
178068  ,p_calculate_g_l_flag => l_calculate_g_l_flag
178069  ,p_actual_flag => l_actual_flag
178070  ,p_balance_type_code => l_balance_type_code
178071  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178072  
178073  , p_source_4 => l_array_source_4(Idx)
178074  , p_source_11 => l_array_source_11(Idx)
178075  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178076  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178077  , p_source_15 => l_array_source_15(Idx)
178078  , p_source_18 => l_array_source_18(Idx)
178079  , p_source_19 => l_array_source_19(Idx)
178080  , p_source_20 => l_array_source_20(Idx)
178081  , p_source_21 => l_array_source_21(Idx)
178082  , p_source_22 => l_array_source_22(Idx)
178083  , p_source_24 => l_array_source_24(Idx)
178084  );
178085 If(l_balance_type_code = 'A') THEN
178086   l_actual_gain_loss_ref := l_gain_or_loss_ref;
178087 END IF;
178088 
178089 --
178090 
178091 
178092 --
178093 AcctLineType_197 (
178094  p_application_id  => p_application_id
178095  ,p_event_id     => l_event_id
178096  ,p_calculate_acctd_flag => l_calculate_acctd_flag
178097  ,p_calculate_g_l_flag => l_calculate_g_l_flag
178098  ,p_actual_flag => l_actual_flag
178099  ,p_balance_type_code => l_balance_type_code
178100  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178101  
178102  , p_source_4 => l_array_source_4(Idx)
178103  , p_source_11 => l_array_source_11(Idx)
178104  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178105  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178106  , p_source_15 => l_array_source_15(Idx)
178107  , p_source_18 => l_array_source_18(Idx)
178108  , p_source_19 => l_array_source_19(Idx)
178109  , p_source_20 => l_array_source_20(Idx)
178110  , p_source_21 => l_array_source_21(Idx)
178111  , p_source_22 => l_array_source_22(Idx)
178112  , p_source_24 => l_array_source_24(Idx)
178113  );
178114 If(l_balance_type_code = 'A') THEN
178115   l_actual_gain_loss_ref := l_gain_or_loss_ref;
178116 END IF;
178117 
178118 --
178119 
178120 
178121 --
178122 AcctLineType_212 (
178123  p_application_id  => p_application_id
178124  ,p_event_id     => l_event_id
178125  ,p_calculate_acctd_flag => l_calculate_acctd_flag
178126  ,p_calculate_g_l_flag => l_calculate_g_l_flag
178127  ,p_actual_flag => l_actual_flag
178128  ,p_balance_type_code => l_balance_type_code
178129  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178130  
178131  , p_source_4 => l_array_source_4(Idx)
178132  , p_source_11 => l_array_source_11(Idx)
178133  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178134  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178135  , p_source_15 => l_array_source_15(Idx)
178136  , p_source_18 => l_array_source_18(Idx)
178137  , p_source_19 => l_array_source_19(Idx)
178138  , p_source_20 => l_array_source_20(Idx)
178139  , p_source_21 => l_array_source_21(Idx)
178140  , p_source_22 => l_array_source_22(Idx)
178141  , p_source_24 => l_array_source_24(Idx)
178142  );
178143 If(l_balance_type_code = 'A') THEN
178144   l_actual_gain_loss_ref := l_gain_or_loss_ref;
178145 END IF;
178146 
178147 --
178148 
178149       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
178150       -- or secondary ledger that has different currency with primary
178151       -- or alc that is calculated by sla
178152       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
178153             (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'))
178154 
178155 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
178156 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
178157           AND (l_actual_flag = 'A')) THEN
178158         XLA_AE_LINES_PKG.CreateGainOrLossLines(
178159           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
178160          ,p_application_id   => p_application_id
178161          ,p_amb_context_code => 'DEFAULT'
178162          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
178163          ,p_event_class_code => C_EVENT_CLASS_CODE
178164          ,p_event_type_code  => C_EVENT_TYPE_CODE
178165          
178166          ,p_gain_ccid        => -1
178167          ,p_loss_ccid        => -1
178168 
178169          ,p_actual_flag      => l_actual_flag
178170          ,p_enc_flag         => null
178171          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
178172          ,p_enc_g_l_ref      => null
178173          );
178174       END IF;
178175    END IF;
178176 END IF;
178177 
178178    ELSE
178179       --
178180       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
178181       --
178182       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178183          trace
178184             (p_msg      => 'Trancaction revesal option is Y'
178185             ,p_level    => C_LEVEL_STATEMENT
178186             ,p_module   => l_log_module);
178187       END IF;
178188    END IF;
178189 
178190 END LOOP;
178191 l_result := XLA_AE_LINES_PKG.InsertLines ;
178192 end loop;
178193 close line_cur;
178194 
178195 
178196 --
178197 -- insert headers into xla_ae_headers_gt table
178198 --
178199 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
178200 
178201 -- insert into errors table here.
178202 
178203 END LOOP;
178204 
178205 --
178206 -- 4865292
178207 --
178208 -- Compare g_hdr_extract_count with event count in
178209 -- CreateHeadersAndLines.
178210 --
178211 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
178212 
178213 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178214    trace (p_msg     => '# rows extracted from header extract objects '
178215                     || ' (running total): '
178216                     || g_hdr_extract_count
178217          ,p_level   => C_LEVEL_STATEMENT
178218          ,p_module  => l_log_module);
178219 END IF;
178220 
178221 CLOSE header_cur;
178222 --
178223 
178224 --
178225 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178226    trace
178227       (p_msg      => 'END of EventType_279'
178228       ,p_level    => C_LEVEL_PROCEDURE
178229       ,p_module   => l_log_module);
178230 END IF;
178231 --
178232 RETURN l_result;
178233 EXCEPTION
178234 WHEN xla_exceptions_pkg.application_exception THEN
178235    
178236 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
178237 
178238    
178239 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
178240 
178241    RAISE;
178242 
178243 WHEN NO_DATA_FOUND THEN
178244 
178245 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
178246 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
178247 
178248 FOR header_record IN header_cur
178249 LOOP
178250     l_array_header_events(header_record.event_id) := header_record.event_id;
178251 END LOOP;
178252 
178253 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
178254 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
178255 
178256 fnd_file.put_line(fnd_file.LOG, '                    ');
178257 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
178258 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
178259 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
178260 
178261 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
178262 LOOP
178263 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
178264 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
178265         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
178266 	END IF;
178267 END LOOP;
178268 
178269 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
178270 fnd_file.put_line(fnd_file.LOG, '                    ');
178271 
178272 
178273 xla_exceptions_pkg.raise_message
178274       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_279');
178275 
178276 
178277 WHEN OTHERS THEN
178278    xla_exceptions_pkg.raise_message
178279       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_279');
178280 END EventType_279;
178281 --
178282 
178283 ---------------------------------------
178284 --
178285 -- PRIVATE PROCEDURE
178286 --         insert_sources_280
178287 --
178288 ----------------------------------------
178289 --
178290 PROCEDURE insert_sources_280(
178291                                 p_target_ledger_id       IN NUMBER
178292                               , p_language               IN VARCHAR2
178293                               , p_sla_ledger_id          IN NUMBER
178294                               , p_pad_start_date         IN DATE
178295                               , p_pad_end_date           IN DATE
178296                          )
178297 IS
178298 
178299 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP';
178300 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
178301 p_apps_owner                   VARCHAR2(30);
178302 l_log_module                   VARCHAR2(240);
178303 BEGIN
178304 IF g_log_enabled THEN
178305       l_log_module := C_DEFAULT_MODULE||'.insert_sources_280';
178306 END IF;
178307 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178308 
178309       trace
178310          (p_msg      => 'BEGIN of insert_sources_280'
178311          ,p_level    => C_LEVEL_PROCEDURE
178312          ,p_module   => l_log_module);
178313 
178314 END IF;
178315 
178316 -- select APPS owner
178317 SELECT oracle_username
178318   INTO p_apps_owner
178319   FROM fnd_oracle_userid
178320  WHERE read_only_flag = 'U'
178321 ;
178322 
178323 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178324       trace
178325          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
178326                         ' - p_language = '||p_language||
178327                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
178328                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
178329                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
178330                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
178331          ,p_level    => C_LEVEL_STATEMENT
178332          ,p_module   => l_log_module);
178333 END IF;
178334 
178335 
178336 --
178337 INSERT INTO xla_diag_sources --hdr1
178338 (
178339         event_id
178340       , ledger_id
178341       , sla_ledger_id
178342       , description_language
178343       , object_name
178344       , object_type_code
178345       , line_number
178346       , source_application_id
178347       , source_type_code
178348       , source_code
178349       , source_value
178350       , source_meaning
178351       , created_by
178352       , creation_date
178353       , last_update_date
178354       , last_updated_by
178355       , last_update_login
178356       , program_update_date
178357       , program_application_id
178358       , program_id
178359       , request_id
178360 )
178361 SELECT
178362         event_id
178363       , p_target_ledger_id
178364       , p_sla_ledger_id
178365       , p_language
178366       , object_name
178367       , object_type_code
178368       , line_number
178369       , source_application_id
178370       , source_type_code
178371       , source_code
178372       , SUBSTR(source_value ,1,1996)
178373       , SUBSTR(source_meaning,1,200)
178374       , xla_environment_pkg.g_Usr_Id
178375       , TRUNC(SYSDATE)
178376       , TRUNC(SYSDATE)
178377       , xla_environment_pkg.g_Usr_Id
178378       , xla_environment_pkg.g_Login_Id
178379       , TRUNC(SYSDATE)
178380       , xla_environment_pkg.g_Prog_Appl_Id
178381       , xla_environment_pkg.g_Prog_Id
178382       , xla_environment_pkg.g_Req_Id
178383   FROM (
178384        SELECT xet.event_id                  event_id
178385             , 0                             line_number
178386             , CASE r
178387                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
178388                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
178389                 
178390                ELSE null
178391               END                           object_name
178392             , CASE r
178393                 WHEN 1 THEN 'HEADER' 
178394                 WHEN 2 THEN 'HEADER' 
178395                 
178396                 ELSE null
178397               END                           object_type_code
178398             , CASE r
178399                 WHEN 1 THEN '707' 
178400                 WHEN 2 THEN '707' 
178401                 
178402                 ELSE null
178403               END                           source_application_id
178404             , 'S'             source_type_code
178405             , CASE r
178406                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
178407                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
178408                 
178409                 ELSE null
178410               END                           source_code
178411             , CASE r
178412                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
178413                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
178414                 
178415                 ELSE null
178416               END                           source_value
178417             , CASE r
178418                 WHEN 1 THEN fvl12.meaning
178419                 WHEN 2 THEN fvl38.meaning
178420                 
178421                 ELSE null
178422               END               source_meaning
178423         FROM xla_events_gt     xet  
178424       , CST_XLA_INV_HEADERS_V  h1
178425   , fnd_lookup_values    fvl12
178426   , fnd_lookup_values    fvl38
178427             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
178428        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
178429          AND xet.event_type_code = C_EVENT_TYPE_CODE
178430             AND h1.event_id = xet.event_id
178431    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
178432   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
178433   AND fvl12.view_application_id(+) = 700
178434   AND fvl12.language(+)            = USERENV('LANG')
178435      AND fvl38.lookup_type(+)         = 'YES_NO'
178436   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
178437   AND fvl38.view_application_id(+) = 0
178438   AND fvl38.language(+)            = USERENV('LANG')
178439   
178440 )
178441 ;
178442 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178443 
178444       trace
178445          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
178446          ,p_level    => C_LEVEL_STATEMENT
178447          ,p_module   => l_log_module);
178448 
178449 END IF;
178450 --
178451 
178452 
178453 
178454 --
178455 INSERT INTO xla_diag_sources --line1
178456 (
178457         event_id
178458       , ledger_id
178459       , sla_ledger_id
178460       , description_language
178461       , object_name
178462       , object_type_code
178463       , line_number
178464       , source_application_id
178465       , source_type_code
178466       , source_code
178467       , source_value
178468       , source_meaning
178469       , created_by
178470       , creation_date
178471       , last_update_date
178472       , last_updated_by
178473       , last_update_login
178474       , program_update_date
178475       , program_application_id
178476       , program_id
178477       , request_id
178478 )
178479 SELECT  event_id
178480       , p_target_ledger_id
178481       , p_sla_ledger_id
178482       , p_language
178483       , object_name
178484       , object_type_code
178485       , line_number
178486       , source_application_id
178487       , source_type_code
178488       , source_code
178489       , SUBSTR(source_value,1,1996)
178490       , SUBSTR(source_meaning,1,200)
178491       , xla_environment_pkg.g_Usr_Id
178492       , TRUNC(SYSDATE)
178493       , TRUNC(SYSDATE)
178494       , xla_environment_pkg.g_Usr_Id
178495       , xla_environment_pkg.g_Login_Id
178496       , TRUNC(SYSDATE)
178497       , xla_environment_pkg.g_Prog_Appl_Id
178498       , xla_environment_pkg.g_Prog_Id
178499       , xla_environment_pkg.g_Req_Id
178500   FROM (
178501        SELECT xet.event_id                  event_id
178502             , l2.line_number                 line_number
178503             , CASE r
178504                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
178505                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
178506                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
178507                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
178508                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
178509                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
178510                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
178511                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
178512                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
178513                 
178514                ELSE null
178515               END                           object_name
178516             , CASE r
178517                 WHEN 1 THEN 'LINE' 
178518                 WHEN 2 THEN 'LINE' 
178519                 WHEN 3 THEN 'LINE' 
178520                 WHEN 4 THEN 'LINE' 
178521                 WHEN 5 THEN 'LINE' 
178522                 WHEN 6 THEN 'LINE' 
178523                 WHEN 7 THEN 'LINE' 
178524                 WHEN 8 THEN 'LINE' 
178525                 WHEN 9 THEN 'LINE' 
178526                 
178527                 ELSE null
178528               END                           object_type_code
178529             , CASE r
178530                 WHEN 1 THEN '707' 
178531                 WHEN 2 THEN '707' 
178532                 WHEN 3 THEN '707' 
178533                 WHEN 4 THEN '707' 
178534                 WHEN 5 THEN '707' 
178535                 WHEN 6 THEN '707' 
178536                 WHEN 7 THEN '707' 
178537                 WHEN 8 THEN '707' 
178538                 WHEN 9 THEN '707' 
178539                 
178540                 ELSE null
178541               END                           source_application_id
178542             , 'S'             source_type_code
178543             , CASE r
178544                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
178545                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
178546                 WHEN 3 THEN 'CURRENCY_CODE' 
178547                 WHEN 4 THEN 'ENTERED_AMOUNT' 
178548                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
178549                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
178550                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
178551                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
178552                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
178553                 
178554                 ELSE null
178555               END                           source_code
178556             , CASE r
178557                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
178558                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
178559                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
178560                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
178561                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
178562                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
178563                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
178564                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
178565                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
178566                 
178567                 ELSE null
178568               END                           source_value
178569             , null              source_meaning
178570          FROM  xla_events_gt     xet  
178571         , CST_XLA_INV_LINES_V  l2
178572             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
178573         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
178574           AND xet.event_type_code = C_EVENT_TYPE_CODE
178575             AND l2.event_id          = xet.event_id
178576 
178577 )
178578 ;
178579 --
178580 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178581 
178582       trace
178583          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
178584          ,p_level    => C_LEVEL_STATEMENT
178585          ,p_module   => l_log_module);
178586 
178587 END IF;
178588 
178589 
178590 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178591       trace
178592          (p_msg      => 'END of insert_sources_280'
178593          ,p_level    => C_LEVEL_PROCEDURE
178594          ,p_module   => l_log_module);
178595 END IF;
178596 EXCEPTION
178597   WHEN xla_exceptions_pkg.application_exception THEN
178598       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
178599             trace
178600                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
178601                ,p_level    => C_LEVEL_EXCEPTION
178602                ,p_module   => l_log_module);
178603       END IF;
178604       RAISE;
178605   WHEN OTHERS THEN
178606       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
178607             trace
178608                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
178609                ,p_level    => C_LEVEL_EXCEPTION
178610                ,p_module   => l_log_module);
178611        END IF;
178612        xla_exceptions_pkg.raise_message
178613            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_280');
178614 END insert_sources_280;
178615 --
178616 
178617 ---------------------------------------
178618 --
178619 -- PRIVATE FUNCTION
178620 --         EventType_280
178621 --
178622 ----------------------------------------
178623 --
178624 FUNCTION EventType_280
178625        (p_application_id         IN NUMBER
178626        ,p_base_ledger_id         IN NUMBER
178627        ,p_target_ledger_id       IN NUMBER
178628        ,p_language               IN VARCHAR2
178629        ,p_currency_code          IN VARCHAR2
178630        ,p_sla_ledger_id          IN NUMBER
178631        ,p_pad_start_date         IN DATE
178632        ,p_pad_end_date           IN DATE
178633        ,p_primary_ledger_id      IN NUMBER)
178634 RETURN BOOLEAN IS
178635 --
178636 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP';
178637 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
178638 
178639 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
178640 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
178641 --
178642 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178643 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178644 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178645 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178646 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178647 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178648 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178649 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178650 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178651 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178652 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178653 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178654 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178655 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178656 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178657 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178658 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178659 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178660 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178661 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178662 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178663 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178664 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
178665 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178666 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
178667 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
178668 
178669 l_event_id                             NUMBER;
178670 l_previous_event_id                    NUMBER;
178671 l_first_event_id                       NUMBER;
178672 l_last_event_id                        NUMBER;
178673 
178674 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
178675 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
178676 --
178677 --
178678 l_result                    BOOLEAN := TRUE;
178679 l_rows                      NUMBER  := 1000;
178680 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Shipment';
178681 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
178682 l_description               VARCHAR2(4000);
178683 l_transaction_reversal      NUMBER;
178684 l_ae_header_id              NUMBER;
178685 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
178686 l_log_module                VARCHAR2(240);
178687 --
178688 l_acct_reversal_source      VARCHAR2(30);
178689 l_trx_reversal_source       VARCHAR2(30);
178690 
178691 l_continue_with_lines       BOOLEAN := TRUE;
178692 --
178693 l_acc_rev_gl_date_source    DATE;                      -- 4262811
178694 --
178695 type t_array_event_id is table of number index by binary_integer;
178696 
178697 l_rec_array_event                    t_rec_array_event;
178698 l_null_rec_array_event               t_rec_array_event;
178699 l_array_ae_header_id                 xla_number_array_type;
178700 l_actual_flag                        VARCHAR2(1) := NULL;
178701 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
178702 l_balance_type_code                  VARCHAR2(1) :=NULL;
178703 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
178704 
178705 --
178706 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
178707 --
178708 
178709 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
178710 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
178711 
178712 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
178713 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
178714 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
178715 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
178716 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
178717 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
178718 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
178719 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
178720 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
178721 
178722 l_array_source_12              t_array_source_12;
178723 l_array_source_12_meaning      t_array_lookup_meaning;
178724 l_array_source_38              t_array_source_38;
178725 l_array_source_38_meaning      t_array_lookup_meaning;
178726 
178727 l_array_source_4      t_array_source_4;
178728 l_array_source_11      t_array_source_11;
178729 l_array_source_15      t_array_source_15;
178730 l_array_source_18      t_array_source_18;
178731 l_array_source_19      t_array_source_19;
178732 l_array_source_20      t_array_source_20;
178733 l_array_source_21      t_array_source_21;
178734 l_array_source_22      t_array_source_22;
178735 l_array_source_24      t_array_source_24;
178736 
178737 --
178738 CURSOR header_cur
178739 IS
178740 SELECT /*+ leading(xet) cardinality(xet,1) */
178741 -- Event Type Code: UDIR_INTERORG_SHIP
178742 -- Event Class Code: USER_DEFINE
178743     xet.entity_id
178744   , xet.legal_entity_id
178745   , xet.entity_code
178746   , xet.transaction_number
178747   , xet.event_id
178748   , xet.event_class_code
178749   , xet.event_type_code
178750   , xet.event_number
178751   , xet.event_date
178752   , xet.transaction_date
178753   , xet.reference_num_1
178754   , xet.reference_num_2
178755   , xet.reference_num_3
178756   , xet.reference_num_4
178757   , xet.reference_char_1
178758   , xet.reference_char_2
178759   , xet.reference_char_3
178760   , xet.reference_char_4
178761   , xet.reference_date_1
178762   , xet.reference_date_2
178763   , xet.reference_date_3
178764   , xet.reference_date_4
178765   , xet.event_created_by
178766   , xet.budgetary_control_flag 
178767   , h1.DISTRIBUTION_TYPE    source_12
178768   , fvl12.meaning   source_12_meaning
178769   , h1.TRANSFER_TO_GL_INDICATOR    source_38
178770   , fvl38.meaning   source_38_meaning
178771   FROM xla_events_gt     xet 
178772   , CST_XLA_INV_HEADERS_V  h1
178773   , fnd_lookup_values    fvl12
178774   , fnd_lookup_values    fvl38
178775  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
178776    and xet.event_type_code = C_EVENT_TYPE_CODE
178777    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
178778    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
178779   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
178780   AND fvl12.view_application_id(+) = 700
178781   AND fvl12.language(+)            = USERENV('LANG')
178782      AND fvl38.lookup_type(+)         = 'YES_NO'
178783   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
178784   AND fvl38.view_application_id(+) = 0
178785   AND fvl38.language(+)            = USERENV('LANG')
178786   
178787  ORDER BY event_id
178788 ;
178789 
178790 
178791 --
178792 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
178793 IS
178794 SELECT /*+ leading(xet) cardinality(xet,1) */
178795 -- Event Type Code: UDIR_INTERORG_SHIP
178796 -- Event Class Code: USER_DEFINE
178797     xet.entity_id
178798    ,xet.legal_entity_id
178799    ,xet.entity_code
178800    ,xet.transaction_number
178801    ,xet.event_id
178802    ,xet.event_class_code
178803    ,xet.event_type_code
178804    ,xet.event_number
178805    ,xet.event_date
178806    ,xet.transaction_date
178807    ,xet.reference_num_1
178808    ,xet.reference_num_2
178809    ,xet.reference_num_3
178810    ,xet.reference_num_4
178811    ,xet.reference_char_1
178812    ,xet.reference_char_2
178813    ,xet.reference_char_3
178814    ,xet.reference_char_4
178815    ,xet.reference_date_1
178816    ,xet.reference_date_2
178817    ,xet.reference_date_3
178818    ,xet.reference_date_4
178819    ,xet.event_created_by
178820    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
178821   , l2.CODE_COMBINATION_ID    source_4
178822   , l2.DISTRIBUTION_IDENTIFIER    source_11
178823   , l2.CURRENCY_CODE    source_15
178824   , l2.ENTERED_AMOUNT    source_18
178825   , l2.CURRENCY_CONVERSION_DATE    source_19
178826   , l2.CURRENCY_CONVERSION_RATE    source_20
178827   , l2.CURRENCY_CONVERSION_TYPE    source_21
178828   , l2.ACCOUNTED_AMOUNT    source_22
178829   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
178830   FROM xla_events_gt     xet 
178831   , CST_XLA_INV_LINES_V  l2
178832  WHERE xet.event_id between x_first_event_id and x_last_event_id
178833    and xet.event_date between p_pad_start_date and p_pad_end_date
178834    and xet.event_type_code = C_EVENT_TYPE_CODE
178835    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
178836 ;
178837 
178838 --
178839 BEGIN
178840 IF g_log_enabled THEN
178841    l_log_module := C_DEFAULT_MODULE||'.EventType_280';
178842 END IF;
178843 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178844    trace
178845       (p_msg      => 'BEGIN of EventType_280'
178846       ,p_level    => C_LEVEL_PROCEDURE
178847       ,p_module   => l_log_module);
178848 END IF;
178849 
178850 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178851    trace
178852       (p_msg      => 'p_application_id = '||p_application_id||
178853                      ' - p_base_ledger_id = '||p_base_ledger_id||
178854                      ' - p_target_ledger_id  = '||p_target_ledger_id||
178855                      ' - p_language = '||p_language||
178856                      ' - p_currency_code = '||p_currency_code||
178857                      ' - p_sla_ledger_id = '||p_sla_ledger_id
178858       ,p_level    => C_LEVEL_STATEMENT
178859       ,p_module   => l_log_module);
178860 END IF;
178861 --
178862 -- initialze arrays
178863 --
178864 g_array_event.DELETE;
178865 l_rec_array_event := l_null_rec_array_event;
178866 --
178867 --------------------------------------
178868 -- 4262811 Initialze MPA Line Number
178869 --------------------------------------
178870 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
178871 
178872 --
178873 
178874 --
178875 OPEN header_cur;
178876 --
178877 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178878    trace
178879    (p_msg      => 'SQL - FETCH header_cur'
178880    ,p_level    => C_LEVEL_STATEMENT
178881    ,p_module   => l_log_module);
178882 END IF;
178883 --
178884 LOOP
178885 FETCH header_cur BULK COLLECT INTO
178886         l_array_entity_id
178887       , l_array_legal_entity_id
178888       , l_array_entity_code
178889       , l_array_transaction_num
178890       , l_array_event_id
178891       , l_array_class_code
178892       , l_array_event_type
178893       , l_array_event_number
178894       , l_array_event_date
178895       , l_array_transaction_date
178896       , l_array_reference_num_1
178897       , l_array_reference_num_2
178898       , l_array_reference_num_3
178899       , l_array_reference_num_4
178900       , l_array_reference_char_1
178901       , l_array_reference_char_2
178902       , l_array_reference_char_3
178903       , l_array_reference_char_4
178904       , l_array_reference_date_1
178905       , l_array_reference_date_2
178906       , l_array_reference_date_3
178907       , l_array_reference_date_4
178908       , l_array_event_created_by
178909       , l_array_budgetary_control_flag 
178910       , l_array_source_12
178911       , l_array_source_12_meaning
178912       , l_array_source_38
178913       , l_array_source_38_meaning
178914       LIMIT l_rows;
178915 --
178916 IF (C_LEVEL_EVENT >= g_log_level) THEN
178917    trace
178918    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
178919    ,p_level    => C_LEVEL_EVENT
178920    ,p_module   => l_log_module);
178921 END IF;
178922 --
178923 EXIT WHEN l_array_entity_id.COUNT = 0;
178924 
178925 -- initialize arrays
178926 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
178927 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
178928 
178929 --
178930 -- Bug 4458708
178931 --
178932 XLA_AE_LINES_PKG.g_LineNumber := 0;
178933 
178934 
178935 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
178936 g_last_hdr_idx := l_array_event_id.LAST;
178937 --
178938 -- loop for the headers. Each iteration is for each header extract row
178939 -- fetched in header cursor
178940 --
178941 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
178942 
178943 --
178944 -- set event info as cache for other routines to refer event attributes
178945 --
178946 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
178947    (p_application_id           => p_application_id
178948    ,p_primary_ledger_id        => p_primary_ledger_id
178949    ,p_base_ledger_id           => p_base_ledger_id
178950    ,p_target_ledger_id         => p_target_ledger_id
178951    ,p_entity_id                => l_array_entity_id(hdr_idx)
178952    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
178953    ,p_entity_code              => l_array_entity_code(hdr_idx)
178954    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
178955    ,p_event_id                 => l_array_event_id(hdr_idx)
178956    ,p_event_class_code         => l_array_class_code(hdr_idx)
178957    ,p_event_type_code          => l_array_event_type(hdr_idx)
178958    ,p_event_number             => l_array_event_number(hdr_idx)
178959    ,p_event_date               => l_array_event_date(hdr_idx)
178960    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
178961    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
178962    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
178963    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
178964    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
178965    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
178966    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
178967    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
178968    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
178969    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
178970    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
178971    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
178972    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
178973    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
178974    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
178975 
178976 --
178977 -- set the status of entry to C_VALID (0)
178978 --
178979 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
178980 
178981 --
178982 -- initialize a row for ae header
178983 --
178984 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
178985 
178986 l_event_id := l_array_event_id(hdr_idx);
178987 
178988 --
178989 -- storing the hdr_idx for event. May be used by line cursor.
178990 --
178991 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
178992 
178993 --
178994 -- store sources from header extract. This can be improved to
178995 -- store only those sources from header extract that may be used in lines
178996 --
178997 
178998 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
178999 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
179000 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
179001 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
179002 
179003 --
179004 -- initilaize the status of ae headers for diffrent balance types
179005 -- the status is initialised to C_NOT_CREATED (2)
179006 --
179007 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
179008 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
179009 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
179010 
179011 --
179012 -- call api to validate and store accounting attributes for header
179013 --
179014 
179015 ------------------------------------------------------------
179016 -- Accrual Reversal : to get date for Standard Source (NONE)
179017 ------------------------------------------------------------
179018 l_acc_rev_gl_date_source := NULL;
179019 
179020      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
179021       l_rec_acct_attrs.array_date_value(1) := 
179022 xla_ae_sources_pkg.GetSystemSourceDate(
179023    p_source_code           => 'XLA_REFERENCE_DATE_1'
179024  , p_source_type_code      => 'Y'
179025  , p_source_application_id =>  602
179026 );
179027      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
179028       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
179029 
179030 
179031 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
179032 
179033 XLA_AE_HEADER_PKG.SetJeCategoryName;
179034 
179035 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
179036 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
179037 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
179038 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
179039 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
179040 
179041 
179042 -- No header level analytical criteria
179043 
179044 --
179045 --accounting attribute enhancement, bug 3612931
179046 --
179047 l_trx_reversal_source := SUBSTR(NULL, 1,30);
179048 
179049 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
179050    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
179051 
179052    xla_accounting_err_pkg.build_message
179053       (p_appli_s_name            => 'XLA'
179054       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
179055       ,p_token_1                 => 'ACCT_ATTR_NAME'
179056       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
179057       ,p_token_2                 => 'PRODUCT_NAME'
179058       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
179059       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
179060       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
179061       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
179062 
179063 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
179064    --
179065    -- following sets the accounting attributes needed to reverse
179066    -- accounting for a distributeion
179067    --
179068    xla_ae_lines_pkg.SetTrxReversalAttrs
179069       (p_event_id              => l_event_id
179070       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
179071       ,p_trx_reversal_source   => l_trx_reversal_source);
179072 
179073 END IF;
179074 
179075 
179076 ----------------------------------------------------------------
179077 -- 4262811 -  update the header statuses to invalid in need be
179078 ----------------------------------------------------------------
179079 --
179080 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
179081 
179082 
179083   -----------------------------------------------
179084   -- No accrual reversal for the event class/type
179085   -----------------------------------------------
179086 ----------------------------------------------------------------
179087 
179088 --
179089 -- this ends the header loop iteration for one bulk fetch
179090 --
179091 END LOOP;
179092 
179093 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
179094 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
179095 
179096 --
179097 -- insert dummy rows into lines gt table that were created due to
179098 -- transaction reversals
179099 --
179100 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
179101    l_result := XLA_AE_LINES_PKG.InsertLines;
179102 END IF;
179103 
179104 --
179105 -- reset the temp_line_num for each set of events fetched from header
179106 -- cursor rather than doing it for each new event in line cursor
179107 -- Bug 3939231
179108 --
179109 xla_ae_lines_pkg.g_temp_line_num := 0;
179110 
179111 
179112 
179113 --
179114 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
179115 --
179116 --
179117 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179118 
179119       trace
179120          (p_msg      => 'SQL - FETCH line_cur'
179121          ,p_level    => C_LEVEL_STATEMENT
179122          ,p_module   => l_log_module);
179123 
179124 END IF;
179125 --
179126 --
179127 LOOP
179128   --
179129   FETCH line_cur BULK COLLECT INTO
179130         l_array_entity_id
179131       , l_array_legal_entity_id
179132       , l_array_entity_code
179133       , l_array_transaction_num
179134       , l_array_event_id
179135       , l_array_class_code
179136       , l_array_event_type
179137       , l_array_event_number
179138       , l_array_event_date
179139       , l_array_transaction_date
179140       , l_array_reference_num_1
179141       , l_array_reference_num_2
179142       , l_array_reference_num_3
179143       , l_array_reference_num_4
179144       , l_array_reference_char_1
179145       , l_array_reference_char_2
179146       , l_array_reference_char_3
179147       , l_array_reference_char_4
179148       , l_array_reference_date_1
179149       , l_array_reference_date_2
179150       , l_array_reference_date_3
179151       , l_array_reference_date_4
179152       , l_array_event_created_by
179153       , l_array_budgetary_control_flag
179154       , l_array_extract_line_num 
179155       , l_array_source_4
179156       , l_array_source_11
179157       , l_array_source_15
179158       , l_array_source_18
179159       , l_array_source_19
179160       , l_array_source_20
179161       , l_array_source_21
179162       , l_array_source_22
179163       , l_array_source_24
179164       LIMIT l_rows;
179165 
179166   --
179167   IF (C_LEVEL_EVENT >= g_log_level) THEN
179168             trace
179169                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
179170                ,p_level    => C_LEVEL_EVENT
179171                ,p_module   => l_log_module);
179172   END IF;
179173   --
179174   EXIT WHEN l_array_entity_id.count = 0;
179175 
179176   XLA_AE_LINES_PKG.g_rec_lines := null;
179177 
179178 --
179179 -- Bug 4458708
179180 --
179181 XLA_AE_LINES_PKG.g_LineNumber := 0;
179182 --
179183 --
179184 
179185 FOR Idx IN 1..l_array_event_id.count LOOP
179186    --
179187    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
179188    --
179189    l_event_id := l_array_event_id(idx);  -- 5648433
179190 
179191    --
179192    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
179193    --
179194 
179195    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
179196              (g_array_event(l_event_id).array_value_num('header_index'))
179197          ,'N'
179198          ) <> 'Y'
179199    THEN
179200       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179201          trace
179202             (p_msg      => 'Trancaction revesal option is not Y '
179203             ,p_level    => C_LEVEL_STATEMENT
179204             ,p_module   => l_log_module);
179205       END IF;
179206 
179207 --
179208 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
179209 --
179210 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
179211 --
179212 -- set event info as cache for other routines to refer event attributes
179213 --
179214 
179215 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
179216    l_previous_event_id := l_event_id;
179217 
179218    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
179219       (p_application_id           => p_application_id
179220       ,p_primary_ledger_id        => p_primary_ledger_id
179221       ,p_base_ledger_id           => p_base_ledger_id
179222       ,p_target_ledger_id         => p_target_ledger_id
179223       ,p_entity_id                => l_array_entity_id(Idx)
179224       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
179225       ,p_entity_code              => l_array_entity_code(Idx)
179226       ,p_transaction_num          => l_array_transaction_num(Idx)
179227       ,p_event_id                 => l_array_event_id(Idx)
179228       ,p_event_class_code         => l_array_class_code(Idx)
179229       ,p_event_type_code          => l_array_event_type(Idx)
179230       ,p_event_number             => l_array_event_number(Idx)
179231       ,p_event_date               => l_array_event_date(Idx)
179232       ,p_transaction_date         => l_array_transaction_date(Idx)
179233       ,p_reference_num_1          => l_array_reference_num_1(Idx)
179234       ,p_reference_num_2          => l_array_reference_num_2(Idx)
179235       ,p_reference_num_3          => l_array_reference_num_3(Idx)
179236       ,p_reference_num_4          => l_array_reference_num_4(Idx)
179237       ,p_reference_char_1         => l_array_reference_char_1(Idx)
179238       ,p_reference_char_2         => l_array_reference_char_2(Idx)
179239       ,p_reference_char_3         => l_array_reference_char_3(Idx)
179240       ,p_reference_char_4         => l_array_reference_char_4(Idx)
179241       ,p_reference_date_1         => l_array_reference_date_1(Idx)
179242       ,p_reference_date_2         => l_array_reference_date_2(Idx)
179243       ,p_reference_date_3         => l_array_reference_date_3(Idx)
179244       ,p_reference_date_4         => l_array_reference_date_4(Idx)
179245       ,p_event_created_by         => l_array_event_created_by(Idx)
179246       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
179247        --
179248 END IF;
179249 
179250 
179251 
179252 --
179253 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
179254 
179255 l_acct_reversal_source := SUBSTR(NULL, 1,30);
179256 
179257 IF l_continue_with_lines THEN
179258    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
179259       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
179260 
179261       xla_accounting_err_pkg.build_message
179262          (p_appli_s_name            => 'XLA'
179263          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
179264          ,p_token_1                 => 'LINE_NUMBER'
179265          ,p_value_1                 => l_array_extract_line_num(Idx)
179266          ,p_token_2                 => 'PRODUCT_NAME'
179267          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
179268          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
179269          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
179270          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
179271 
179272    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
179273       --
179274       -- following sets the accounting attributes needed to reverse
179275       -- accounting for a distributeion
179276       --
179277 
179278       --
179279       -- 5217187
179280       --
179281       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
179282       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
179283                                        g_array_event(l_event_id).array_value_num('header_index'));
179284       --
179285       --
179286 
179287       -- No reversal code generated
179288 
179289       xla_ae_lines_pkg.SetAcctReversalAttrs
179290          (p_event_id             => l_event_id
179291          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
179292          ,p_calculate_acctd_flag => l_calculate_acctd_flag
179293          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
179294    END IF;
179295 
179296    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
179297        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
179298 
179299 --
179300 AcctLineType_63 (
179301  p_application_id  => p_application_id
179302  ,p_event_id     => l_event_id
179303  ,p_calculate_acctd_flag => l_calculate_acctd_flag
179304  ,p_calculate_g_l_flag => l_calculate_g_l_flag
179305  ,p_actual_flag => l_actual_flag
179306  ,p_balance_type_code => l_balance_type_code
179307  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179308  
179309  , p_source_4 => l_array_source_4(Idx)
179310  , p_source_11 => l_array_source_11(Idx)
179311  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179312  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179313  , p_source_15 => l_array_source_15(Idx)
179314  , p_source_18 => l_array_source_18(Idx)
179315  , p_source_19 => l_array_source_19(Idx)
179316  , p_source_20 => l_array_source_20(Idx)
179317  , p_source_21 => l_array_source_21(Idx)
179318  , p_source_22 => l_array_source_22(Idx)
179319  , p_source_24 => l_array_source_24(Idx)
179320  );
179321 If(l_balance_type_code = 'A') THEN
179322   l_actual_gain_loss_ref := l_gain_or_loss_ref;
179323 END IF;
179324 
179325 --
179326 
179327 
179328 --
179329 AcctLineType_79 (
179330  p_application_id  => p_application_id
179331  ,p_event_id     => l_event_id
179332  ,p_calculate_acctd_flag => l_calculate_acctd_flag
179333  ,p_calculate_g_l_flag => l_calculate_g_l_flag
179334  ,p_actual_flag => l_actual_flag
179335  ,p_balance_type_code => l_balance_type_code
179336  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179337  
179338  , p_source_4 => l_array_source_4(Idx)
179339  , p_source_11 => l_array_source_11(Idx)
179340  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179341  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179342  , p_source_15 => l_array_source_15(Idx)
179343  , p_source_18 => l_array_source_18(Idx)
179344  , p_source_19 => l_array_source_19(Idx)
179345  , p_source_20 => l_array_source_20(Idx)
179346  , p_source_21 => l_array_source_21(Idx)
179347  , p_source_22 => l_array_source_22(Idx)
179348  , p_source_24 => l_array_source_24(Idx)
179349  );
179350 If(l_balance_type_code = 'A') THEN
179351   l_actual_gain_loss_ref := l_gain_or_loss_ref;
179352 END IF;
179353 
179354 --
179355 
179356 
179357 --
179358 AcctLineType_87 (
179359  p_application_id  => p_application_id
179360  ,p_event_id     => l_event_id
179361  ,p_calculate_acctd_flag => l_calculate_acctd_flag
179362  ,p_calculate_g_l_flag => l_calculate_g_l_flag
179363  ,p_actual_flag => l_actual_flag
179364  ,p_balance_type_code => l_balance_type_code
179365  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179366  
179367  , p_source_4 => l_array_source_4(Idx)
179368  , p_source_11 => l_array_source_11(Idx)
179369  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179370  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179371  , p_source_15 => l_array_source_15(Idx)
179372  , p_source_18 => l_array_source_18(Idx)
179373  , p_source_19 => l_array_source_19(Idx)
179374  , p_source_20 => l_array_source_20(Idx)
179375  , p_source_21 => l_array_source_21(Idx)
179376  , p_source_22 => l_array_source_22(Idx)
179377  , p_source_24 => l_array_source_24(Idx)
179378  );
179379 If(l_balance_type_code = 'A') THEN
179380   l_actual_gain_loss_ref := l_gain_or_loss_ref;
179381 END IF;
179382 
179383 --
179384 
179385 
179386 --
179387 AcctLineType_94 (
179388  p_application_id  => p_application_id
179389  ,p_event_id     => l_event_id
179390  ,p_calculate_acctd_flag => l_calculate_acctd_flag
179391  ,p_calculate_g_l_flag => l_calculate_g_l_flag
179392  ,p_actual_flag => l_actual_flag
179393  ,p_balance_type_code => l_balance_type_code
179394  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179395  
179396  , p_source_4 => l_array_source_4(Idx)
179397  , p_source_11 => l_array_source_11(Idx)
179398  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179399  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179400  , p_source_15 => l_array_source_15(Idx)
179401  , p_source_18 => l_array_source_18(Idx)
179402  , p_source_19 => l_array_source_19(Idx)
179403  , p_source_20 => l_array_source_20(Idx)
179404  , p_source_21 => l_array_source_21(Idx)
179405  , p_source_22 => l_array_source_22(Idx)
179406  , p_source_24 => l_array_source_24(Idx)
179407  );
179408 If(l_balance_type_code = 'A') THEN
179409   l_actual_gain_loss_ref := l_gain_or_loss_ref;
179410 END IF;
179411 
179412 --
179413 
179414 
179415 --
179416 AcctLineType_114 (
179417  p_application_id  => p_application_id
179418  ,p_event_id     => l_event_id
179419  ,p_calculate_acctd_flag => l_calculate_acctd_flag
179420  ,p_calculate_g_l_flag => l_calculate_g_l_flag
179421  ,p_actual_flag => l_actual_flag
179422  ,p_balance_type_code => l_balance_type_code
179423  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179424  
179425  , p_source_4 => l_array_source_4(Idx)
179426  , p_source_11 => l_array_source_11(Idx)
179427  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179428  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179429  , p_source_15 => l_array_source_15(Idx)
179430  , p_source_18 => l_array_source_18(Idx)
179431  , p_source_19 => l_array_source_19(Idx)
179432  , p_source_20 => l_array_source_20(Idx)
179433  , p_source_21 => l_array_source_21(Idx)
179434  , p_source_22 => l_array_source_22(Idx)
179435  , p_source_24 => l_array_source_24(Idx)
179436  );
179437 If(l_balance_type_code = 'A') THEN
179438   l_actual_gain_loss_ref := l_gain_or_loss_ref;
179439 END IF;
179440 
179441 --
179442 
179443 
179444 --
179445 AcctLineType_128 (
179446  p_application_id  => p_application_id
179447  ,p_event_id     => l_event_id
179448  ,p_calculate_acctd_flag => l_calculate_acctd_flag
179449  ,p_calculate_g_l_flag => l_calculate_g_l_flag
179450  ,p_actual_flag => l_actual_flag
179451  ,p_balance_type_code => l_balance_type_code
179452  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179453  
179454  , p_source_4 => l_array_source_4(Idx)
179455  , p_source_11 => l_array_source_11(Idx)
179456  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179457  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179458  , p_source_15 => l_array_source_15(Idx)
179459  , p_source_18 => l_array_source_18(Idx)
179460  , p_source_19 => l_array_source_19(Idx)
179461  , p_source_20 => l_array_source_20(Idx)
179462  , p_source_21 => l_array_source_21(Idx)
179463  , p_source_22 => l_array_source_22(Idx)
179464  , p_source_24 => l_array_source_24(Idx)
179465  );
179466 If(l_balance_type_code = 'A') THEN
179467   l_actual_gain_loss_ref := l_gain_or_loss_ref;
179468 END IF;
179469 
179470 --
179471 
179472 
179473 --
179474 AcctLineType_159 (
179475  p_application_id  => p_application_id
179476  ,p_event_id     => l_event_id
179477  ,p_calculate_acctd_flag => l_calculate_acctd_flag
179478  ,p_calculate_g_l_flag => l_calculate_g_l_flag
179479  ,p_actual_flag => l_actual_flag
179480  ,p_balance_type_code => l_balance_type_code
179481  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179482  
179483  , p_source_4 => l_array_source_4(Idx)
179484  , p_source_11 => l_array_source_11(Idx)
179485  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179486  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179487  , p_source_15 => l_array_source_15(Idx)
179488  , p_source_18 => l_array_source_18(Idx)
179489  , p_source_19 => l_array_source_19(Idx)
179490  , p_source_20 => l_array_source_20(Idx)
179491  , p_source_21 => l_array_source_21(Idx)
179492  , p_source_22 => l_array_source_22(Idx)
179493  , p_source_24 => l_array_source_24(Idx)
179494  );
179495 If(l_balance_type_code = 'A') THEN
179496   l_actual_gain_loss_ref := l_gain_or_loss_ref;
179497 END IF;
179498 
179499 --
179500 
179501 
179502 --
179503 AcctLineType_187 (
179504  p_application_id  => p_application_id
179505  ,p_event_id     => l_event_id
179506  ,p_calculate_acctd_flag => l_calculate_acctd_flag
179507  ,p_calculate_g_l_flag => l_calculate_g_l_flag
179508  ,p_actual_flag => l_actual_flag
179509  ,p_balance_type_code => l_balance_type_code
179510  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179511  
179512  , p_source_4 => l_array_source_4(Idx)
179513  , p_source_11 => l_array_source_11(Idx)
179514  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179515  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179516  , p_source_15 => l_array_source_15(Idx)
179517  , p_source_18 => l_array_source_18(Idx)
179518  , p_source_19 => l_array_source_19(Idx)
179519  , p_source_20 => l_array_source_20(Idx)
179520  , p_source_21 => l_array_source_21(Idx)
179521  , p_source_22 => l_array_source_22(Idx)
179522  , p_source_24 => l_array_source_24(Idx)
179523  );
179524 If(l_balance_type_code = 'A') THEN
179525   l_actual_gain_loss_ref := l_gain_or_loss_ref;
179526 END IF;
179527 
179528 --
179529 
179530 
179531 --
179532 AcctLineType_222 (
179533  p_application_id  => p_application_id
179534  ,p_event_id     => l_event_id
179535  ,p_calculate_acctd_flag => l_calculate_acctd_flag
179536  ,p_calculate_g_l_flag => l_calculate_g_l_flag
179537  ,p_actual_flag => l_actual_flag
179538  ,p_balance_type_code => l_balance_type_code
179539  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179540  
179541  , p_source_4 => l_array_source_4(Idx)
179542  , p_source_11 => l_array_source_11(Idx)
179543  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179544  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179545  , p_source_15 => l_array_source_15(Idx)
179546  , p_source_18 => l_array_source_18(Idx)
179547  , p_source_19 => l_array_source_19(Idx)
179548  , p_source_20 => l_array_source_20(Idx)
179549  , p_source_21 => l_array_source_21(Idx)
179550  , p_source_22 => l_array_source_22(Idx)
179551  , p_source_24 => l_array_source_24(Idx)
179552  );
179553 If(l_balance_type_code = 'A') THEN
179554   l_actual_gain_loss_ref := l_gain_or_loss_ref;
179555 END IF;
179556 
179557 --
179558 
179559       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
179560       -- or secondary ledger that has different currency with primary
179561       -- or alc that is calculated by sla
179562       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
179563             (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'))
179564 
179565 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
179566 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
179567           AND (l_actual_flag = 'A')) THEN
179568         XLA_AE_LINES_PKG.CreateGainOrLossLines(
179569           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
179570          ,p_application_id   => p_application_id
179571          ,p_amb_context_code => 'DEFAULT'
179572          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
179573          ,p_event_class_code => C_EVENT_CLASS_CODE
179574          ,p_event_type_code  => C_EVENT_TYPE_CODE
179575          
179576          ,p_gain_ccid        => -1
179577          ,p_loss_ccid        => -1
179578 
179579          ,p_actual_flag      => l_actual_flag
179580          ,p_enc_flag         => null
179581          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
179582          ,p_enc_g_l_ref      => null
179583          );
179584       END IF;
179585    END IF;
179586 END IF;
179587 
179588    ELSE
179589       --
179590       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
179591       --
179592       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179593          trace
179594             (p_msg      => 'Trancaction revesal option is Y'
179595             ,p_level    => C_LEVEL_STATEMENT
179596             ,p_module   => l_log_module);
179597       END IF;
179598    END IF;
179599 
179600 END LOOP;
179601 l_result := XLA_AE_LINES_PKG.InsertLines ;
179602 end loop;
179603 close line_cur;
179604 
179605 
179606 --
179607 -- insert headers into xla_ae_headers_gt table
179608 --
179609 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
179610 
179611 -- insert into errors table here.
179612 
179613 END LOOP;
179614 
179615 --
179616 -- 4865292
179617 --
179618 -- Compare g_hdr_extract_count with event count in
179619 -- CreateHeadersAndLines.
179620 --
179621 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
179622 
179623 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179624    trace (p_msg     => '# rows extracted from header extract objects '
179625                     || ' (running total): '
179626                     || g_hdr_extract_count
179627          ,p_level   => C_LEVEL_STATEMENT
179628          ,p_module  => l_log_module);
179629 END IF;
179630 
179631 CLOSE header_cur;
179632 --
179633 
179634 --
179635 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179636    trace
179637       (p_msg      => 'END of EventType_280'
179638       ,p_level    => C_LEVEL_PROCEDURE
179639       ,p_module   => l_log_module);
179640 END IF;
179641 --
179642 RETURN l_result;
179643 EXCEPTION
179644 WHEN xla_exceptions_pkg.application_exception THEN
179645    
179646 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
179647 
179648    
179649 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
179650 
179651    RAISE;
179652 
179653 WHEN NO_DATA_FOUND THEN
179654 
179655 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
179656 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
179657 
179658 FOR header_record IN header_cur
179659 LOOP
179660     l_array_header_events(header_record.event_id) := header_record.event_id;
179661 END LOOP;
179662 
179663 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
179664 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
179665 
179666 fnd_file.put_line(fnd_file.LOG, '                    ');
179667 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
179668 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
179669 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
179670 
179671 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
179672 LOOP
179673 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
179674 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
179675         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
179676 	END IF;
179677 END LOOP;
179678 
179679 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
179680 fnd_file.put_line(fnd_file.LOG, '                    ');
179681 
179682 
179683 xla_exceptions_pkg.raise_message
179684       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_280');
179685 
179686 
179687 WHEN OTHERS THEN
179688    xla_exceptions_pkg.raise_message
179689       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_280');
179690 END EventType_280;
179691 --
179692 
179693 ---------------------------------------
179694 --
179695 -- PRIVATE PROCEDURE
179696 --         insert_sources_281
179697 --
179698 ----------------------------------------
179699 --
179700 PROCEDURE insert_sources_281(
179701                                 p_target_ledger_id       IN NUMBER
179702                               , p_language               IN VARCHAR2
179703                               , p_sla_ledger_id          IN NUMBER
179704                               , p_pad_start_date         IN DATE
179705                               , p_pad_end_date           IN DATE
179706                          )
179707 IS
179708 
179709 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP_NO_TP';
179710 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
179711 p_apps_owner                   VARCHAR2(30);
179712 l_log_module                   VARCHAR2(240);
179713 BEGIN
179714 IF g_log_enabled THEN
179715       l_log_module := C_DEFAULT_MODULE||'.insert_sources_281';
179716 END IF;
179717 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179718 
179719       trace
179720          (p_msg      => 'BEGIN of insert_sources_281'
179721          ,p_level    => C_LEVEL_PROCEDURE
179722          ,p_module   => l_log_module);
179723 
179724 END IF;
179725 
179726 -- select APPS owner
179727 SELECT oracle_username
179728   INTO p_apps_owner
179729   FROM fnd_oracle_userid
179730  WHERE read_only_flag = 'U'
179731 ;
179732 
179733 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179734       trace
179735          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
179736                         ' - p_language = '||p_language||
179737                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
179738                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
179739                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
179740                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
179741          ,p_level    => C_LEVEL_STATEMENT
179742          ,p_module   => l_log_module);
179743 END IF;
179744 
179745 
179746 --
179747 INSERT INTO xla_diag_sources --hdr1
179748 (
179749         event_id
179750       , ledger_id
179751       , sla_ledger_id
179752       , description_language
179753       , object_name
179754       , object_type_code
179755       , line_number
179756       , source_application_id
179757       , source_type_code
179758       , source_code
179759       , source_value
179760       , source_meaning
179761       , created_by
179762       , creation_date
179763       , last_update_date
179764       , last_updated_by
179765       , last_update_login
179766       , program_update_date
179767       , program_application_id
179768       , program_id
179769       , request_id
179770 )
179771 SELECT
179772         event_id
179773       , p_target_ledger_id
179774       , p_sla_ledger_id
179775       , p_language
179776       , object_name
179777       , object_type_code
179778       , line_number
179779       , source_application_id
179780       , source_type_code
179781       , source_code
179782       , SUBSTR(source_value ,1,1996)
179783       , SUBSTR(source_meaning,1,200)
179784       , xla_environment_pkg.g_Usr_Id
179785       , TRUNC(SYSDATE)
179786       , TRUNC(SYSDATE)
179787       , xla_environment_pkg.g_Usr_Id
179788       , xla_environment_pkg.g_Login_Id
179789       , TRUNC(SYSDATE)
179790       , xla_environment_pkg.g_Prog_Appl_Id
179791       , xla_environment_pkg.g_Prog_Id
179792       , xla_environment_pkg.g_Req_Id
179793   FROM (
179794        SELECT xet.event_id                  event_id
179795             , 0                             line_number
179796             , CASE r
179797                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
179798                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
179799                 
179800                ELSE null
179801               END                           object_name
179802             , CASE r
179803                 WHEN 1 THEN 'HEADER' 
179804                 WHEN 2 THEN 'HEADER' 
179805                 
179806                 ELSE null
179807               END                           object_type_code
179808             , CASE r
179809                 WHEN 1 THEN '707' 
179810                 WHEN 2 THEN '707' 
179811                 
179812                 ELSE null
179813               END                           source_application_id
179814             , 'S'             source_type_code
179815             , CASE r
179816                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
179817                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
179818                 
179819                 ELSE null
179820               END                           source_code
179821             , CASE r
179822                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
179823                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
179824                 
179825                 ELSE null
179826               END                           source_value
179827             , CASE r
179828                 WHEN 1 THEN fvl12.meaning
179829                 WHEN 2 THEN fvl38.meaning
179830                 
179831                 ELSE null
179832               END               source_meaning
179833         FROM xla_events_gt     xet  
179834       , CST_XLA_INV_HEADERS_V  h1
179835   , fnd_lookup_values    fvl12
179836   , fnd_lookup_values    fvl38
179837             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
179838        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
179839          AND xet.event_type_code = C_EVENT_TYPE_CODE
179840             AND h1.event_id = xet.event_id
179841    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
179842   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
179843   AND fvl12.view_application_id(+) = 700
179844   AND fvl12.language(+)            = USERENV('LANG')
179845      AND fvl38.lookup_type(+)         = 'YES_NO'
179846   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
179847   AND fvl38.view_application_id(+) = 0
179848   AND fvl38.language(+)            = USERENV('LANG')
179849   
179850 )
179851 ;
179852 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179853 
179854       trace
179855          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
179856          ,p_level    => C_LEVEL_STATEMENT
179857          ,p_module   => l_log_module);
179858 
179859 END IF;
179860 --
179861 
179862 
179863 
179864 --
179865 INSERT INTO xla_diag_sources --line1
179866 (
179867         event_id
179868       , ledger_id
179869       , sla_ledger_id
179870       , description_language
179871       , object_name
179872       , object_type_code
179873       , line_number
179874       , source_application_id
179875       , source_type_code
179876       , source_code
179877       , source_value
179878       , source_meaning
179879       , created_by
179880       , creation_date
179881       , last_update_date
179882       , last_updated_by
179883       , last_update_login
179884       , program_update_date
179885       , program_application_id
179886       , program_id
179887       , request_id
179888 )
179889 SELECT  event_id
179890       , p_target_ledger_id
179891       , p_sla_ledger_id
179892       , p_language
179893       , object_name
179894       , object_type_code
179895       , line_number
179896       , source_application_id
179897       , source_type_code
179898       , source_code
179899       , SUBSTR(source_value,1,1996)
179900       , SUBSTR(source_meaning,1,200)
179901       , xla_environment_pkg.g_Usr_Id
179902       , TRUNC(SYSDATE)
179903       , TRUNC(SYSDATE)
179904       , xla_environment_pkg.g_Usr_Id
179905       , xla_environment_pkg.g_Login_Id
179906       , TRUNC(SYSDATE)
179907       , xla_environment_pkg.g_Prog_Appl_Id
179908       , xla_environment_pkg.g_Prog_Id
179909       , xla_environment_pkg.g_Req_Id
179910   FROM (
179911        SELECT xet.event_id                  event_id
179912             , l2.line_number                 line_number
179913             , CASE r
179914                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
179915                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
179916                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
179917                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
179918                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
179919                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
179920                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
179921                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
179922                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
179923                 
179924                ELSE null
179925               END                           object_name
179926             , CASE r
179927                 WHEN 1 THEN 'LINE' 
179928                 WHEN 2 THEN 'LINE' 
179929                 WHEN 3 THEN 'LINE' 
179930                 WHEN 4 THEN 'LINE' 
179931                 WHEN 5 THEN 'LINE' 
179932                 WHEN 6 THEN 'LINE' 
179933                 WHEN 7 THEN 'LINE' 
179934                 WHEN 8 THEN 'LINE' 
179935                 WHEN 9 THEN 'LINE' 
179936                 
179937                 ELSE null
179938               END                           object_type_code
179939             , CASE r
179940                 WHEN 1 THEN '707' 
179941                 WHEN 2 THEN '707' 
179942                 WHEN 3 THEN '707' 
179943                 WHEN 4 THEN '707' 
179944                 WHEN 5 THEN '707' 
179945                 WHEN 6 THEN '707' 
179946                 WHEN 7 THEN '707' 
179947                 WHEN 8 THEN '707' 
179948                 WHEN 9 THEN '707' 
179949                 
179950                 ELSE null
179951               END                           source_application_id
179952             , 'S'             source_type_code
179953             , CASE r
179954                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
179955                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
179956                 WHEN 3 THEN 'CURRENCY_CODE' 
179957                 WHEN 4 THEN 'ENTERED_AMOUNT' 
179958                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
179959                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
179960                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
179961                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
179962                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
179963                 
179964                 ELSE null
179965               END                           source_code
179966             , CASE r
179967                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
179968                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
179969                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
179970                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
179971                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
179972                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
179973                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
179974                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
179975                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
179976                 
179977                 ELSE null
179978               END                           source_value
179979             , null              source_meaning
179980          FROM  xla_events_gt     xet  
179981         , CST_XLA_INV_LINES_V  l2
179982             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
179983         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
179984           AND xet.event_type_code = C_EVENT_TYPE_CODE
179985             AND l2.event_id          = xet.event_id
179986 
179987 )
179988 ;
179989 --
179990 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179991 
179992       trace
179993          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
179994          ,p_level    => C_LEVEL_STATEMENT
179995          ,p_module   => l_log_module);
179996 
179997 END IF;
179998 
179999 
180000 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180001       trace
180002          (p_msg      => 'END of insert_sources_281'
180003          ,p_level    => C_LEVEL_PROCEDURE
180004          ,p_module   => l_log_module);
180005 END IF;
180006 EXCEPTION
180007   WHEN xla_exceptions_pkg.application_exception THEN
180008       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
180009             trace
180010                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
180011                ,p_level    => C_LEVEL_EXCEPTION
180012                ,p_module   => l_log_module);
180013       END IF;
180014       RAISE;
180015   WHEN OTHERS THEN
180016       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
180017             trace
180018                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
180019                ,p_level    => C_LEVEL_EXCEPTION
180020                ,p_module   => l_log_module);
180021        END IF;
180022        xla_exceptions_pkg.raise_message
180023            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_281');
180024 END insert_sources_281;
180025 --
180026 
180027 ---------------------------------------
180028 --
180029 -- PRIVATE FUNCTION
180030 --         EventType_281
180031 --
180032 ----------------------------------------
180033 --
180034 FUNCTION EventType_281
180035        (p_application_id         IN NUMBER
180036        ,p_base_ledger_id         IN NUMBER
180037        ,p_target_ledger_id       IN NUMBER
180038        ,p_language               IN VARCHAR2
180039        ,p_currency_code          IN VARCHAR2
180040        ,p_sla_ledger_id          IN NUMBER
180041        ,p_pad_start_date         IN DATE
180042        ,p_pad_end_date           IN DATE
180043        ,p_primary_ledger_id      IN NUMBER)
180044 RETURN BOOLEAN IS
180045 --
180046 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP_NO_TP';
180047 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
180048 
180049 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
180050 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
180051 --
180052 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180053 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180054 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180055 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180056 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180057 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180058 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180059 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180060 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180061 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180062 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180063 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180064 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180065 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180066 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180067 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180068 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180069 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180070 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180071 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180072 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180073 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180074 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
180075 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180076 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
180077 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
180078 
180079 l_event_id                             NUMBER;
180080 l_previous_event_id                    NUMBER;
180081 l_first_event_id                       NUMBER;
180082 l_last_event_id                        NUMBER;
180083 
180084 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
180085 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
180086 --
180087 --
180088 l_result                    BOOLEAN := TRUE;
180089 l_rows                      NUMBER  := 1000;
180090 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Shipment, No Transfer Price';
180091 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
180092 l_description               VARCHAR2(4000);
180093 l_transaction_reversal      NUMBER;
180094 l_ae_header_id              NUMBER;
180095 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
180096 l_log_module                VARCHAR2(240);
180097 --
180098 l_acct_reversal_source      VARCHAR2(30);
180099 l_trx_reversal_source       VARCHAR2(30);
180100 
180101 l_continue_with_lines       BOOLEAN := TRUE;
180102 --
180103 l_acc_rev_gl_date_source    DATE;                      -- 4262811
180104 --
180105 type t_array_event_id is table of number index by binary_integer;
180106 
180107 l_rec_array_event                    t_rec_array_event;
180108 l_null_rec_array_event               t_rec_array_event;
180109 l_array_ae_header_id                 xla_number_array_type;
180110 l_actual_flag                        VARCHAR2(1) := NULL;
180111 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
180112 l_balance_type_code                  VARCHAR2(1) :=NULL;
180113 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
180114 
180115 --
180116 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
180117 --
180118 
180119 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
180120 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
180121 
180122 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
180123 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
180124 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
180125 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
180126 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
180127 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
180128 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
180129 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
180130 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
180131 
180132 l_array_source_12              t_array_source_12;
180133 l_array_source_12_meaning      t_array_lookup_meaning;
180134 l_array_source_38              t_array_source_38;
180135 l_array_source_38_meaning      t_array_lookup_meaning;
180136 
180137 l_array_source_4      t_array_source_4;
180138 l_array_source_11      t_array_source_11;
180139 l_array_source_15      t_array_source_15;
180140 l_array_source_18      t_array_source_18;
180141 l_array_source_19      t_array_source_19;
180142 l_array_source_20      t_array_source_20;
180143 l_array_source_21      t_array_source_21;
180144 l_array_source_22      t_array_source_22;
180145 l_array_source_24      t_array_source_24;
180146 
180147 --
180148 CURSOR header_cur
180149 IS
180150 SELECT /*+ leading(xet) cardinality(xet,1) */
180151 -- Event Type Code: UDIR_INTERORG_SHIP_NO_TP
180152 -- Event Class Code: USER_DEFINE
180153     xet.entity_id
180154   , xet.legal_entity_id
180155   , xet.entity_code
180156   , xet.transaction_number
180157   , xet.event_id
180158   , xet.event_class_code
180159   , xet.event_type_code
180160   , xet.event_number
180161   , xet.event_date
180162   , xet.transaction_date
180163   , xet.reference_num_1
180164   , xet.reference_num_2
180165   , xet.reference_num_3
180166   , xet.reference_num_4
180167   , xet.reference_char_1
180168   , xet.reference_char_2
180169   , xet.reference_char_3
180170   , xet.reference_char_4
180171   , xet.reference_date_1
180172   , xet.reference_date_2
180173   , xet.reference_date_3
180174   , xet.reference_date_4
180175   , xet.event_created_by
180176   , xet.budgetary_control_flag 
180177   , h1.DISTRIBUTION_TYPE    source_12
180178   , fvl12.meaning   source_12_meaning
180179   , h1.TRANSFER_TO_GL_INDICATOR    source_38
180180   , fvl38.meaning   source_38_meaning
180181   FROM xla_events_gt     xet 
180182   , CST_XLA_INV_HEADERS_V  h1
180183   , fnd_lookup_values    fvl12
180184   , fnd_lookup_values    fvl38
180185  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
180186    and xet.event_type_code = C_EVENT_TYPE_CODE
180187    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
180188    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
180189   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
180190   AND fvl12.view_application_id(+) = 700
180191   AND fvl12.language(+)            = USERENV('LANG')
180192      AND fvl38.lookup_type(+)         = 'YES_NO'
180193   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
180194   AND fvl38.view_application_id(+) = 0
180195   AND fvl38.language(+)            = USERENV('LANG')
180196   
180197  ORDER BY event_id
180198 ;
180199 
180200 
180201 --
180202 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
180203 IS
180204 SELECT /*+ leading(xet) cardinality(xet,1) */
180205 -- Event Type Code: UDIR_INTERORG_SHIP_NO_TP
180206 -- Event Class Code: USER_DEFINE
180207     xet.entity_id
180208    ,xet.legal_entity_id
180209    ,xet.entity_code
180210    ,xet.transaction_number
180211    ,xet.event_id
180212    ,xet.event_class_code
180213    ,xet.event_type_code
180214    ,xet.event_number
180215    ,xet.event_date
180216    ,xet.transaction_date
180217    ,xet.reference_num_1
180218    ,xet.reference_num_2
180219    ,xet.reference_num_3
180220    ,xet.reference_num_4
180221    ,xet.reference_char_1
180222    ,xet.reference_char_2
180223    ,xet.reference_char_3
180224    ,xet.reference_char_4
180225    ,xet.reference_date_1
180226    ,xet.reference_date_2
180227    ,xet.reference_date_3
180228    ,xet.reference_date_4
180229    ,xet.event_created_by
180230    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
180231   , l2.CODE_COMBINATION_ID    source_4
180232   , l2.DISTRIBUTION_IDENTIFIER    source_11
180233   , l2.CURRENCY_CODE    source_15
180234   , l2.ENTERED_AMOUNT    source_18
180235   , l2.CURRENCY_CONVERSION_DATE    source_19
180236   , l2.CURRENCY_CONVERSION_RATE    source_20
180237   , l2.CURRENCY_CONVERSION_TYPE    source_21
180238   , l2.ACCOUNTED_AMOUNT    source_22
180239   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
180240   FROM xla_events_gt     xet 
180241   , CST_XLA_INV_LINES_V  l2
180242  WHERE xet.event_id between x_first_event_id and x_last_event_id
180243    and xet.event_date between p_pad_start_date and p_pad_end_date
180244    and xet.event_type_code = C_EVENT_TYPE_CODE
180245    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
180246 ;
180247 
180248 --
180249 BEGIN
180250 IF g_log_enabled THEN
180251    l_log_module := C_DEFAULT_MODULE||'.EventType_281';
180252 END IF;
180253 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180254    trace
180255       (p_msg      => 'BEGIN of EventType_281'
180256       ,p_level    => C_LEVEL_PROCEDURE
180257       ,p_module   => l_log_module);
180258 END IF;
180259 
180260 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180261    trace
180262       (p_msg      => 'p_application_id = '||p_application_id||
180263                      ' - p_base_ledger_id = '||p_base_ledger_id||
180264                      ' - p_target_ledger_id  = '||p_target_ledger_id||
180265                      ' - p_language = '||p_language||
180266                      ' - p_currency_code = '||p_currency_code||
180267                      ' - p_sla_ledger_id = '||p_sla_ledger_id
180268       ,p_level    => C_LEVEL_STATEMENT
180269       ,p_module   => l_log_module);
180270 END IF;
180271 --
180272 -- initialze arrays
180273 --
180274 g_array_event.DELETE;
180275 l_rec_array_event := l_null_rec_array_event;
180276 --
180277 --------------------------------------
180278 -- 4262811 Initialze MPA Line Number
180279 --------------------------------------
180280 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
180281 
180282 --
180283 
180284 --
180285 OPEN header_cur;
180286 --
180287 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180288    trace
180289    (p_msg      => 'SQL - FETCH header_cur'
180290    ,p_level    => C_LEVEL_STATEMENT
180291    ,p_module   => l_log_module);
180292 END IF;
180293 --
180294 LOOP
180295 FETCH header_cur BULK COLLECT INTO
180296         l_array_entity_id
180297       , l_array_legal_entity_id
180298       , l_array_entity_code
180299       , l_array_transaction_num
180300       , l_array_event_id
180301       , l_array_class_code
180302       , l_array_event_type
180303       , l_array_event_number
180304       , l_array_event_date
180305       , l_array_transaction_date
180306       , l_array_reference_num_1
180307       , l_array_reference_num_2
180308       , l_array_reference_num_3
180309       , l_array_reference_num_4
180310       , l_array_reference_char_1
180311       , l_array_reference_char_2
180312       , l_array_reference_char_3
180313       , l_array_reference_char_4
180314       , l_array_reference_date_1
180315       , l_array_reference_date_2
180316       , l_array_reference_date_3
180317       , l_array_reference_date_4
180318       , l_array_event_created_by
180319       , l_array_budgetary_control_flag 
180320       , l_array_source_12
180321       , l_array_source_12_meaning
180322       , l_array_source_38
180323       , l_array_source_38_meaning
180324       LIMIT l_rows;
180325 --
180326 IF (C_LEVEL_EVENT >= g_log_level) THEN
180327    trace
180328    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
180329    ,p_level    => C_LEVEL_EVENT
180330    ,p_module   => l_log_module);
180331 END IF;
180332 --
180333 EXIT WHEN l_array_entity_id.COUNT = 0;
180334 
180335 -- initialize arrays
180336 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
180337 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
180338 
180339 --
180340 -- Bug 4458708
180341 --
180342 XLA_AE_LINES_PKG.g_LineNumber := 0;
180343 
180344 
180345 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
180346 g_last_hdr_idx := l_array_event_id.LAST;
180347 --
180348 -- loop for the headers. Each iteration is for each header extract row
180349 -- fetched in header cursor
180350 --
180351 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
180352 
180353 --
180354 -- set event info as cache for other routines to refer event attributes
180355 --
180356 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
180357    (p_application_id           => p_application_id
180358    ,p_primary_ledger_id        => p_primary_ledger_id
180359    ,p_base_ledger_id           => p_base_ledger_id
180360    ,p_target_ledger_id         => p_target_ledger_id
180361    ,p_entity_id                => l_array_entity_id(hdr_idx)
180362    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
180363    ,p_entity_code              => l_array_entity_code(hdr_idx)
180364    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
180365    ,p_event_id                 => l_array_event_id(hdr_idx)
180366    ,p_event_class_code         => l_array_class_code(hdr_idx)
180367    ,p_event_type_code          => l_array_event_type(hdr_idx)
180368    ,p_event_number             => l_array_event_number(hdr_idx)
180369    ,p_event_date               => l_array_event_date(hdr_idx)
180370    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
180371    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
180372    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
180373    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
180374    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
180375    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
180376    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
180377    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
180378    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
180379    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
180380    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
180381    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
180382    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
180383    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
180384    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
180385 
180386 --
180387 -- set the status of entry to C_VALID (0)
180388 --
180389 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
180390 
180391 --
180392 -- initialize a row for ae header
180393 --
180394 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
180395 
180396 l_event_id := l_array_event_id(hdr_idx);
180397 
180398 --
180399 -- storing the hdr_idx for event. May be used by line cursor.
180400 --
180401 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
180402 
180403 --
180404 -- store sources from header extract. This can be improved to
180405 -- store only those sources from header extract that may be used in lines
180406 --
180407 
180408 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
180409 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
180410 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
180411 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
180412 
180413 --
180414 -- initilaize the status of ae headers for diffrent balance types
180415 -- the status is initialised to C_NOT_CREATED (2)
180416 --
180417 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180418 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180419 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180420 
180421 --
180422 -- call api to validate and store accounting attributes for header
180423 --
180424 
180425 ------------------------------------------------------------
180426 -- Accrual Reversal : to get date for Standard Source (NONE)
180427 ------------------------------------------------------------
180428 l_acc_rev_gl_date_source := NULL;
180429 
180430      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
180431       l_rec_acct_attrs.array_date_value(1) := 
180432 xla_ae_sources_pkg.GetSystemSourceDate(
180433    p_source_code           => 'XLA_REFERENCE_DATE_1'
180434  , p_source_type_code      => 'Y'
180435  , p_source_application_id =>  602
180436 );
180437      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
180438       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
180439 
180440 
180441 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
180442 
180443 XLA_AE_HEADER_PKG.SetJeCategoryName;
180444 
180445 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
180446 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
180447 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
180448 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
180449 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
180450 
180451 
180452 -- No header level analytical criteria
180453 
180454 --
180455 --accounting attribute enhancement, bug 3612931
180456 --
180457 l_trx_reversal_source := SUBSTR(NULL, 1,30);
180458 
180459 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
180460    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
180461 
180462    xla_accounting_err_pkg.build_message
180463       (p_appli_s_name            => 'XLA'
180464       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
180465       ,p_token_1                 => 'ACCT_ATTR_NAME'
180466       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
180467       ,p_token_2                 => 'PRODUCT_NAME'
180468       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
180469       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
180470       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
180471       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
180472 
180473 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
180474    --
180475    -- following sets the accounting attributes needed to reverse
180476    -- accounting for a distributeion
180477    --
180478    xla_ae_lines_pkg.SetTrxReversalAttrs
180479       (p_event_id              => l_event_id
180480       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
180481       ,p_trx_reversal_source   => l_trx_reversal_source);
180482 
180483 END IF;
180484 
180485 
180486 ----------------------------------------------------------------
180487 -- 4262811 -  update the header statuses to invalid in need be
180488 ----------------------------------------------------------------
180489 --
180490 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
180491 
180492 
180493   -----------------------------------------------
180494   -- No accrual reversal for the event class/type
180495   -----------------------------------------------
180496 ----------------------------------------------------------------
180497 
180498 --
180499 -- this ends the header loop iteration for one bulk fetch
180500 --
180501 END LOOP;
180502 
180503 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
180504 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
180505 
180506 --
180507 -- insert dummy rows into lines gt table that were created due to
180508 -- transaction reversals
180509 --
180510 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
180511    l_result := XLA_AE_LINES_PKG.InsertLines;
180512 END IF;
180513 
180514 --
180515 -- reset the temp_line_num for each set of events fetched from header
180516 -- cursor rather than doing it for each new event in line cursor
180517 -- Bug 3939231
180518 --
180519 xla_ae_lines_pkg.g_temp_line_num := 0;
180520 
180521 
180522 
180523 --
180524 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
180525 --
180526 --
180527 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180528 
180529       trace
180530          (p_msg      => 'SQL - FETCH line_cur'
180531          ,p_level    => C_LEVEL_STATEMENT
180532          ,p_module   => l_log_module);
180533 
180534 END IF;
180535 --
180536 --
180537 LOOP
180538   --
180539   FETCH line_cur BULK COLLECT INTO
180540         l_array_entity_id
180541       , l_array_legal_entity_id
180542       , l_array_entity_code
180543       , l_array_transaction_num
180544       , l_array_event_id
180545       , l_array_class_code
180546       , l_array_event_type
180547       , l_array_event_number
180548       , l_array_event_date
180549       , l_array_transaction_date
180550       , l_array_reference_num_1
180551       , l_array_reference_num_2
180552       , l_array_reference_num_3
180553       , l_array_reference_num_4
180554       , l_array_reference_char_1
180555       , l_array_reference_char_2
180556       , l_array_reference_char_3
180557       , l_array_reference_char_4
180558       , l_array_reference_date_1
180559       , l_array_reference_date_2
180560       , l_array_reference_date_3
180561       , l_array_reference_date_4
180562       , l_array_event_created_by
180563       , l_array_budgetary_control_flag
180564       , l_array_extract_line_num 
180565       , l_array_source_4
180566       , l_array_source_11
180567       , l_array_source_15
180568       , l_array_source_18
180569       , l_array_source_19
180570       , l_array_source_20
180571       , l_array_source_21
180572       , l_array_source_22
180573       , l_array_source_24
180574       LIMIT l_rows;
180575 
180576   --
180577   IF (C_LEVEL_EVENT >= g_log_level) THEN
180578             trace
180579                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
180580                ,p_level    => C_LEVEL_EVENT
180581                ,p_module   => l_log_module);
180582   END IF;
180583   --
180584   EXIT WHEN l_array_entity_id.count = 0;
180585 
180586   XLA_AE_LINES_PKG.g_rec_lines := null;
180587 
180588 --
180589 -- Bug 4458708
180590 --
180591 XLA_AE_LINES_PKG.g_LineNumber := 0;
180592 --
180593 --
180594 
180595 FOR Idx IN 1..l_array_event_id.count LOOP
180596    --
180597    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
180598    --
180599    l_event_id := l_array_event_id(idx);  -- 5648433
180600 
180601    --
180602    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
180603    --
180604 
180605    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
180606              (g_array_event(l_event_id).array_value_num('header_index'))
180607          ,'N'
180608          ) <> 'Y'
180609    THEN
180610       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180611          trace
180612             (p_msg      => 'Trancaction revesal option is not Y '
180613             ,p_level    => C_LEVEL_STATEMENT
180614             ,p_module   => l_log_module);
180615       END IF;
180616 
180617 --
180618 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
180619 --
180620 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
180621 --
180622 -- set event info as cache for other routines to refer event attributes
180623 --
180624 
180625 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
180626    l_previous_event_id := l_event_id;
180627 
180628    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
180629       (p_application_id           => p_application_id
180630       ,p_primary_ledger_id        => p_primary_ledger_id
180631       ,p_base_ledger_id           => p_base_ledger_id
180632       ,p_target_ledger_id         => p_target_ledger_id
180633       ,p_entity_id                => l_array_entity_id(Idx)
180634       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
180635       ,p_entity_code              => l_array_entity_code(Idx)
180636       ,p_transaction_num          => l_array_transaction_num(Idx)
180637       ,p_event_id                 => l_array_event_id(Idx)
180638       ,p_event_class_code         => l_array_class_code(Idx)
180639       ,p_event_type_code          => l_array_event_type(Idx)
180640       ,p_event_number             => l_array_event_number(Idx)
180641       ,p_event_date               => l_array_event_date(Idx)
180642       ,p_transaction_date         => l_array_transaction_date(Idx)
180643       ,p_reference_num_1          => l_array_reference_num_1(Idx)
180644       ,p_reference_num_2          => l_array_reference_num_2(Idx)
180645       ,p_reference_num_3          => l_array_reference_num_3(Idx)
180646       ,p_reference_num_4          => l_array_reference_num_4(Idx)
180647       ,p_reference_char_1         => l_array_reference_char_1(Idx)
180648       ,p_reference_char_2         => l_array_reference_char_2(Idx)
180649       ,p_reference_char_3         => l_array_reference_char_3(Idx)
180650       ,p_reference_char_4         => l_array_reference_char_4(Idx)
180651       ,p_reference_date_1         => l_array_reference_date_1(Idx)
180652       ,p_reference_date_2         => l_array_reference_date_2(Idx)
180653       ,p_reference_date_3         => l_array_reference_date_3(Idx)
180654       ,p_reference_date_4         => l_array_reference_date_4(Idx)
180655       ,p_event_created_by         => l_array_event_created_by(Idx)
180656       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
180657        --
180658 END IF;
180659 
180660 
180661 
180662 --
180663 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
180664 
180665 l_acct_reversal_source := SUBSTR(NULL, 1,30);
180666 
180667 IF l_continue_with_lines THEN
180668    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
180669       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
180670 
180671       xla_accounting_err_pkg.build_message
180672          (p_appli_s_name            => 'XLA'
180673          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
180674          ,p_token_1                 => 'LINE_NUMBER'
180675          ,p_value_1                 => l_array_extract_line_num(Idx)
180676          ,p_token_2                 => 'PRODUCT_NAME'
180677          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
180678          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
180679          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
180680          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
180681 
180682    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
180683       --
180684       -- following sets the accounting attributes needed to reverse
180685       -- accounting for a distributeion
180686       --
180687 
180688       --
180689       -- 5217187
180690       --
180691       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
180692       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
180693                                        g_array_event(l_event_id).array_value_num('header_index'));
180694       --
180695       --
180696 
180697       -- No reversal code generated
180698 
180699       xla_ae_lines_pkg.SetAcctReversalAttrs
180700          (p_event_id             => l_event_id
180701          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
180702          ,p_calculate_acctd_flag => l_calculate_acctd_flag
180703          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
180704    END IF;
180705 
180706    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
180707        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
180708 
180709 --
180710 AcctLineType_61 (
180711  p_application_id  => p_application_id
180712  ,p_event_id     => l_event_id
180713  ,p_calculate_acctd_flag => l_calculate_acctd_flag
180714  ,p_calculate_g_l_flag => l_calculate_g_l_flag
180715  ,p_actual_flag => l_actual_flag
180716  ,p_balance_type_code => l_balance_type_code
180717  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180718  
180719  , p_source_4 => l_array_source_4(Idx)
180720  , p_source_11 => l_array_source_11(Idx)
180721  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180722  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180723  , p_source_15 => l_array_source_15(Idx)
180724  , p_source_18 => l_array_source_18(Idx)
180725  , p_source_19 => l_array_source_19(Idx)
180726  , p_source_20 => l_array_source_20(Idx)
180727  , p_source_21 => l_array_source_21(Idx)
180728  , p_source_22 => l_array_source_22(Idx)
180729  , p_source_24 => l_array_source_24(Idx)
180730  );
180731 If(l_balance_type_code = 'A') THEN
180732   l_actual_gain_loss_ref := l_gain_or_loss_ref;
180733 END IF;
180734 
180735 --
180736 
180737 
180738 --
180739 AcctLineType_80 (
180740  p_application_id  => p_application_id
180741  ,p_event_id     => l_event_id
180742  ,p_calculate_acctd_flag => l_calculate_acctd_flag
180743  ,p_calculate_g_l_flag => l_calculate_g_l_flag
180744  ,p_actual_flag => l_actual_flag
180745  ,p_balance_type_code => l_balance_type_code
180746  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180747  
180748  , p_source_4 => l_array_source_4(Idx)
180749  , p_source_11 => l_array_source_11(Idx)
180750  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180751  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180752  , p_source_15 => l_array_source_15(Idx)
180753  , p_source_18 => l_array_source_18(Idx)
180754  , p_source_19 => l_array_source_19(Idx)
180755  , p_source_20 => l_array_source_20(Idx)
180756  , p_source_21 => l_array_source_21(Idx)
180757  , p_source_22 => l_array_source_22(Idx)
180758  , p_source_24 => l_array_source_24(Idx)
180759  );
180760 If(l_balance_type_code = 'A') THEN
180761   l_actual_gain_loss_ref := l_gain_or_loss_ref;
180762 END IF;
180763 
180764 --
180765 
180766 
180767 --
180768 AcctLineType_91 (
180769  p_application_id  => p_application_id
180770  ,p_event_id     => l_event_id
180771  ,p_calculate_acctd_flag => l_calculate_acctd_flag
180772  ,p_calculate_g_l_flag => l_calculate_g_l_flag
180773  ,p_actual_flag => l_actual_flag
180774  ,p_balance_type_code => l_balance_type_code
180775  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180776  
180777  , p_source_4 => l_array_source_4(Idx)
180778  , p_source_11 => l_array_source_11(Idx)
180779  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180780  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180781  , p_source_15 => l_array_source_15(Idx)
180782  , p_source_18 => l_array_source_18(Idx)
180783  , p_source_19 => l_array_source_19(Idx)
180784  , p_source_20 => l_array_source_20(Idx)
180785  , p_source_21 => l_array_source_21(Idx)
180786  , p_source_22 => l_array_source_22(Idx)
180787  , p_source_24 => l_array_source_24(Idx)
180788  );
180789 If(l_balance_type_code = 'A') THEN
180790   l_actual_gain_loss_ref := l_gain_or_loss_ref;
180791 END IF;
180792 
180793 --
180794 
180795 
180796 --
180797 AcctLineType_98 (
180798  p_application_id  => p_application_id
180799  ,p_event_id     => l_event_id
180800  ,p_calculate_acctd_flag => l_calculate_acctd_flag
180801  ,p_calculate_g_l_flag => l_calculate_g_l_flag
180802  ,p_actual_flag => l_actual_flag
180803  ,p_balance_type_code => l_balance_type_code
180804  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180805  
180806  , p_source_4 => l_array_source_4(Idx)
180807  , p_source_11 => l_array_source_11(Idx)
180808  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180809  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180810  , p_source_15 => l_array_source_15(Idx)
180811  , p_source_18 => l_array_source_18(Idx)
180812  , p_source_19 => l_array_source_19(Idx)
180813  , p_source_20 => l_array_source_20(Idx)
180814  , p_source_21 => l_array_source_21(Idx)
180815  , p_source_22 => l_array_source_22(Idx)
180816  , p_source_24 => l_array_source_24(Idx)
180817  );
180818 If(l_balance_type_code = 'A') THEN
180819   l_actual_gain_loss_ref := l_gain_or_loss_ref;
180820 END IF;
180821 
180822 --
180823 
180824 
180825 --
180826 AcctLineType_108 (
180827  p_application_id  => p_application_id
180828  ,p_event_id     => l_event_id
180829  ,p_calculate_acctd_flag => l_calculate_acctd_flag
180830  ,p_calculate_g_l_flag => l_calculate_g_l_flag
180831  ,p_actual_flag => l_actual_flag
180832  ,p_balance_type_code => l_balance_type_code
180833  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180834  
180835  , p_source_4 => l_array_source_4(Idx)
180836  , p_source_11 => l_array_source_11(Idx)
180837  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180838  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180839  , p_source_15 => l_array_source_15(Idx)
180840  , p_source_18 => l_array_source_18(Idx)
180841  , p_source_19 => l_array_source_19(Idx)
180842  , p_source_20 => l_array_source_20(Idx)
180843  , p_source_21 => l_array_source_21(Idx)
180844  , p_source_22 => l_array_source_22(Idx)
180845  , p_source_24 => l_array_source_24(Idx)
180846  );
180847 If(l_balance_type_code = 'A') THEN
180848   l_actual_gain_loss_ref := l_gain_or_loss_ref;
180849 END IF;
180850 
180851 --
180852 
180853 
180854 --
180855 AcctLineType_148 (
180856  p_application_id  => p_application_id
180857  ,p_event_id     => l_event_id
180858  ,p_calculate_acctd_flag => l_calculate_acctd_flag
180859  ,p_calculate_g_l_flag => l_calculate_g_l_flag
180860  ,p_actual_flag => l_actual_flag
180861  ,p_balance_type_code => l_balance_type_code
180862  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180863  
180864  , p_source_4 => l_array_source_4(Idx)
180865  , p_source_11 => l_array_source_11(Idx)
180866  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180867  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180868  , p_source_15 => l_array_source_15(Idx)
180869  , p_source_18 => l_array_source_18(Idx)
180870  , p_source_19 => l_array_source_19(Idx)
180871  , p_source_20 => l_array_source_20(Idx)
180872  , p_source_21 => l_array_source_21(Idx)
180873  , p_source_22 => l_array_source_22(Idx)
180874  , p_source_24 => l_array_source_24(Idx)
180875  );
180876 If(l_balance_type_code = 'A') THEN
180877   l_actual_gain_loss_ref := l_gain_or_loss_ref;
180878 END IF;
180879 
180880 --
180881 
180882 
180883 --
180884 AcctLineType_165 (
180885  p_application_id  => p_application_id
180886  ,p_event_id     => l_event_id
180887  ,p_calculate_acctd_flag => l_calculate_acctd_flag
180888  ,p_calculate_g_l_flag => l_calculate_g_l_flag
180889  ,p_actual_flag => l_actual_flag
180890  ,p_balance_type_code => l_balance_type_code
180891  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180892  
180893  , p_source_4 => l_array_source_4(Idx)
180894  , p_source_11 => l_array_source_11(Idx)
180895  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180896  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180897  , p_source_15 => l_array_source_15(Idx)
180898  , p_source_18 => l_array_source_18(Idx)
180899  , p_source_19 => l_array_source_19(Idx)
180900  , p_source_20 => l_array_source_20(Idx)
180901  , p_source_21 => l_array_source_21(Idx)
180902  , p_source_22 => l_array_source_22(Idx)
180903  , p_source_24 => l_array_source_24(Idx)
180904  );
180905 If(l_balance_type_code = 'A') THEN
180906   l_actual_gain_loss_ref := l_gain_or_loss_ref;
180907 END IF;
180908 
180909 --
180910 
180911 
180912 --
180913 AcctLineType_198 (
180914  p_application_id  => p_application_id
180915  ,p_event_id     => l_event_id
180916  ,p_calculate_acctd_flag => l_calculate_acctd_flag
180917  ,p_calculate_g_l_flag => l_calculate_g_l_flag
180918  ,p_actual_flag => l_actual_flag
180919  ,p_balance_type_code => l_balance_type_code
180920  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180921  
180922  , p_source_4 => l_array_source_4(Idx)
180923  , p_source_11 => l_array_source_11(Idx)
180924  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180925  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180926  , p_source_15 => l_array_source_15(Idx)
180927  , p_source_18 => l_array_source_18(Idx)
180928  , p_source_19 => l_array_source_19(Idx)
180929  , p_source_20 => l_array_source_20(Idx)
180930  , p_source_21 => l_array_source_21(Idx)
180931  , p_source_22 => l_array_source_22(Idx)
180932  , p_source_24 => l_array_source_24(Idx)
180933  );
180934 If(l_balance_type_code = 'A') THEN
180935   l_actual_gain_loss_ref := l_gain_or_loss_ref;
180936 END IF;
180937 
180938 --
180939 
180940 
180941 --
180942 AcctLineType_221 (
180943  p_application_id  => p_application_id
180944  ,p_event_id     => l_event_id
180945  ,p_calculate_acctd_flag => l_calculate_acctd_flag
180946  ,p_calculate_g_l_flag => l_calculate_g_l_flag
180947  ,p_actual_flag => l_actual_flag
180948  ,p_balance_type_code => l_balance_type_code
180949  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180950  
180951  , p_source_4 => l_array_source_4(Idx)
180952  , p_source_11 => l_array_source_11(Idx)
180953  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180954  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180955  , p_source_15 => l_array_source_15(Idx)
180956  , p_source_18 => l_array_source_18(Idx)
180957  , p_source_19 => l_array_source_19(Idx)
180958  , p_source_20 => l_array_source_20(Idx)
180959  , p_source_21 => l_array_source_21(Idx)
180960  , p_source_22 => l_array_source_22(Idx)
180961  , p_source_24 => l_array_source_24(Idx)
180962  );
180963 If(l_balance_type_code = 'A') THEN
180964   l_actual_gain_loss_ref := l_gain_or_loss_ref;
180965 END IF;
180966 
180967 --
180968 
180969       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
180970       -- or secondary ledger that has different currency with primary
180971       -- or alc that is calculated by sla
180972       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
180973             (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'))
180974 
180975 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
180976 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
180977           AND (l_actual_flag = 'A')) THEN
180978         XLA_AE_LINES_PKG.CreateGainOrLossLines(
180979           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
180980          ,p_application_id   => p_application_id
180981          ,p_amb_context_code => 'DEFAULT'
180982          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
180983          ,p_event_class_code => C_EVENT_CLASS_CODE
180984          ,p_event_type_code  => C_EVENT_TYPE_CODE
180985          
180986          ,p_gain_ccid        => -1
180987          ,p_loss_ccid        => -1
180988 
180989          ,p_actual_flag      => l_actual_flag
180990          ,p_enc_flag         => null
180991          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
180992          ,p_enc_g_l_ref      => null
180993          );
180994       END IF;
180995    END IF;
180996 END IF;
180997 
180998    ELSE
180999       --
181000       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
181001       --
181002       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181003          trace
181004             (p_msg      => 'Trancaction revesal option is Y'
181005             ,p_level    => C_LEVEL_STATEMENT
181006             ,p_module   => l_log_module);
181007       END IF;
181008    END IF;
181009 
181010 END LOOP;
181011 l_result := XLA_AE_LINES_PKG.InsertLines ;
181012 end loop;
181013 close line_cur;
181014 
181015 
181016 --
181017 -- insert headers into xla_ae_headers_gt table
181018 --
181019 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
181020 
181021 -- insert into errors table here.
181022 
181023 END LOOP;
181024 
181025 --
181026 -- 4865292
181027 --
181028 -- Compare g_hdr_extract_count with event count in
181029 -- CreateHeadersAndLines.
181030 --
181031 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
181032 
181033 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181034    trace (p_msg     => '# rows extracted from header extract objects '
181035                     || ' (running total): '
181036                     || g_hdr_extract_count
181037          ,p_level   => C_LEVEL_STATEMENT
181038          ,p_module  => l_log_module);
181039 END IF;
181040 
181041 CLOSE header_cur;
181042 --
181043 
181044 --
181045 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181046    trace
181047       (p_msg      => 'END of EventType_281'
181048       ,p_level    => C_LEVEL_PROCEDURE
181049       ,p_module   => l_log_module);
181050 END IF;
181051 --
181052 RETURN l_result;
181053 EXCEPTION
181054 WHEN xla_exceptions_pkg.application_exception THEN
181055    
181056 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
181057 
181058    
181059 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
181060 
181061    RAISE;
181062 
181063 WHEN NO_DATA_FOUND THEN
181064 
181065 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
181066 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
181067 
181068 FOR header_record IN header_cur
181069 LOOP
181070     l_array_header_events(header_record.event_id) := header_record.event_id;
181071 END LOOP;
181072 
181073 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
181074 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
181075 
181076 fnd_file.put_line(fnd_file.LOG, '                    ');
181077 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
181078 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
181079 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
181080 
181081 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
181082 LOOP
181083 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
181084 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
181085         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
181086 	END IF;
181087 END LOOP;
181088 
181089 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
181090 fnd_file.put_line(fnd_file.LOG, '                    ');
181091 
181092 
181093 xla_exceptions_pkg.raise_message
181094       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_281');
181095 
181096 
181097 WHEN OTHERS THEN
181098    xla_exceptions_pkg.raise_message
181099       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_281');
181100 END EventType_281;
181101 --
181102 
181103 ---------------------------------------
181104 --
181105 -- PRIVATE PROCEDURE
181106 --         insert_sources_282
181107 --
181108 ----------------------------------------
181109 --
181110 PROCEDURE insert_sources_282(
181111                                 p_target_ledger_id       IN NUMBER
181112                               , p_language               IN VARCHAR2
181113                               , p_sla_ledger_id          IN NUMBER
181114                               , p_pad_start_date         IN DATE
181115                               , p_pad_end_date           IN DATE
181116                          )
181117 IS
181118 
181119 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP_TP';
181120 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
181121 p_apps_owner                   VARCHAR2(30);
181122 l_log_module                   VARCHAR2(240);
181123 BEGIN
181124 IF g_log_enabled THEN
181125       l_log_module := C_DEFAULT_MODULE||'.insert_sources_282';
181126 END IF;
181127 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181128 
181129       trace
181130          (p_msg      => 'BEGIN of insert_sources_282'
181131          ,p_level    => C_LEVEL_PROCEDURE
181132          ,p_module   => l_log_module);
181133 
181134 END IF;
181135 
181136 -- select APPS owner
181137 SELECT oracle_username
181138   INTO p_apps_owner
181139   FROM fnd_oracle_userid
181140  WHERE read_only_flag = 'U'
181141 ;
181142 
181143 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181144       trace
181145          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
181146                         ' - p_language = '||p_language||
181147                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
181148                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
181149                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
181150                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
181151          ,p_level    => C_LEVEL_STATEMENT
181152          ,p_module   => l_log_module);
181153 END IF;
181154 
181155 
181156 --
181157 INSERT INTO xla_diag_sources --hdr1
181158 (
181159         event_id
181160       , ledger_id
181161       , sla_ledger_id
181162       , description_language
181163       , object_name
181164       , object_type_code
181165       , line_number
181166       , source_application_id
181167       , source_type_code
181168       , source_code
181169       , source_value
181170       , source_meaning
181171       , created_by
181172       , creation_date
181173       , last_update_date
181174       , last_updated_by
181175       , last_update_login
181176       , program_update_date
181177       , program_application_id
181178       , program_id
181179       , request_id
181180 )
181181 SELECT
181182         event_id
181183       , p_target_ledger_id
181184       , p_sla_ledger_id
181185       , p_language
181186       , object_name
181187       , object_type_code
181188       , line_number
181189       , source_application_id
181190       , source_type_code
181191       , source_code
181192       , SUBSTR(source_value ,1,1996)
181193       , SUBSTR(source_meaning,1,200)
181194       , xla_environment_pkg.g_Usr_Id
181195       , TRUNC(SYSDATE)
181196       , TRUNC(SYSDATE)
181197       , xla_environment_pkg.g_Usr_Id
181198       , xla_environment_pkg.g_Login_Id
181199       , TRUNC(SYSDATE)
181200       , xla_environment_pkg.g_Prog_Appl_Id
181201       , xla_environment_pkg.g_Prog_Id
181202       , xla_environment_pkg.g_Req_Id
181203   FROM (
181204        SELECT xet.event_id                  event_id
181205             , 0                             line_number
181206             , CASE r
181207                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
181208                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
181209                 
181210                ELSE null
181211               END                           object_name
181212             , CASE r
181213                 WHEN 1 THEN 'HEADER' 
181214                 WHEN 2 THEN 'HEADER' 
181215                 
181216                 ELSE null
181217               END                           object_type_code
181218             , CASE r
181219                 WHEN 1 THEN '707' 
181220                 WHEN 2 THEN '707' 
181221                 
181222                 ELSE null
181223               END                           source_application_id
181224             , 'S'             source_type_code
181225             , CASE r
181226                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
181227                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
181228                 
181229                 ELSE null
181230               END                           source_code
181231             , CASE r
181232                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
181233                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
181234                 
181235                 ELSE null
181236               END                           source_value
181237             , CASE r
181238                 WHEN 1 THEN fvl12.meaning
181239                 WHEN 2 THEN fvl38.meaning
181240                 
181241                 ELSE null
181242               END               source_meaning
181243         FROM xla_events_gt     xet  
181244       , CST_XLA_INV_HEADERS_V  h1
181245   , fnd_lookup_values    fvl12
181246   , fnd_lookup_values    fvl38
181247             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
181248        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
181249          AND xet.event_type_code = C_EVENT_TYPE_CODE
181250             AND h1.event_id = xet.event_id
181251    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
181252   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
181253   AND fvl12.view_application_id(+) = 700
181254   AND fvl12.language(+)            = USERENV('LANG')
181255      AND fvl38.lookup_type(+)         = 'YES_NO'
181256   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
181257   AND fvl38.view_application_id(+) = 0
181258   AND fvl38.language(+)            = USERENV('LANG')
181259   
181260 )
181261 ;
181262 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181263 
181264       trace
181265          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
181266          ,p_level    => C_LEVEL_STATEMENT
181267          ,p_module   => l_log_module);
181268 
181269 END IF;
181270 --
181271 
181272 
181273 
181274 --
181275 INSERT INTO xla_diag_sources --line1
181276 (
181277         event_id
181278       , ledger_id
181279       , sla_ledger_id
181280       , description_language
181281       , object_name
181282       , object_type_code
181283       , line_number
181284       , source_application_id
181285       , source_type_code
181286       , source_code
181287       , source_value
181288       , source_meaning
181289       , created_by
181290       , creation_date
181291       , last_update_date
181292       , last_updated_by
181293       , last_update_login
181294       , program_update_date
181295       , program_application_id
181296       , program_id
181297       , request_id
181298 )
181299 SELECT  event_id
181300       , p_target_ledger_id
181301       , p_sla_ledger_id
181302       , p_language
181303       , object_name
181304       , object_type_code
181305       , line_number
181306       , source_application_id
181307       , source_type_code
181308       , source_code
181309       , SUBSTR(source_value,1,1996)
181310       , SUBSTR(source_meaning,1,200)
181311       , xla_environment_pkg.g_Usr_Id
181312       , TRUNC(SYSDATE)
181313       , TRUNC(SYSDATE)
181314       , xla_environment_pkg.g_Usr_Id
181315       , xla_environment_pkg.g_Login_Id
181316       , TRUNC(SYSDATE)
181317       , xla_environment_pkg.g_Prog_Appl_Id
181318       , xla_environment_pkg.g_Prog_Id
181319       , xla_environment_pkg.g_Req_Id
181320   FROM (
181321        SELECT xet.event_id                  event_id
181322             , l2.line_number                 line_number
181323             , CASE r
181324                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
181325                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
181326                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
181327                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
181328                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
181329                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
181330                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
181331                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
181332                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
181333                 
181334                ELSE null
181335               END                           object_name
181336             , CASE r
181337                 WHEN 1 THEN 'LINE' 
181338                 WHEN 2 THEN 'LINE' 
181339                 WHEN 3 THEN 'LINE' 
181340                 WHEN 4 THEN 'LINE' 
181341                 WHEN 5 THEN 'LINE' 
181342                 WHEN 6 THEN 'LINE' 
181343                 WHEN 7 THEN 'LINE' 
181344                 WHEN 8 THEN 'LINE' 
181345                 WHEN 9 THEN 'LINE' 
181346                 
181347                 ELSE null
181348               END                           object_type_code
181349             , CASE r
181350                 WHEN 1 THEN '707' 
181351                 WHEN 2 THEN '707' 
181352                 WHEN 3 THEN '707' 
181353                 WHEN 4 THEN '707' 
181354                 WHEN 5 THEN '707' 
181355                 WHEN 6 THEN '707' 
181356                 WHEN 7 THEN '707' 
181357                 WHEN 8 THEN '707' 
181358                 WHEN 9 THEN '707' 
181359                 
181360                 ELSE null
181361               END                           source_application_id
181362             , 'S'             source_type_code
181363             , CASE r
181364                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
181365                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
181366                 WHEN 3 THEN 'CURRENCY_CODE' 
181367                 WHEN 4 THEN 'ENTERED_AMOUNT' 
181368                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
181369                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
181370                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
181371                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
181372                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
181373                 
181374                 ELSE null
181375               END                           source_code
181376             , CASE r
181377                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
181378                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
181379                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
181380                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
181381                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
181382                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
181383                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
181384                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
181385                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
181386                 
181387                 ELSE null
181388               END                           source_value
181389             , null              source_meaning
181390          FROM  xla_events_gt     xet  
181391         , CST_XLA_INV_LINES_V  l2
181392             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
181393         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
181394           AND xet.event_type_code = C_EVENT_TYPE_CODE
181395             AND l2.event_id          = xet.event_id
181396 
181397 )
181398 ;
181399 --
181400 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181401 
181402       trace
181403          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
181404          ,p_level    => C_LEVEL_STATEMENT
181405          ,p_module   => l_log_module);
181406 
181407 END IF;
181408 
181409 
181410 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181411       trace
181412          (p_msg      => 'END of insert_sources_282'
181413          ,p_level    => C_LEVEL_PROCEDURE
181414          ,p_module   => l_log_module);
181415 END IF;
181416 EXCEPTION
181417   WHEN xla_exceptions_pkg.application_exception THEN
181418       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
181419             trace
181420                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
181421                ,p_level    => C_LEVEL_EXCEPTION
181422                ,p_module   => l_log_module);
181423       END IF;
181424       RAISE;
181425   WHEN OTHERS THEN
181426       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
181427             trace
181428                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
181429                ,p_level    => C_LEVEL_EXCEPTION
181430                ,p_module   => l_log_module);
181431        END IF;
181432        xla_exceptions_pkg.raise_message
181433            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_282');
181434 END insert_sources_282;
181435 --
181436 
181437 ---------------------------------------
181438 --
181439 -- PRIVATE FUNCTION
181440 --         EventType_282
181441 --
181442 ----------------------------------------
181443 --
181444 FUNCTION EventType_282
181445        (p_application_id         IN NUMBER
181446        ,p_base_ledger_id         IN NUMBER
181447        ,p_target_ledger_id       IN NUMBER
181448        ,p_language               IN VARCHAR2
181449        ,p_currency_code          IN VARCHAR2
181450        ,p_sla_ledger_id          IN NUMBER
181451        ,p_pad_start_date         IN DATE
181452        ,p_pad_end_date           IN DATE
181453        ,p_primary_ledger_id      IN NUMBER)
181454 RETURN BOOLEAN IS
181455 --
181456 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP_TP';
181457 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
181458 
181459 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
181460 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
181461 --
181462 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181463 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181464 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
181465 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181466 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181467 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
181468 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
181469 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181470 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181471 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181472 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181473 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181474 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181475 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181476 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181477 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181478 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181479 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181480 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181481 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181482 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181483 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181484 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
181485 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
181486 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
181487 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
181488 
181489 l_event_id                             NUMBER;
181490 l_previous_event_id                    NUMBER;
181491 l_first_event_id                       NUMBER;
181492 l_last_event_id                        NUMBER;
181493 
181494 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
181495 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
181496 --
181497 --
181498 l_result                    BOOLEAN := TRUE;
181499 l_rows                      NUMBER  := 1000;
181500 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Shipment, Transfer Price';
181501 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
181502 l_description               VARCHAR2(4000);
181503 l_transaction_reversal      NUMBER;
181504 l_ae_header_id              NUMBER;
181505 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
181506 l_log_module                VARCHAR2(240);
181507 --
181508 l_acct_reversal_source      VARCHAR2(30);
181509 l_trx_reversal_source       VARCHAR2(30);
181510 
181511 l_continue_with_lines       BOOLEAN := TRUE;
181512 --
181513 l_acc_rev_gl_date_source    DATE;                      -- 4262811
181514 --
181515 type t_array_event_id is table of number index by binary_integer;
181516 
181517 l_rec_array_event                    t_rec_array_event;
181518 l_null_rec_array_event               t_rec_array_event;
181519 l_array_ae_header_id                 xla_number_array_type;
181520 l_actual_flag                        VARCHAR2(1) := NULL;
181521 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
181522 l_balance_type_code                  VARCHAR2(1) :=NULL;
181523 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
181524 
181525 --
181526 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
181527 --
181528 
181529 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
181530 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
181531 
181532 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
181533 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
181534 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
181535 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
181536 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
181537 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
181538 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
181539 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
181540 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
181541 
181542 l_array_source_12              t_array_source_12;
181543 l_array_source_12_meaning      t_array_lookup_meaning;
181544 l_array_source_38              t_array_source_38;
181545 l_array_source_38_meaning      t_array_lookup_meaning;
181546 
181547 l_array_source_4      t_array_source_4;
181548 l_array_source_11      t_array_source_11;
181549 l_array_source_15      t_array_source_15;
181550 l_array_source_18      t_array_source_18;
181551 l_array_source_19      t_array_source_19;
181552 l_array_source_20      t_array_source_20;
181553 l_array_source_21      t_array_source_21;
181554 l_array_source_22      t_array_source_22;
181555 l_array_source_24      t_array_source_24;
181556 
181557 --
181558 CURSOR header_cur
181559 IS
181560 SELECT /*+ leading(xet) cardinality(xet,1) */
181561 -- Event Type Code: UDIR_INTERORG_SHIP_TP
181562 -- Event Class Code: USER_DEFINE
181563     xet.entity_id
181564   , xet.legal_entity_id
181565   , xet.entity_code
181566   , xet.transaction_number
181567   , xet.event_id
181568   , xet.event_class_code
181569   , xet.event_type_code
181570   , xet.event_number
181571   , xet.event_date
181572   , xet.transaction_date
181573   , xet.reference_num_1
181574   , xet.reference_num_2
181575   , xet.reference_num_3
181576   , xet.reference_num_4
181577   , xet.reference_char_1
181578   , xet.reference_char_2
181579   , xet.reference_char_3
181580   , xet.reference_char_4
181581   , xet.reference_date_1
181582   , xet.reference_date_2
181583   , xet.reference_date_3
181584   , xet.reference_date_4
181585   , xet.event_created_by
181586   , xet.budgetary_control_flag 
181587   , h1.DISTRIBUTION_TYPE    source_12
181588   , fvl12.meaning   source_12_meaning
181589   , h1.TRANSFER_TO_GL_INDICATOR    source_38
181590   , fvl38.meaning   source_38_meaning
181591   FROM xla_events_gt     xet 
181592   , CST_XLA_INV_HEADERS_V  h1
181593   , fnd_lookup_values    fvl12
181594   , fnd_lookup_values    fvl38
181595  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
181596    and xet.event_type_code = C_EVENT_TYPE_CODE
181597    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
181598    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
181599   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
181600   AND fvl12.view_application_id(+) = 700
181601   AND fvl12.language(+)            = USERENV('LANG')
181602      AND fvl38.lookup_type(+)         = 'YES_NO'
181603   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
181604   AND fvl38.view_application_id(+) = 0
181605   AND fvl38.language(+)            = USERENV('LANG')
181606   
181607  ORDER BY event_id
181608 ;
181609 
181610 
181611 --
181612 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
181613 IS
181614 SELECT /*+ leading(xet) cardinality(xet,1) */
181615 -- Event Type Code: UDIR_INTERORG_SHIP_TP
181616 -- Event Class Code: USER_DEFINE
181617     xet.entity_id
181618    ,xet.legal_entity_id
181619    ,xet.entity_code
181620    ,xet.transaction_number
181621    ,xet.event_id
181622    ,xet.event_class_code
181623    ,xet.event_type_code
181624    ,xet.event_number
181625    ,xet.event_date
181626    ,xet.transaction_date
181627    ,xet.reference_num_1
181628    ,xet.reference_num_2
181629    ,xet.reference_num_3
181630    ,xet.reference_num_4
181631    ,xet.reference_char_1
181632    ,xet.reference_char_2
181633    ,xet.reference_char_3
181634    ,xet.reference_char_4
181635    ,xet.reference_date_1
181636    ,xet.reference_date_2
181637    ,xet.reference_date_3
181638    ,xet.reference_date_4
181639    ,xet.event_created_by
181640    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
181641   , l2.CODE_COMBINATION_ID    source_4
181642   , l2.DISTRIBUTION_IDENTIFIER    source_11
181643   , l2.CURRENCY_CODE    source_15
181644   , l2.ENTERED_AMOUNT    source_18
181645   , l2.CURRENCY_CONVERSION_DATE    source_19
181646   , l2.CURRENCY_CONVERSION_RATE    source_20
181647   , l2.CURRENCY_CONVERSION_TYPE    source_21
181648   , l2.ACCOUNTED_AMOUNT    source_22
181649   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
181650   FROM xla_events_gt     xet 
181651   , CST_XLA_INV_LINES_V  l2
181652  WHERE xet.event_id between x_first_event_id and x_last_event_id
181653    and xet.event_date between p_pad_start_date and p_pad_end_date
181654    and xet.event_type_code = C_EVENT_TYPE_CODE
181655    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
181656 ;
181657 
181658 --
181659 BEGIN
181660 IF g_log_enabled THEN
181661    l_log_module := C_DEFAULT_MODULE||'.EventType_282';
181662 END IF;
181663 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181664    trace
181665       (p_msg      => 'BEGIN of EventType_282'
181666       ,p_level    => C_LEVEL_PROCEDURE
181667       ,p_module   => l_log_module);
181668 END IF;
181669 
181670 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181671    trace
181672       (p_msg      => 'p_application_id = '||p_application_id||
181673                      ' - p_base_ledger_id = '||p_base_ledger_id||
181674                      ' - p_target_ledger_id  = '||p_target_ledger_id||
181675                      ' - p_language = '||p_language||
181676                      ' - p_currency_code = '||p_currency_code||
181677                      ' - p_sla_ledger_id = '||p_sla_ledger_id
181678       ,p_level    => C_LEVEL_STATEMENT
181679       ,p_module   => l_log_module);
181680 END IF;
181681 --
181682 -- initialze arrays
181683 --
181684 g_array_event.DELETE;
181685 l_rec_array_event := l_null_rec_array_event;
181686 --
181687 --------------------------------------
181688 -- 4262811 Initialze MPA Line Number
181689 --------------------------------------
181690 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
181691 
181692 --
181693 
181694 --
181695 OPEN header_cur;
181696 --
181697 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181698    trace
181699    (p_msg      => 'SQL - FETCH header_cur'
181700    ,p_level    => C_LEVEL_STATEMENT
181701    ,p_module   => l_log_module);
181702 END IF;
181703 --
181704 LOOP
181705 FETCH header_cur BULK COLLECT INTO
181706         l_array_entity_id
181707       , l_array_legal_entity_id
181708       , l_array_entity_code
181709       , l_array_transaction_num
181710       , l_array_event_id
181711       , l_array_class_code
181712       , l_array_event_type
181713       , l_array_event_number
181714       , l_array_event_date
181715       , l_array_transaction_date
181716       , l_array_reference_num_1
181717       , l_array_reference_num_2
181718       , l_array_reference_num_3
181719       , l_array_reference_num_4
181720       , l_array_reference_char_1
181721       , l_array_reference_char_2
181722       , l_array_reference_char_3
181723       , l_array_reference_char_4
181724       , l_array_reference_date_1
181725       , l_array_reference_date_2
181726       , l_array_reference_date_3
181727       , l_array_reference_date_4
181728       , l_array_event_created_by
181729       , l_array_budgetary_control_flag 
181730       , l_array_source_12
181731       , l_array_source_12_meaning
181732       , l_array_source_38
181733       , l_array_source_38_meaning
181734       LIMIT l_rows;
181735 --
181736 IF (C_LEVEL_EVENT >= g_log_level) THEN
181737    trace
181738    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
181739    ,p_level    => C_LEVEL_EVENT
181740    ,p_module   => l_log_module);
181741 END IF;
181742 --
181743 EXIT WHEN l_array_entity_id.COUNT = 0;
181744 
181745 -- initialize arrays
181746 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
181747 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
181748 
181749 --
181750 -- Bug 4458708
181751 --
181752 XLA_AE_LINES_PKG.g_LineNumber := 0;
181753 
181754 
181755 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
181756 g_last_hdr_idx := l_array_event_id.LAST;
181757 --
181758 -- loop for the headers. Each iteration is for each header extract row
181759 -- fetched in header cursor
181760 --
181761 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
181762 
181763 --
181764 -- set event info as cache for other routines to refer event attributes
181765 --
181766 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
181767    (p_application_id           => p_application_id
181768    ,p_primary_ledger_id        => p_primary_ledger_id
181769    ,p_base_ledger_id           => p_base_ledger_id
181770    ,p_target_ledger_id         => p_target_ledger_id
181771    ,p_entity_id                => l_array_entity_id(hdr_idx)
181772    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
181773    ,p_entity_code              => l_array_entity_code(hdr_idx)
181774    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
181775    ,p_event_id                 => l_array_event_id(hdr_idx)
181776    ,p_event_class_code         => l_array_class_code(hdr_idx)
181777    ,p_event_type_code          => l_array_event_type(hdr_idx)
181778    ,p_event_number             => l_array_event_number(hdr_idx)
181779    ,p_event_date               => l_array_event_date(hdr_idx)
181780    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
181781    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
181782    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
181783    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
181784    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
181785    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
181786    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
181787    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
181788    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
181789    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
181790    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
181791    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
181792    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
181793    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
181794    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
181795 
181796 --
181797 -- set the status of entry to C_VALID (0)
181798 --
181799 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
181800 
181801 --
181802 -- initialize a row for ae header
181803 --
181804 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
181805 
181806 l_event_id := l_array_event_id(hdr_idx);
181807 
181808 --
181809 -- storing the hdr_idx for event. May be used by line cursor.
181810 --
181811 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
181812 
181813 --
181814 -- store sources from header extract. This can be improved to
181815 -- store only those sources from header extract that may be used in lines
181816 --
181817 
181818 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
181819 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
181820 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
181821 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
181822 
181823 --
181824 -- initilaize the status of ae headers for diffrent balance types
181825 -- the status is initialised to C_NOT_CREATED (2)
181826 --
181827 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
181828 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
181829 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
181830 
181831 --
181832 -- call api to validate and store accounting attributes for header
181833 --
181834 
181835 ------------------------------------------------------------
181836 -- Accrual Reversal : to get date for Standard Source (NONE)
181837 ------------------------------------------------------------
181838 l_acc_rev_gl_date_source := NULL;
181839 
181840      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
181841       l_rec_acct_attrs.array_date_value(1) := 
181842 xla_ae_sources_pkg.GetSystemSourceDate(
181843    p_source_code           => 'XLA_REFERENCE_DATE_1'
181844  , p_source_type_code      => 'Y'
181845  , p_source_application_id =>  602
181846 );
181847      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
181848       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
181849 
181850 
181851 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
181852 
181853 XLA_AE_HEADER_PKG.SetJeCategoryName;
181854 
181855 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
181856 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
181857 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
181858 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
181859 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
181860 
181861 
181862 -- No header level analytical criteria
181863 
181864 --
181865 --accounting attribute enhancement, bug 3612931
181866 --
181867 l_trx_reversal_source := SUBSTR(NULL, 1,30);
181868 
181869 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
181870    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
181871 
181872    xla_accounting_err_pkg.build_message
181873       (p_appli_s_name            => 'XLA'
181874       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
181875       ,p_token_1                 => 'ACCT_ATTR_NAME'
181876       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
181877       ,p_token_2                 => 'PRODUCT_NAME'
181878       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
181879       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
181880       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
181881       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
181882 
181883 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
181884    --
181885    -- following sets the accounting attributes needed to reverse
181886    -- accounting for a distributeion
181887    --
181888    xla_ae_lines_pkg.SetTrxReversalAttrs
181889       (p_event_id              => l_event_id
181890       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
181891       ,p_trx_reversal_source   => l_trx_reversal_source);
181892 
181893 END IF;
181894 
181895 
181896 ----------------------------------------------------------------
181897 -- 4262811 -  update the header statuses to invalid in need be
181898 ----------------------------------------------------------------
181899 --
181900 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
181901 
181902 
181903   -----------------------------------------------
181904   -- No accrual reversal for the event class/type
181905   -----------------------------------------------
181906 ----------------------------------------------------------------
181907 
181908 --
181909 -- this ends the header loop iteration for one bulk fetch
181910 --
181911 END LOOP;
181912 
181913 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
181914 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
181915 
181916 --
181917 -- insert dummy rows into lines gt table that were created due to
181918 -- transaction reversals
181919 --
181920 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
181921    l_result := XLA_AE_LINES_PKG.InsertLines;
181922 END IF;
181923 
181924 --
181925 -- reset the temp_line_num for each set of events fetched from header
181926 -- cursor rather than doing it for each new event in line cursor
181927 -- Bug 3939231
181928 --
181929 xla_ae_lines_pkg.g_temp_line_num := 0;
181930 
181931 
181932 
181933 --
181934 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
181935 --
181936 --
181937 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181938 
181939       trace
181940          (p_msg      => 'SQL - FETCH line_cur'
181941          ,p_level    => C_LEVEL_STATEMENT
181942          ,p_module   => l_log_module);
181943 
181944 END IF;
181945 --
181946 --
181947 LOOP
181948   --
181949   FETCH line_cur BULK COLLECT INTO
181950         l_array_entity_id
181951       , l_array_legal_entity_id
181952       , l_array_entity_code
181953       , l_array_transaction_num
181954       , l_array_event_id
181955       , l_array_class_code
181956       , l_array_event_type
181957       , l_array_event_number
181958       , l_array_event_date
181959       , l_array_transaction_date
181960       , l_array_reference_num_1
181961       , l_array_reference_num_2
181962       , l_array_reference_num_3
181963       , l_array_reference_num_4
181964       , l_array_reference_char_1
181965       , l_array_reference_char_2
181966       , l_array_reference_char_3
181967       , l_array_reference_char_4
181968       , l_array_reference_date_1
181969       , l_array_reference_date_2
181970       , l_array_reference_date_3
181971       , l_array_reference_date_4
181972       , l_array_event_created_by
181973       , l_array_budgetary_control_flag
181974       , l_array_extract_line_num 
181975       , l_array_source_4
181976       , l_array_source_11
181977       , l_array_source_15
181978       , l_array_source_18
181979       , l_array_source_19
181980       , l_array_source_20
181981       , l_array_source_21
181982       , l_array_source_22
181983       , l_array_source_24
181984       LIMIT l_rows;
181985 
181986   --
181987   IF (C_LEVEL_EVENT >= g_log_level) THEN
181988             trace
181989                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
181990                ,p_level    => C_LEVEL_EVENT
181991                ,p_module   => l_log_module);
181992   END IF;
181993   --
181994   EXIT WHEN l_array_entity_id.count = 0;
181995 
181996   XLA_AE_LINES_PKG.g_rec_lines := null;
181997 
181998 --
181999 -- Bug 4458708
182000 --
182001 XLA_AE_LINES_PKG.g_LineNumber := 0;
182002 --
182003 --
182004 
182005 FOR Idx IN 1..l_array_event_id.count LOOP
182006    --
182007    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
182008    --
182009    l_event_id := l_array_event_id(idx);  -- 5648433
182010 
182011    --
182012    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
182013    --
182014 
182015    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
182016              (g_array_event(l_event_id).array_value_num('header_index'))
182017          ,'N'
182018          ) <> 'Y'
182019    THEN
182020       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182021          trace
182022             (p_msg      => 'Trancaction revesal option is not Y '
182023             ,p_level    => C_LEVEL_STATEMENT
182024             ,p_module   => l_log_module);
182025       END IF;
182026 
182027 --
182028 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
182029 --
182030 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
182031 --
182032 -- set event info as cache for other routines to refer event attributes
182033 --
182034 
182035 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
182036    l_previous_event_id := l_event_id;
182037 
182038    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
182039       (p_application_id           => p_application_id
182040       ,p_primary_ledger_id        => p_primary_ledger_id
182041       ,p_base_ledger_id           => p_base_ledger_id
182042       ,p_target_ledger_id         => p_target_ledger_id
182043       ,p_entity_id                => l_array_entity_id(Idx)
182044       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
182045       ,p_entity_code              => l_array_entity_code(Idx)
182046       ,p_transaction_num          => l_array_transaction_num(Idx)
182047       ,p_event_id                 => l_array_event_id(Idx)
182048       ,p_event_class_code         => l_array_class_code(Idx)
182049       ,p_event_type_code          => l_array_event_type(Idx)
182050       ,p_event_number             => l_array_event_number(Idx)
182051       ,p_event_date               => l_array_event_date(Idx)
182052       ,p_transaction_date         => l_array_transaction_date(Idx)
182053       ,p_reference_num_1          => l_array_reference_num_1(Idx)
182054       ,p_reference_num_2          => l_array_reference_num_2(Idx)
182055       ,p_reference_num_3          => l_array_reference_num_3(Idx)
182056       ,p_reference_num_4          => l_array_reference_num_4(Idx)
182057       ,p_reference_char_1         => l_array_reference_char_1(Idx)
182058       ,p_reference_char_2         => l_array_reference_char_2(Idx)
182059       ,p_reference_char_3         => l_array_reference_char_3(Idx)
182060       ,p_reference_char_4         => l_array_reference_char_4(Idx)
182061       ,p_reference_date_1         => l_array_reference_date_1(Idx)
182062       ,p_reference_date_2         => l_array_reference_date_2(Idx)
182063       ,p_reference_date_3         => l_array_reference_date_3(Idx)
182064       ,p_reference_date_4         => l_array_reference_date_4(Idx)
182065       ,p_event_created_by         => l_array_event_created_by(Idx)
182066       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
182067        --
182068 END IF;
182069 
182070 
182071 
182072 --
182073 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
182074 
182075 l_acct_reversal_source := SUBSTR(NULL, 1,30);
182076 
182077 IF l_continue_with_lines THEN
182078    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
182079       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
182080 
182081       xla_accounting_err_pkg.build_message
182082          (p_appli_s_name            => 'XLA'
182083          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
182084          ,p_token_1                 => 'LINE_NUMBER'
182085          ,p_value_1                 => l_array_extract_line_num(Idx)
182086          ,p_token_2                 => 'PRODUCT_NAME'
182087          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
182088          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
182089          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
182090          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
182091 
182092    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
182093       --
182094       -- following sets the accounting attributes needed to reverse
182095       -- accounting for a distributeion
182096       --
182097 
182098       --
182099       -- 5217187
182100       --
182101       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
182102       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
182103                                        g_array_event(l_event_id).array_value_num('header_index'));
182104       --
182105       --
182106 
182107       -- No reversal code generated
182108 
182109       xla_ae_lines_pkg.SetAcctReversalAttrs
182110          (p_event_id             => l_event_id
182111          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
182112          ,p_calculate_acctd_flag => l_calculate_acctd_flag
182113          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
182114    END IF;
182115 
182116    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
182117        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
182118 
182119 --
182120 AcctLineType_67 (
182121  p_application_id  => p_application_id
182122  ,p_event_id     => l_event_id
182123  ,p_calculate_acctd_flag => l_calculate_acctd_flag
182124  ,p_calculate_g_l_flag => l_calculate_g_l_flag
182125  ,p_actual_flag => l_actual_flag
182126  ,p_balance_type_code => l_balance_type_code
182127  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182128  
182129  , p_source_4 => l_array_source_4(Idx)
182130  , p_source_11 => l_array_source_11(Idx)
182131  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182132  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182133  , p_source_15 => l_array_source_15(Idx)
182134  , p_source_18 => l_array_source_18(Idx)
182135  , p_source_19 => l_array_source_19(Idx)
182136  , p_source_20 => l_array_source_20(Idx)
182137  , p_source_21 => l_array_source_21(Idx)
182138  , p_source_22 => l_array_source_22(Idx)
182139  , p_source_24 => l_array_source_24(Idx)
182140  );
182141 If(l_balance_type_code = 'A') THEN
182142   l_actual_gain_loss_ref := l_gain_or_loss_ref;
182143 END IF;
182144 
182145 --
182146 
182147 
182148 --
182149 AcctLineType_71 (
182150  p_application_id  => p_application_id
182151  ,p_event_id     => l_event_id
182152  ,p_calculate_acctd_flag => l_calculate_acctd_flag
182153  ,p_calculate_g_l_flag => l_calculate_g_l_flag
182154  ,p_actual_flag => l_actual_flag
182155  ,p_balance_type_code => l_balance_type_code
182156  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182157  
182158  , p_source_4 => l_array_source_4(Idx)
182159  , p_source_11 => l_array_source_11(Idx)
182160  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182161  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182162  , p_source_15 => l_array_source_15(Idx)
182163  , p_source_18 => l_array_source_18(Idx)
182164  , p_source_19 => l_array_source_19(Idx)
182165  , p_source_20 => l_array_source_20(Idx)
182166  , p_source_21 => l_array_source_21(Idx)
182167  , p_source_22 => l_array_source_22(Idx)
182168  , p_source_24 => l_array_source_24(Idx)
182169  );
182170 If(l_balance_type_code = 'A') THEN
182171   l_actual_gain_loss_ref := l_gain_or_loss_ref;
182172 END IF;
182173 
182174 --
182175 
182176 
182177 --
182178 AcctLineType_83 (
182179  p_application_id  => p_application_id
182180  ,p_event_id     => l_event_id
182181  ,p_calculate_acctd_flag => l_calculate_acctd_flag
182182  ,p_calculate_g_l_flag => l_calculate_g_l_flag
182183  ,p_actual_flag => l_actual_flag
182184  ,p_balance_type_code => l_balance_type_code
182185  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182186  
182187  , p_source_4 => l_array_source_4(Idx)
182188  , p_source_11 => l_array_source_11(Idx)
182189  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182190  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182191  , p_source_15 => l_array_source_15(Idx)
182192  , p_source_18 => l_array_source_18(Idx)
182193  , p_source_19 => l_array_source_19(Idx)
182194  , p_source_20 => l_array_source_20(Idx)
182195  , p_source_21 => l_array_source_21(Idx)
182196  , p_source_22 => l_array_source_22(Idx)
182197  , p_source_24 => l_array_source_24(Idx)
182198  );
182199 If(l_balance_type_code = 'A') THEN
182200   l_actual_gain_loss_ref := l_gain_or_loss_ref;
182201 END IF;
182202 
182203 --
182204 
182205 
182206 --
182207 AcctLineType_95 (
182208  p_application_id  => p_application_id
182209  ,p_event_id     => l_event_id
182210  ,p_calculate_acctd_flag => l_calculate_acctd_flag
182211  ,p_calculate_g_l_flag => l_calculate_g_l_flag
182212  ,p_actual_flag => l_actual_flag
182213  ,p_balance_type_code => l_balance_type_code
182214  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182215  
182216  , p_source_4 => l_array_source_4(Idx)
182217  , p_source_11 => l_array_source_11(Idx)
182218  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182219  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182220  , p_source_15 => l_array_source_15(Idx)
182221  , p_source_18 => l_array_source_18(Idx)
182222  , p_source_19 => l_array_source_19(Idx)
182223  , p_source_20 => l_array_source_20(Idx)
182224  , p_source_21 => l_array_source_21(Idx)
182225  , p_source_22 => l_array_source_22(Idx)
182226  , p_source_24 => l_array_source_24(Idx)
182227  );
182228 If(l_balance_type_code = 'A') THEN
182229   l_actual_gain_loss_ref := l_gain_or_loss_ref;
182230 END IF;
182231 
182232 --
182233 
182234 
182235 --
182236 AcctLineType_111 (
182237  p_application_id  => p_application_id
182238  ,p_event_id     => l_event_id
182239  ,p_calculate_acctd_flag => l_calculate_acctd_flag
182240  ,p_calculate_g_l_flag => l_calculate_g_l_flag
182241  ,p_actual_flag => l_actual_flag
182242  ,p_balance_type_code => l_balance_type_code
182243  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182244  
182245  , p_source_4 => l_array_source_4(Idx)
182246  , p_source_11 => l_array_source_11(Idx)
182247  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182248  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182249  , p_source_15 => l_array_source_15(Idx)
182250  , p_source_18 => l_array_source_18(Idx)
182251  , p_source_19 => l_array_source_19(Idx)
182252  , p_source_20 => l_array_source_20(Idx)
182253  , p_source_21 => l_array_source_21(Idx)
182254  , p_source_22 => l_array_source_22(Idx)
182255  , p_source_24 => l_array_source_24(Idx)
182256  );
182257 If(l_balance_type_code = 'A') THEN
182258   l_actual_gain_loss_ref := l_gain_or_loss_ref;
182259 END IF;
182260 
182261 --
182262 
182263 
182264 --
182265 AcctLineType_149 (
182266  p_application_id  => p_application_id
182267  ,p_event_id     => l_event_id
182268  ,p_calculate_acctd_flag => l_calculate_acctd_flag
182269  ,p_calculate_g_l_flag => l_calculate_g_l_flag
182270  ,p_actual_flag => l_actual_flag
182271  ,p_balance_type_code => l_balance_type_code
182272  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182273  
182274  , p_source_4 => l_array_source_4(Idx)
182275  , p_source_11 => l_array_source_11(Idx)
182276  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182277  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182278  , p_source_15 => l_array_source_15(Idx)
182279  , p_source_18 => l_array_source_18(Idx)
182280  , p_source_19 => l_array_source_19(Idx)
182281  , p_source_20 => l_array_source_20(Idx)
182282  , p_source_21 => l_array_source_21(Idx)
182283  , p_source_22 => l_array_source_22(Idx)
182284  , p_source_24 => l_array_source_24(Idx)
182285  );
182286 If(l_balance_type_code = 'A') THEN
182287   l_actual_gain_loss_ref := l_gain_or_loss_ref;
182288 END IF;
182289 
182290 --
182291 
182292 
182293 --
182294 AcctLineType_172 (
182295  p_application_id  => p_application_id
182296  ,p_event_id     => l_event_id
182297  ,p_calculate_acctd_flag => l_calculate_acctd_flag
182298  ,p_calculate_g_l_flag => l_calculate_g_l_flag
182299  ,p_actual_flag => l_actual_flag
182300  ,p_balance_type_code => l_balance_type_code
182301  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182302  
182303  , p_source_4 => l_array_source_4(Idx)
182304  , p_source_11 => l_array_source_11(Idx)
182305  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182306  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182307  , p_source_15 => l_array_source_15(Idx)
182308  , p_source_18 => l_array_source_18(Idx)
182309  , p_source_19 => l_array_source_19(Idx)
182310  , p_source_20 => l_array_source_20(Idx)
182311  , p_source_21 => l_array_source_21(Idx)
182312  , p_source_22 => l_array_source_22(Idx)
182313  , p_source_24 => l_array_source_24(Idx)
182314  );
182315 If(l_balance_type_code = 'A') THEN
182316   l_actual_gain_loss_ref := l_gain_or_loss_ref;
182317 END IF;
182318 
182319 --
182320 
182321 
182322 --
182323 AcctLineType_181 (
182324  p_application_id  => p_application_id
182325  ,p_event_id     => l_event_id
182326  ,p_calculate_acctd_flag => l_calculate_acctd_flag
182327  ,p_calculate_g_l_flag => l_calculate_g_l_flag
182328  ,p_actual_flag => l_actual_flag
182329  ,p_balance_type_code => l_balance_type_code
182330  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182331  
182332  , p_source_4 => l_array_source_4(Idx)
182333  , p_source_11 => l_array_source_11(Idx)
182334  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182335  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182336  , p_source_15 => l_array_source_15(Idx)
182337  , p_source_18 => l_array_source_18(Idx)
182338  , p_source_19 => l_array_source_19(Idx)
182339  , p_source_20 => l_array_source_20(Idx)
182340  , p_source_21 => l_array_source_21(Idx)
182341  , p_source_22 => l_array_source_22(Idx)
182342  , p_source_24 => l_array_source_24(Idx)
182343  );
182344 If(l_balance_type_code = 'A') THEN
182345   l_actual_gain_loss_ref := l_gain_or_loss_ref;
182346 END IF;
182347 
182348 --
182349 
182350 
182351 --
182352 AcctLineType_226 (
182353  p_application_id  => p_application_id
182354  ,p_event_id     => l_event_id
182355  ,p_calculate_acctd_flag => l_calculate_acctd_flag
182356  ,p_calculate_g_l_flag => l_calculate_g_l_flag
182357  ,p_actual_flag => l_actual_flag
182358  ,p_balance_type_code => l_balance_type_code
182359  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182360  
182361  , p_source_4 => l_array_source_4(Idx)
182362  , p_source_11 => l_array_source_11(Idx)
182363  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182364  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182365  , p_source_15 => l_array_source_15(Idx)
182366  , p_source_18 => l_array_source_18(Idx)
182367  , p_source_19 => l_array_source_19(Idx)
182368  , p_source_20 => l_array_source_20(Idx)
182369  , p_source_21 => l_array_source_21(Idx)
182370  , p_source_22 => l_array_source_22(Idx)
182371  , p_source_24 => l_array_source_24(Idx)
182372  );
182373 If(l_balance_type_code = 'A') THEN
182374   l_actual_gain_loss_ref := l_gain_or_loss_ref;
182375 END IF;
182376 
182377 --
182378 
182379       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
182380       -- or secondary ledger that has different currency with primary
182381       -- or alc that is calculated by sla
182382       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
182383             (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'))
182384 
182385 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
182386 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
182387           AND (l_actual_flag = 'A')) THEN
182388         XLA_AE_LINES_PKG.CreateGainOrLossLines(
182389           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
182390          ,p_application_id   => p_application_id
182391          ,p_amb_context_code => 'DEFAULT'
182392          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
182393          ,p_event_class_code => C_EVENT_CLASS_CODE
182394          ,p_event_type_code  => C_EVENT_TYPE_CODE
182395          
182396          ,p_gain_ccid        => -1
182397          ,p_loss_ccid        => -1
182398 
182399          ,p_actual_flag      => l_actual_flag
182400          ,p_enc_flag         => null
182401          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
182402          ,p_enc_g_l_ref      => null
182403          );
182404       END IF;
182405    END IF;
182406 END IF;
182407 
182408    ELSE
182409       --
182410       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
182411       --
182412       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182413          trace
182414             (p_msg      => 'Trancaction revesal option is Y'
182415             ,p_level    => C_LEVEL_STATEMENT
182416             ,p_module   => l_log_module);
182417       END IF;
182418    END IF;
182419 
182420 END LOOP;
182421 l_result := XLA_AE_LINES_PKG.InsertLines ;
182422 end loop;
182423 close line_cur;
182424 
182425 
182426 --
182427 -- insert headers into xla_ae_headers_gt table
182428 --
182429 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
182430 
182431 -- insert into errors table here.
182432 
182433 END LOOP;
182434 
182435 --
182436 -- 4865292
182437 --
182438 -- Compare g_hdr_extract_count with event count in
182439 -- CreateHeadersAndLines.
182440 --
182441 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
182442 
182443 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182444    trace (p_msg     => '# rows extracted from header extract objects '
182445                     || ' (running total): '
182446                     || g_hdr_extract_count
182447          ,p_level   => C_LEVEL_STATEMENT
182448          ,p_module  => l_log_module);
182449 END IF;
182450 
182451 CLOSE header_cur;
182452 --
182453 
182454 --
182455 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182456    trace
182457       (p_msg      => 'END of EventType_282'
182458       ,p_level    => C_LEVEL_PROCEDURE
182459       ,p_module   => l_log_module);
182460 END IF;
182461 --
182462 RETURN l_result;
182463 EXCEPTION
182464 WHEN xla_exceptions_pkg.application_exception THEN
182465    
182466 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
182467 
182468    
182469 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
182470 
182471    RAISE;
182472 
182473 WHEN NO_DATA_FOUND THEN
182474 
182475 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
182476 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
182477 
182478 FOR header_record IN header_cur
182479 LOOP
182480     l_array_header_events(header_record.event_id) := header_record.event_id;
182481 END LOOP;
182482 
182483 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
182484 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
182485 
182486 fnd_file.put_line(fnd_file.LOG, '                    ');
182487 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
182488 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
182489 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
182490 
182491 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
182492 LOOP
182493 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
182494 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
182495         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
182496 	END IF;
182497 END LOOP;
182498 
182499 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
182500 fnd_file.put_line(fnd_file.LOG, '                    ');
182501 
182502 
182503 xla_exceptions_pkg.raise_message
182504       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_282');
182505 
182506 
182507 WHEN OTHERS THEN
182508    xla_exceptions_pkg.raise_message
182509       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_282');
182510 END EventType_282;
182511 --
182512 
182513 ---------------------------------------
182514 --
182515 -- PRIVATE PROCEDURE
182516 --         insert_sources_283
182517 --
182518 ----------------------------------------
182519 --
182520 PROCEDURE insert_sources_283(
182521                                 p_target_ledger_id       IN NUMBER
182522                               , p_language               IN VARCHAR2
182523                               , p_sla_ledger_id          IN NUMBER
182524                               , p_pad_start_date         IN DATE
182525                               , p_pad_end_date           IN DATE
182526                          )
182527 IS
182528 
182529 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_RCPT_SENDER_SHIP';
182530 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
182531 p_apps_owner                   VARCHAR2(30);
182532 l_log_module                   VARCHAR2(240);
182533 BEGIN
182534 IF g_log_enabled THEN
182535       l_log_module := C_DEFAULT_MODULE||'.insert_sources_283';
182536 END IF;
182537 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182538 
182539       trace
182540          (p_msg      => 'BEGIN of insert_sources_283'
182541          ,p_level    => C_LEVEL_PROCEDURE
182542          ,p_module   => l_log_module);
182543 
182544 END IF;
182545 
182546 -- select APPS owner
182547 SELECT oracle_username
182548   INTO p_apps_owner
182549   FROM fnd_oracle_userid
182550  WHERE read_only_flag = 'U'
182551 ;
182552 
182553 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182554       trace
182555          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
182556                         ' - p_language = '||p_language||
182557                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
182558                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
182559                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
182560                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
182561          ,p_level    => C_LEVEL_STATEMENT
182562          ,p_module   => l_log_module);
182563 END IF;
182564 
182565 
182566 --
182567 INSERT INTO xla_diag_sources --hdr1
182568 (
182569         event_id
182570       , ledger_id
182571       , sla_ledger_id
182572       , description_language
182573       , object_name
182574       , object_type_code
182575       , line_number
182576       , source_application_id
182577       , source_type_code
182578       , source_code
182579       , source_value
182580       , source_meaning
182581       , created_by
182582       , creation_date
182583       , last_update_date
182584       , last_updated_by
182585       , last_update_login
182586       , program_update_date
182587       , program_application_id
182588       , program_id
182589       , request_id
182590 )
182591 SELECT
182592         event_id
182593       , p_target_ledger_id
182594       , p_sla_ledger_id
182595       , p_language
182596       , object_name
182597       , object_type_code
182598       , line_number
182599       , source_application_id
182600       , source_type_code
182601       , source_code
182602       , SUBSTR(source_value ,1,1996)
182603       , SUBSTR(source_meaning,1,200)
182604       , xla_environment_pkg.g_Usr_Id
182605       , TRUNC(SYSDATE)
182606       , TRUNC(SYSDATE)
182607       , xla_environment_pkg.g_Usr_Id
182608       , xla_environment_pkg.g_Login_Id
182609       , TRUNC(SYSDATE)
182610       , xla_environment_pkg.g_Prog_Appl_Id
182611       , xla_environment_pkg.g_Prog_Id
182612       , xla_environment_pkg.g_Req_Id
182613   FROM (
182614        SELECT xet.event_id                  event_id
182615             , 0                             line_number
182616             , CASE r
182617                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
182618                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
182619                 
182620                ELSE null
182621               END                           object_name
182622             , CASE r
182623                 WHEN 1 THEN 'HEADER' 
182624                 WHEN 2 THEN 'HEADER' 
182625                 
182626                 ELSE null
182627               END                           object_type_code
182628             , CASE r
182629                 WHEN 1 THEN '707' 
182630                 WHEN 2 THEN '707' 
182631                 
182632                 ELSE null
182633               END                           source_application_id
182634             , 'S'             source_type_code
182635             , CASE r
182636                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
182637                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
182638                 
182639                 ELSE null
182640               END                           source_code
182641             , CASE r
182642                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
182643                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
182644                 
182645                 ELSE null
182646               END                           source_value
182647             , CASE r
182648                 WHEN 1 THEN fvl12.meaning
182649                 WHEN 2 THEN fvl38.meaning
182650                 
182651                 ELSE null
182652               END               source_meaning
182653         FROM xla_events_gt     xet  
182654       , CST_XLA_INV_HEADERS_V  h1
182655   , fnd_lookup_values    fvl12
182656   , fnd_lookup_values    fvl38
182657             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
182658        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
182659          AND xet.event_type_code = C_EVENT_TYPE_CODE
182660             AND h1.event_id = xet.event_id
182661    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
182662   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
182663   AND fvl12.view_application_id(+) = 700
182664   AND fvl12.language(+)            = USERENV('LANG')
182665      AND fvl38.lookup_type(+)         = 'YES_NO'
182666   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
182667   AND fvl38.view_application_id(+) = 0
182668   AND fvl38.language(+)            = USERENV('LANG')
182669   
182670 )
182671 ;
182672 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182673 
182674       trace
182675          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
182676          ,p_level    => C_LEVEL_STATEMENT
182677          ,p_module   => l_log_module);
182678 
182679 END IF;
182680 --
182681 
182682 
182683 
182684 --
182685 INSERT INTO xla_diag_sources --line1
182686 (
182687         event_id
182688       , ledger_id
182689       , sla_ledger_id
182690       , description_language
182691       , object_name
182692       , object_type_code
182693       , line_number
182694       , source_application_id
182695       , source_type_code
182696       , source_code
182697       , source_value
182698       , source_meaning
182699       , created_by
182700       , creation_date
182701       , last_update_date
182702       , last_updated_by
182703       , last_update_login
182704       , program_update_date
182705       , program_application_id
182706       , program_id
182707       , request_id
182708 )
182709 SELECT  event_id
182710       , p_target_ledger_id
182711       , p_sla_ledger_id
182712       , p_language
182713       , object_name
182714       , object_type_code
182715       , line_number
182716       , source_application_id
182717       , source_type_code
182718       , source_code
182719       , SUBSTR(source_value,1,1996)
182720       , SUBSTR(source_meaning,1,200)
182721       , xla_environment_pkg.g_Usr_Id
182722       , TRUNC(SYSDATE)
182723       , TRUNC(SYSDATE)
182724       , xla_environment_pkg.g_Usr_Id
182725       , xla_environment_pkg.g_Login_Id
182726       , TRUNC(SYSDATE)
182727       , xla_environment_pkg.g_Prog_Appl_Id
182728       , xla_environment_pkg.g_Prog_Id
182729       , xla_environment_pkg.g_Req_Id
182730   FROM (
182731        SELECT xet.event_id                  event_id
182732             , l2.line_number                 line_number
182733             , CASE r
182734                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
182735                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
182736                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
182737                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
182738                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
182739                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
182740                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
182741                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
182742                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
182743                 
182744                ELSE null
182745               END                           object_name
182746             , CASE r
182747                 WHEN 1 THEN 'LINE' 
182748                 WHEN 2 THEN 'LINE' 
182749                 WHEN 3 THEN 'LINE' 
182750                 WHEN 4 THEN 'LINE' 
182751                 WHEN 5 THEN 'LINE' 
182752                 WHEN 6 THEN 'LINE' 
182753                 WHEN 7 THEN 'LINE' 
182754                 WHEN 8 THEN 'LINE' 
182755                 WHEN 9 THEN 'LINE' 
182756                 
182757                 ELSE null
182758               END                           object_type_code
182759             , CASE r
182760                 WHEN 1 THEN '707' 
182761                 WHEN 2 THEN '707' 
182762                 WHEN 3 THEN '707' 
182763                 WHEN 4 THEN '707' 
182764                 WHEN 5 THEN '707' 
182765                 WHEN 6 THEN '707' 
182766                 WHEN 7 THEN '707' 
182767                 WHEN 8 THEN '707' 
182768                 WHEN 9 THEN '707' 
182769                 
182770                 ELSE null
182771               END                           source_application_id
182772             , 'S'             source_type_code
182773             , CASE r
182774                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
182775                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
182776                 WHEN 3 THEN 'CURRENCY_CODE' 
182777                 WHEN 4 THEN 'ENTERED_AMOUNT' 
182778                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
182779                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
182780                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
182781                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
182782                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
182783                 
182784                 ELSE null
182785               END                           source_code
182786             , CASE r
182787                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
182788                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
182789                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
182790                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
182791                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
182792                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
182793                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
182794                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
182795                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
182796                 
182797                 ELSE null
182798               END                           source_value
182799             , null              source_meaning
182800          FROM  xla_events_gt     xet  
182801         , CST_XLA_INV_LINES_V  l2
182802             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
182803         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
182804           AND xet.event_type_code = C_EVENT_TYPE_CODE
182805             AND l2.event_id          = xet.event_id
182806 
182807 )
182808 ;
182809 --
182810 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182811 
182812       trace
182813          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
182814          ,p_level    => C_LEVEL_STATEMENT
182815          ,p_module   => l_log_module);
182816 
182817 END IF;
182818 
182819 
182820 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182821       trace
182822          (p_msg      => 'END of insert_sources_283'
182823          ,p_level    => C_LEVEL_PROCEDURE
182824          ,p_module   => l_log_module);
182825 END IF;
182826 EXCEPTION
182827   WHEN xla_exceptions_pkg.application_exception THEN
182828       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
182829             trace
182830                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
182831                ,p_level    => C_LEVEL_EXCEPTION
182832                ,p_module   => l_log_module);
182833       END IF;
182834       RAISE;
182835   WHEN OTHERS THEN
182836       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
182837             trace
182838                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
182839                ,p_level    => C_LEVEL_EXCEPTION
182840                ,p_module   => l_log_module);
182841        END IF;
182842        xla_exceptions_pkg.raise_message
182843            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_283');
182844 END insert_sources_283;
182845 --
182846 
182847 ---------------------------------------
182848 --
182849 -- PRIVATE FUNCTION
182850 --         EventType_283
182851 --
182852 ----------------------------------------
182853 --
182854 FUNCTION EventType_283
182855        (p_application_id         IN NUMBER
182856        ,p_base_ledger_id         IN NUMBER
182857        ,p_target_ledger_id       IN NUMBER
182858        ,p_language               IN VARCHAR2
182859        ,p_currency_code          IN VARCHAR2
182860        ,p_sla_ledger_id          IN NUMBER
182861        ,p_pad_start_date         IN DATE
182862        ,p_pad_end_date           IN DATE
182863        ,p_primary_ledger_id      IN NUMBER)
182864 RETURN BOOLEAN IS
182865 --
182866 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_RCPT_SENDER_SHIP';
182867 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
182868 
182869 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
182870 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
182871 --
182872 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182873 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182874 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
182875 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182876 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182877 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
182878 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
182879 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182880 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182881 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182882 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182883 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182884 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182885 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182886 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182887 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182888 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182889 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182890 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182891 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182892 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182893 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182894 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
182895 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
182896 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
182897 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
182898 
182899 l_event_id                             NUMBER;
182900 l_previous_event_id                    NUMBER;
182901 l_first_event_id                       NUMBER;
182902 l_last_event_id                        NUMBER;
182903 
182904 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
182905 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
182906 --
182907 --
182908 l_result                    BOOLEAN := TRUE;
182909 l_rows                      NUMBER  := 1000;
182910 l_event_type_name           VARCHAR2(80) := 'User-defined Sender Intransit Shipment - FOB Receipt';
182911 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
182912 l_description               VARCHAR2(4000);
182913 l_transaction_reversal      NUMBER;
182914 l_ae_header_id              NUMBER;
182915 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
182916 l_log_module                VARCHAR2(240);
182917 --
182918 l_acct_reversal_source      VARCHAR2(30);
182919 l_trx_reversal_source       VARCHAR2(30);
182920 
182921 l_continue_with_lines       BOOLEAN := TRUE;
182922 --
182923 l_acc_rev_gl_date_source    DATE;                      -- 4262811
182924 --
182925 type t_array_event_id is table of number index by binary_integer;
182926 
182927 l_rec_array_event                    t_rec_array_event;
182928 l_null_rec_array_event               t_rec_array_event;
182929 l_array_ae_header_id                 xla_number_array_type;
182930 l_actual_flag                        VARCHAR2(1) := NULL;
182931 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
182932 l_balance_type_code                  VARCHAR2(1) :=NULL;
182933 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
182934 
182935 --
182936 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
182937 --
182938 
182939 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
182940 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
182941 
182942 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
182943 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
182944 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
182945 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
182946 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
182947 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
182948 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
182949 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
182950 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
182951 
182952 l_array_source_12              t_array_source_12;
182953 l_array_source_12_meaning      t_array_lookup_meaning;
182954 l_array_source_38              t_array_source_38;
182955 l_array_source_38_meaning      t_array_lookup_meaning;
182956 
182957 l_array_source_4      t_array_source_4;
182958 l_array_source_11      t_array_source_11;
182959 l_array_source_15      t_array_source_15;
182960 l_array_source_18      t_array_source_18;
182961 l_array_source_19      t_array_source_19;
182962 l_array_source_20      t_array_source_20;
182963 l_array_source_21      t_array_source_21;
182964 l_array_source_22      t_array_source_22;
182965 l_array_source_24      t_array_source_24;
182966 
182967 --
182968 CURSOR header_cur
182969 IS
182970 SELECT /*+ leading(xet) cardinality(xet,1) */
182971 -- Event Type Code: UFOB_RCPT_SENDER_SHIP
182972 -- Event Class Code: USER_DEFINE
182973     xet.entity_id
182974   , xet.legal_entity_id
182975   , xet.entity_code
182976   , xet.transaction_number
182977   , xet.event_id
182978   , xet.event_class_code
182979   , xet.event_type_code
182980   , xet.event_number
182981   , xet.event_date
182982   , xet.transaction_date
182983   , xet.reference_num_1
182984   , xet.reference_num_2
182985   , xet.reference_num_3
182986   , xet.reference_num_4
182987   , xet.reference_char_1
182988   , xet.reference_char_2
182989   , xet.reference_char_3
182990   , xet.reference_char_4
182991   , xet.reference_date_1
182992   , xet.reference_date_2
182993   , xet.reference_date_3
182994   , xet.reference_date_4
182995   , xet.event_created_by
182996   , xet.budgetary_control_flag 
182997   , h1.DISTRIBUTION_TYPE    source_12
182998   , fvl12.meaning   source_12_meaning
182999   , h1.TRANSFER_TO_GL_INDICATOR    source_38
183000   , fvl38.meaning   source_38_meaning
183001   FROM xla_events_gt     xet 
183002   , CST_XLA_INV_HEADERS_V  h1
183003   , fnd_lookup_values    fvl12
183004   , fnd_lookup_values    fvl38
183005  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
183006    and xet.event_type_code = C_EVENT_TYPE_CODE
183007    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
183008    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
183009   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
183010   AND fvl12.view_application_id(+) = 700
183011   AND fvl12.language(+)            = USERENV('LANG')
183012      AND fvl38.lookup_type(+)         = 'YES_NO'
183013   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
183014   AND fvl38.view_application_id(+) = 0
183015   AND fvl38.language(+)            = USERENV('LANG')
183016   
183017  ORDER BY event_id
183018 ;
183019 
183020 
183021 --
183022 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
183023 IS
183024 SELECT /*+ leading(xet) cardinality(xet,1) */
183025 -- Event Type Code: UFOB_RCPT_SENDER_SHIP
183026 -- Event Class Code: USER_DEFINE
183027     xet.entity_id
183028    ,xet.legal_entity_id
183029    ,xet.entity_code
183030    ,xet.transaction_number
183031    ,xet.event_id
183032    ,xet.event_class_code
183033    ,xet.event_type_code
183034    ,xet.event_number
183035    ,xet.event_date
183036    ,xet.transaction_date
183037    ,xet.reference_num_1
183038    ,xet.reference_num_2
183039    ,xet.reference_num_3
183040    ,xet.reference_num_4
183041    ,xet.reference_char_1
183042    ,xet.reference_char_2
183043    ,xet.reference_char_3
183044    ,xet.reference_char_4
183045    ,xet.reference_date_1
183046    ,xet.reference_date_2
183047    ,xet.reference_date_3
183048    ,xet.reference_date_4
183049    ,xet.event_created_by
183050    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
183051   , l2.CODE_COMBINATION_ID    source_4
183052   , l2.DISTRIBUTION_IDENTIFIER    source_11
183053   , l2.CURRENCY_CODE    source_15
183054   , l2.ENTERED_AMOUNT    source_18
183055   , l2.CURRENCY_CONVERSION_DATE    source_19
183056   , l2.CURRENCY_CONVERSION_RATE    source_20
183057   , l2.CURRENCY_CONVERSION_TYPE    source_21
183058   , l2.ACCOUNTED_AMOUNT    source_22
183059   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
183060   FROM xla_events_gt     xet 
183061   , CST_XLA_INV_LINES_V  l2
183062  WHERE xet.event_id between x_first_event_id and x_last_event_id
183063    and xet.event_date between p_pad_start_date and p_pad_end_date
183064    and xet.event_type_code = C_EVENT_TYPE_CODE
183065    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
183066 ;
183067 
183068 --
183069 BEGIN
183070 IF g_log_enabled THEN
183071    l_log_module := C_DEFAULT_MODULE||'.EventType_283';
183072 END IF;
183073 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183074    trace
183075       (p_msg      => 'BEGIN of EventType_283'
183076       ,p_level    => C_LEVEL_PROCEDURE
183077       ,p_module   => l_log_module);
183078 END IF;
183079 
183080 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183081    trace
183082       (p_msg      => 'p_application_id = '||p_application_id||
183083                      ' - p_base_ledger_id = '||p_base_ledger_id||
183084                      ' - p_target_ledger_id  = '||p_target_ledger_id||
183085                      ' - p_language = '||p_language||
183086                      ' - p_currency_code = '||p_currency_code||
183087                      ' - p_sla_ledger_id = '||p_sla_ledger_id
183088       ,p_level    => C_LEVEL_STATEMENT
183089       ,p_module   => l_log_module);
183090 END IF;
183091 --
183092 -- initialze arrays
183093 --
183094 g_array_event.DELETE;
183095 l_rec_array_event := l_null_rec_array_event;
183096 --
183097 --------------------------------------
183098 -- 4262811 Initialze MPA Line Number
183099 --------------------------------------
183100 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
183101 
183102 --
183103 
183104 --
183105 OPEN header_cur;
183106 --
183107 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183108    trace
183109    (p_msg      => 'SQL - FETCH header_cur'
183110    ,p_level    => C_LEVEL_STATEMENT
183111    ,p_module   => l_log_module);
183112 END IF;
183113 --
183114 LOOP
183115 FETCH header_cur BULK COLLECT INTO
183116         l_array_entity_id
183117       , l_array_legal_entity_id
183118       , l_array_entity_code
183119       , l_array_transaction_num
183120       , l_array_event_id
183121       , l_array_class_code
183122       , l_array_event_type
183123       , l_array_event_number
183124       , l_array_event_date
183125       , l_array_transaction_date
183126       , l_array_reference_num_1
183127       , l_array_reference_num_2
183128       , l_array_reference_num_3
183129       , l_array_reference_num_4
183130       , l_array_reference_char_1
183131       , l_array_reference_char_2
183132       , l_array_reference_char_3
183133       , l_array_reference_char_4
183134       , l_array_reference_date_1
183135       , l_array_reference_date_2
183136       , l_array_reference_date_3
183137       , l_array_reference_date_4
183138       , l_array_event_created_by
183139       , l_array_budgetary_control_flag 
183140       , l_array_source_12
183141       , l_array_source_12_meaning
183142       , l_array_source_38
183143       , l_array_source_38_meaning
183144       LIMIT l_rows;
183145 --
183146 IF (C_LEVEL_EVENT >= g_log_level) THEN
183147    trace
183148    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
183149    ,p_level    => C_LEVEL_EVENT
183150    ,p_module   => l_log_module);
183151 END IF;
183152 --
183153 EXIT WHEN l_array_entity_id.COUNT = 0;
183154 
183155 -- initialize arrays
183156 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
183157 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
183158 
183159 --
183160 -- Bug 4458708
183161 --
183162 XLA_AE_LINES_PKG.g_LineNumber := 0;
183163 
183164 
183165 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
183166 g_last_hdr_idx := l_array_event_id.LAST;
183167 --
183168 -- loop for the headers. Each iteration is for each header extract row
183169 -- fetched in header cursor
183170 --
183171 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
183172 
183173 --
183174 -- set event info as cache for other routines to refer event attributes
183175 --
183176 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
183177    (p_application_id           => p_application_id
183178    ,p_primary_ledger_id        => p_primary_ledger_id
183179    ,p_base_ledger_id           => p_base_ledger_id
183180    ,p_target_ledger_id         => p_target_ledger_id
183181    ,p_entity_id                => l_array_entity_id(hdr_idx)
183182    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
183183    ,p_entity_code              => l_array_entity_code(hdr_idx)
183184    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
183185    ,p_event_id                 => l_array_event_id(hdr_idx)
183186    ,p_event_class_code         => l_array_class_code(hdr_idx)
183187    ,p_event_type_code          => l_array_event_type(hdr_idx)
183188    ,p_event_number             => l_array_event_number(hdr_idx)
183189    ,p_event_date               => l_array_event_date(hdr_idx)
183190    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
183191    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
183192    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
183193    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
183194    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
183195    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
183196    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
183197    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
183198    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
183199    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
183200    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
183201    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
183202    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
183203    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
183204    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
183205 
183206 --
183207 -- set the status of entry to C_VALID (0)
183208 --
183209 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
183210 
183211 --
183212 -- initialize a row for ae header
183213 --
183214 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
183215 
183216 l_event_id := l_array_event_id(hdr_idx);
183217 
183218 --
183219 -- storing the hdr_idx for event. May be used by line cursor.
183220 --
183221 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
183222 
183223 --
183224 -- store sources from header extract. This can be improved to
183225 -- store only those sources from header extract that may be used in lines
183226 --
183227 
183228 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
183229 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
183230 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
183231 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
183232 
183233 --
183234 -- initilaize the status of ae headers for diffrent balance types
183235 -- the status is initialised to C_NOT_CREATED (2)
183236 --
183237 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183238 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183239 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183240 
183241 --
183242 -- call api to validate and store accounting attributes for header
183243 --
183244 
183245 ------------------------------------------------------------
183246 -- Accrual Reversal : to get date for Standard Source (NONE)
183247 ------------------------------------------------------------
183248 l_acc_rev_gl_date_source := NULL;
183249 
183250      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
183251       l_rec_acct_attrs.array_date_value(1) := 
183252 xla_ae_sources_pkg.GetSystemSourceDate(
183253    p_source_code           => 'XLA_REFERENCE_DATE_1'
183254  , p_source_type_code      => 'Y'
183255  , p_source_application_id =>  602
183256 );
183257      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
183258       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
183259 
183260 
183261 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
183262 
183263 XLA_AE_HEADER_PKG.SetJeCategoryName;
183264 
183265 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
183266 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
183267 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
183268 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
183269 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
183270 
183271 
183272 -- No header level analytical criteria
183273 
183274 --
183275 --accounting attribute enhancement, bug 3612931
183276 --
183277 l_trx_reversal_source := SUBSTR(NULL, 1,30);
183278 
183279 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
183280    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
183281 
183282    xla_accounting_err_pkg.build_message
183283       (p_appli_s_name            => 'XLA'
183284       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
183285       ,p_token_1                 => 'ACCT_ATTR_NAME'
183286       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
183287       ,p_token_2                 => 'PRODUCT_NAME'
183288       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
183289       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
183290       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
183291       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
183292 
183293 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
183294    --
183295    -- following sets the accounting attributes needed to reverse
183296    -- accounting for a distributeion
183297    --
183298    xla_ae_lines_pkg.SetTrxReversalAttrs
183299       (p_event_id              => l_event_id
183300       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
183301       ,p_trx_reversal_source   => l_trx_reversal_source);
183302 
183303 END IF;
183304 
183305 
183306 ----------------------------------------------------------------
183307 -- 4262811 -  update the header statuses to invalid in need be
183308 ----------------------------------------------------------------
183309 --
183310 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
183311 
183312 
183313   -----------------------------------------------
183314   -- No accrual reversal for the event class/type
183315   -----------------------------------------------
183316 ----------------------------------------------------------------
183317 
183318 --
183319 -- this ends the header loop iteration for one bulk fetch
183320 --
183321 END LOOP;
183322 
183323 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
183324 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
183325 
183326 --
183327 -- insert dummy rows into lines gt table that were created due to
183328 -- transaction reversals
183329 --
183330 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
183331    l_result := XLA_AE_LINES_PKG.InsertLines;
183332 END IF;
183333 
183334 --
183335 -- reset the temp_line_num for each set of events fetched from header
183336 -- cursor rather than doing it for each new event in line cursor
183337 -- Bug 3939231
183338 --
183339 xla_ae_lines_pkg.g_temp_line_num := 0;
183340 
183341 
183342 
183343 --
183344 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
183345 --
183346 --
183347 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183348 
183349       trace
183350          (p_msg      => 'SQL - FETCH line_cur'
183351          ,p_level    => C_LEVEL_STATEMENT
183352          ,p_module   => l_log_module);
183353 
183354 END IF;
183355 --
183356 --
183357 LOOP
183358   --
183359   FETCH line_cur BULK COLLECT INTO
183360         l_array_entity_id
183361       , l_array_legal_entity_id
183362       , l_array_entity_code
183363       , l_array_transaction_num
183364       , l_array_event_id
183365       , l_array_class_code
183366       , l_array_event_type
183367       , l_array_event_number
183368       , l_array_event_date
183369       , l_array_transaction_date
183370       , l_array_reference_num_1
183371       , l_array_reference_num_2
183372       , l_array_reference_num_3
183373       , l_array_reference_num_4
183374       , l_array_reference_char_1
183375       , l_array_reference_char_2
183376       , l_array_reference_char_3
183377       , l_array_reference_char_4
183378       , l_array_reference_date_1
183379       , l_array_reference_date_2
183380       , l_array_reference_date_3
183381       , l_array_reference_date_4
183382       , l_array_event_created_by
183383       , l_array_budgetary_control_flag
183384       , l_array_extract_line_num 
183385       , l_array_source_4
183386       , l_array_source_11
183387       , l_array_source_15
183388       , l_array_source_18
183389       , l_array_source_19
183390       , l_array_source_20
183391       , l_array_source_21
183392       , l_array_source_22
183393       , l_array_source_24
183394       LIMIT l_rows;
183395 
183396   --
183397   IF (C_LEVEL_EVENT >= g_log_level) THEN
183398             trace
183399                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
183400                ,p_level    => C_LEVEL_EVENT
183401                ,p_module   => l_log_module);
183402   END IF;
183403   --
183404   EXIT WHEN l_array_entity_id.count = 0;
183405 
183406   XLA_AE_LINES_PKG.g_rec_lines := null;
183407 
183408 --
183409 -- Bug 4458708
183410 --
183411 XLA_AE_LINES_PKG.g_LineNumber := 0;
183412 --
183413 --
183414 
183415 FOR Idx IN 1..l_array_event_id.count LOOP
183416    --
183417    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
183418    --
183419    l_event_id := l_array_event_id(idx);  -- 5648433
183420 
183421    --
183422    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
183423    --
183424 
183425    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
183426              (g_array_event(l_event_id).array_value_num('header_index'))
183427          ,'N'
183428          ) <> 'Y'
183429    THEN
183430       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183431          trace
183432             (p_msg      => 'Trancaction revesal option is not Y '
183433             ,p_level    => C_LEVEL_STATEMENT
183434             ,p_module   => l_log_module);
183435       END IF;
183436 
183437 --
183438 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
183439 --
183440 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
183441 --
183442 -- set event info as cache for other routines to refer event attributes
183443 --
183444 
183445 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
183446    l_previous_event_id := l_event_id;
183447 
183448    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
183449       (p_application_id           => p_application_id
183450       ,p_primary_ledger_id        => p_primary_ledger_id
183451       ,p_base_ledger_id           => p_base_ledger_id
183452       ,p_target_ledger_id         => p_target_ledger_id
183453       ,p_entity_id                => l_array_entity_id(Idx)
183454       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
183455       ,p_entity_code              => l_array_entity_code(Idx)
183456       ,p_transaction_num          => l_array_transaction_num(Idx)
183457       ,p_event_id                 => l_array_event_id(Idx)
183458       ,p_event_class_code         => l_array_class_code(Idx)
183459       ,p_event_type_code          => l_array_event_type(Idx)
183460       ,p_event_number             => l_array_event_number(Idx)
183461       ,p_event_date               => l_array_event_date(Idx)
183462       ,p_transaction_date         => l_array_transaction_date(Idx)
183463       ,p_reference_num_1          => l_array_reference_num_1(Idx)
183464       ,p_reference_num_2          => l_array_reference_num_2(Idx)
183465       ,p_reference_num_3          => l_array_reference_num_3(Idx)
183466       ,p_reference_num_4          => l_array_reference_num_4(Idx)
183467       ,p_reference_char_1         => l_array_reference_char_1(Idx)
183468       ,p_reference_char_2         => l_array_reference_char_2(Idx)
183469       ,p_reference_char_3         => l_array_reference_char_3(Idx)
183470       ,p_reference_char_4         => l_array_reference_char_4(Idx)
183471       ,p_reference_date_1         => l_array_reference_date_1(Idx)
183472       ,p_reference_date_2         => l_array_reference_date_2(Idx)
183473       ,p_reference_date_3         => l_array_reference_date_3(Idx)
183474       ,p_reference_date_4         => l_array_reference_date_4(Idx)
183475       ,p_event_created_by         => l_array_event_created_by(Idx)
183476       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
183477        --
183478 END IF;
183479 
183480 
183481 
183482 --
183483 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
183484 
183485 l_acct_reversal_source := SUBSTR(NULL, 1,30);
183486 
183487 IF l_continue_with_lines THEN
183488    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
183489       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
183490 
183491       xla_accounting_err_pkg.build_message
183492          (p_appli_s_name            => 'XLA'
183493          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
183494          ,p_token_1                 => 'LINE_NUMBER'
183495          ,p_value_1                 => l_array_extract_line_num(Idx)
183496          ,p_token_2                 => 'PRODUCT_NAME'
183497          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
183498          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
183499          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
183500          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
183501 
183502    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
183503       --
183504       -- following sets the accounting attributes needed to reverse
183505       -- accounting for a distributeion
183506       --
183507 
183508       --
183509       -- 5217187
183510       --
183511       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
183512       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
183513                                        g_array_event(l_event_id).array_value_num('header_index'));
183514       --
183515       --
183516 
183517       -- No reversal code generated
183518 
183519       xla_ae_lines_pkg.SetAcctReversalAttrs
183520          (p_event_id             => l_event_id
183521          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
183522          ,p_calculate_acctd_flag => l_calculate_acctd_flag
183523          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
183524    END IF;
183525 
183526    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
183527        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
183528 
183529 --
183530 AcctLineType_117 (
183531  p_application_id  => p_application_id
183532  ,p_event_id     => l_event_id
183533  ,p_calculate_acctd_flag => l_calculate_acctd_flag
183534  ,p_calculate_g_l_flag => l_calculate_g_l_flag
183535  ,p_actual_flag => l_actual_flag
183536  ,p_balance_type_code => l_balance_type_code
183537  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183538  
183539  , p_source_4 => l_array_source_4(Idx)
183540  , p_source_11 => l_array_source_11(Idx)
183541  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183542  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183543  , p_source_15 => l_array_source_15(Idx)
183544  , p_source_18 => l_array_source_18(Idx)
183545  , p_source_19 => l_array_source_19(Idx)
183546  , p_source_20 => l_array_source_20(Idx)
183547  , p_source_21 => l_array_source_21(Idx)
183548  , p_source_22 => l_array_source_22(Idx)
183549  , p_source_24 => l_array_source_24(Idx)
183550  );
183551 If(l_balance_type_code = 'A') THEN
183552   l_actual_gain_loss_ref := l_gain_or_loss_ref;
183553 END IF;
183554 
183555 --
183556 
183557 
183558 --
183559 AcctLineType_142 (
183560  p_application_id  => p_application_id
183561  ,p_event_id     => l_event_id
183562  ,p_calculate_acctd_flag => l_calculate_acctd_flag
183563  ,p_calculate_g_l_flag => l_calculate_g_l_flag
183564  ,p_actual_flag => l_actual_flag
183565  ,p_balance_type_code => l_balance_type_code
183566  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183567  
183568  , p_source_4 => l_array_source_4(Idx)
183569  , p_source_11 => l_array_source_11(Idx)
183570  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183571  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183572  , p_source_15 => l_array_source_15(Idx)
183573  , p_source_18 => l_array_source_18(Idx)
183574  , p_source_19 => l_array_source_19(Idx)
183575  , p_source_20 => l_array_source_20(Idx)
183576  , p_source_21 => l_array_source_21(Idx)
183577  , p_source_22 => l_array_source_22(Idx)
183578  , p_source_24 => l_array_source_24(Idx)
183579  );
183580 If(l_balance_type_code = 'A') THEN
183581   l_actual_gain_loss_ref := l_gain_or_loss_ref;
183582 END IF;
183583 
183584 --
183585 
183586 
183587 --
183588 AcctLineType_199 (
183589  p_application_id  => p_application_id
183590  ,p_event_id     => l_event_id
183591  ,p_calculate_acctd_flag => l_calculate_acctd_flag
183592  ,p_calculate_g_l_flag => l_calculate_g_l_flag
183593  ,p_actual_flag => l_actual_flag
183594  ,p_balance_type_code => l_balance_type_code
183595  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183596  
183597  , p_source_4 => l_array_source_4(Idx)
183598  , p_source_11 => l_array_source_11(Idx)
183599  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183600  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183601  , p_source_15 => l_array_source_15(Idx)
183602  , p_source_18 => l_array_source_18(Idx)
183603  , p_source_19 => l_array_source_19(Idx)
183604  , p_source_20 => l_array_source_20(Idx)
183605  , p_source_21 => l_array_source_21(Idx)
183606  , p_source_22 => l_array_source_22(Idx)
183607  , p_source_24 => l_array_source_24(Idx)
183608  );
183609 If(l_balance_type_code = 'A') THEN
183610   l_actual_gain_loss_ref := l_gain_or_loss_ref;
183611 END IF;
183612 
183613 --
183614 
183615       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
183616       -- or secondary ledger that has different currency with primary
183617       -- or alc that is calculated by sla
183618       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
183619             (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'))
183620 
183621 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
183622 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
183623           AND (l_actual_flag = 'A')) THEN
183624         XLA_AE_LINES_PKG.CreateGainOrLossLines(
183625           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
183626          ,p_application_id   => p_application_id
183627          ,p_amb_context_code => 'DEFAULT'
183628          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
183629          ,p_event_class_code => C_EVENT_CLASS_CODE
183630          ,p_event_type_code  => C_EVENT_TYPE_CODE
183631          
183632          ,p_gain_ccid        => -1
183633          ,p_loss_ccid        => -1
183634 
183635          ,p_actual_flag      => l_actual_flag
183636          ,p_enc_flag         => null
183637          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
183638          ,p_enc_g_l_ref      => null
183639          );
183640       END IF;
183641    END IF;
183642 END IF;
183643 
183644    ELSE
183645       --
183646       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
183647       --
183648       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183649          trace
183650             (p_msg      => 'Trancaction revesal option is Y'
183651             ,p_level    => C_LEVEL_STATEMENT
183652             ,p_module   => l_log_module);
183653       END IF;
183654    END IF;
183655 
183656 END LOOP;
183657 l_result := XLA_AE_LINES_PKG.InsertLines ;
183658 end loop;
183659 close line_cur;
183660 
183661 
183662 --
183663 -- insert headers into xla_ae_headers_gt table
183664 --
183665 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
183666 
183667 -- insert into errors table here.
183668 
183669 END LOOP;
183670 
183671 --
183672 -- 4865292
183673 --
183674 -- Compare g_hdr_extract_count with event count in
183675 -- CreateHeadersAndLines.
183676 --
183677 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
183678 
183679 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183680    trace (p_msg     => '# rows extracted from header extract objects '
183681                     || ' (running total): '
183682                     || g_hdr_extract_count
183683          ,p_level   => C_LEVEL_STATEMENT
183684          ,p_module  => l_log_module);
183685 END IF;
183686 
183687 CLOSE header_cur;
183688 --
183689 
183690 --
183691 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183692    trace
183693       (p_msg      => 'END of EventType_283'
183694       ,p_level    => C_LEVEL_PROCEDURE
183695       ,p_module   => l_log_module);
183696 END IF;
183697 --
183698 RETURN l_result;
183699 EXCEPTION
183700 WHEN xla_exceptions_pkg.application_exception THEN
183701    
183702 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
183703 
183704    
183705 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
183706 
183707    RAISE;
183708 
183709 WHEN NO_DATA_FOUND THEN
183710 
183711 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
183712 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
183713 
183714 FOR header_record IN header_cur
183715 LOOP
183716     l_array_header_events(header_record.event_id) := header_record.event_id;
183717 END LOOP;
183718 
183719 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
183720 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
183721 
183722 fnd_file.put_line(fnd_file.LOG, '                    ');
183723 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
183724 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
183725 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
183726 
183727 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
183728 LOOP
183729 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
183730 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
183731         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
183732 	END IF;
183733 END LOOP;
183734 
183735 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
183736 fnd_file.put_line(fnd_file.LOG, '                    ');
183737 
183738 
183739 xla_exceptions_pkg.raise_message
183740       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_283');
183741 
183742 
183743 WHEN OTHERS THEN
183744    xla_exceptions_pkg.raise_message
183745       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_283');
183746 END EventType_283;
183747 --
183748 
183749 ---------------------------------------
183750 --
183751 -- PRIVATE PROCEDURE
183752 --         insert_sources_284
183753 --
183754 ----------------------------------------
183755 --
183756 PROCEDURE insert_sources_284(
183757                                 p_target_ledger_id       IN NUMBER
183758                               , p_language               IN VARCHAR2
183759                               , p_sla_ledger_id          IN NUMBER
183760                               , p_pad_start_date         IN DATE
183761                               , p_pad_end_date           IN DATE
183762                          )
183763 IS
183764 
183765 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
183766 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
183767 p_apps_owner                   VARCHAR2(30);
183768 l_log_module                   VARCHAR2(240);
183769 BEGIN
183770 IF g_log_enabled THEN
183771       l_log_module := C_DEFAULT_MODULE||'.insert_sources_284';
183772 END IF;
183773 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183774 
183775       trace
183776          (p_msg      => 'BEGIN of insert_sources_284'
183777          ,p_level    => C_LEVEL_PROCEDURE
183778          ,p_module   => l_log_module);
183779 
183780 END IF;
183781 
183782 -- select APPS owner
183783 SELECT oracle_username
183784   INTO p_apps_owner
183785   FROM fnd_oracle_userid
183786  WHERE read_only_flag = 'U'
183787 ;
183788 
183789 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183790       trace
183791          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
183792                         ' - p_language = '||p_language||
183793                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
183794                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
183795                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
183796                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
183797          ,p_level    => C_LEVEL_STATEMENT
183798          ,p_module   => l_log_module);
183799 END IF;
183800 
183801 
183802 --
183803 INSERT INTO xla_diag_sources --hdr1
183804 (
183805         event_id
183806       , ledger_id
183807       , sla_ledger_id
183808       , description_language
183809       , object_name
183810       , object_type_code
183811       , line_number
183812       , source_application_id
183813       , source_type_code
183814       , source_code
183815       , source_value
183816       , source_meaning
183817       , created_by
183818       , creation_date
183819       , last_update_date
183820       , last_updated_by
183821       , last_update_login
183822       , program_update_date
183823       , program_application_id
183824       , program_id
183825       , request_id
183826 )
183827 SELECT
183828         event_id
183829       , p_target_ledger_id
183830       , p_sla_ledger_id
183831       , p_language
183832       , object_name
183833       , object_type_code
183834       , line_number
183835       , source_application_id
183836       , source_type_code
183837       , source_code
183838       , SUBSTR(source_value ,1,1996)
183839       , SUBSTR(source_meaning,1,200)
183840       , xla_environment_pkg.g_Usr_Id
183841       , TRUNC(SYSDATE)
183842       , TRUNC(SYSDATE)
183843       , xla_environment_pkg.g_Usr_Id
183844       , xla_environment_pkg.g_Login_Id
183845       , TRUNC(SYSDATE)
183846       , xla_environment_pkg.g_Prog_Appl_Id
183847       , xla_environment_pkg.g_Prog_Id
183848       , xla_environment_pkg.g_Req_Id
183849   FROM (
183850        SELECT xet.event_id                  event_id
183851             , 0                             line_number
183852             , CASE r
183853                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
183854                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
183855                 
183856                ELSE null
183857               END                           object_name
183858             , CASE r
183859                 WHEN 1 THEN 'HEADER' 
183860                 WHEN 2 THEN 'HEADER' 
183861                 
183862                 ELSE null
183863               END                           object_type_code
183864             , CASE r
183865                 WHEN 1 THEN '707' 
183866                 WHEN 2 THEN '707' 
183867                 
183868                 ELSE null
183869               END                           source_application_id
183870             , 'S'             source_type_code
183871             , CASE r
183872                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
183873                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
183874                 
183875                 ELSE null
183876               END                           source_code
183877             , CASE r
183878                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
183879                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
183880                 
183881                 ELSE null
183882               END                           source_value
183883             , CASE r
183884                 WHEN 1 THEN fvl12.meaning
183885                 WHEN 2 THEN fvl38.meaning
183886                 
183887                 ELSE null
183888               END               source_meaning
183889         FROM xla_events_gt     xet  
183890       , CST_XLA_INV_HEADERS_V  h1
183891   , fnd_lookup_values    fvl12
183892   , fnd_lookup_values    fvl38
183893             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
183894        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
183895          AND xet.event_type_code = C_EVENT_TYPE_CODE
183896             AND h1.event_id = xet.event_id
183897    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
183898   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
183899   AND fvl12.view_application_id(+) = 700
183900   AND fvl12.language(+)            = USERENV('LANG')
183901      AND fvl38.lookup_type(+)         = 'YES_NO'
183902   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
183903   AND fvl38.view_application_id(+) = 0
183904   AND fvl38.language(+)            = USERENV('LANG')
183905   
183906 )
183907 ;
183908 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183909 
183910       trace
183911          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
183912          ,p_level    => C_LEVEL_STATEMENT
183913          ,p_module   => l_log_module);
183914 
183915 END IF;
183916 --
183917 
183918 
183919 
183920 --
183921 INSERT INTO xla_diag_sources --line1
183922 (
183923         event_id
183924       , ledger_id
183925       , sla_ledger_id
183926       , description_language
183927       , object_name
183928       , object_type_code
183929       , line_number
183930       , source_application_id
183931       , source_type_code
183932       , source_code
183933       , source_value
183934       , source_meaning
183935       , created_by
183936       , creation_date
183937       , last_update_date
183938       , last_updated_by
183939       , last_update_login
183940       , program_update_date
183941       , program_application_id
183942       , program_id
183943       , request_id
183944 )
183945 SELECT  event_id
183946       , p_target_ledger_id
183947       , p_sla_ledger_id
183948       , p_language
183949       , object_name
183950       , object_type_code
183951       , line_number
183952       , source_application_id
183953       , source_type_code
183954       , source_code
183955       , SUBSTR(source_value,1,1996)
183956       , SUBSTR(source_meaning,1,200)
183957       , xla_environment_pkg.g_Usr_Id
183958       , TRUNC(SYSDATE)
183959       , TRUNC(SYSDATE)
183960       , xla_environment_pkg.g_Usr_Id
183961       , xla_environment_pkg.g_Login_Id
183962       , TRUNC(SYSDATE)
183963       , xla_environment_pkg.g_Prog_Appl_Id
183964       , xla_environment_pkg.g_Prog_Id
183965       , xla_environment_pkg.g_Req_Id
183966   FROM (
183967        SELECT xet.event_id                  event_id
183968             , l2.line_number                 line_number
183969             , CASE r
183970                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
183971                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
183972                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
183973                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
183974                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
183975                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
183976                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
183977                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
183978                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
183979                 
183980                ELSE null
183981               END                           object_name
183982             , CASE r
183983                 WHEN 1 THEN 'LINE' 
183984                 WHEN 2 THEN 'LINE' 
183985                 WHEN 3 THEN 'LINE' 
183986                 WHEN 4 THEN 'LINE' 
183987                 WHEN 5 THEN 'LINE' 
183988                 WHEN 6 THEN 'LINE' 
183989                 WHEN 7 THEN 'LINE' 
183990                 WHEN 8 THEN 'LINE' 
183991                 WHEN 9 THEN 'LINE' 
183992                 
183993                 ELSE null
183994               END                           object_type_code
183995             , CASE r
183996                 WHEN 1 THEN '707' 
183997                 WHEN 2 THEN '707' 
183998                 WHEN 3 THEN '707' 
183999                 WHEN 4 THEN '707' 
184000                 WHEN 5 THEN '707' 
184001                 WHEN 6 THEN '707' 
184002                 WHEN 7 THEN '707' 
184003                 WHEN 8 THEN '707' 
184004                 WHEN 9 THEN '707' 
184005                 
184006                 ELSE null
184007               END                           source_application_id
184008             , 'S'             source_type_code
184009             , CASE r
184010                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
184011                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
184012                 WHEN 3 THEN 'CURRENCY_CODE' 
184013                 WHEN 4 THEN 'ENTERED_AMOUNT' 
184014                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
184015                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
184016                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
184017                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
184018                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
184019                 
184020                 ELSE null
184021               END                           source_code
184022             , CASE r
184023                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
184024                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
184025                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
184026                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
184027                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
184028                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
184029                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
184030                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
184031                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
184032                 
184033                 ELSE null
184034               END                           source_value
184035             , null              source_meaning
184036          FROM  xla_events_gt     xet  
184037         , CST_XLA_INV_LINES_V  l2
184038             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
184039         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
184040           AND xet.event_type_code = C_EVENT_TYPE_CODE
184041             AND l2.event_id          = xet.event_id
184042 
184043 )
184044 ;
184045 --
184046 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184047 
184048       trace
184049          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
184050          ,p_level    => C_LEVEL_STATEMENT
184051          ,p_module   => l_log_module);
184052 
184053 END IF;
184054 
184055 
184056 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184057       trace
184058          (p_msg      => 'END of insert_sources_284'
184059          ,p_level    => C_LEVEL_PROCEDURE
184060          ,p_module   => l_log_module);
184061 END IF;
184062 EXCEPTION
184063   WHEN xla_exceptions_pkg.application_exception THEN
184064       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
184065             trace
184066                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
184067                ,p_level    => C_LEVEL_EXCEPTION
184068                ,p_module   => l_log_module);
184069       END IF;
184070       RAISE;
184071   WHEN OTHERS THEN
184072       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
184073             trace
184074                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
184075                ,p_level    => C_LEVEL_EXCEPTION
184076                ,p_module   => l_log_module);
184077        END IF;
184078        xla_exceptions_pkg.raise_message
184079            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_284');
184080 END insert_sources_284;
184081 --
184082 
184083 ---------------------------------------
184084 --
184085 -- PRIVATE FUNCTION
184086 --         EventType_284
184087 --
184088 ----------------------------------------
184089 --
184090 FUNCTION EventType_284
184091        (p_application_id         IN NUMBER
184092        ,p_base_ledger_id         IN NUMBER
184093        ,p_target_ledger_id       IN NUMBER
184094        ,p_language               IN VARCHAR2
184095        ,p_currency_code          IN VARCHAR2
184096        ,p_sla_ledger_id          IN NUMBER
184097        ,p_pad_start_date         IN DATE
184098        ,p_pad_end_date           IN DATE
184099        ,p_primary_ledger_id      IN NUMBER)
184100 RETURN BOOLEAN IS
184101 --
184102 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
184103 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
184104 
184105 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
184106 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
184107 --
184108 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184109 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184110 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184111 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184112 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184113 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184114 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184115 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184116 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184117 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184118 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184119 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184120 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184121 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184122 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184123 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184124 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184125 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184126 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184127 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184128 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184129 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184130 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
184131 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184132 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
184133 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
184134 
184135 l_event_id                             NUMBER;
184136 l_previous_event_id                    NUMBER;
184137 l_first_event_id                       NUMBER;
184138 l_last_event_id                        NUMBER;
184139 
184140 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
184141 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
184142 --
184143 --
184144 l_result                    BOOLEAN := TRUE;
184145 l_rows                      NUMBER  := 1000;
184146 l_event_type_name           VARCHAR2(80) := 'User-defined Recipient Intransit Shipment - No Transfer Price - FOB Shipment';
184147 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
184148 l_description               VARCHAR2(4000);
184149 l_transaction_reversal      NUMBER;
184150 l_ae_header_id              NUMBER;
184151 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
184152 l_log_module                VARCHAR2(240);
184153 --
184154 l_acct_reversal_source      VARCHAR2(30);
184155 l_trx_reversal_source       VARCHAR2(30);
184156 
184157 l_continue_with_lines       BOOLEAN := TRUE;
184158 --
184159 l_acc_rev_gl_date_source    DATE;                      -- 4262811
184160 --
184161 type t_array_event_id is table of number index by binary_integer;
184162 
184163 l_rec_array_event                    t_rec_array_event;
184164 l_null_rec_array_event               t_rec_array_event;
184165 l_array_ae_header_id                 xla_number_array_type;
184166 l_actual_flag                        VARCHAR2(1) := NULL;
184167 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
184168 l_balance_type_code                  VARCHAR2(1) :=NULL;
184169 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
184170 
184171 --
184172 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
184173 --
184174 
184175 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
184176 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
184177 
184178 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
184179 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
184180 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
184181 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
184182 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
184183 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
184184 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
184185 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
184186 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
184187 
184188 l_array_source_12              t_array_source_12;
184189 l_array_source_12_meaning      t_array_lookup_meaning;
184190 l_array_source_38              t_array_source_38;
184191 l_array_source_38_meaning      t_array_lookup_meaning;
184192 
184193 l_array_source_4      t_array_source_4;
184194 l_array_source_11      t_array_source_11;
184195 l_array_source_15      t_array_source_15;
184196 l_array_source_18      t_array_source_18;
184197 l_array_source_19      t_array_source_19;
184198 l_array_source_20      t_array_source_20;
184199 l_array_source_21      t_array_source_21;
184200 l_array_source_22      t_array_source_22;
184201 l_array_source_24      t_array_source_24;
184202 
184203 --
184204 CURSOR header_cur
184205 IS
184206 SELECT /*+ leading(xet) cardinality(xet,1) */
184207 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_NO_TP
184208 -- Event Class Code: USER_DEFINE
184209     xet.entity_id
184210   , xet.legal_entity_id
184211   , xet.entity_code
184212   , xet.transaction_number
184213   , xet.event_id
184214   , xet.event_class_code
184215   , xet.event_type_code
184216   , xet.event_number
184217   , xet.event_date
184218   , xet.transaction_date
184219   , xet.reference_num_1
184220   , xet.reference_num_2
184221   , xet.reference_num_3
184222   , xet.reference_num_4
184223   , xet.reference_char_1
184224   , xet.reference_char_2
184225   , xet.reference_char_3
184226   , xet.reference_char_4
184227   , xet.reference_date_1
184228   , xet.reference_date_2
184229   , xet.reference_date_3
184230   , xet.reference_date_4
184231   , xet.event_created_by
184232   , xet.budgetary_control_flag 
184233   , h1.DISTRIBUTION_TYPE    source_12
184234   , fvl12.meaning   source_12_meaning
184235   , h1.TRANSFER_TO_GL_INDICATOR    source_38
184236   , fvl38.meaning   source_38_meaning
184237   FROM xla_events_gt     xet 
184238   , CST_XLA_INV_HEADERS_V  h1
184239   , fnd_lookup_values    fvl12
184240   , fnd_lookup_values    fvl38
184241  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
184242    and xet.event_type_code = C_EVENT_TYPE_CODE
184243    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
184244    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
184245   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
184246   AND fvl12.view_application_id(+) = 700
184247   AND fvl12.language(+)            = USERENV('LANG')
184248      AND fvl38.lookup_type(+)         = 'YES_NO'
184249   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
184250   AND fvl38.view_application_id(+) = 0
184251   AND fvl38.language(+)            = USERENV('LANG')
184252   
184253  ORDER BY event_id
184254 ;
184255 
184256 
184257 --
184258 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
184259 IS
184260 SELECT /*+ leading(xet) cardinality(xet,1) */
184261 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_NO_TP
184262 -- Event Class Code: USER_DEFINE
184263     xet.entity_id
184264    ,xet.legal_entity_id
184265    ,xet.entity_code
184266    ,xet.transaction_number
184267    ,xet.event_id
184268    ,xet.event_class_code
184269    ,xet.event_type_code
184270    ,xet.event_number
184271    ,xet.event_date
184272    ,xet.transaction_date
184273    ,xet.reference_num_1
184274    ,xet.reference_num_2
184275    ,xet.reference_num_3
184276    ,xet.reference_num_4
184277    ,xet.reference_char_1
184278    ,xet.reference_char_2
184279    ,xet.reference_char_3
184280    ,xet.reference_char_4
184281    ,xet.reference_date_1
184282    ,xet.reference_date_2
184283    ,xet.reference_date_3
184284    ,xet.reference_date_4
184285    ,xet.event_created_by
184286    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
184287   , l2.CODE_COMBINATION_ID    source_4
184288   , l2.DISTRIBUTION_IDENTIFIER    source_11
184289   , l2.CURRENCY_CODE    source_15
184290   , l2.ENTERED_AMOUNT    source_18
184291   , l2.CURRENCY_CONVERSION_DATE    source_19
184292   , l2.CURRENCY_CONVERSION_RATE    source_20
184293   , l2.CURRENCY_CONVERSION_TYPE    source_21
184294   , l2.ACCOUNTED_AMOUNT    source_22
184295   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
184296   FROM xla_events_gt     xet 
184297   , CST_XLA_INV_LINES_V  l2
184298  WHERE xet.event_id between x_first_event_id and x_last_event_id
184299    and xet.event_date between p_pad_start_date and p_pad_end_date
184300    and xet.event_type_code = C_EVENT_TYPE_CODE
184301    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
184302 ;
184303 
184304 --
184305 BEGIN
184306 IF g_log_enabled THEN
184307    l_log_module := C_DEFAULT_MODULE||'.EventType_284';
184308 END IF;
184309 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184310    trace
184311       (p_msg      => 'BEGIN of EventType_284'
184312       ,p_level    => C_LEVEL_PROCEDURE
184313       ,p_module   => l_log_module);
184314 END IF;
184315 
184316 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184317    trace
184318       (p_msg      => 'p_application_id = '||p_application_id||
184319                      ' - p_base_ledger_id = '||p_base_ledger_id||
184320                      ' - p_target_ledger_id  = '||p_target_ledger_id||
184321                      ' - p_language = '||p_language||
184322                      ' - p_currency_code = '||p_currency_code||
184323                      ' - p_sla_ledger_id = '||p_sla_ledger_id
184324       ,p_level    => C_LEVEL_STATEMENT
184325       ,p_module   => l_log_module);
184326 END IF;
184327 --
184328 -- initialze arrays
184329 --
184330 g_array_event.DELETE;
184331 l_rec_array_event := l_null_rec_array_event;
184332 --
184333 --------------------------------------
184334 -- 4262811 Initialze MPA Line Number
184335 --------------------------------------
184336 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
184337 
184338 --
184339 
184340 --
184341 OPEN header_cur;
184342 --
184343 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184344    trace
184345    (p_msg      => 'SQL - FETCH header_cur'
184346    ,p_level    => C_LEVEL_STATEMENT
184347    ,p_module   => l_log_module);
184348 END IF;
184349 --
184350 LOOP
184351 FETCH header_cur BULK COLLECT INTO
184352         l_array_entity_id
184353       , l_array_legal_entity_id
184354       , l_array_entity_code
184355       , l_array_transaction_num
184356       , l_array_event_id
184357       , l_array_class_code
184358       , l_array_event_type
184359       , l_array_event_number
184360       , l_array_event_date
184361       , l_array_transaction_date
184362       , l_array_reference_num_1
184363       , l_array_reference_num_2
184364       , l_array_reference_num_3
184365       , l_array_reference_num_4
184366       , l_array_reference_char_1
184367       , l_array_reference_char_2
184368       , l_array_reference_char_3
184369       , l_array_reference_char_4
184370       , l_array_reference_date_1
184371       , l_array_reference_date_2
184372       , l_array_reference_date_3
184373       , l_array_reference_date_4
184374       , l_array_event_created_by
184375       , l_array_budgetary_control_flag 
184376       , l_array_source_12
184377       , l_array_source_12_meaning
184378       , l_array_source_38
184379       , l_array_source_38_meaning
184380       LIMIT l_rows;
184381 --
184382 IF (C_LEVEL_EVENT >= g_log_level) THEN
184383    trace
184384    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
184385    ,p_level    => C_LEVEL_EVENT
184386    ,p_module   => l_log_module);
184387 END IF;
184388 --
184389 EXIT WHEN l_array_entity_id.COUNT = 0;
184390 
184391 -- initialize arrays
184392 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
184393 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
184394 
184395 --
184396 -- Bug 4458708
184397 --
184398 XLA_AE_LINES_PKG.g_LineNumber := 0;
184399 
184400 
184401 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
184402 g_last_hdr_idx := l_array_event_id.LAST;
184403 --
184404 -- loop for the headers. Each iteration is for each header extract row
184405 -- fetched in header cursor
184406 --
184407 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
184408 
184409 --
184410 -- set event info as cache for other routines to refer event attributes
184411 --
184412 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
184413    (p_application_id           => p_application_id
184414    ,p_primary_ledger_id        => p_primary_ledger_id
184415    ,p_base_ledger_id           => p_base_ledger_id
184416    ,p_target_ledger_id         => p_target_ledger_id
184417    ,p_entity_id                => l_array_entity_id(hdr_idx)
184418    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
184419    ,p_entity_code              => l_array_entity_code(hdr_idx)
184420    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
184421    ,p_event_id                 => l_array_event_id(hdr_idx)
184422    ,p_event_class_code         => l_array_class_code(hdr_idx)
184423    ,p_event_type_code          => l_array_event_type(hdr_idx)
184424    ,p_event_number             => l_array_event_number(hdr_idx)
184425    ,p_event_date               => l_array_event_date(hdr_idx)
184426    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
184427    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
184428    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
184429    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
184430    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
184431    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
184432    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
184433    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
184434    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
184435    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
184436    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
184437    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
184438    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
184439    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
184440    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
184441 
184442 --
184443 -- set the status of entry to C_VALID (0)
184444 --
184445 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
184446 
184447 --
184448 -- initialize a row for ae header
184449 --
184450 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
184451 
184452 l_event_id := l_array_event_id(hdr_idx);
184453 
184454 --
184455 -- storing the hdr_idx for event. May be used by line cursor.
184456 --
184457 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
184458 
184459 --
184460 -- store sources from header extract. This can be improved to
184461 -- store only those sources from header extract that may be used in lines
184462 --
184463 
184464 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
184465 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
184466 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
184467 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
184468 
184469 --
184470 -- initilaize the status of ae headers for diffrent balance types
184471 -- the status is initialised to C_NOT_CREATED (2)
184472 --
184473 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184474 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184475 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184476 
184477 --
184478 -- call api to validate and store accounting attributes for header
184479 --
184480 
184481 ------------------------------------------------------------
184482 -- Accrual Reversal : to get date for Standard Source (NONE)
184483 ------------------------------------------------------------
184484 l_acc_rev_gl_date_source := NULL;
184485 
184486      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
184487       l_rec_acct_attrs.array_date_value(1) := 
184488 xla_ae_sources_pkg.GetSystemSourceDate(
184489    p_source_code           => 'XLA_REFERENCE_DATE_1'
184490  , p_source_type_code      => 'Y'
184491  , p_source_application_id =>  602
184492 );
184493      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
184494       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
184495 
184496 
184497 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
184498 
184499 XLA_AE_HEADER_PKG.SetJeCategoryName;
184500 
184501 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
184502 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
184503 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
184504 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
184505 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
184506 
184507 
184508 -- No header level analytical criteria
184509 
184510 --
184511 --accounting attribute enhancement, bug 3612931
184512 --
184513 l_trx_reversal_source := SUBSTR(NULL, 1,30);
184514 
184515 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
184516    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
184517 
184518    xla_accounting_err_pkg.build_message
184519       (p_appli_s_name            => 'XLA'
184520       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
184521       ,p_token_1                 => 'ACCT_ATTR_NAME'
184522       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
184523       ,p_token_2                 => 'PRODUCT_NAME'
184524       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
184525       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
184526       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
184527       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
184528 
184529 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
184530    --
184531    -- following sets the accounting attributes needed to reverse
184532    -- accounting for a distributeion
184533    --
184534    xla_ae_lines_pkg.SetTrxReversalAttrs
184535       (p_event_id              => l_event_id
184536       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
184537       ,p_trx_reversal_source   => l_trx_reversal_source);
184538 
184539 END IF;
184540 
184541 
184542 ----------------------------------------------------------------
184543 -- 4262811 -  update the header statuses to invalid in need be
184544 ----------------------------------------------------------------
184545 --
184546 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
184547 
184548 
184549   -----------------------------------------------
184550   -- No accrual reversal for the event class/type
184551   -----------------------------------------------
184552 ----------------------------------------------------------------
184553 
184554 --
184555 -- this ends the header loop iteration for one bulk fetch
184556 --
184557 END LOOP;
184558 
184559 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
184560 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
184561 
184562 --
184563 -- insert dummy rows into lines gt table that were created due to
184564 -- transaction reversals
184565 --
184566 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
184567    l_result := XLA_AE_LINES_PKG.InsertLines;
184568 END IF;
184569 
184570 --
184571 -- reset the temp_line_num for each set of events fetched from header
184572 -- cursor rather than doing it for each new event in line cursor
184573 -- Bug 3939231
184574 --
184575 xla_ae_lines_pkg.g_temp_line_num := 0;
184576 
184577 
184578 
184579 --
184580 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
184581 --
184582 --
184583 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184584 
184585       trace
184586          (p_msg      => 'SQL - FETCH line_cur'
184587          ,p_level    => C_LEVEL_STATEMENT
184588          ,p_module   => l_log_module);
184589 
184590 END IF;
184591 --
184592 --
184593 LOOP
184594   --
184595   FETCH line_cur BULK COLLECT INTO
184596         l_array_entity_id
184597       , l_array_legal_entity_id
184598       , l_array_entity_code
184599       , l_array_transaction_num
184600       , l_array_event_id
184601       , l_array_class_code
184602       , l_array_event_type
184603       , l_array_event_number
184604       , l_array_event_date
184605       , l_array_transaction_date
184606       , l_array_reference_num_1
184607       , l_array_reference_num_2
184608       , l_array_reference_num_3
184609       , l_array_reference_num_4
184610       , l_array_reference_char_1
184611       , l_array_reference_char_2
184612       , l_array_reference_char_3
184613       , l_array_reference_char_4
184614       , l_array_reference_date_1
184615       , l_array_reference_date_2
184616       , l_array_reference_date_3
184617       , l_array_reference_date_4
184618       , l_array_event_created_by
184619       , l_array_budgetary_control_flag
184620       , l_array_extract_line_num 
184621       , l_array_source_4
184622       , l_array_source_11
184623       , l_array_source_15
184624       , l_array_source_18
184625       , l_array_source_19
184626       , l_array_source_20
184627       , l_array_source_21
184628       , l_array_source_22
184629       , l_array_source_24
184630       LIMIT l_rows;
184631 
184632   --
184633   IF (C_LEVEL_EVENT >= g_log_level) THEN
184634             trace
184635                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
184636                ,p_level    => C_LEVEL_EVENT
184637                ,p_module   => l_log_module);
184638   END IF;
184639   --
184640   EXIT WHEN l_array_entity_id.count = 0;
184641 
184642   XLA_AE_LINES_PKG.g_rec_lines := null;
184643 
184644 --
184645 -- Bug 4458708
184646 --
184647 XLA_AE_LINES_PKG.g_LineNumber := 0;
184648 --
184649 --
184650 
184651 FOR Idx IN 1..l_array_event_id.count LOOP
184652    --
184653    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
184654    --
184655    l_event_id := l_array_event_id(idx);  -- 5648433
184656 
184657    --
184658    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
184659    --
184660 
184661    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
184662              (g_array_event(l_event_id).array_value_num('header_index'))
184663          ,'N'
184664          ) <> 'Y'
184665    THEN
184666       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184667          trace
184668             (p_msg      => 'Trancaction revesal option is not Y '
184669             ,p_level    => C_LEVEL_STATEMENT
184670             ,p_module   => l_log_module);
184671       END IF;
184672 
184673 --
184674 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
184675 --
184676 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
184677 --
184678 -- set event info as cache for other routines to refer event attributes
184679 --
184680 
184681 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
184682    l_previous_event_id := l_event_id;
184683 
184684    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
184685       (p_application_id           => p_application_id
184686       ,p_primary_ledger_id        => p_primary_ledger_id
184687       ,p_base_ledger_id           => p_base_ledger_id
184688       ,p_target_ledger_id         => p_target_ledger_id
184689       ,p_entity_id                => l_array_entity_id(Idx)
184690       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
184691       ,p_entity_code              => l_array_entity_code(Idx)
184692       ,p_transaction_num          => l_array_transaction_num(Idx)
184693       ,p_event_id                 => l_array_event_id(Idx)
184694       ,p_event_class_code         => l_array_class_code(Idx)
184695       ,p_event_type_code          => l_array_event_type(Idx)
184696       ,p_event_number             => l_array_event_number(Idx)
184697       ,p_event_date               => l_array_event_date(Idx)
184698       ,p_transaction_date         => l_array_transaction_date(Idx)
184699       ,p_reference_num_1          => l_array_reference_num_1(Idx)
184700       ,p_reference_num_2          => l_array_reference_num_2(Idx)
184701       ,p_reference_num_3          => l_array_reference_num_3(Idx)
184702       ,p_reference_num_4          => l_array_reference_num_4(Idx)
184703       ,p_reference_char_1         => l_array_reference_char_1(Idx)
184704       ,p_reference_char_2         => l_array_reference_char_2(Idx)
184705       ,p_reference_char_3         => l_array_reference_char_3(Idx)
184706       ,p_reference_char_4         => l_array_reference_char_4(Idx)
184707       ,p_reference_date_1         => l_array_reference_date_1(Idx)
184708       ,p_reference_date_2         => l_array_reference_date_2(Idx)
184709       ,p_reference_date_3         => l_array_reference_date_3(Idx)
184710       ,p_reference_date_4         => l_array_reference_date_4(Idx)
184711       ,p_event_created_by         => l_array_event_created_by(Idx)
184712       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
184713        --
184714 END IF;
184715 
184716 
184717 
184718 --
184719 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
184720 
184721 l_acct_reversal_source := SUBSTR(NULL, 1,30);
184722 
184723 IF l_continue_with_lines THEN
184724    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
184725       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
184726 
184727       xla_accounting_err_pkg.build_message
184728          (p_appli_s_name            => 'XLA'
184729          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
184730          ,p_token_1                 => 'LINE_NUMBER'
184731          ,p_value_1                 => l_array_extract_line_num(Idx)
184732          ,p_token_2                 => 'PRODUCT_NAME'
184733          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
184734          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
184735          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
184736          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
184737 
184738    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
184739       --
184740       -- following sets the accounting attributes needed to reverse
184741       -- accounting for a distributeion
184742       --
184743 
184744       --
184745       -- 5217187
184746       --
184747       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
184748       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
184749                                        g_array_event(l_event_id).array_value_num('header_index'));
184750       --
184751       --
184752 
184753       -- No reversal code generated
184754 
184755       xla_ae_lines_pkg.SetAcctReversalAttrs
184756          (p_event_id             => l_event_id
184757          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
184758          ,p_calculate_acctd_flag => l_calculate_acctd_flag
184759          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
184760    END IF;
184761 
184762    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
184763        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
184764 
184765 --
184766 AcctLineType_44 (
184767  p_application_id  => p_application_id
184768  ,p_event_id     => l_event_id
184769  ,p_calculate_acctd_flag => l_calculate_acctd_flag
184770  ,p_calculate_g_l_flag => l_calculate_g_l_flag
184771  ,p_actual_flag => l_actual_flag
184772  ,p_balance_type_code => l_balance_type_code
184773  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184774  
184775  , p_source_4 => l_array_source_4(Idx)
184776  , p_source_11 => l_array_source_11(Idx)
184777  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184778  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184779  , p_source_15 => l_array_source_15(Idx)
184780  , p_source_18 => l_array_source_18(Idx)
184781  , p_source_19 => l_array_source_19(Idx)
184782  , p_source_20 => l_array_source_20(Idx)
184783  , p_source_21 => l_array_source_21(Idx)
184784  , p_source_22 => l_array_source_22(Idx)
184785  , p_source_24 => l_array_source_24(Idx)
184786  );
184787 If(l_balance_type_code = 'A') THEN
184788   l_actual_gain_loss_ref := l_gain_or_loss_ref;
184789 END IF;
184790 
184791 --
184792 
184793 
184794 --
184795 AcctLineType_52 (
184796  p_application_id  => p_application_id
184797  ,p_event_id     => l_event_id
184798  ,p_calculate_acctd_flag => l_calculate_acctd_flag
184799  ,p_calculate_g_l_flag => l_calculate_g_l_flag
184800  ,p_actual_flag => l_actual_flag
184801  ,p_balance_type_code => l_balance_type_code
184802  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184803  
184804  , p_source_4 => l_array_source_4(Idx)
184805  , p_source_11 => l_array_source_11(Idx)
184806  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184807  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184808  , p_source_15 => l_array_source_15(Idx)
184809  , p_source_18 => l_array_source_18(Idx)
184810  , p_source_19 => l_array_source_19(Idx)
184811  , p_source_20 => l_array_source_20(Idx)
184812  , p_source_21 => l_array_source_21(Idx)
184813  , p_source_22 => l_array_source_22(Idx)
184814  , p_source_24 => l_array_source_24(Idx)
184815  );
184816 If(l_balance_type_code = 'A') THEN
184817   l_actual_gain_loss_ref := l_gain_or_loss_ref;
184818 END IF;
184819 
184820 --
184821 
184822 
184823 --
184824 AcctLineType_58 (
184825  p_application_id  => p_application_id
184826  ,p_event_id     => l_event_id
184827  ,p_calculate_acctd_flag => l_calculate_acctd_flag
184828  ,p_calculate_g_l_flag => l_calculate_g_l_flag
184829  ,p_actual_flag => l_actual_flag
184830  ,p_balance_type_code => l_balance_type_code
184831  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184832  
184833  , p_source_4 => l_array_source_4(Idx)
184834  , p_source_11 => l_array_source_11(Idx)
184835  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184836  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184837  , p_source_15 => l_array_source_15(Idx)
184838  , p_source_18 => l_array_source_18(Idx)
184839  , p_source_19 => l_array_source_19(Idx)
184840  , p_source_20 => l_array_source_20(Idx)
184841  , p_source_21 => l_array_source_21(Idx)
184842  , p_source_22 => l_array_source_22(Idx)
184843  , p_source_24 => l_array_source_24(Idx)
184844  );
184845 If(l_balance_type_code = 'A') THEN
184846   l_actual_gain_loss_ref := l_gain_or_loss_ref;
184847 END IF;
184848 
184849 --
184850 
184851 
184852 --
184853 AcctLineType_74 (
184854  p_application_id  => p_application_id
184855  ,p_event_id     => l_event_id
184856  ,p_calculate_acctd_flag => l_calculate_acctd_flag
184857  ,p_calculate_g_l_flag => l_calculate_g_l_flag
184858  ,p_actual_flag => l_actual_flag
184859  ,p_balance_type_code => l_balance_type_code
184860  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184861  
184862  , p_source_4 => l_array_source_4(Idx)
184863  , p_source_11 => l_array_source_11(Idx)
184864  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184865  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184866  , p_source_15 => l_array_source_15(Idx)
184867  , p_source_18 => l_array_source_18(Idx)
184868  , p_source_19 => l_array_source_19(Idx)
184869  , p_source_20 => l_array_source_20(Idx)
184870  , p_source_21 => l_array_source_21(Idx)
184871  , p_source_22 => l_array_source_22(Idx)
184872  , p_source_24 => l_array_source_24(Idx)
184873  );
184874 If(l_balance_type_code = 'A') THEN
184875   l_actual_gain_loss_ref := l_gain_or_loss_ref;
184876 END IF;
184877 
184878 --
184879 
184880 
184881 --
184882 AcctLineType_124 (
184883  p_application_id  => p_application_id
184884  ,p_event_id     => l_event_id
184885  ,p_calculate_acctd_flag => l_calculate_acctd_flag
184886  ,p_calculate_g_l_flag => l_calculate_g_l_flag
184887  ,p_actual_flag => l_actual_flag
184888  ,p_balance_type_code => l_balance_type_code
184889  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184890  
184891  , p_source_4 => l_array_source_4(Idx)
184892  , p_source_11 => l_array_source_11(Idx)
184893  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184894  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184895  , p_source_15 => l_array_source_15(Idx)
184896  , p_source_18 => l_array_source_18(Idx)
184897  , p_source_19 => l_array_source_19(Idx)
184898  , p_source_20 => l_array_source_20(Idx)
184899  , p_source_21 => l_array_source_21(Idx)
184900  , p_source_22 => l_array_source_22(Idx)
184901  , p_source_24 => l_array_source_24(Idx)
184902  );
184903 If(l_balance_type_code = 'A') THEN
184904   l_actual_gain_loss_ref := l_gain_or_loss_ref;
184905 END IF;
184906 
184907 --
184908 
184909 
184910 --
184911 AcctLineType_169 (
184912  p_application_id  => p_application_id
184913  ,p_event_id     => l_event_id
184914  ,p_calculate_acctd_flag => l_calculate_acctd_flag
184915  ,p_calculate_g_l_flag => l_calculate_g_l_flag
184916  ,p_actual_flag => l_actual_flag
184917  ,p_balance_type_code => l_balance_type_code
184918  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184919  
184920  , p_source_4 => l_array_source_4(Idx)
184921  , p_source_11 => l_array_source_11(Idx)
184922  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184923  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184924  , p_source_15 => l_array_source_15(Idx)
184925  , p_source_18 => l_array_source_18(Idx)
184926  , p_source_19 => l_array_source_19(Idx)
184927  , p_source_20 => l_array_source_20(Idx)
184928  , p_source_21 => l_array_source_21(Idx)
184929  , p_source_22 => l_array_source_22(Idx)
184930  , p_source_24 => l_array_source_24(Idx)
184931  );
184932 If(l_balance_type_code = 'A') THEN
184933   l_actual_gain_loss_ref := l_gain_or_loss_ref;
184934 END IF;
184935 
184936 --
184937 
184938 
184939 --
184940 AcctLineType_182 (
184941  p_application_id  => p_application_id
184942  ,p_event_id     => l_event_id
184943  ,p_calculate_acctd_flag => l_calculate_acctd_flag
184944  ,p_calculate_g_l_flag => l_calculate_g_l_flag
184945  ,p_actual_flag => l_actual_flag
184946  ,p_balance_type_code => l_balance_type_code
184947  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184948  
184949  , p_source_4 => l_array_source_4(Idx)
184950  , p_source_11 => l_array_source_11(Idx)
184951  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184952  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184953  , p_source_15 => l_array_source_15(Idx)
184954  , p_source_18 => l_array_source_18(Idx)
184955  , p_source_19 => l_array_source_19(Idx)
184956  , p_source_20 => l_array_source_20(Idx)
184957  , p_source_21 => l_array_source_21(Idx)
184958  , p_source_22 => l_array_source_22(Idx)
184959  , p_source_24 => l_array_source_24(Idx)
184960  );
184961 If(l_balance_type_code = 'A') THEN
184962   l_actual_gain_loss_ref := l_gain_or_loss_ref;
184963 END IF;
184964 
184965 --
184966 
184967 
184968 --
184969 AcctLineType_210 (
184970  p_application_id  => p_application_id
184971  ,p_event_id     => l_event_id
184972  ,p_calculate_acctd_flag => l_calculate_acctd_flag
184973  ,p_calculate_g_l_flag => l_calculate_g_l_flag
184974  ,p_actual_flag => l_actual_flag
184975  ,p_balance_type_code => l_balance_type_code
184976  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184977  
184978  , p_source_4 => l_array_source_4(Idx)
184979  , p_source_11 => l_array_source_11(Idx)
184980  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184981  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184982  , p_source_15 => l_array_source_15(Idx)
184983  , p_source_18 => l_array_source_18(Idx)
184984  , p_source_19 => l_array_source_19(Idx)
184985  , p_source_20 => l_array_source_20(Idx)
184986  , p_source_21 => l_array_source_21(Idx)
184987  , p_source_22 => l_array_source_22(Idx)
184988  , p_source_24 => l_array_source_24(Idx)
184989  );
184990 If(l_balance_type_code = 'A') THEN
184991   l_actual_gain_loss_ref := l_gain_or_loss_ref;
184992 END IF;
184993 
184994 --
184995 
184996 
184997 --
184998 AcctLineType_217 (
184999  p_application_id  => p_application_id
185000  ,p_event_id     => l_event_id
185001  ,p_calculate_acctd_flag => l_calculate_acctd_flag
185002  ,p_calculate_g_l_flag => l_calculate_g_l_flag
185003  ,p_actual_flag => l_actual_flag
185004  ,p_balance_type_code => l_balance_type_code
185005  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185006  
185007  , p_source_4 => l_array_source_4(Idx)
185008  , p_source_11 => l_array_source_11(Idx)
185009  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185010  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185011  , p_source_15 => l_array_source_15(Idx)
185012  , p_source_18 => l_array_source_18(Idx)
185013  , p_source_19 => l_array_source_19(Idx)
185014  , p_source_20 => l_array_source_20(Idx)
185015  , p_source_21 => l_array_source_21(Idx)
185016  , p_source_22 => l_array_source_22(Idx)
185017  , p_source_24 => l_array_source_24(Idx)
185018  );
185019 If(l_balance_type_code = 'A') THEN
185020   l_actual_gain_loss_ref := l_gain_or_loss_ref;
185021 END IF;
185022 
185023 --
185024 
185025       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
185026       -- or secondary ledger that has different currency with primary
185027       -- or alc that is calculated by sla
185028       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
185029             (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'))
185030 
185031 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
185032 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
185033           AND (l_actual_flag = 'A')) THEN
185034         XLA_AE_LINES_PKG.CreateGainOrLossLines(
185035           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
185036          ,p_application_id   => p_application_id
185037          ,p_amb_context_code => 'DEFAULT'
185038          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
185039          ,p_event_class_code => C_EVENT_CLASS_CODE
185040          ,p_event_type_code  => C_EVENT_TYPE_CODE
185041          
185042          ,p_gain_ccid        => -1
185043          ,p_loss_ccid        => -1
185044 
185045          ,p_actual_flag      => l_actual_flag
185046          ,p_enc_flag         => null
185047          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
185048          ,p_enc_g_l_ref      => null
185049          );
185050       END IF;
185051    END IF;
185052 END IF;
185053 
185054    ELSE
185055       --
185056       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
185057       --
185058       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185059          trace
185060             (p_msg      => 'Trancaction revesal option is Y'
185061             ,p_level    => C_LEVEL_STATEMENT
185062             ,p_module   => l_log_module);
185063       END IF;
185064    END IF;
185065 
185066 END LOOP;
185067 l_result := XLA_AE_LINES_PKG.InsertLines ;
185068 end loop;
185069 close line_cur;
185070 
185071 
185072 --
185073 -- insert headers into xla_ae_headers_gt table
185074 --
185075 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
185076 
185077 -- insert into errors table here.
185078 
185079 END LOOP;
185080 
185081 --
185082 -- 4865292
185083 --
185084 -- Compare g_hdr_extract_count with event count in
185085 -- CreateHeadersAndLines.
185086 --
185087 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
185088 
185089 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185090    trace (p_msg     => '# rows extracted from header extract objects '
185091                     || ' (running total): '
185092                     || g_hdr_extract_count
185093          ,p_level   => C_LEVEL_STATEMENT
185094          ,p_module  => l_log_module);
185095 END IF;
185096 
185097 CLOSE header_cur;
185098 --
185099 
185100 --
185101 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185102    trace
185103       (p_msg      => 'END of EventType_284'
185104       ,p_level    => C_LEVEL_PROCEDURE
185105       ,p_module   => l_log_module);
185106 END IF;
185107 --
185108 RETURN l_result;
185109 EXCEPTION
185110 WHEN xla_exceptions_pkg.application_exception THEN
185111    
185112 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
185113 
185114    
185115 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
185116 
185117    RAISE;
185118 
185119 WHEN NO_DATA_FOUND THEN
185120 
185121 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
185122 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
185123 
185124 FOR header_record IN header_cur
185125 LOOP
185126     l_array_header_events(header_record.event_id) := header_record.event_id;
185127 END LOOP;
185128 
185129 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
185130 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
185131 
185132 fnd_file.put_line(fnd_file.LOG, '                    ');
185133 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
185134 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
185135 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
185136 
185137 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
185138 LOOP
185139 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
185140 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
185141         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
185142 	END IF;
185143 END LOOP;
185144 
185145 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
185146 fnd_file.put_line(fnd_file.LOG, '                    ');
185147 
185148 
185149 xla_exceptions_pkg.raise_message
185150       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_284');
185151 
185152 
185153 WHEN OTHERS THEN
185154    xla_exceptions_pkg.raise_message
185155       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_284');
185156 END EventType_284;
185157 --
185158 
185159 ---------------------------------------
185160 --
185161 -- PRIVATE PROCEDURE
185162 --         insert_sources_285
185163 --
185164 ----------------------------------------
185165 --
185166 PROCEDURE insert_sources_285(
185167                                 p_target_ledger_id       IN NUMBER
185168                               , p_language               IN VARCHAR2
185169                               , p_sla_ledger_id          IN NUMBER
185170                               , p_pad_start_date         IN DATE
185171                               , p_pad_end_date           IN DATE
185172                          )
185173 IS
185174 
185175 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
185176 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
185177 p_apps_owner                   VARCHAR2(30);
185178 l_log_module                   VARCHAR2(240);
185179 BEGIN
185180 IF g_log_enabled THEN
185181       l_log_module := C_DEFAULT_MODULE||'.insert_sources_285';
185182 END IF;
185183 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185184 
185185       trace
185186          (p_msg      => 'BEGIN of insert_sources_285'
185187          ,p_level    => C_LEVEL_PROCEDURE
185188          ,p_module   => l_log_module);
185189 
185190 END IF;
185191 
185192 -- select APPS owner
185193 SELECT oracle_username
185194   INTO p_apps_owner
185195   FROM fnd_oracle_userid
185196  WHERE read_only_flag = 'U'
185197 ;
185198 
185199 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185200       trace
185201          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
185202                         ' - p_language = '||p_language||
185203                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
185204                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
185205                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
185206                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
185207          ,p_level    => C_LEVEL_STATEMENT
185208          ,p_module   => l_log_module);
185209 END IF;
185210 
185211 
185212 --
185213 INSERT INTO xla_diag_sources --hdr1
185214 (
185215         event_id
185216       , ledger_id
185217       , sla_ledger_id
185218       , description_language
185219       , object_name
185220       , object_type_code
185221       , line_number
185222       , source_application_id
185223       , source_type_code
185224       , source_code
185225       , source_value
185226       , source_meaning
185227       , created_by
185228       , creation_date
185229       , last_update_date
185230       , last_updated_by
185231       , last_update_login
185232       , program_update_date
185233       , program_application_id
185234       , program_id
185235       , request_id
185236 )
185237 SELECT
185238         event_id
185239       , p_target_ledger_id
185240       , p_sla_ledger_id
185241       , p_language
185242       , object_name
185243       , object_type_code
185244       , line_number
185245       , source_application_id
185246       , source_type_code
185247       , source_code
185248       , SUBSTR(source_value ,1,1996)
185249       , SUBSTR(source_meaning,1,200)
185250       , xla_environment_pkg.g_Usr_Id
185251       , TRUNC(SYSDATE)
185252       , TRUNC(SYSDATE)
185253       , xla_environment_pkg.g_Usr_Id
185254       , xla_environment_pkg.g_Login_Id
185255       , TRUNC(SYSDATE)
185256       , xla_environment_pkg.g_Prog_Appl_Id
185257       , xla_environment_pkg.g_Prog_Id
185258       , xla_environment_pkg.g_Req_Id
185259   FROM (
185260        SELECT xet.event_id                  event_id
185261             , 0                             line_number
185262             , CASE r
185263                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
185264                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
185265                 
185266                ELSE null
185267               END                           object_name
185268             , CASE r
185269                 WHEN 1 THEN 'HEADER' 
185270                 WHEN 2 THEN 'HEADER' 
185271                 
185272                 ELSE null
185273               END                           object_type_code
185274             , CASE r
185275                 WHEN 1 THEN '707' 
185276                 WHEN 2 THEN '707' 
185277                 
185278                 ELSE null
185279               END                           source_application_id
185280             , 'S'             source_type_code
185281             , CASE r
185282                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
185283                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
185284                 
185285                 ELSE null
185286               END                           source_code
185287             , CASE r
185288                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
185289                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
185290                 
185291                 ELSE null
185292               END                           source_value
185293             , CASE r
185294                 WHEN 1 THEN fvl12.meaning
185295                 WHEN 2 THEN fvl38.meaning
185296                 
185297                 ELSE null
185298               END               source_meaning
185299         FROM xla_events_gt     xet  
185300       , CST_XLA_INV_HEADERS_V  h1
185301   , fnd_lookup_values    fvl12
185302   , fnd_lookup_values    fvl38
185303             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
185304        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
185305          AND xet.event_type_code = C_EVENT_TYPE_CODE
185306             AND h1.event_id = xet.event_id
185307    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
185308   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
185309   AND fvl12.view_application_id(+) = 700
185310   AND fvl12.language(+)            = USERENV('LANG')
185311      AND fvl38.lookup_type(+)         = 'YES_NO'
185312   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
185313   AND fvl38.view_application_id(+) = 0
185314   AND fvl38.language(+)            = USERENV('LANG')
185315   
185316 )
185317 ;
185318 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185319 
185320       trace
185321          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
185322          ,p_level    => C_LEVEL_STATEMENT
185323          ,p_module   => l_log_module);
185324 
185325 END IF;
185326 --
185327 
185328 
185329 
185330 --
185331 INSERT INTO xla_diag_sources --line1
185332 (
185333         event_id
185334       , ledger_id
185335       , sla_ledger_id
185336       , description_language
185337       , object_name
185338       , object_type_code
185339       , line_number
185340       , source_application_id
185341       , source_type_code
185342       , source_code
185343       , source_value
185344       , source_meaning
185345       , created_by
185346       , creation_date
185347       , last_update_date
185348       , last_updated_by
185349       , last_update_login
185350       , program_update_date
185351       , program_application_id
185352       , program_id
185353       , request_id
185354 )
185355 SELECT  event_id
185356       , p_target_ledger_id
185357       , p_sla_ledger_id
185358       , p_language
185359       , object_name
185360       , object_type_code
185361       , line_number
185362       , source_application_id
185363       , source_type_code
185364       , source_code
185365       , SUBSTR(source_value,1,1996)
185366       , SUBSTR(source_meaning,1,200)
185367       , xla_environment_pkg.g_Usr_Id
185368       , TRUNC(SYSDATE)
185369       , TRUNC(SYSDATE)
185370       , xla_environment_pkg.g_Usr_Id
185371       , xla_environment_pkg.g_Login_Id
185372       , TRUNC(SYSDATE)
185373       , xla_environment_pkg.g_Prog_Appl_Id
185374       , xla_environment_pkg.g_Prog_Id
185375       , xla_environment_pkg.g_Req_Id
185376   FROM (
185377        SELECT xet.event_id                  event_id
185378             , l2.line_number                 line_number
185379             , CASE r
185380                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
185381                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
185382                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
185383                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
185384                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
185385                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
185386                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
185387                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
185388                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
185389                 
185390                ELSE null
185391               END                           object_name
185392             , CASE r
185393                 WHEN 1 THEN 'LINE' 
185394                 WHEN 2 THEN 'LINE' 
185395                 WHEN 3 THEN 'LINE' 
185396                 WHEN 4 THEN 'LINE' 
185397                 WHEN 5 THEN 'LINE' 
185398                 WHEN 6 THEN 'LINE' 
185399                 WHEN 7 THEN 'LINE' 
185400                 WHEN 8 THEN 'LINE' 
185401                 WHEN 9 THEN 'LINE' 
185402                 
185403                 ELSE null
185404               END                           object_type_code
185405             , CASE r
185406                 WHEN 1 THEN '707' 
185407                 WHEN 2 THEN '707' 
185408                 WHEN 3 THEN '707' 
185409                 WHEN 4 THEN '707' 
185410                 WHEN 5 THEN '707' 
185411                 WHEN 6 THEN '707' 
185412                 WHEN 7 THEN '707' 
185413                 WHEN 8 THEN '707' 
185414                 WHEN 9 THEN '707' 
185415                 
185416                 ELSE null
185417               END                           source_application_id
185418             , 'S'             source_type_code
185419             , CASE r
185420                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
185421                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
185422                 WHEN 3 THEN 'CURRENCY_CODE' 
185423                 WHEN 4 THEN 'ENTERED_AMOUNT' 
185424                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
185425                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
185426                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
185427                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
185428                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
185429                 
185430                 ELSE null
185431               END                           source_code
185432             , CASE r
185433                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
185434                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
185435                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
185436                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
185437                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
185438                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
185439                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
185440                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
185441                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
185442                 
185443                 ELSE null
185444               END                           source_value
185445             , null              source_meaning
185446          FROM  xla_events_gt     xet  
185447         , CST_XLA_INV_LINES_V  l2
185448             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
185449         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
185450           AND xet.event_type_code = C_EVENT_TYPE_CODE
185451             AND l2.event_id          = xet.event_id
185452 
185453 )
185454 ;
185455 --
185456 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185457 
185458       trace
185459          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
185460          ,p_level    => C_LEVEL_STATEMENT
185461          ,p_module   => l_log_module);
185462 
185463 END IF;
185464 
185465 
185466 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185467       trace
185468          (p_msg      => 'END of insert_sources_285'
185469          ,p_level    => C_LEVEL_PROCEDURE
185470          ,p_module   => l_log_module);
185471 END IF;
185472 EXCEPTION
185473   WHEN xla_exceptions_pkg.application_exception THEN
185474       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
185475             trace
185476                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
185477                ,p_level    => C_LEVEL_EXCEPTION
185478                ,p_module   => l_log_module);
185479       END IF;
185480       RAISE;
185481   WHEN OTHERS THEN
185482       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
185483             trace
185484                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
185485                ,p_level    => C_LEVEL_EXCEPTION
185486                ,p_module   => l_log_module);
185487        END IF;
185488        xla_exceptions_pkg.raise_message
185489            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_285');
185490 END insert_sources_285;
185491 --
185492 
185493 ---------------------------------------
185494 --
185495 -- PRIVATE FUNCTION
185496 --         EventType_285
185497 --
185498 ----------------------------------------
185499 --
185500 FUNCTION EventType_285
185501        (p_application_id         IN NUMBER
185502        ,p_base_ledger_id         IN NUMBER
185503        ,p_target_ledger_id       IN NUMBER
185504        ,p_language               IN VARCHAR2
185505        ,p_currency_code          IN VARCHAR2
185506        ,p_sla_ledger_id          IN NUMBER
185507        ,p_pad_start_date         IN DATE
185508        ,p_pad_end_date           IN DATE
185509        ,p_primary_ledger_id      IN NUMBER)
185510 RETURN BOOLEAN IS
185511 --
185512 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
185513 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
185514 
185515 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
185516 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
185517 --
185518 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185519 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185520 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185521 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185522 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185523 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185524 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185525 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185526 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185527 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185528 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185529 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185530 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185531 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185532 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185533 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185534 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185535 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185536 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185537 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185538 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185539 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185540 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
185541 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185542 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
185543 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
185544 
185545 l_event_id                             NUMBER;
185546 l_previous_event_id                    NUMBER;
185547 l_first_event_id                       NUMBER;
185548 l_last_event_id                        NUMBER;
185549 
185550 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
185551 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
185552 --
185553 --
185554 l_result                    BOOLEAN := TRUE;
185555 l_rows                      NUMBER  := 1000;
185556 l_event_type_name           VARCHAR2(80) := 'User-defined Recipient Intransit Shipment - Transfer Price - FOB Shipment';
185557 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
185558 l_description               VARCHAR2(4000);
185559 l_transaction_reversal      NUMBER;
185560 l_ae_header_id              NUMBER;
185561 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
185562 l_log_module                VARCHAR2(240);
185563 --
185564 l_acct_reversal_source      VARCHAR2(30);
185565 l_trx_reversal_source       VARCHAR2(30);
185566 
185567 l_continue_with_lines       BOOLEAN := TRUE;
185568 --
185569 l_acc_rev_gl_date_source    DATE;                      -- 4262811
185570 --
185571 type t_array_event_id is table of number index by binary_integer;
185572 
185573 l_rec_array_event                    t_rec_array_event;
185574 l_null_rec_array_event               t_rec_array_event;
185575 l_array_ae_header_id                 xla_number_array_type;
185576 l_actual_flag                        VARCHAR2(1) := NULL;
185577 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
185578 l_balance_type_code                  VARCHAR2(1) :=NULL;
185579 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
185580 
185581 --
185582 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
185583 --
185584 
185585 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
185586 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
185587 
185588 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
185589 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
185590 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
185591 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
185592 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
185593 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
185594 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
185595 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
185596 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
185597 
185598 l_array_source_12              t_array_source_12;
185599 l_array_source_12_meaning      t_array_lookup_meaning;
185600 l_array_source_38              t_array_source_38;
185601 l_array_source_38_meaning      t_array_lookup_meaning;
185602 
185603 l_array_source_4      t_array_source_4;
185604 l_array_source_11      t_array_source_11;
185605 l_array_source_15      t_array_source_15;
185606 l_array_source_18      t_array_source_18;
185607 l_array_source_19      t_array_source_19;
185608 l_array_source_20      t_array_source_20;
185609 l_array_source_21      t_array_source_21;
185610 l_array_source_22      t_array_source_22;
185611 l_array_source_24      t_array_source_24;
185612 
185613 --
185614 CURSOR header_cur
185615 IS
185616 SELECT /*+ leading(xet) cardinality(xet,1) */
185617 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_TP
185618 -- Event Class Code: USER_DEFINE
185619     xet.entity_id
185620   , xet.legal_entity_id
185621   , xet.entity_code
185622   , xet.transaction_number
185623   , xet.event_id
185624   , xet.event_class_code
185625   , xet.event_type_code
185626   , xet.event_number
185627   , xet.event_date
185628   , xet.transaction_date
185629   , xet.reference_num_1
185630   , xet.reference_num_2
185631   , xet.reference_num_3
185632   , xet.reference_num_4
185633   , xet.reference_char_1
185634   , xet.reference_char_2
185635   , xet.reference_char_3
185636   , xet.reference_char_4
185637   , xet.reference_date_1
185638   , xet.reference_date_2
185639   , xet.reference_date_3
185640   , xet.reference_date_4
185641   , xet.event_created_by
185642   , xet.budgetary_control_flag 
185643   , h1.DISTRIBUTION_TYPE    source_12
185644   , fvl12.meaning   source_12_meaning
185645   , h1.TRANSFER_TO_GL_INDICATOR    source_38
185646   , fvl38.meaning   source_38_meaning
185647   FROM xla_events_gt     xet 
185648   , CST_XLA_INV_HEADERS_V  h1
185649   , fnd_lookup_values    fvl12
185650   , fnd_lookup_values    fvl38
185651  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
185652    and xet.event_type_code = C_EVENT_TYPE_CODE
185653    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
185654    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
185655   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
185656   AND fvl12.view_application_id(+) = 700
185657   AND fvl12.language(+)            = USERENV('LANG')
185658      AND fvl38.lookup_type(+)         = 'YES_NO'
185659   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
185660   AND fvl38.view_application_id(+) = 0
185661   AND fvl38.language(+)            = USERENV('LANG')
185662   
185663  ORDER BY event_id
185664 ;
185665 
185666 
185667 --
185668 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
185669 IS
185670 SELECT /*+ leading(xet) cardinality(xet,1) */
185671 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_TP
185672 -- Event Class Code: USER_DEFINE
185673     xet.entity_id
185674    ,xet.legal_entity_id
185675    ,xet.entity_code
185676    ,xet.transaction_number
185677    ,xet.event_id
185678    ,xet.event_class_code
185679    ,xet.event_type_code
185680    ,xet.event_number
185681    ,xet.event_date
185682    ,xet.transaction_date
185683    ,xet.reference_num_1
185684    ,xet.reference_num_2
185685    ,xet.reference_num_3
185686    ,xet.reference_num_4
185687    ,xet.reference_char_1
185688    ,xet.reference_char_2
185689    ,xet.reference_char_3
185690    ,xet.reference_char_4
185691    ,xet.reference_date_1
185692    ,xet.reference_date_2
185693    ,xet.reference_date_3
185694    ,xet.reference_date_4
185695    ,xet.event_created_by
185696    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
185697   , l2.CODE_COMBINATION_ID    source_4
185698   , l2.DISTRIBUTION_IDENTIFIER    source_11
185699   , l2.CURRENCY_CODE    source_15
185700   , l2.ENTERED_AMOUNT    source_18
185701   , l2.CURRENCY_CONVERSION_DATE    source_19
185702   , l2.CURRENCY_CONVERSION_RATE    source_20
185703   , l2.CURRENCY_CONVERSION_TYPE    source_21
185704   , l2.ACCOUNTED_AMOUNT    source_22
185705   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
185706   FROM xla_events_gt     xet 
185707   , CST_XLA_INV_LINES_V  l2
185708  WHERE xet.event_id between x_first_event_id and x_last_event_id
185709    and xet.event_date between p_pad_start_date and p_pad_end_date
185710    and xet.event_type_code = C_EVENT_TYPE_CODE
185711    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
185712 ;
185713 
185714 --
185715 BEGIN
185716 IF g_log_enabled THEN
185717    l_log_module := C_DEFAULT_MODULE||'.EventType_285';
185718 END IF;
185719 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185720    trace
185721       (p_msg      => 'BEGIN of EventType_285'
185722       ,p_level    => C_LEVEL_PROCEDURE
185723       ,p_module   => l_log_module);
185724 END IF;
185725 
185726 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185727    trace
185728       (p_msg      => 'p_application_id = '||p_application_id||
185729                      ' - p_base_ledger_id = '||p_base_ledger_id||
185730                      ' - p_target_ledger_id  = '||p_target_ledger_id||
185731                      ' - p_language = '||p_language||
185732                      ' - p_currency_code = '||p_currency_code||
185733                      ' - p_sla_ledger_id = '||p_sla_ledger_id
185734       ,p_level    => C_LEVEL_STATEMENT
185735       ,p_module   => l_log_module);
185736 END IF;
185737 --
185738 -- initialze arrays
185739 --
185740 g_array_event.DELETE;
185741 l_rec_array_event := l_null_rec_array_event;
185742 --
185743 --------------------------------------
185744 -- 4262811 Initialze MPA Line Number
185745 --------------------------------------
185746 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
185747 
185748 --
185749 
185750 --
185751 OPEN header_cur;
185752 --
185753 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185754    trace
185755    (p_msg      => 'SQL - FETCH header_cur'
185756    ,p_level    => C_LEVEL_STATEMENT
185757    ,p_module   => l_log_module);
185758 END IF;
185759 --
185760 LOOP
185761 FETCH header_cur BULK COLLECT INTO
185762         l_array_entity_id
185763       , l_array_legal_entity_id
185764       , l_array_entity_code
185765       , l_array_transaction_num
185766       , l_array_event_id
185767       , l_array_class_code
185768       , l_array_event_type
185769       , l_array_event_number
185770       , l_array_event_date
185771       , l_array_transaction_date
185772       , l_array_reference_num_1
185773       , l_array_reference_num_2
185774       , l_array_reference_num_3
185775       , l_array_reference_num_4
185776       , l_array_reference_char_1
185777       , l_array_reference_char_2
185778       , l_array_reference_char_3
185779       , l_array_reference_char_4
185780       , l_array_reference_date_1
185781       , l_array_reference_date_2
185782       , l_array_reference_date_3
185783       , l_array_reference_date_4
185784       , l_array_event_created_by
185785       , l_array_budgetary_control_flag 
185786       , l_array_source_12
185787       , l_array_source_12_meaning
185788       , l_array_source_38
185789       , l_array_source_38_meaning
185790       LIMIT l_rows;
185791 --
185792 IF (C_LEVEL_EVENT >= g_log_level) THEN
185793    trace
185794    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
185795    ,p_level    => C_LEVEL_EVENT
185796    ,p_module   => l_log_module);
185797 END IF;
185798 --
185799 EXIT WHEN l_array_entity_id.COUNT = 0;
185800 
185801 -- initialize arrays
185802 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
185803 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
185804 
185805 --
185806 -- Bug 4458708
185807 --
185808 XLA_AE_LINES_PKG.g_LineNumber := 0;
185809 
185810 
185811 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
185812 g_last_hdr_idx := l_array_event_id.LAST;
185813 --
185814 -- loop for the headers. Each iteration is for each header extract row
185815 -- fetched in header cursor
185816 --
185817 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
185818 
185819 --
185820 -- set event info as cache for other routines to refer event attributes
185821 --
185822 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
185823    (p_application_id           => p_application_id
185824    ,p_primary_ledger_id        => p_primary_ledger_id
185825    ,p_base_ledger_id           => p_base_ledger_id
185826    ,p_target_ledger_id         => p_target_ledger_id
185827    ,p_entity_id                => l_array_entity_id(hdr_idx)
185828    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
185829    ,p_entity_code              => l_array_entity_code(hdr_idx)
185830    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
185831    ,p_event_id                 => l_array_event_id(hdr_idx)
185832    ,p_event_class_code         => l_array_class_code(hdr_idx)
185833    ,p_event_type_code          => l_array_event_type(hdr_idx)
185834    ,p_event_number             => l_array_event_number(hdr_idx)
185835    ,p_event_date               => l_array_event_date(hdr_idx)
185836    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
185837    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
185838    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
185839    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
185840    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
185841    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
185842    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
185843    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
185844    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
185845    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
185846    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
185847    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
185848    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
185849    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
185850    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
185851 
185852 --
185853 -- set the status of entry to C_VALID (0)
185854 --
185855 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
185856 
185857 --
185858 -- initialize a row for ae header
185859 --
185860 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
185861 
185862 l_event_id := l_array_event_id(hdr_idx);
185863 
185864 --
185865 -- storing the hdr_idx for event. May be used by line cursor.
185866 --
185867 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
185868 
185869 --
185870 -- store sources from header extract. This can be improved to
185871 -- store only those sources from header extract that may be used in lines
185872 --
185873 
185874 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
185875 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
185876 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
185877 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
185878 
185879 --
185880 -- initilaize the status of ae headers for diffrent balance types
185881 -- the status is initialised to C_NOT_CREATED (2)
185882 --
185883 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
185884 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
185885 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
185886 
185887 --
185888 -- call api to validate and store accounting attributes for header
185889 --
185890 
185891 ------------------------------------------------------------
185892 -- Accrual Reversal : to get date for Standard Source (NONE)
185893 ------------------------------------------------------------
185894 l_acc_rev_gl_date_source := NULL;
185895 
185896      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
185897       l_rec_acct_attrs.array_date_value(1) := 
185898 xla_ae_sources_pkg.GetSystemSourceDate(
185899    p_source_code           => 'XLA_REFERENCE_DATE_1'
185900  , p_source_type_code      => 'Y'
185901  , p_source_application_id =>  602
185902 );
185903      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
185904       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
185905 
185906 
185907 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
185908 
185909 XLA_AE_HEADER_PKG.SetJeCategoryName;
185910 
185911 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
185912 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
185913 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
185914 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
185915 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
185916 
185917 
185918 -- No header level analytical criteria
185919 
185920 --
185921 --accounting attribute enhancement, bug 3612931
185922 --
185923 l_trx_reversal_source := SUBSTR(NULL, 1,30);
185924 
185925 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
185926    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
185927 
185928    xla_accounting_err_pkg.build_message
185929       (p_appli_s_name            => 'XLA'
185930       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
185931       ,p_token_1                 => 'ACCT_ATTR_NAME'
185932       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
185933       ,p_token_2                 => 'PRODUCT_NAME'
185934       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
185935       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
185936       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
185937       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
185938 
185939 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
185940    --
185941    -- following sets the accounting attributes needed to reverse
185942    -- accounting for a distributeion
185943    --
185944    xla_ae_lines_pkg.SetTrxReversalAttrs
185945       (p_event_id              => l_event_id
185946       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
185947       ,p_trx_reversal_source   => l_trx_reversal_source);
185948 
185949 END IF;
185950 
185951 
185952 ----------------------------------------------------------------
185953 -- 4262811 -  update the header statuses to invalid in need be
185954 ----------------------------------------------------------------
185955 --
185956 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
185957 
185958 
185959   -----------------------------------------------
185960   -- No accrual reversal for the event class/type
185961   -----------------------------------------------
185962 ----------------------------------------------------------------
185963 
185964 --
185965 -- this ends the header loop iteration for one bulk fetch
185966 --
185967 END LOOP;
185968 
185969 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
185970 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
185971 
185972 --
185973 -- insert dummy rows into lines gt table that were created due to
185974 -- transaction reversals
185975 --
185976 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
185977    l_result := XLA_AE_LINES_PKG.InsertLines;
185978 END IF;
185979 
185980 --
185981 -- reset the temp_line_num for each set of events fetched from header
185982 -- cursor rather than doing it for each new event in line cursor
185983 -- Bug 3939231
185984 --
185985 xla_ae_lines_pkg.g_temp_line_num := 0;
185986 
185987 
185988 
185989 --
185990 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
185991 --
185992 --
185993 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185994 
185995       trace
185996          (p_msg      => 'SQL - FETCH line_cur'
185997          ,p_level    => C_LEVEL_STATEMENT
185998          ,p_module   => l_log_module);
185999 
186000 END IF;
186001 --
186002 --
186003 LOOP
186004   --
186005   FETCH line_cur BULK COLLECT INTO
186006         l_array_entity_id
186007       , l_array_legal_entity_id
186008       , l_array_entity_code
186009       , l_array_transaction_num
186010       , l_array_event_id
186011       , l_array_class_code
186012       , l_array_event_type
186013       , l_array_event_number
186014       , l_array_event_date
186015       , l_array_transaction_date
186016       , l_array_reference_num_1
186017       , l_array_reference_num_2
186018       , l_array_reference_num_3
186019       , l_array_reference_num_4
186020       , l_array_reference_char_1
186021       , l_array_reference_char_2
186022       , l_array_reference_char_3
186023       , l_array_reference_char_4
186024       , l_array_reference_date_1
186025       , l_array_reference_date_2
186026       , l_array_reference_date_3
186027       , l_array_reference_date_4
186028       , l_array_event_created_by
186029       , l_array_budgetary_control_flag
186030       , l_array_extract_line_num 
186031       , l_array_source_4
186032       , l_array_source_11
186033       , l_array_source_15
186034       , l_array_source_18
186035       , l_array_source_19
186036       , l_array_source_20
186037       , l_array_source_21
186038       , l_array_source_22
186039       , l_array_source_24
186040       LIMIT l_rows;
186041 
186042   --
186043   IF (C_LEVEL_EVENT >= g_log_level) THEN
186044             trace
186045                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
186046                ,p_level    => C_LEVEL_EVENT
186047                ,p_module   => l_log_module);
186048   END IF;
186049   --
186050   EXIT WHEN l_array_entity_id.count = 0;
186051 
186052   XLA_AE_LINES_PKG.g_rec_lines := null;
186053 
186054 --
186055 -- Bug 4458708
186056 --
186057 XLA_AE_LINES_PKG.g_LineNumber := 0;
186058 --
186059 --
186060 
186061 FOR Idx IN 1..l_array_event_id.count LOOP
186062    --
186063    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
186064    --
186065    l_event_id := l_array_event_id(idx);  -- 5648433
186066 
186067    --
186068    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
186069    --
186070 
186071    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
186072              (g_array_event(l_event_id).array_value_num('header_index'))
186073          ,'N'
186074          ) <> 'Y'
186075    THEN
186076       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186077          trace
186078             (p_msg      => 'Trancaction revesal option is not Y '
186079             ,p_level    => C_LEVEL_STATEMENT
186080             ,p_module   => l_log_module);
186081       END IF;
186082 
186083 --
186084 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
186085 --
186086 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
186087 --
186088 -- set event info as cache for other routines to refer event attributes
186089 --
186090 
186091 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
186092    l_previous_event_id := l_event_id;
186093 
186094    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
186095       (p_application_id           => p_application_id
186096       ,p_primary_ledger_id        => p_primary_ledger_id
186097       ,p_base_ledger_id           => p_base_ledger_id
186098       ,p_target_ledger_id         => p_target_ledger_id
186099       ,p_entity_id                => l_array_entity_id(Idx)
186100       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
186101       ,p_entity_code              => l_array_entity_code(Idx)
186102       ,p_transaction_num          => l_array_transaction_num(Idx)
186103       ,p_event_id                 => l_array_event_id(Idx)
186104       ,p_event_class_code         => l_array_class_code(Idx)
186105       ,p_event_type_code          => l_array_event_type(Idx)
186106       ,p_event_number             => l_array_event_number(Idx)
186107       ,p_event_date               => l_array_event_date(Idx)
186108       ,p_transaction_date         => l_array_transaction_date(Idx)
186109       ,p_reference_num_1          => l_array_reference_num_1(Idx)
186110       ,p_reference_num_2          => l_array_reference_num_2(Idx)
186111       ,p_reference_num_3          => l_array_reference_num_3(Idx)
186112       ,p_reference_num_4          => l_array_reference_num_4(Idx)
186113       ,p_reference_char_1         => l_array_reference_char_1(Idx)
186114       ,p_reference_char_2         => l_array_reference_char_2(Idx)
186115       ,p_reference_char_3         => l_array_reference_char_3(Idx)
186116       ,p_reference_char_4         => l_array_reference_char_4(Idx)
186117       ,p_reference_date_1         => l_array_reference_date_1(Idx)
186118       ,p_reference_date_2         => l_array_reference_date_2(Idx)
186119       ,p_reference_date_3         => l_array_reference_date_3(Idx)
186120       ,p_reference_date_4         => l_array_reference_date_4(Idx)
186121       ,p_event_created_by         => l_array_event_created_by(Idx)
186122       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
186123        --
186124 END IF;
186125 
186126 
186127 
186128 --
186129 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
186130 
186131 l_acct_reversal_source := SUBSTR(NULL, 1,30);
186132 
186133 IF l_continue_with_lines THEN
186134    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
186135       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
186136 
186137       xla_accounting_err_pkg.build_message
186138          (p_appli_s_name            => 'XLA'
186139          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
186140          ,p_token_1                 => 'LINE_NUMBER'
186141          ,p_value_1                 => l_array_extract_line_num(Idx)
186142          ,p_token_2                 => 'PRODUCT_NAME'
186143          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
186144          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
186145          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
186146          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
186147 
186148    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
186149       --
186150       -- following sets the accounting attributes needed to reverse
186151       -- accounting for a distributeion
186152       --
186153 
186154       --
186155       -- 5217187
186156       --
186157       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
186158       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
186159                                        g_array_event(l_event_id).array_value_num('header_index'));
186160       --
186161       --
186162 
186163       -- No reversal code generated
186164 
186165       xla_ae_lines_pkg.SetAcctReversalAttrs
186166          (p_event_id             => l_event_id
186167          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
186168          ,p_calculate_acctd_flag => l_calculate_acctd_flag
186169          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
186170    END IF;
186171 
186172    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
186173        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
186174 
186175 --
186176 AcctLineType_30 (
186177  p_application_id  => p_application_id
186178  ,p_event_id     => l_event_id
186179  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186180  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186181  ,p_actual_flag => l_actual_flag
186182  ,p_balance_type_code => l_balance_type_code
186183  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186184  
186185  , p_source_4 => l_array_source_4(Idx)
186186  , p_source_11 => l_array_source_11(Idx)
186187  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186188  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186189  , p_source_15 => l_array_source_15(Idx)
186190  , p_source_18 => l_array_source_18(Idx)
186191  , p_source_19 => l_array_source_19(Idx)
186192  , p_source_20 => l_array_source_20(Idx)
186193  , p_source_21 => l_array_source_21(Idx)
186194  , p_source_22 => l_array_source_22(Idx)
186195  , p_source_24 => l_array_source_24(Idx)
186196  );
186197 If(l_balance_type_code = 'A') THEN
186198   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186199 END IF;
186200 
186201 --
186202 
186203 
186204 --
186205 AcctLineType_53 (
186206  p_application_id  => p_application_id
186207  ,p_event_id     => l_event_id
186208  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186209  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186210  ,p_actual_flag => l_actual_flag
186211  ,p_balance_type_code => l_balance_type_code
186212  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186213  
186214  , p_source_4 => l_array_source_4(Idx)
186215  , p_source_11 => l_array_source_11(Idx)
186216  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186217  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186218  , p_source_15 => l_array_source_15(Idx)
186219  , p_source_18 => l_array_source_18(Idx)
186220  , p_source_19 => l_array_source_19(Idx)
186221  , p_source_20 => l_array_source_20(Idx)
186222  , p_source_21 => l_array_source_21(Idx)
186223  , p_source_22 => l_array_source_22(Idx)
186224  , p_source_24 => l_array_source_24(Idx)
186225  );
186226 If(l_balance_type_code = 'A') THEN
186227   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186228 END IF;
186229 
186230 --
186231 
186232 
186233 --
186234 AcctLineType_66 (
186235  p_application_id  => p_application_id
186236  ,p_event_id     => l_event_id
186237  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186238  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186239  ,p_actual_flag => l_actual_flag
186240  ,p_balance_type_code => l_balance_type_code
186241  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186242  
186243  , p_source_4 => l_array_source_4(Idx)
186244  , p_source_11 => l_array_source_11(Idx)
186245  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186246  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186247  , p_source_15 => l_array_source_15(Idx)
186248  , p_source_18 => l_array_source_18(Idx)
186249  , p_source_19 => l_array_source_19(Idx)
186250  , p_source_20 => l_array_source_20(Idx)
186251  , p_source_21 => l_array_source_21(Idx)
186252  , p_source_22 => l_array_source_22(Idx)
186253  , p_source_24 => l_array_source_24(Idx)
186254  );
186255 If(l_balance_type_code = 'A') THEN
186256   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186257 END IF;
186258 
186259 --
186260 
186261 
186262 --
186263 AcctLineType_75 (
186264  p_application_id  => p_application_id
186265  ,p_event_id     => l_event_id
186266  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186267  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186268  ,p_actual_flag => l_actual_flag
186269  ,p_balance_type_code => l_balance_type_code
186270  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186271  
186272  , p_source_4 => l_array_source_4(Idx)
186273  , p_source_11 => l_array_source_11(Idx)
186274  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186275  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186276  , p_source_15 => l_array_source_15(Idx)
186277  , p_source_18 => l_array_source_18(Idx)
186278  , p_source_19 => l_array_source_19(Idx)
186279  , p_source_20 => l_array_source_20(Idx)
186280  , p_source_21 => l_array_source_21(Idx)
186281  , p_source_22 => l_array_source_22(Idx)
186282  , p_source_24 => l_array_source_24(Idx)
186283  );
186284 If(l_balance_type_code = 'A') THEN
186285   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186286 END IF;
186287 
186288 --
186289 
186290 
186291 --
186292 AcctLineType_123 (
186293  p_application_id  => p_application_id
186294  ,p_event_id     => l_event_id
186295  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186296  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186297  ,p_actual_flag => l_actual_flag
186298  ,p_balance_type_code => l_balance_type_code
186299  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186300  
186301  , p_source_4 => l_array_source_4(Idx)
186302  , p_source_11 => l_array_source_11(Idx)
186303  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186304  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186305  , p_source_15 => l_array_source_15(Idx)
186306  , p_source_18 => l_array_source_18(Idx)
186307  , p_source_19 => l_array_source_19(Idx)
186308  , p_source_20 => l_array_source_20(Idx)
186309  , p_source_21 => l_array_source_21(Idx)
186310  , p_source_22 => l_array_source_22(Idx)
186311  , p_source_24 => l_array_source_24(Idx)
186312  );
186313 If(l_balance_type_code = 'A') THEN
186314   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186315 END IF;
186316 
186317 --
186318 
186319 
186320 --
186321 AcctLineType_170 (
186322  p_application_id  => p_application_id
186323  ,p_event_id     => l_event_id
186324  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186325  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186326  ,p_actual_flag => l_actual_flag
186327  ,p_balance_type_code => l_balance_type_code
186328  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186329  
186330  , p_source_4 => l_array_source_4(Idx)
186331  , p_source_11 => l_array_source_11(Idx)
186332  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186333  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186334  , p_source_15 => l_array_source_15(Idx)
186335  , p_source_18 => l_array_source_18(Idx)
186336  , p_source_19 => l_array_source_19(Idx)
186337  , p_source_20 => l_array_source_20(Idx)
186338  , p_source_21 => l_array_source_21(Idx)
186339  , p_source_22 => l_array_source_22(Idx)
186340  , p_source_24 => l_array_source_24(Idx)
186341  );
186342 If(l_balance_type_code = 'A') THEN
186343   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186344 END IF;
186345 
186346 --
186347 
186348 
186349 --
186350 AcctLineType_175 (
186351  p_application_id  => p_application_id
186352  ,p_event_id     => l_event_id
186353  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186354  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186355  ,p_actual_flag => l_actual_flag
186356  ,p_balance_type_code => l_balance_type_code
186357  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186358  
186359  , p_source_4 => l_array_source_4(Idx)
186360  , p_source_11 => l_array_source_11(Idx)
186361  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186362  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186363  , p_source_15 => l_array_source_15(Idx)
186364  , p_source_18 => l_array_source_18(Idx)
186365  , p_source_19 => l_array_source_19(Idx)
186366  , p_source_20 => l_array_source_20(Idx)
186367  , p_source_21 => l_array_source_21(Idx)
186368  , p_source_22 => l_array_source_22(Idx)
186369  , p_source_24 => l_array_source_24(Idx)
186370  );
186371 If(l_balance_type_code = 'A') THEN
186372   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186373 END IF;
186374 
186375 --
186376 
186377 
186378 --
186379 AcctLineType_208 (
186380  p_application_id  => p_application_id
186381  ,p_event_id     => l_event_id
186382  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186383  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186384  ,p_actual_flag => l_actual_flag
186385  ,p_balance_type_code => l_balance_type_code
186386  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186387  
186388  , p_source_4 => l_array_source_4(Idx)
186389  , p_source_11 => l_array_source_11(Idx)
186390  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186391  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186392  , p_source_15 => l_array_source_15(Idx)
186393  , p_source_18 => l_array_source_18(Idx)
186394  , p_source_19 => l_array_source_19(Idx)
186395  , p_source_20 => l_array_source_20(Idx)
186396  , p_source_21 => l_array_source_21(Idx)
186397  , p_source_22 => l_array_source_22(Idx)
186398  , p_source_24 => l_array_source_24(Idx)
186399  );
186400 If(l_balance_type_code = 'A') THEN
186401   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186402 END IF;
186403 
186404 --
186405 
186406 
186407 --
186408 AcctLineType_213 (
186409  p_application_id  => p_application_id
186410  ,p_event_id     => l_event_id
186411  ,p_calculate_acctd_flag => l_calculate_acctd_flag
186412  ,p_calculate_g_l_flag => l_calculate_g_l_flag
186413  ,p_actual_flag => l_actual_flag
186414  ,p_balance_type_code => l_balance_type_code
186415  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186416  
186417  , p_source_4 => l_array_source_4(Idx)
186418  , p_source_11 => l_array_source_11(Idx)
186419  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186420  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186421  , p_source_15 => l_array_source_15(Idx)
186422  , p_source_18 => l_array_source_18(Idx)
186423  , p_source_19 => l_array_source_19(Idx)
186424  , p_source_20 => l_array_source_20(Idx)
186425  , p_source_21 => l_array_source_21(Idx)
186426  , p_source_22 => l_array_source_22(Idx)
186427  , p_source_24 => l_array_source_24(Idx)
186428  );
186429 If(l_balance_type_code = 'A') THEN
186430   l_actual_gain_loss_ref := l_gain_or_loss_ref;
186431 END IF;
186432 
186433 --
186434 
186435       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
186436       -- or secondary ledger that has different currency with primary
186437       -- or alc that is calculated by sla
186438       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
186439             (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'))
186440 
186441 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
186442 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
186443           AND (l_actual_flag = 'A')) THEN
186444         XLA_AE_LINES_PKG.CreateGainOrLossLines(
186445           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
186446          ,p_application_id   => p_application_id
186447          ,p_amb_context_code => 'DEFAULT'
186448          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
186449          ,p_event_class_code => C_EVENT_CLASS_CODE
186450          ,p_event_type_code  => C_EVENT_TYPE_CODE
186451          
186452          ,p_gain_ccid        => -1
186453          ,p_loss_ccid        => -1
186454 
186455          ,p_actual_flag      => l_actual_flag
186456          ,p_enc_flag         => null
186457          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
186458          ,p_enc_g_l_ref      => null
186459          );
186460       END IF;
186461    END IF;
186462 END IF;
186463 
186464    ELSE
186465       --
186466       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
186467       --
186468       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186469          trace
186470             (p_msg      => 'Trancaction revesal option is Y'
186471             ,p_level    => C_LEVEL_STATEMENT
186472             ,p_module   => l_log_module);
186473       END IF;
186474    END IF;
186475 
186476 END LOOP;
186477 l_result := XLA_AE_LINES_PKG.InsertLines ;
186478 end loop;
186479 close line_cur;
186480 
186481 
186482 --
186483 -- insert headers into xla_ae_headers_gt table
186484 --
186485 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
186486 
186487 -- insert into errors table here.
186488 
186489 END LOOP;
186490 
186491 --
186492 -- 4865292
186493 --
186494 -- Compare g_hdr_extract_count with event count in
186495 -- CreateHeadersAndLines.
186496 --
186497 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
186498 
186499 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186500    trace (p_msg     => '# rows extracted from header extract objects '
186501                     || ' (running total): '
186502                     || g_hdr_extract_count
186503          ,p_level   => C_LEVEL_STATEMENT
186504          ,p_module  => l_log_module);
186505 END IF;
186506 
186507 CLOSE header_cur;
186508 --
186509 
186510 --
186511 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186512    trace
186513       (p_msg      => 'END of EventType_285'
186514       ,p_level    => C_LEVEL_PROCEDURE
186515       ,p_module   => l_log_module);
186516 END IF;
186517 --
186518 RETURN l_result;
186519 EXCEPTION
186520 WHEN xla_exceptions_pkg.application_exception THEN
186521    
186522 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
186523 
186524    
186525 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
186526 
186527    RAISE;
186528 
186529 WHEN NO_DATA_FOUND THEN
186530 
186531 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
186532 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
186533 
186534 FOR header_record IN header_cur
186535 LOOP
186536     l_array_header_events(header_record.event_id) := header_record.event_id;
186537 END LOOP;
186538 
186539 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
186540 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
186541 
186542 fnd_file.put_line(fnd_file.LOG, '                    ');
186543 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
186544 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
186545 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
186546 
186547 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
186548 LOOP
186549 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
186550 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
186551         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
186552 	END IF;
186553 END LOOP;
186554 
186555 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
186556 fnd_file.put_line(fnd_file.LOG, '                    ');
186557 
186558 
186559 xla_exceptions_pkg.raise_message
186560       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_285');
186561 
186562 
186563 WHEN OTHERS THEN
186564    xla_exceptions_pkg.raise_message
186565       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_285');
186566 END EventType_285;
186567 --
186568 
186569 ---------------------------------------
186570 --
186571 -- PRIVATE PROCEDURE
186572 --         insert_sources_286
186573 --
186574 ----------------------------------------
186575 --
186576 PROCEDURE insert_sources_286(
186577                                 p_target_ledger_id       IN NUMBER
186578                               , p_language               IN VARCHAR2
186579                               , p_sla_ledger_id          IN NUMBER
186580                               , p_pad_start_date         IN DATE
186581                               , p_pad_end_date           IN DATE
186582                          )
186583 IS
186584 
186585 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
186586 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
186587 p_apps_owner                   VARCHAR2(30);
186588 l_log_module                   VARCHAR2(240);
186589 BEGIN
186590 IF g_log_enabled THEN
186591       l_log_module := C_DEFAULT_MODULE||'.insert_sources_286';
186592 END IF;
186593 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186594 
186595       trace
186596          (p_msg      => 'BEGIN of insert_sources_286'
186597          ,p_level    => C_LEVEL_PROCEDURE
186598          ,p_module   => l_log_module);
186599 
186600 END IF;
186601 
186602 -- select APPS owner
186603 SELECT oracle_username
186604   INTO p_apps_owner
186605   FROM fnd_oracle_userid
186606  WHERE read_only_flag = 'U'
186607 ;
186608 
186609 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186610       trace
186611          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
186612                         ' - p_language = '||p_language||
186613                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
186614                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
186615                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
186616                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
186617          ,p_level    => C_LEVEL_STATEMENT
186618          ,p_module   => l_log_module);
186619 END IF;
186620 
186621 
186622 --
186623 INSERT INTO xla_diag_sources --hdr1
186624 (
186625         event_id
186626       , ledger_id
186627       , sla_ledger_id
186628       , description_language
186629       , object_name
186630       , object_type_code
186631       , line_number
186632       , source_application_id
186633       , source_type_code
186634       , source_code
186635       , source_value
186636       , source_meaning
186637       , created_by
186638       , creation_date
186639       , last_update_date
186640       , last_updated_by
186641       , last_update_login
186642       , program_update_date
186643       , program_application_id
186644       , program_id
186645       , request_id
186646 )
186647 SELECT
186648         event_id
186649       , p_target_ledger_id
186650       , p_sla_ledger_id
186651       , p_language
186652       , object_name
186653       , object_type_code
186654       , line_number
186655       , source_application_id
186656       , source_type_code
186657       , source_code
186658       , SUBSTR(source_value ,1,1996)
186659       , SUBSTR(source_meaning,1,200)
186660       , xla_environment_pkg.g_Usr_Id
186661       , TRUNC(SYSDATE)
186662       , TRUNC(SYSDATE)
186663       , xla_environment_pkg.g_Usr_Id
186664       , xla_environment_pkg.g_Login_Id
186665       , TRUNC(SYSDATE)
186666       , xla_environment_pkg.g_Prog_Appl_Id
186667       , xla_environment_pkg.g_Prog_Id
186668       , xla_environment_pkg.g_Req_Id
186669   FROM (
186670        SELECT xet.event_id                  event_id
186671             , 0                             line_number
186672             , CASE r
186673                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
186674                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
186675                 
186676                ELSE null
186677               END                           object_name
186678             , CASE r
186679                 WHEN 1 THEN 'HEADER' 
186680                 WHEN 2 THEN 'HEADER' 
186681                 
186682                 ELSE null
186683               END                           object_type_code
186684             , CASE r
186685                 WHEN 1 THEN '707' 
186686                 WHEN 2 THEN '707' 
186687                 
186688                 ELSE null
186689               END                           source_application_id
186690             , 'S'             source_type_code
186691             , CASE r
186692                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
186693                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
186694                 
186695                 ELSE null
186696               END                           source_code
186697             , CASE r
186698                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
186699                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
186700                 
186701                 ELSE null
186702               END                           source_value
186703             , CASE r
186704                 WHEN 1 THEN fvl12.meaning
186705                 WHEN 2 THEN fvl38.meaning
186706                 
186707                 ELSE null
186708               END               source_meaning
186709         FROM xla_events_gt     xet  
186710       , CST_XLA_INV_HEADERS_V  h1
186711   , fnd_lookup_values    fvl12
186712   , fnd_lookup_values    fvl38
186713             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
186714        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
186715          AND xet.event_type_code = C_EVENT_TYPE_CODE
186716             AND h1.event_id = xet.event_id
186717    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
186718   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
186719   AND fvl12.view_application_id(+) = 700
186720   AND fvl12.language(+)            = USERENV('LANG')
186721      AND fvl38.lookup_type(+)         = 'YES_NO'
186722   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
186723   AND fvl38.view_application_id(+) = 0
186724   AND fvl38.language(+)            = USERENV('LANG')
186725   
186726 )
186727 ;
186728 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186729 
186730       trace
186731          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
186732          ,p_level    => C_LEVEL_STATEMENT
186733          ,p_module   => l_log_module);
186734 
186735 END IF;
186736 --
186737 
186738 
186739 
186740 --
186741 INSERT INTO xla_diag_sources --line1
186742 (
186743         event_id
186744       , ledger_id
186745       , sla_ledger_id
186746       , description_language
186747       , object_name
186748       , object_type_code
186749       , line_number
186750       , source_application_id
186751       , source_type_code
186752       , source_code
186753       , source_value
186754       , source_meaning
186755       , created_by
186756       , creation_date
186757       , last_update_date
186758       , last_updated_by
186759       , last_update_login
186760       , program_update_date
186761       , program_application_id
186762       , program_id
186763       , request_id
186764 )
186765 SELECT  event_id
186766       , p_target_ledger_id
186767       , p_sla_ledger_id
186768       , p_language
186769       , object_name
186770       , object_type_code
186771       , line_number
186772       , source_application_id
186773       , source_type_code
186774       , source_code
186775       , SUBSTR(source_value,1,1996)
186776       , SUBSTR(source_meaning,1,200)
186777       , xla_environment_pkg.g_Usr_Id
186778       , TRUNC(SYSDATE)
186779       , TRUNC(SYSDATE)
186780       , xla_environment_pkg.g_Usr_Id
186781       , xla_environment_pkg.g_Login_Id
186782       , TRUNC(SYSDATE)
186783       , xla_environment_pkg.g_Prog_Appl_Id
186784       , xla_environment_pkg.g_Prog_Id
186785       , xla_environment_pkg.g_Req_Id
186786   FROM (
186787        SELECT xet.event_id                  event_id
186788             , l2.line_number                 line_number
186789             , CASE r
186790                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
186791                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
186792                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
186793                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
186794                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
186795                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
186796                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
186797                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
186798                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
186799                 
186800                ELSE null
186801               END                           object_name
186802             , CASE r
186803                 WHEN 1 THEN 'LINE' 
186804                 WHEN 2 THEN 'LINE' 
186805                 WHEN 3 THEN 'LINE' 
186806                 WHEN 4 THEN 'LINE' 
186807                 WHEN 5 THEN 'LINE' 
186808                 WHEN 6 THEN 'LINE' 
186809                 WHEN 7 THEN 'LINE' 
186810                 WHEN 8 THEN 'LINE' 
186811                 WHEN 9 THEN 'LINE' 
186812                 
186813                 ELSE null
186814               END                           object_type_code
186815             , CASE r
186816                 WHEN 1 THEN '707' 
186817                 WHEN 2 THEN '707' 
186818                 WHEN 3 THEN '707' 
186819                 WHEN 4 THEN '707' 
186820                 WHEN 5 THEN '707' 
186821                 WHEN 6 THEN '707' 
186822                 WHEN 7 THEN '707' 
186823                 WHEN 8 THEN '707' 
186824                 WHEN 9 THEN '707' 
186825                 
186826                 ELSE null
186827               END                           source_application_id
186828             , 'S'             source_type_code
186829             , CASE r
186830                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
186831                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
186832                 WHEN 3 THEN 'CURRENCY_CODE' 
186833                 WHEN 4 THEN 'ENTERED_AMOUNT' 
186834                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
186835                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
186836                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
186837                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
186838                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
186839                 
186840                 ELSE null
186841               END                           source_code
186842             , CASE r
186843                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
186844                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
186845                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
186846                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
186847                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
186848                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
186849                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
186850                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
186851                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
186852                 
186853                 ELSE null
186854               END                           source_value
186855             , null              source_meaning
186856          FROM  xla_events_gt     xet  
186857         , CST_XLA_INV_LINES_V  l2
186858             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
186859         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
186860           AND xet.event_type_code = C_EVENT_TYPE_CODE
186861             AND l2.event_id          = xet.event_id
186862 
186863 )
186864 ;
186865 --
186866 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186867 
186868       trace
186869          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
186870          ,p_level    => C_LEVEL_STATEMENT
186871          ,p_module   => l_log_module);
186872 
186873 END IF;
186874 
186875 
186876 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186877       trace
186878          (p_msg      => 'END of insert_sources_286'
186879          ,p_level    => C_LEVEL_PROCEDURE
186880          ,p_module   => l_log_module);
186881 END IF;
186882 EXCEPTION
186883   WHEN xla_exceptions_pkg.application_exception THEN
186884       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
186885             trace
186886                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
186887                ,p_level    => C_LEVEL_EXCEPTION
186888                ,p_module   => l_log_module);
186889       END IF;
186890       RAISE;
186891   WHEN OTHERS THEN
186892       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
186893             trace
186894                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
186895                ,p_level    => C_LEVEL_EXCEPTION
186896                ,p_module   => l_log_module);
186897        END IF;
186898        xla_exceptions_pkg.raise_message
186899            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_286');
186900 END insert_sources_286;
186901 --
186902 
186903 ---------------------------------------
186904 --
186905 -- PRIVATE FUNCTION
186906 --         EventType_286
186907 --
186908 ----------------------------------------
186909 --
186910 FUNCTION EventType_286
186911        (p_application_id         IN NUMBER
186912        ,p_base_ledger_id         IN NUMBER
186913        ,p_target_ledger_id       IN NUMBER
186914        ,p_language               IN VARCHAR2
186915        ,p_currency_code          IN VARCHAR2
186916        ,p_sla_ledger_id          IN NUMBER
186917        ,p_pad_start_date         IN DATE
186918        ,p_pad_end_date           IN DATE
186919        ,p_primary_ledger_id      IN NUMBER)
186920 RETURN BOOLEAN IS
186921 --
186922 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
186923 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
186924 
186925 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
186926 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
186927 --
186928 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186929 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186930 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
186931 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186932 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186933 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
186934 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
186935 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186936 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186937 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186938 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186939 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186940 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186941 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186942 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186943 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186944 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186945 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186946 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186947 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186948 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186949 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186950 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
186951 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
186952 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
186953 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
186954 
186955 l_event_id                             NUMBER;
186956 l_previous_event_id                    NUMBER;
186957 l_first_event_id                       NUMBER;
186958 l_last_event_id                        NUMBER;
186959 
186960 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
186961 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
186962 --
186963 --
186964 l_result                    BOOLEAN := TRUE;
186965 l_rows                      NUMBER  := 1000;
186966 l_event_type_name           VARCHAR2(80) := 'User-defined Sender Intransit Shipment - No Transfer Price - FOB Shipment';
186967 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
186968 l_description               VARCHAR2(4000);
186969 l_transaction_reversal      NUMBER;
186970 l_ae_header_id              NUMBER;
186971 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
186972 l_log_module                VARCHAR2(240);
186973 --
186974 l_acct_reversal_source      VARCHAR2(30);
186975 l_trx_reversal_source       VARCHAR2(30);
186976 
186977 l_continue_with_lines       BOOLEAN := TRUE;
186978 --
186979 l_acc_rev_gl_date_source    DATE;                      -- 4262811
186980 --
186981 type t_array_event_id is table of number index by binary_integer;
186982 
186983 l_rec_array_event                    t_rec_array_event;
186984 l_null_rec_array_event               t_rec_array_event;
186985 l_array_ae_header_id                 xla_number_array_type;
186986 l_actual_flag                        VARCHAR2(1) := NULL;
186987 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
186988 l_balance_type_code                  VARCHAR2(1) :=NULL;
186989 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
186990 
186991 --
186992 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
186993 --
186994 
186995 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
186996 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
186997 
186998 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
186999 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
187000 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
187001 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
187002 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
187003 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
187004 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
187005 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
187006 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
187007 
187008 l_array_source_12              t_array_source_12;
187009 l_array_source_12_meaning      t_array_lookup_meaning;
187010 l_array_source_38              t_array_source_38;
187011 l_array_source_38_meaning      t_array_lookup_meaning;
187012 
187013 l_array_source_4      t_array_source_4;
187014 l_array_source_11      t_array_source_11;
187015 l_array_source_15      t_array_source_15;
187016 l_array_source_18      t_array_source_18;
187017 l_array_source_19      t_array_source_19;
187018 l_array_source_20      t_array_source_20;
187019 l_array_source_21      t_array_source_21;
187020 l_array_source_22      t_array_source_22;
187021 l_array_source_24      t_array_source_24;
187022 
187023 --
187024 CURSOR header_cur
187025 IS
187026 SELECT /*+ leading(xet) cardinality(xet,1) */
187027 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_NO_TP
187028 -- Event Class Code: USER_DEFINE
187029     xet.entity_id
187030   , xet.legal_entity_id
187031   , xet.entity_code
187032   , xet.transaction_number
187033   , xet.event_id
187034   , xet.event_class_code
187035   , xet.event_type_code
187036   , xet.event_number
187037   , xet.event_date
187038   , xet.transaction_date
187039   , xet.reference_num_1
187040   , xet.reference_num_2
187041   , xet.reference_num_3
187042   , xet.reference_num_4
187043   , xet.reference_char_1
187044   , xet.reference_char_2
187045   , xet.reference_char_3
187046   , xet.reference_char_4
187047   , xet.reference_date_1
187048   , xet.reference_date_2
187049   , xet.reference_date_3
187050   , xet.reference_date_4
187051   , xet.event_created_by
187052   , xet.budgetary_control_flag 
187053   , h1.DISTRIBUTION_TYPE    source_12
187054   , fvl12.meaning   source_12_meaning
187055   , h1.TRANSFER_TO_GL_INDICATOR    source_38
187056   , fvl38.meaning   source_38_meaning
187057   FROM xla_events_gt     xet 
187058   , CST_XLA_INV_HEADERS_V  h1
187059   , fnd_lookup_values    fvl12
187060   , fnd_lookup_values    fvl38
187061  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
187062    and xet.event_type_code = C_EVENT_TYPE_CODE
187063    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
187064    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
187065   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
187066   AND fvl12.view_application_id(+) = 700
187067   AND fvl12.language(+)            = USERENV('LANG')
187068      AND fvl38.lookup_type(+)         = 'YES_NO'
187069   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
187070   AND fvl38.view_application_id(+) = 0
187071   AND fvl38.language(+)            = USERENV('LANG')
187072   
187073  ORDER BY event_id
187074 ;
187075 
187076 
187077 --
187078 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
187079 IS
187080 SELECT /*+ leading(xet) cardinality(xet,1) */
187081 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_NO_TP
187082 -- Event Class Code: USER_DEFINE
187083     xet.entity_id
187084    ,xet.legal_entity_id
187085    ,xet.entity_code
187086    ,xet.transaction_number
187087    ,xet.event_id
187088    ,xet.event_class_code
187089    ,xet.event_type_code
187090    ,xet.event_number
187091    ,xet.event_date
187092    ,xet.transaction_date
187093    ,xet.reference_num_1
187094    ,xet.reference_num_2
187095    ,xet.reference_num_3
187096    ,xet.reference_num_4
187097    ,xet.reference_char_1
187098    ,xet.reference_char_2
187099    ,xet.reference_char_3
187100    ,xet.reference_char_4
187101    ,xet.reference_date_1
187102    ,xet.reference_date_2
187103    ,xet.reference_date_3
187104    ,xet.reference_date_4
187105    ,xet.event_created_by
187106    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
187107   , l2.CODE_COMBINATION_ID    source_4
187108   , l2.DISTRIBUTION_IDENTIFIER    source_11
187109   , l2.CURRENCY_CODE    source_15
187110   , l2.ENTERED_AMOUNT    source_18
187111   , l2.CURRENCY_CONVERSION_DATE    source_19
187112   , l2.CURRENCY_CONVERSION_RATE    source_20
187113   , l2.CURRENCY_CONVERSION_TYPE    source_21
187114   , l2.ACCOUNTED_AMOUNT    source_22
187115   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
187116   FROM xla_events_gt     xet 
187117   , CST_XLA_INV_LINES_V  l2
187118  WHERE xet.event_id between x_first_event_id and x_last_event_id
187119    and xet.event_date between p_pad_start_date and p_pad_end_date
187120    and xet.event_type_code = C_EVENT_TYPE_CODE
187121    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
187122 ;
187123 
187124 --
187125 BEGIN
187126 IF g_log_enabled THEN
187127    l_log_module := C_DEFAULT_MODULE||'.EventType_286';
187128 END IF;
187129 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187130    trace
187131       (p_msg      => 'BEGIN of EventType_286'
187132       ,p_level    => C_LEVEL_PROCEDURE
187133       ,p_module   => l_log_module);
187134 END IF;
187135 
187136 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187137    trace
187138       (p_msg      => 'p_application_id = '||p_application_id||
187139                      ' - p_base_ledger_id = '||p_base_ledger_id||
187140                      ' - p_target_ledger_id  = '||p_target_ledger_id||
187141                      ' - p_language = '||p_language||
187142                      ' - p_currency_code = '||p_currency_code||
187143                      ' - p_sla_ledger_id = '||p_sla_ledger_id
187144       ,p_level    => C_LEVEL_STATEMENT
187145       ,p_module   => l_log_module);
187146 END IF;
187147 --
187148 -- initialze arrays
187149 --
187150 g_array_event.DELETE;
187151 l_rec_array_event := l_null_rec_array_event;
187152 --
187153 --------------------------------------
187154 -- 4262811 Initialze MPA Line Number
187155 --------------------------------------
187156 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
187157 
187158 --
187159 
187160 --
187161 OPEN header_cur;
187162 --
187163 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187164    trace
187165    (p_msg      => 'SQL - FETCH header_cur'
187166    ,p_level    => C_LEVEL_STATEMENT
187167    ,p_module   => l_log_module);
187168 END IF;
187169 --
187170 LOOP
187171 FETCH header_cur BULK COLLECT INTO
187172         l_array_entity_id
187173       , l_array_legal_entity_id
187174       , l_array_entity_code
187175       , l_array_transaction_num
187176       , l_array_event_id
187177       , l_array_class_code
187178       , l_array_event_type
187179       , l_array_event_number
187180       , l_array_event_date
187181       , l_array_transaction_date
187182       , l_array_reference_num_1
187183       , l_array_reference_num_2
187184       , l_array_reference_num_3
187185       , l_array_reference_num_4
187186       , l_array_reference_char_1
187187       , l_array_reference_char_2
187188       , l_array_reference_char_3
187189       , l_array_reference_char_4
187190       , l_array_reference_date_1
187191       , l_array_reference_date_2
187192       , l_array_reference_date_3
187193       , l_array_reference_date_4
187194       , l_array_event_created_by
187195       , l_array_budgetary_control_flag 
187196       , l_array_source_12
187197       , l_array_source_12_meaning
187198       , l_array_source_38
187199       , l_array_source_38_meaning
187200       LIMIT l_rows;
187201 --
187202 IF (C_LEVEL_EVENT >= g_log_level) THEN
187203    trace
187204    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
187205    ,p_level    => C_LEVEL_EVENT
187206    ,p_module   => l_log_module);
187207 END IF;
187208 --
187209 EXIT WHEN l_array_entity_id.COUNT = 0;
187210 
187211 -- initialize arrays
187212 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
187213 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
187214 
187215 --
187216 -- Bug 4458708
187217 --
187218 XLA_AE_LINES_PKG.g_LineNumber := 0;
187219 
187220 
187221 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
187222 g_last_hdr_idx := l_array_event_id.LAST;
187223 --
187224 -- loop for the headers. Each iteration is for each header extract row
187225 -- fetched in header cursor
187226 --
187227 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
187228 
187229 --
187230 -- set event info as cache for other routines to refer event attributes
187231 --
187232 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
187233    (p_application_id           => p_application_id
187234    ,p_primary_ledger_id        => p_primary_ledger_id
187235    ,p_base_ledger_id           => p_base_ledger_id
187236    ,p_target_ledger_id         => p_target_ledger_id
187237    ,p_entity_id                => l_array_entity_id(hdr_idx)
187238    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
187239    ,p_entity_code              => l_array_entity_code(hdr_idx)
187240    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
187241    ,p_event_id                 => l_array_event_id(hdr_idx)
187242    ,p_event_class_code         => l_array_class_code(hdr_idx)
187243    ,p_event_type_code          => l_array_event_type(hdr_idx)
187244    ,p_event_number             => l_array_event_number(hdr_idx)
187245    ,p_event_date               => l_array_event_date(hdr_idx)
187246    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
187247    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
187248    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
187249    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
187250    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
187251    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
187252    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
187253    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
187254    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
187255    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
187256    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
187257    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
187258    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
187259    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
187260    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
187261 
187262 --
187263 -- set the status of entry to C_VALID (0)
187264 --
187265 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
187266 
187267 --
187268 -- initialize a row for ae header
187269 --
187270 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
187271 
187272 l_event_id := l_array_event_id(hdr_idx);
187273 
187274 --
187275 -- storing the hdr_idx for event. May be used by line cursor.
187276 --
187277 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
187278 
187279 --
187280 -- store sources from header extract. This can be improved to
187281 -- store only those sources from header extract that may be used in lines
187282 --
187283 
187284 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
187285 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
187286 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
187287 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
187288 
187289 --
187290 -- initilaize the status of ae headers for diffrent balance types
187291 -- the status is initialised to C_NOT_CREATED (2)
187292 --
187293 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187294 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187295 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187296 
187297 --
187298 -- call api to validate and store accounting attributes for header
187299 --
187300 
187301 ------------------------------------------------------------
187302 -- Accrual Reversal : to get date for Standard Source (NONE)
187303 ------------------------------------------------------------
187304 l_acc_rev_gl_date_source := NULL;
187305 
187306      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
187307       l_rec_acct_attrs.array_date_value(1) := 
187308 xla_ae_sources_pkg.GetSystemSourceDate(
187309    p_source_code           => 'XLA_REFERENCE_DATE_1'
187310  , p_source_type_code      => 'Y'
187311  , p_source_application_id =>  602
187312 );
187313      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
187314       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
187315 
187316 
187317 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
187318 
187319 XLA_AE_HEADER_PKG.SetJeCategoryName;
187320 
187321 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
187322 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
187323 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
187324 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
187325 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
187326 
187327 
187328 -- No header level analytical criteria
187329 
187330 --
187331 --accounting attribute enhancement, bug 3612931
187332 --
187333 l_trx_reversal_source := SUBSTR(NULL, 1,30);
187334 
187335 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
187336    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
187337 
187338    xla_accounting_err_pkg.build_message
187339       (p_appli_s_name            => 'XLA'
187340       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
187341       ,p_token_1                 => 'ACCT_ATTR_NAME'
187342       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
187343       ,p_token_2                 => 'PRODUCT_NAME'
187344       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
187345       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
187346       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
187347       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
187348 
187349 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
187350    --
187351    -- following sets the accounting attributes needed to reverse
187352    -- accounting for a distributeion
187353    --
187354    xla_ae_lines_pkg.SetTrxReversalAttrs
187355       (p_event_id              => l_event_id
187356       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
187357       ,p_trx_reversal_source   => l_trx_reversal_source);
187358 
187359 END IF;
187360 
187361 
187362 ----------------------------------------------------------------
187363 -- 4262811 -  update the header statuses to invalid in need be
187364 ----------------------------------------------------------------
187365 --
187366 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
187367 
187368 
187369   -----------------------------------------------
187370   -- No accrual reversal for the event class/type
187371   -----------------------------------------------
187372 ----------------------------------------------------------------
187373 
187374 --
187375 -- this ends the header loop iteration for one bulk fetch
187376 --
187377 END LOOP;
187378 
187379 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
187380 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
187381 
187382 --
187383 -- insert dummy rows into lines gt table that were created due to
187384 -- transaction reversals
187385 --
187386 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
187387    l_result := XLA_AE_LINES_PKG.InsertLines;
187388 END IF;
187389 
187390 --
187391 -- reset the temp_line_num for each set of events fetched from header
187392 -- cursor rather than doing it for each new event in line cursor
187393 -- Bug 3939231
187394 --
187395 xla_ae_lines_pkg.g_temp_line_num := 0;
187396 
187397 
187398 
187399 --
187400 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
187401 --
187402 --
187403 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187404 
187405       trace
187406          (p_msg      => 'SQL - FETCH line_cur'
187407          ,p_level    => C_LEVEL_STATEMENT
187408          ,p_module   => l_log_module);
187409 
187410 END IF;
187411 --
187412 --
187413 LOOP
187414   --
187415   FETCH line_cur BULK COLLECT INTO
187416         l_array_entity_id
187417       , l_array_legal_entity_id
187418       , l_array_entity_code
187419       , l_array_transaction_num
187420       , l_array_event_id
187421       , l_array_class_code
187422       , l_array_event_type
187423       , l_array_event_number
187424       , l_array_event_date
187425       , l_array_transaction_date
187426       , l_array_reference_num_1
187427       , l_array_reference_num_2
187428       , l_array_reference_num_3
187429       , l_array_reference_num_4
187430       , l_array_reference_char_1
187431       , l_array_reference_char_2
187432       , l_array_reference_char_3
187433       , l_array_reference_char_4
187434       , l_array_reference_date_1
187435       , l_array_reference_date_2
187436       , l_array_reference_date_3
187437       , l_array_reference_date_4
187438       , l_array_event_created_by
187439       , l_array_budgetary_control_flag
187440       , l_array_extract_line_num 
187441       , l_array_source_4
187442       , l_array_source_11
187443       , l_array_source_15
187444       , l_array_source_18
187445       , l_array_source_19
187446       , l_array_source_20
187447       , l_array_source_21
187448       , l_array_source_22
187449       , l_array_source_24
187450       LIMIT l_rows;
187451 
187452   --
187453   IF (C_LEVEL_EVENT >= g_log_level) THEN
187454             trace
187455                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
187456                ,p_level    => C_LEVEL_EVENT
187457                ,p_module   => l_log_module);
187458   END IF;
187459   --
187460   EXIT WHEN l_array_entity_id.count = 0;
187461 
187462   XLA_AE_LINES_PKG.g_rec_lines := null;
187463 
187464 --
187465 -- Bug 4458708
187466 --
187467 XLA_AE_LINES_PKG.g_LineNumber := 0;
187468 --
187469 --
187470 
187471 FOR Idx IN 1..l_array_event_id.count LOOP
187472    --
187473    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
187474    --
187475    l_event_id := l_array_event_id(idx);  -- 5648433
187476 
187477    --
187478    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
187479    --
187480 
187481    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
187482              (g_array_event(l_event_id).array_value_num('header_index'))
187483          ,'N'
187484          ) <> 'Y'
187485    THEN
187486       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187487          trace
187488             (p_msg      => 'Trancaction revesal option is not Y '
187489             ,p_level    => C_LEVEL_STATEMENT
187490             ,p_module   => l_log_module);
187491       END IF;
187492 
187493 --
187494 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
187495 --
187496 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
187497 --
187498 -- set event info as cache for other routines to refer event attributes
187499 --
187500 
187501 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
187502    l_previous_event_id := l_event_id;
187503 
187504    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
187505       (p_application_id           => p_application_id
187506       ,p_primary_ledger_id        => p_primary_ledger_id
187507       ,p_base_ledger_id           => p_base_ledger_id
187508       ,p_target_ledger_id         => p_target_ledger_id
187509       ,p_entity_id                => l_array_entity_id(Idx)
187510       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
187511       ,p_entity_code              => l_array_entity_code(Idx)
187512       ,p_transaction_num          => l_array_transaction_num(Idx)
187513       ,p_event_id                 => l_array_event_id(Idx)
187514       ,p_event_class_code         => l_array_class_code(Idx)
187515       ,p_event_type_code          => l_array_event_type(Idx)
187516       ,p_event_number             => l_array_event_number(Idx)
187517       ,p_event_date               => l_array_event_date(Idx)
187518       ,p_transaction_date         => l_array_transaction_date(Idx)
187519       ,p_reference_num_1          => l_array_reference_num_1(Idx)
187520       ,p_reference_num_2          => l_array_reference_num_2(Idx)
187521       ,p_reference_num_3          => l_array_reference_num_3(Idx)
187522       ,p_reference_num_4          => l_array_reference_num_4(Idx)
187523       ,p_reference_char_1         => l_array_reference_char_1(Idx)
187524       ,p_reference_char_2         => l_array_reference_char_2(Idx)
187525       ,p_reference_char_3         => l_array_reference_char_3(Idx)
187526       ,p_reference_char_4         => l_array_reference_char_4(Idx)
187527       ,p_reference_date_1         => l_array_reference_date_1(Idx)
187528       ,p_reference_date_2         => l_array_reference_date_2(Idx)
187529       ,p_reference_date_3         => l_array_reference_date_3(Idx)
187530       ,p_reference_date_4         => l_array_reference_date_4(Idx)
187531       ,p_event_created_by         => l_array_event_created_by(Idx)
187532       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
187533        --
187534 END IF;
187535 
187536 
187537 
187538 --
187539 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
187540 
187541 l_acct_reversal_source := SUBSTR(NULL, 1,30);
187542 
187543 IF l_continue_with_lines THEN
187544    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
187545       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
187546 
187547       xla_accounting_err_pkg.build_message
187548          (p_appli_s_name            => 'XLA'
187549          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
187550          ,p_token_1                 => 'LINE_NUMBER'
187551          ,p_value_1                 => l_array_extract_line_num(Idx)
187552          ,p_token_2                 => 'PRODUCT_NAME'
187553          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
187554          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
187555          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
187556          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
187557 
187558    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
187559       --
187560       -- following sets the accounting attributes needed to reverse
187561       -- accounting for a distributeion
187562       --
187563 
187564       --
187565       -- 5217187
187566       --
187567       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
187568       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
187569                                        g_array_event(l_event_id).array_value_num('header_index'));
187570       --
187571       --
187572 
187573       -- No reversal code generated
187574 
187575       xla_ae_lines_pkg.SetAcctReversalAttrs
187576          (p_event_id             => l_event_id
187577          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
187578          ,p_calculate_acctd_flag => l_calculate_acctd_flag
187579          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
187580    END IF;
187581 
187582    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
187583        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
187584 
187585 --
187586 AcctLineType_19 (
187587  p_application_id  => p_application_id
187588  ,p_event_id     => l_event_id
187589  ,p_calculate_acctd_flag => l_calculate_acctd_flag
187590  ,p_calculate_g_l_flag => l_calculate_g_l_flag
187591  ,p_actual_flag => l_actual_flag
187592  ,p_balance_type_code => l_balance_type_code
187593  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187594  
187595  , p_source_4 => l_array_source_4(Idx)
187596  , p_source_11 => l_array_source_11(Idx)
187597  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
187598  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
187599  , p_source_15 => l_array_source_15(Idx)
187600  , p_source_18 => l_array_source_18(Idx)
187601  , p_source_19 => l_array_source_19(Idx)
187602  , p_source_20 => l_array_source_20(Idx)
187603  , p_source_21 => l_array_source_21(Idx)
187604  , p_source_22 => l_array_source_22(Idx)
187605  , p_source_24 => l_array_source_24(Idx)
187606  );
187607 If(l_balance_type_code = 'A') THEN
187608   l_actual_gain_loss_ref := l_gain_or_loss_ref;
187609 END IF;
187610 
187611 --
187612 
187613 
187614 --
187615 AcctLineType_90 (
187616  p_application_id  => p_application_id
187617  ,p_event_id     => l_event_id
187618  ,p_calculate_acctd_flag => l_calculate_acctd_flag
187619  ,p_calculate_g_l_flag => l_calculate_g_l_flag
187620  ,p_actual_flag => l_actual_flag
187621  ,p_balance_type_code => l_balance_type_code
187622  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187623  
187624  , p_source_4 => l_array_source_4(Idx)
187625  , p_source_11 => l_array_source_11(Idx)
187626  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
187627  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
187628  , p_source_15 => l_array_source_15(Idx)
187629  , p_source_18 => l_array_source_18(Idx)
187630  , p_source_19 => l_array_source_19(Idx)
187631  , p_source_20 => l_array_source_20(Idx)
187632  , p_source_21 => l_array_source_21(Idx)
187633  , p_source_22 => l_array_source_22(Idx)
187634  , p_source_24 => l_array_source_24(Idx)
187635  );
187636 If(l_balance_type_code = 'A') THEN
187637   l_actual_gain_loss_ref := l_gain_or_loss_ref;
187638 END IF;
187639 
187640 --
187641 
187642 
187643 --
187644 AcctLineType_99 (
187645  p_application_id  => p_application_id
187646  ,p_event_id     => l_event_id
187647  ,p_calculate_acctd_flag => l_calculate_acctd_flag
187648  ,p_calculate_g_l_flag => l_calculate_g_l_flag
187649  ,p_actual_flag => l_actual_flag
187650  ,p_balance_type_code => l_balance_type_code
187651  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187652  
187653  , p_source_4 => l_array_source_4(Idx)
187654  , p_source_11 => l_array_source_11(Idx)
187655  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
187656  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
187657  , p_source_15 => l_array_source_15(Idx)
187658  , p_source_18 => l_array_source_18(Idx)
187659  , p_source_19 => l_array_source_19(Idx)
187660  , p_source_20 => l_array_source_20(Idx)
187661  , p_source_21 => l_array_source_21(Idx)
187662  , p_source_22 => l_array_source_22(Idx)
187663  , p_source_24 => l_array_source_24(Idx)
187664  );
187665 If(l_balance_type_code = 'A') THEN
187666   l_actual_gain_loss_ref := l_gain_or_loss_ref;
187667 END IF;
187668 
187669 --
187670 
187671 
187672 --
187673 AcctLineType_112 (
187674  p_application_id  => p_application_id
187675  ,p_event_id     => l_event_id
187676  ,p_calculate_acctd_flag => l_calculate_acctd_flag
187677  ,p_calculate_g_l_flag => l_calculate_g_l_flag
187678  ,p_actual_flag => l_actual_flag
187679  ,p_balance_type_code => l_balance_type_code
187680  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187681  
187682  , p_source_4 => l_array_source_4(Idx)
187683  , p_source_11 => l_array_source_11(Idx)
187684  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
187685  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
187686  , p_source_15 => l_array_source_15(Idx)
187687  , p_source_18 => l_array_source_18(Idx)
187688  , p_source_19 => l_array_source_19(Idx)
187689  , p_source_20 => l_array_source_20(Idx)
187690  , p_source_21 => l_array_source_21(Idx)
187691  , p_source_22 => l_array_source_22(Idx)
187692  , p_source_24 => l_array_source_24(Idx)
187693  );
187694 If(l_balance_type_code = 'A') THEN
187695   l_actual_gain_loss_ref := l_gain_or_loss_ref;
187696 END IF;
187697 
187698 --
187699 
187700 
187701 --
187702 AcctLineType_138 (
187703  p_application_id  => p_application_id
187704  ,p_event_id     => l_event_id
187705  ,p_calculate_acctd_flag => l_calculate_acctd_flag
187706  ,p_calculate_g_l_flag => l_calculate_g_l_flag
187707  ,p_actual_flag => l_actual_flag
187708  ,p_balance_type_code => l_balance_type_code
187709  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187710  
187711  , p_source_4 => l_array_source_4(Idx)
187712  , p_source_11 => l_array_source_11(Idx)
187713  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
187714  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
187715  , p_source_15 => l_array_source_15(Idx)
187716  , p_source_18 => l_array_source_18(Idx)
187717  , p_source_19 => l_array_source_19(Idx)
187718  , p_source_20 => l_array_source_20(Idx)
187719  , p_source_21 => l_array_source_21(Idx)
187720  , p_source_22 => l_array_source_22(Idx)
187721  , p_source_24 => l_array_source_24(Idx)
187722  );
187723 If(l_balance_type_code = 'A') THEN
187724   l_actual_gain_loss_ref := l_gain_or_loss_ref;
187725 END IF;
187726 
187727 --
187728 
187729 
187730 --
187731 AcctLineType_183 (
187732  p_application_id  => p_application_id
187733  ,p_event_id     => l_event_id
187734  ,p_calculate_acctd_flag => l_calculate_acctd_flag
187735  ,p_calculate_g_l_flag => l_calculate_g_l_flag
187736  ,p_actual_flag => l_actual_flag
187737  ,p_balance_type_code => l_balance_type_code
187738  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187739  
187740  , p_source_4 => l_array_source_4(Idx)
187741  , p_source_11 => l_array_source_11(Idx)
187742  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
187743  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
187744  , p_source_15 => l_array_source_15(Idx)
187745  , p_source_18 => l_array_source_18(Idx)
187746  , p_source_19 => l_array_source_19(Idx)
187747  , p_source_20 => l_array_source_20(Idx)
187748  , p_source_21 => l_array_source_21(Idx)
187749  , p_source_22 => l_array_source_22(Idx)
187750  , p_source_24 => l_array_source_24(Idx)
187751  );
187752 If(l_balance_type_code = 'A') THEN
187753   l_actual_gain_loss_ref := l_gain_or_loss_ref;
187754 END IF;
187755 
187756 --
187757 
187758       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
187759       -- or secondary ledger that has different currency with primary
187760       -- or alc that is calculated by sla
187761       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
187762             (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'))
187763 
187764 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
187765 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
187766           AND (l_actual_flag = 'A')) THEN
187767         XLA_AE_LINES_PKG.CreateGainOrLossLines(
187768           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
187769          ,p_application_id   => p_application_id
187770          ,p_amb_context_code => 'DEFAULT'
187771          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
187772          ,p_event_class_code => C_EVENT_CLASS_CODE
187773          ,p_event_type_code  => C_EVENT_TYPE_CODE
187774          
187775          ,p_gain_ccid        => -1
187776          ,p_loss_ccid        => -1
187777 
187778          ,p_actual_flag      => l_actual_flag
187779          ,p_enc_flag         => null
187780          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
187781          ,p_enc_g_l_ref      => null
187782          );
187783       END IF;
187784    END IF;
187785 END IF;
187786 
187787    ELSE
187788       --
187789       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
187790       --
187791       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187792          trace
187793             (p_msg      => 'Trancaction revesal option is Y'
187794             ,p_level    => C_LEVEL_STATEMENT
187795             ,p_module   => l_log_module);
187796       END IF;
187797    END IF;
187798 
187799 END LOOP;
187800 l_result := XLA_AE_LINES_PKG.InsertLines ;
187801 end loop;
187802 close line_cur;
187803 
187804 
187805 --
187806 -- insert headers into xla_ae_headers_gt table
187807 --
187808 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
187809 
187810 -- insert into errors table here.
187811 
187812 END LOOP;
187813 
187814 --
187815 -- 4865292
187816 --
187817 -- Compare g_hdr_extract_count with event count in
187818 -- CreateHeadersAndLines.
187819 --
187820 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
187821 
187822 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187823    trace (p_msg     => '# rows extracted from header extract objects '
187824                     || ' (running total): '
187825                     || g_hdr_extract_count
187826          ,p_level   => C_LEVEL_STATEMENT
187827          ,p_module  => l_log_module);
187828 END IF;
187829 
187830 CLOSE header_cur;
187831 --
187832 
187833 --
187834 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187835    trace
187836       (p_msg      => 'END of EventType_286'
187837       ,p_level    => C_LEVEL_PROCEDURE
187838       ,p_module   => l_log_module);
187839 END IF;
187840 --
187841 RETURN l_result;
187842 EXCEPTION
187843 WHEN xla_exceptions_pkg.application_exception THEN
187844    
187845 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
187846 
187847    
187848 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
187849 
187850    RAISE;
187851 
187852 WHEN NO_DATA_FOUND THEN
187853 
187854 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
187855 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
187856 
187857 FOR header_record IN header_cur
187858 LOOP
187859     l_array_header_events(header_record.event_id) := header_record.event_id;
187860 END LOOP;
187861 
187862 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
187863 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
187864 
187865 fnd_file.put_line(fnd_file.LOG, '                    ');
187866 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
187867 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
187868 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
187869 
187870 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
187871 LOOP
187872 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
187873 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
187874         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
187875 	END IF;
187876 END LOOP;
187877 
187878 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
187879 fnd_file.put_line(fnd_file.LOG, '                    ');
187880 
187881 
187882 xla_exceptions_pkg.raise_message
187883       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_286');
187884 
187885 
187886 WHEN OTHERS THEN
187887    xla_exceptions_pkg.raise_message
187888       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_286');
187889 END EventType_286;
187890 --
187891 
187892 ---------------------------------------
187893 --
187894 -- PRIVATE PROCEDURE
187895 --         insert_sources_287
187896 --
187897 ----------------------------------------
187898 --
187899 PROCEDURE insert_sources_287(
187900                                 p_target_ledger_id       IN NUMBER
187901                               , p_language               IN VARCHAR2
187902                               , p_sla_ledger_id          IN NUMBER
187903                               , p_pad_start_date         IN DATE
187904                               , p_pad_end_date           IN DATE
187905                          )
187906 IS
187907 
187908 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_SENDER_SHIP_TP';
187909 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
187910 p_apps_owner                   VARCHAR2(30);
187911 l_log_module                   VARCHAR2(240);
187912 BEGIN
187913 IF g_log_enabled THEN
187914       l_log_module := C_DEFAULT_MODULE||'.insert_sources_287';
187915 END IF;
187916 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187917 
187918       trace
187919          (p_msg      => 'BEGIN of insert_sources_287'
187920          ,p_level    => C_LEVEL_PROCEDURE
187921          ,p_module   => l_log_module);
187922 
187923 END IF;
187924 
187925 -- select APPS owner
187926 SELECT oracle_username
187927   INTO p_apps_owner
187928   FROM fnd_oracle_userid
187929  WHERE read_only_flag = 'U'
187930 ;
187931 
187932 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187933       trace
187934          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
187935                         ' - p_language = '||p_language||
187936                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
187937                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
187938                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
187939                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
187940          ,p_level    => C_LEVEL_STATEMENT
187941          ,p_module   => l_log_module);
187942 END IF;
187943 
187944 
187945 --
187946 INSERT INTO xla_diag_sources --hdr1
187947 (
187948         event_id
187949       , ledger_id
187950       , sla_ledger_id
187951       , description_language
187952       , object_name
187953       , object_type_code
187954       , line_number
187955       , source_application_id
187956       , source_type_code
187957       , source_code
187958       , source_value
187959       , source_meaning
187960       , created_by
187961       , creation_date
187962       , last_update_date
187963       , last_updated_by
187964       , last_update_login
187965       , program_update_date
187966       , program_application_id
187967       , program_id
187968       , request_id
187969 )
187970 SELECT
187971         event_id
187972       , p_target_ledger_id
187973       , p_sla_ledger_id
187974       , p_language
187975       , object_name
187976       , object_type_code
187977       , line_number
187978       , source_application_id
187979       , source_type_code
187980       , source_code
187981       , SUBSTR(source_value ,1,1996)
187982       , SUBSTR(source_meaning,1,200)
187983       , xla_environment_pkg.g_Usr_Id
187984       , TRUNC(SYSDATE)
187985       , TRUNC(SYSDATE)
187986       , xla_environment_pkg.g_Usr_Id
187987       , xla_environment_pkg.g_Login_Id
187988       , TRUNC(SYSDATE)
187989       , xla_environment_pkg.g_Prog_Appl_Id
187990       , xla_environment_pkg.g_Prog_Id
187991       , xla_environment_pkg.g_Req_Id
187992   FROM (
187993        SELECT xet.event_id                  event_id
187994             , 0                             line_number
187995             , CASE r
187996                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
187997                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
187998                 
187999                ELSE null
188000               END                           object_name
188001             , CASE r
188002                 WHEN 1 THEN 'HEADER' 
188003                 WHEN 2 THEN 'HEADER' 
188004                 
188005                 ELSE null
188006               END                           object_type_code
188007             , CASE r
188008                 WHEN 1 THEN '707' 
188009                 WHEN 2 THEN '707' 
188010                 
188011                 ELSE null
188012               END                           source_application_id
188013             , 'S'             source_type_code
188014             , CASE r
188015                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
188016                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
188017                 
188018                 ELSE null
188019               END                           source_code
188020             , CASE r
188021                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
188022                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
188023                 
188024                 ELSE null
188025               END                           source_value
188026             , CASE r
188027                 WHEN 1 THEN fvl12.meaning
188028                 WHEN 2 THEN fvl38.meaning
188029                 
188030                 ELSE null
188031               END               source_meaning
188032         FROM xla_events_gt     xet  
188033       , CST_XLA_INV_HEADERS_V  h1
188034   , fnd_lookup_values    fvl12
188035   , fnd_lookup_values    fvl38
188036             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
188037        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
188038          AND xet.event_type_code = C_EVENT_TYPE_CODE
188039             AND h1.event_id = xet.event_id
188040    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
188041   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
188042   AND fvl12.view_application_id(+) = 700
188043   AND fvl12.language(+)            = USERENV('LANG')
188044      AND fvl38.lookup_type(+)         = 'YES_NO'
188045   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
188046   AND fvl38.view_application_id(+) = 0
188047   AND fvl38.language(+)            = USERENV('LANG')
188048   
188049 )
188050 ;
188051 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188052 
188053       trace
188054          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
188055          ,p_level    => C_LEVEL_STATEMENT
188056          ,p_module   => l_log_module);
188057 
188058 END IF;
188059 --
188060 
188061 
188062 
188063 --
188064 INSERT INTO xla_diag_sources --line1
188065 (
188066         event_id
188067       , ledger_id
188068       , sla_ledger_id
188069       , description_language
188070       , object_name
188071       , object_type_code
188072       , line_number
188073       , source_application_id
188074       , source_type_code
188075       , source_code
188076       , source_value
188077       , source_meaning
188078       , created_by
188079       , creation_date
188080       , last_update_date
188081       , last_updated_by
188082       , last_update_login
188083       , program_update_date
188084       , program_application_id
188085       , program_id
188086       , request_id
188087 )
188088 SELECT  event_id
188089       , p_target_ledger_id
188090       , p_sla_ledger_id
188091       , p_language
188092       , object_name
188093       , object_type_code
188094       , line_number
188095       , source_application_id
188096       , source_type_code
188097       , source_code
188098       , SUBSTR(source_value,1,1996)
188099       , SUBSTR(source_meaning,1,200)
188100       , xla_environment_pkg.g_Usr_Id
188101       , TRUNC(SYSDATE)
188102       , TRUNC(SYSDATE)
188103       , xla_environment_pkg.g_Usr_Id
188104       , xla_environment_pkg.g_Login_Id
188105       , TRUNC(SYSDATE)
188106       , xla_environment_pkg.g_Prog_Appl_Id
188107       , xla_environment_pkg.g_Prog_Id
188108       , xla_environment_pkg.g_Req_Id
188109   FROM (
188110        SELECT xet.event_id                  event_id
188111             , l2.line_number                 line_number
188112             , CASE r
188113                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
188114                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
188115                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
188116                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
188117                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
188118                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
188119                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
188120                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
188121                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
188122                 
188123                ELSE null
188124               END                           object_name
188125             , CASE r
188126                 WHEN 1 THEN 'LINE' 
188127                 WHEN 2 THEN 'LINE' 
188128                 WHEN 3 THEN 'LINE' 
188129                 WHEN 4 THEN 'LINE' 
188130                 WHEN 5 THEN 'LINE' 
188131                 WHEN 6 THEN 'LINE' 
188132                 WHEN 7 THEN 'LINE' 
188133                 WHEN 8 THEN 'LINE' 
188134                 WHEN 9 THEN 'LINE' 
188135                 
188136                 ELSE null
188137               END                           object_type_code
188138             , CASE r
188139                 WHEN 1 THEN '707' 
188140                 WHEN 2 THEN '707' 
188141                 WHEN 3 THEN '707' 
188142                 WHEN 4 THEN '707' 
188143                 WHEN 5 THEN '707' 
188144                 WHEN 6 THEN '707' 
188145                 WHEN 7 THEN '707' 
188146                 WHEN 8 THEN '707' 
188147                 WHEN 9 THEN '707' 
188148                 
188149                 ELSE null
188150               END                           source_application_id
188151             , 'S'             source_type_code
188152             , CASE r
188153                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
188154                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
188155                 WHEN 3 THEN 'CURRENCY_CODE' 
188156                 WHEN 4 THEN 'ENTERED_AMOUNT' 
188157                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
188158                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
188159                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
188160                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
188161                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
188162                 
188163                 ELSE null
188164               END                           source_code
188165             , CASE r
188166                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
188167                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
188168                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
188169                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
188170                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
188171                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
188172                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
188173                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
188174                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
188175                 
188176                 ELSE null
188177               END                           source_value
188178             , null              source_meaning
188179          FROM  xla_events_gt     xet  
188180         , CST_XLA_INV_LINES_V  l2
188181             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
188182         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
188183           AND xet.event_type_code = C_EVENT_TYPE_CODE
188184             AND l2.event_id          = xet.event_id
188185 
188186 )
188187 ;
188188 --
188189 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188190 
188191       trace
188192          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
188193          ,p_level    => C_LEVEL_STATEMENT
188194          ,p_module   => l_log_module);
188195 
188196 END IF;
188197 
188198 
188199 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188200       trace
188201          (p_msg      => 'END of insert_sources_287'
188202          ,p_level    => C_LEVEL_PROCEDURE
188203          ,p_module   => l_log_module);
188204 END IF;
188205 EXCEPTION
188206   WHEN xla_exceptions_pkg.application_exception THEN
188207       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
188208             trace
188209                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
188210                ,p_level    => C_LEVEL_EXCEPTION
188211                ,p_module   => l_log_module);
188212       END IF;
188213       RAISE;
188214   WHEN OTHERS THEN
188215       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
188216             trace
188217                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
188218                ,p_level    => C_LEVEL_EXCEPTION
188219                ,p_module   => l_log_module);
188220        END IF;
188221        xla_exceptions_pkg.raise_message
188222            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_287');
188223 END insert_sources_287;
188224 --
188225 
188226 ---------------------------------------
188227 --
188228 -- PRIVATE FUNCTION
188229 --         EventType_287
188230 --
188231 ----------------------------------------
188232 --
188233 FUNCTION EventType_287
188234        (p_application_id         IN NUMBER
188235        ,p_base_ledger_id         IN NUMBER
188236        ,p_target_ledger_id       IN NUMBER
188237        ,p_language               IN VARCHAR2
188238        ,p_currency_code          IN VARCHAR2
188239        ,p_sla_ledger_id          IN NUMBER
188240        ,p_pad_start_date         IN DATE
188241        ,p_pad_end_date           IN DATE
188242        ,p_primary_ledger_id      IN NUMBER)
188243 RETURN BOOLEAN IS
188244 --
188245 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_SENDER_SHIP_TP';
188246 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
188247 
188248 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
188249 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
188250 --
188251 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188252 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188253 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188254 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188255 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188256 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188257 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188258 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188259 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188260 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188261 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188262 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188263 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188264 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188265 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188266 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188267 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188268 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188269 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188270 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188271 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188272 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188273 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
188274 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188275 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
188276 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
188277 
188278 l_event_id                             NUMBER;
188279 l_previous_event_id                    NUMBER;
188280 l_first_event_id                       NUMBER;
188281 l_last_event_id                        NUMBER;
188282 
188283 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
188284 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
188285 --
188286 --
188287 l_result                    BOOLEAN := TRUE;
188288 l_rows                      NUMBER  := 1000;
188289 l_event_type_name           VARCHAR2(80) := 'User-defined Sender Intransit Shipment - Transfer Price - FOB Shipment';
188290 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
188291 l_description               VARCHAR2(4000);
188292 l_transaction_reversal      NUMBER;
188293 l_ae_header_id              NUMBER;
188294 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
188295 l_log_module                VARCHAR2(240);
188296 --
188297 l_acct_reversal_source      VARCHAR2(30);
188298 l_trx_reversal_source       VARCHAR2(30);
188299 
188300 l_continue_with_lines       BOOLEAN := TRUE;
188301 --
188302 l_acc_rev_gl_date_source    DATE;                      -- 4262811
188303 --
188304 type t_array_event_id is table of number index by binary_integer;
188305 
188306 l_rec_array_event                    t_rec_array_event;
188307 l_null_rec_array_event               t_rec_array_event;
188308 l_array_ae_header_id                 xla_number_array_type;
188309 l_actual_flag                        VARCHAR2(1) := NULL;
188310 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
188311 l_balance_type_code                  VARCHAR2(1) :=NULL;
188312 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
188313 
188314 --
188315 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
188316 --
188317 
188318 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
188319 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
188320 
188321 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
188322 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
188323 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
188324 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
188325 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
188326 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
188327 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
188328 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
188329 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
188330 
188331 l_array_source_12              t_array_source_12;
188332 l_array_source_12_meaning      t_array_lookup_meaning;
188333 l_array_source_38              t_array_source_38;
188334 l_array_source_38_meaning      t_array_lookup_meaning;
188335 
188336 l_array_source_4      t_array_source_4;
188337 l_array_source_11      t_array_source_11;
188338 l_array_source_15      t_array_source_15;
188339 l_array_source_18      t_array_source_18;
188340 l_array_source_19      t_array_source_19;
188341 l_array_source_20      t_array_source_20;
188342 l_array_source_21      t_array_source_21;
188343 l_array_source_22      t_array_source_22;
188344 l_array_source_24      t_array_source_24;
188345 
188346 --
188347 CURSOR header_cur
188348 IS
188349 SELECT /*+ leading(xet) cardinality(xet,1) */
188350 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_TP
188351 -- Event Class Code: USER_DEFINE
188352     xet.entity_id
188353   , xet.legal_entity_id
188354   , xet.entity_code
188355   , xet.transaction_number
188356   , xet.event_id
188357   , xet.event_class_code
188358   , xet.event_type_code
188359   , xet.event_number
188360   , xet.event_date
188361   , xet.transaction_date
188362   , xet.reference_num_1
188363   , xet.reference_num_2
188364   , xet.reference_num_3
188365   , xet.reference_num_4
188366   , xet.reference_char_1
188367   , xet.reference_char_2
188368   , xet.reference_char_3
188369   , xet.reference_char_4
188370   , xet.reference_date_1
188371   , xet.reference_date_2
188372   , xet.reference_date_3
188373   , xet.reference_date_4
188374   , xet.event_created_by
188375   , xet.budgetary_control_flag 
188376   , h1.DISTRIBUTION_TYPE    source_12
188377   , fvl12.meaning   source_12_meaning
188378   , h1.TRANSFER_TO_GL_INDICATOR    source_38
188379   , fvl38.meaning   source_38_meaning
188380   FROM xla_events_gt     xet 
188381   , CST_XLA_INV_HEADERS_V  h1
188382   , fnd_lookup_values    fvl12
188383   , fnd_lookup_values    fvl38
188384  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
188385    and xet.event_type_code = C_EVENT_TYPE_CODE
188386    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
188387    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
188388   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
188389   AND fvl12.view_application_id(+) = 700
188390   AND fvl12.language(+)            = USERENV('LANG')
188391      AND fvl38.lookup_type(+)         = 'YES_NO'
188392   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
188393   AND fvl38.view_application_id(+) = 0
188394   AND fvl38.language(+)            = USERENV('LANG')
188395   
188396  ORDER BY event_id
188397 ;
188398 
188399 
188400 --
188401 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
188402 IS
188403 SELECT /*+ leading(xet) cardinality(xet,1) */
188404 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_TP
188405 -- Event Class Code: USER_DEFINE
188406     xet.entity_id
188407    ,xet.legal_entity_id
188408    ,xet.entity_code
188409    ,xet.transaction_number
188410    ,xet.event_id
188411    ,xet.event_class_code
188412    ,xet.event_type_code
188413    ,xet.event_number
188414    ,xet.event_date
188415    ,xet.transaction_date
188416    ,xet.reference_num_1
188417    ,xet.reference_num_2
188418    ,xet.reference_num_3
188419    ,xet.reference_num_4
188420    ,xet.reference_char_1
188421    ,xet.reference_char_2
188422    ,xet.reference_char_3
188423    ,xet.reference_char_4
188424    ,xet.reference_date_1
188425    ,xet.reference_date_2
188426    ,xet.reference_date_3
188427    ,xet.reference_date_4
188428    ,xet.event_created_by
188429    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
188430   , l2.CODE_COMBINATION_ID    source_4
188431   , l2.DISTRIBUTION_IDENTIFIER    source_11
188432   , l2.CURRENCY_CODE    source_15
188433   , l2.ENTERED_AMOUNT    source_18
188434   , l2.CURRENCY_CONVERSION_DATE    source_19
188435   , l2.CURRENCY_CONVERSION_RATE    source_20
188436   , l2.CURRENCY_CONVERSION_TYPE    source_21
188437   , l2.ACCOUNTED_AMOUNT    source_22
188438   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
188439   FROM xla_events_gt     xet 
188440   , CST_XLA_INV_LINES_V  l2
188441  WHERE xet.event_id between x_first_event_id and x_last_event_id
188442    and xet.event_date between p_pad_start_date and p_pad_end_date
188443    and xet.event_type_code = C_EVENT_TYPE_CODE
188444    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
188445 ;
188446 
188447 --
188448 BEGIN
188449 IF g_log_enabled THEN
188450    l_log_module := C_DEFAULT_MODULE||'.EventType_287';
188451 END IF;
188452 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188453    trace
188454       (p_msg      => 'BEGIN of EventType_287'
188455       ,p_level    => C_LEVEL_PROCEDURE
188456       ,p_module   => l_log_module);
188457 END IF;
188458 
188459 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188460    trace
188461       (p_msg      => 'p_application_id = '||p_application_id||
188462                      ' - p_base_ledger_id = '||p_base_ledger_id||
188463                      ' - p_target_ledger_id  = '||p_target_ledger_id||
188464                      ' - p_language = '||p_language||
188465                      ' - p_currency_code = '||p_currency_code||
188466                      ' - p_sla_ledger_id = '||p_sla_ledger_id
188467       ,p_level    => C_LEVEL_STATEMENT
188468       ,p_module   => l_log_module);
188469 END IF;
188470 --
188471 -- initialze arrays
188472 --
188473 g_array_event.DELETE;
188474 l_rec_array_event := l_null_rec_array_event;
188475 --
188476 --------------------------------------
188477 -- 4262811 Initialze MPA Line Number
188478 --------------------------------------
188479 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
188480 
188481 --
188482 
188483 --
188484 OPEN header_cur;
188485 --
188486 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188487    trace
188488    (p_msg      => 'SQL - FETCH header_cur'
188489    ,p_level    => C_LEVEL_STATEMENT
188490    ,p_module   => l_log_module);
188491 END IF;
188492 --
188493 LOOP
188494 FETCH header_cur BULK COLLECT INTO
188495         l_array_entity_id
188496       , l_array_legal_entity_id
188497       , l_array_entity_code
188498       , l_array_transaction_num
188499       , l_array_event_id
188500       , l_array_class_code
188501       , l_array_event_type
188502       , l_array_event_number
188503       , l_array_event_date
188504       , l_array_transaction_date
188505       , l_array_reference_num_1
188506       , l_array_reference_num_2
188507       , l_array_reference_num_3
188508       , l_array_reference_num_4
188509       , l_array_reference_char_1
188510       , l_array_reference_char_2
188511       , l_array_reference_char_3
188512       , l_array_reference_char_4
188513       , l_array_reference_date_1
188514       , l_array_reference_date_2
188515       , l_array_reference_date_3
188516       , l_array_reference_date_4
188517       , l_array_event_created_by
188518       , l_array_budgetary_control_flag 
188519       , l_array_source_12
188520       , l_array_source_12_meaning
188521       , l_array_source_38
188522       , l_array_source_38_meaning
188523       LIMIT l_rows;
188524 --
188525 IF (C_LEVEL_EVENT >= g_log_level) THEN
188526    trace
188527    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
188528    ,p_level    => C_LEVEL_EVENT
188529    ,p_module   => l_log_module);
188530 END IF;
188531 --
188532 EXIT WHEN l_array_entity_id.COUNT = 0;
188533 
188534 -- initialize arrays
188535 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
188536 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
188537 
188538 --
188539 -- Bug 4458708
188540 --
188541 XLA_AE_LINES_PKG.g_LineNumber := 0;
188542 
188543 
188544 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
188545 g_last_hdr_idx := l_array_event_id.LAST;
188546 --
188547 -- loop for the headers. Each iteration is for each header extract row
188548 -- fetched in header cursor
188549 --
188550 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
188551 
188552 --
188553 -- set event info as cache for other routines to refer event attributes
188554 --
188555 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
188556    (p_application_id           => p_application_id
188557    ,p_primary_ledger_id        => p_primary_ledger_id
188558    ,p_base_ledger_id           => p_base_ledger_id
188559    ,p_target_ledger_id         => p_target_ledger_id
188560    ,p_entity_id                => l_array_entity_id(hdr_idx)
188561    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
188562    ,p_entity_code              => l_array_entity_code(hdr_idx)
188563    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
188564    ,p_event_id                 => l_array_event_id(hdr_idx)
188565    ,p_event_class_code         => l_array_class_code(hdr_idx)
188566    ,p_event_type_code          => l_array_event_type(hdr_idx)
188567    ,p_event_number             => l_array_event_number(hdr_idx)
188568    ,p_event_date               => l_array_event_date(hdr_idx)
188569    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
188570    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
188571    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
188572    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
188573    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
188574    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
188575    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
188576    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
188577    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
188578    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
188579    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
188580    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
188581    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
188582    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
188583    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
188584 
188585 --
188586 -- set the status of entry to C_VALID (0)
188587 --
188588 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
188589 
188590 --
188591 -- initialize a row for ae header
188592 --
188593 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
188594 
188595 l_event_id := l_array_event_id(hdr_idx);
188596 
188597 --
188598 -- storing the hdr_idx for event. May be used by line cursor.
188599 --
188600 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
188601 
188602 --
188603 -- store sources from header extract. This can be improved to
188604 -- store only those sources from header extract that may be used in lines
188605 --
188606 
188607 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
188608 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
188609 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
188610 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
188611 
188612 --
188613 -- initilaize the status of ae headers for diffrent balance types
188614 -- the status is initialised to C_NOT_CREATED (2)
188615 --
188616 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
188617 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
188618 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
188619 
188620 --
188621 -- call api to validate and store accounting attributes for header
188622 --
188623 
188624 ------------------------------------------------------------
188625 -- Accrual Reversal : to get date for Standard Source (NONE)
188626 ------------------------------------------------------------
188627 l_acc_rev_gl_date_source := NULL;
188628 
188629      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
188630       l_rec_acct_attrs.array_date_value(1) := 
188631 xla_ae_sources_pkg.GetSystemSourceDate(
188632    p_source_code           => 'XLA_REFERENCE_DATE_1'
188633  , p_source_type_code      => 'Y'
188634  , p_source_application_id =>  602
188635 );
188636      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
188637       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
188638 
188639 
188640 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
188641 
188642 XLA_AE_HEADER_PKG.SetJeCategoryName;
188643 
188644 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
188645 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
188646 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
188647 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
188648 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
188649 
188650 
188651 -- No header level analytical criteria
188652 
188653 --
188654 --accounting attribute enhancement, bug 3612931
188655 --
188656 l_trx_reversal_source := SUBSTR(NULL, 1,30);
188657 
188658 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
188659    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
188660 
188661    xla_accounting_err_pkg.build_message
188662       (p_appli_s_name            => 'XLA'
188663       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
188664       ,p_token_1                 => 'ACCT_ATTR_NAME'
188665       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
188666       ,p_token_2                 => 'PRODUCT_NAME'
188667       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
188668       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
188669       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
188670       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
188671 
188672 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
188673    --
188674    -- following sets the accounting attributes needed to reverse
188675    -- accounting for a distributeion
188676    --
188677    xla_ae_lines_pkg.SetTrxReversalAttrs
188678       (p_event_id              => l_event_id
188679       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
188680       ,p_trx_reversal_source   => l_trx_reversal_source);
188681 
188682 END IF;
188683 
188684 
188685 ----------------------------------------------------------------
188686 -- 4262811 -  update the header statuses to invalid in need be
188687 ----------------------------------------------------------------
188688 --
188689 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
188690 
188691 
188692   -----------------------------------------------
188693   -- No accrual reversal for the event class/type
188694   -----------------------------------------------
188695 ----------------------------------------------------------------
188696 
188697 --
188698 -- this ends the header loop iteration for one bulk fetch
188699 --
188700 END LOOP;
188701 
188702 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
188703 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
188704 
188705 --
188706 -- insert dummy rows into lines gt table that were created due to
188707 -- transaction reversals
188708 --
188709 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
188710    l_result := XLA_AE_LINES_PKG.InsertLines;
188711 END IF;
188712 
188713 --
188714 -- reset the temp_line_num for each set of events fetched from header
188715 -- cursor rather than doing it for each new event in line cursor
188716 -- Bug 3939231
188717 --
188718 xla_ae_lines_pkg.g_temp_line_num := 0;
188719 
188720 
188721 
188722 --
188723 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
188724 --
188725 --
188726 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188727 
188728       trace
188729          (p_msg      => 'SQL - FETCH line_cur'
188730          ,p_level    => C_LEVEL_STATEMENT
188731          ,p_module   => l_log_module);
188732 
188733 END IF;
188734 --
188735 --
188736 LOOP
188737   --
188738   FETCH line_cur BULK COLLECT INTO
188739         l_array_entity_id
188740       , l_array_legal_entity_id
188741       , l_array_entity_code
188742       , l_array_transaction_num
188743       , l_array_event_id
188744       , l_array_class_code
188745       , l_array_event_type
188746       , l_array_event_number
188747       , l_array_event_date
188748       , l_array_transaction_date
188749       , l_array_reference_num_1
188750       , l_array_reference_num_2
188751       , l_array_reference_num_3
188752       , l_array_reference_num_4
188753       , l_array_reference_char_1
188754       , l_array_reference_char_2
188755       , l_array_reference_char_3
188756       , l_array_reference_char_4
188757       , l_array_reference_date_1
188758       , l_array_reference_date_2
188759       , l_array_reference_date_3
188760       , l_array_reference_date_4
188761       , l_array_event_created_by
188762       , l_array_budgetary_control_flag
188763       , l_array_extract_line_num 
188764       , l_array_source_4
188765       , l_array_source_11
188766       , l_array_source_15
188767       , l_array_source_18
188768       , l_array_source_19
188769       , l_array_source_20
188770       , l_array_source_21
188771       , l_array_source_22
188772       , l_array_source_24
188773       LIMIT l_rows;
188774 
188775   --
188776   IF (C_LEVEL_EVENT >= g_log_level) THEN
188777             trace
188778                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
188779                ,p_level    => C_LEVEL_EVENT
188780                ,p_module   => l_log_module);
188781   END IF;
188782   --
188783   EXIT WHEN l_array_entity_id.count = 0;
188784 
188785   XLA_AE_LINES_PKG.g_rec_lines := null;
188786 
188787 --
188788 -- Bug 4458708
188789 --
188790 XLA_AE_LINES_PKG.g_LineNumber := 0;
188791 --
188792 --
188793 
188794 FOR Idx IN 1..l_array_event_id.count LOOP
188795    --
188796    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
188797    --
188798    l_event_id := l_array_event_id(idx);  -- 5648433
188799 
188800    --
188801    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
188802    --
188803 
188804    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
188805              (g_array_event(l_event_id).array_value_num('header_index'))
188806          ,'N'
188807          ) <> 'Y'
188808    THEN
188809       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188810          trace
188811             (p_msg      => 'Trancaction revesal option is not Y '
188812             ,p_level    => C_LEVEL_STATEMENT
188813             ,p_module   => l_log_module);
188814       END IF;
188815 
188816 --
188817 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
188818 --
188819 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
188820 --
188821 -- set event info as cache for other routines to refer event attributes
188822 --
188823 
188824 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
188825    l_previous_event_id := l_event_id;
188826 
188827    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
188828       (p_application_id           => p_application_id
188829       ,p_primary_ledger_id        => p_primary_ledger_id
188830       ,p_base_ledger_id           => p_base_ledger_id
188831       ,p_target_ledger_id         => p_target_ledger_id
188832       ,p_entity_id                => l_array_entity_id(Idx)
188833       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
188834       ,p_entity_code              => l_array_entity_code(Idx)
188835       ,p_transaction_num          => l_array_transaction_num(Idx)
188836       ,p_event_id                 => l_array_event_id(Idx)
188837       ,p_event_class_code         => l_array_class_code(Idx)
188838       ,p_event_type_code          => l_array_event_type(Idx)
188839       ,p_event_number             => l_array_event_number(Idx)
188840       ,p_event_date               => l_array_event_date(Idx)
188841       ,p_transaction_date         => l_array_transaction_date(Idx)
188842       ,p_reference_num_1          => l_array_reference_num_1(Idx)
188843       ,p_reference_num_2          => l_array_reference_num_2(Idx)
188844       ,p_reference_num_3          => l_array_reference_num_3(Idx)
188845       ,p_reference_num_4          => l_array_reference_num_4(Idx)
188846       ,p_reference_char_1         => l_array_reference_char_1(Idx)
188847       ,p_reference_char_2         => l_array_reference_char_2(Idx)
188848       ,p_reference_char_3         => l_array_reference_char_3(Idx)
188849       ,p_reference_char_4         => l_array_reference_char_4(Idx)
188850       ,p_reference_date_1         => l_array_reference_date_1(Idx)
188851       ,p_reference_date_2         => l_array_reference_date_2(Idx)
188852       ,p_reference_date_3         => l_array_reference_date_3(Idx)
188853       ,p_reference_date_4         => l_array_reference_date_4(Idx)
188854       ,p_event_created_by         => l_array_event_created_by(Idx)
188855       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
188856        --
188857 END IF;
188858 
188859 
188860 
188861 --
188862 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
188863 
188864 l_acct_reversal_source := SUBSTR(NULL, 1,30);
188865 
188866 IF l_continue_with_lines THEN
188867    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
188868       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
188869 
188870       xla_accounting_err_pkg.build_message
188871          (p_appli_s_name            => 'XLA'
188872          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
188873          ,p_token_1                 => 'LINE_NUMBER'
188874          ,p_value_1                 => l_array_extract_line_num(Idx)
188875          ,p_token_2                 => 'PRODUCT_NAME'
188876          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
188877          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
188878          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
188879          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
188880 
188881    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
188882       --
188883       -- following sets the accounting attributes needed to reverse
188884       -- accounting for a distributeion
188885       --
188886 
188887       --
188888       -- 5217187
188889       --
188890       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
188891       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
188892                                        g_array_event(l_event_id).array_value_num('header_index'));
188893       --
188894       --
188895 
188896       -- No reversal code generated
188897 
188898       xla_ae_lines_pkg.SetAcctReversalAttrs
188899          (p_event_id             => l_event_id
188900          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
188901          ,p_calculate_acctd_flag => l_calculate_acctd_flag
188902          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
188903    END IF;
188904 
188905    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
188906        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
188907 
188908 --
188909 AcctLineType_16 (
188910  p_application_id  => p_application_id
188911  ,p_event_id     => l_event_id
188912  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188913  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188914  ,p_actual_flag => l_actual_flag
188915  ,p_balance_type_code => l_balance_type_code
188916  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188917  
188918  , p_source_4 => l_array_source_4(Idx)
188919  , p_source_11 => l_array_source_11(Idx)
188920  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188921  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188922  , p_source_15 => l_array_source_15(Idx)
188923  , p_source_18 => l_array_source_18(Idx)
188924  , p_source_19 => l_array_source_19(Idx)
188925  , p_source_20 => l_array_source_20(Idx)
188926  , p_source_21 => l_array_source_21(Idx)
188927  , p_source_22 => l_array_source_22(Idx)
188928  , p_source_24 => l_array_source_24(Idx)
188929  );
188930 If(l_balance_type_code = 'A') THEN
188931   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188932 END IF;
188933 
188934 --
188935 
188936 
188937 --
188938 AcctLineType_89 (
188939  p_application_id  => p_application_id
188940  ,p_event_id     => l_event_id
188941  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188942  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188943  ,p_actual_flag => l_actual_flag
188944  ,p_balance_type_code => l_balance_type_code
188945  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188946  
188947  , p_source_4 => l_array_source_4(Idx)
188948  , p_source_11 => l_array_source_11(Idx)
188949  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188950  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188951  , p_source_15 => l_array_source_15(Idx)
188952  , p_source_18 => l_array_source_18(Idx)
188953  , p_source_19 => l_array_source_19(Idx)
188954  , p_source_20 => l_array_source_20(Idx)
188955  , p_source_21 => l_array_source_21(Idx)
188956  , p_source_22 => l_array_source_22(Idx)
188957  , p_source_24 => l_array_source_24(Idx)
188958  );
188959 If(l_balance_type_code = 'A') THEN
188960   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188961 END IF;
188962 
188963 --
188964 
188965 
188966 --
188967 AcctLineType_101 (
188968  p_application_id  => p_application_id
188969  ,p_event_id     => l_event_id
188970  ,p_calculate_acctd_flag => l_calculate_acctd_flag
188971  ,p_calculate_g_l_flag => l_calculate_g_l_flag
188972  ,p_actual_flag => l_actual_flag
188973  ,p_balance_type_code => l_balance_type_code
188974  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188975  
188976  , p_source_4 => l_array_source_4(Idx)
188977  , p_source_11 => l_array_source_11(Idx)
188978  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188979  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188980  , p_source_15 => l_array_source_15(Idx)
188981  , p_source_18 => l_array_source_18(Idx)
188982  , p_source_19 => l_array_source_19(Idx)
188983  , p_source_20 => l_array_source_20(Idx)
188984  , p_source_21 => l_array_source_21(Idx)
188985  , p_source_22 => l_array_source_22(Idx)
188986  , p_source_24 => l_array_source_24(Idx)
188987  );
188988 If(l_balance_type_code = 'A') THEN
188989   l_actual_gain_loss_ref := l_gain_or_loss_ref;
188990 END IF;
188991 
188992 --
188993 
188994 
188995 --
188996 AcctLineType_115 (
188997  p_application_id  => p_application_id
188998  ,p_event_id     => l_event_id
188999  ,p_calculate_acctd_flag => l_calculate_acctd_flag
189000  ,p_calculate_g_l_flag => l_calculate_g_l_flag
189001  ,p_actual_flag => l_actual_flag
189002  ,p_balance_type_code => l_balance_type_code
189003  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189004  
189005  , p_source_4 => l_array_source_4(Idx)
189006  , p_source_11 => l_array_source_11(Idx)
189007  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189008  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189009  , p_source_15 => l_array_source_15(Idx)
189010  , p_source_18 => l_array_source_18(Idx)
189011  , p_source_19 => l_array_source_19(Idx)
189012  , p_source_20 => l_array_source_20(Idx)
189013  , p_source_21 => l_array_source_21(Idx)
189014  , p_source_22 => l_array_source_22(Idx)
189015  , p_source_24 => l_array_source_24(Idx)
189016  );
189017 If(l_balance_type_code = 'A') THEN
189018   l_actual_gain_loss_ref := l_gain_or_loss_ref;
189019 END IF;
189020 
189021 --
189022 
189023 
189024 --
189025 AcctLineType_133 (
189026  p_application_id  => p_application_id
189027  ,p_event_id     => l_event_id
189028  ,p_calculate_acctd_flag => l_calculate_acctd_flag
189029  ,p_calculate_g_l_flag => l_calculate_g_l_flag
189030  ,p_actual_flag => l_actual_flag
189031  ,p_balance_type_code => l_balance_type_code
189032  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189033  
189034  , p_source_4 => l_array_source_4(Idx)
189035  , p_source_11 => l_array_source_11(Idx)
189036  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189037  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189038  , p_source_15 => l_array_source_15(Idx)
189039  , p_source_18 => l_array_source_18(Idx)
189040  , p_source_19 => l_array_source_19(Idx)
189041  , p_source_20 => l_array_source_20(Idx)
189042  , p_source_21 => l_array_source_21(Idx)
189043  , p_source_22 => l_array_source_22(Idx)
189044  , p_source_24 => l_array_source_24(Idx)
189045  );
189046 If(l_balance_type_code = 'A') THEN
189047   l_actual_gain_loss_ref := l_gain_or_loss_ref;
189048 END IF;
189049 
189050 --
189051 
189052 
189053 --
189054 AcctLineType_200 (
189055  p_application_id  => p_application_id
189056  ,p_event_id     => l_event_id
189057  ,p_calculate_acctd_flag => l_calculate_acctd_flag
189058  ,p_calculate_g_l_flag => l_calculate_g_l_flag
189059  ,p_actual_flag => l_actual_flag
189060  ,p_balance_type_code => l_balance_type_code
189061  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189062  
189063  , p_source_4 => l_array_source_4(Idx)
189064  , p_source_11 => l_array_source_11(Idx)
189065  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189066  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189067  , p_source_15 => l_array_source_15(Idx)
189068  , p_source_18 => l_array_source_18(Idx)
189069  , p_source_19 => l_array_source_19(Idx)
189070  , p_source_20 => l_array_source_20(Idx)
189071  , p_source_21 => l_array_source_21(Idx)
189072  , p_source_22 => l_array_source_22(Idx)
189073  , p_source_24 => l_array_source_24(Idx)
189074  );
189075 If(l_balance_type_code = 'A') THEN
189076   l_actual_gain_loss_ref := l_gain_or_loss_ref;
189077 END IF;
189078 
189079 --
189080 
189081       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
189082       -- or secondary ledger that has different currency with primary
189083       -- or alc that is calculated by sla
189084       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
189085             (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'))
189086 
189087 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
189088 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
189089           AND (l_actual_flag = 'A')) THEN
189090         XLA_AE_LINES_PKG.CreateGainOrLossLines(
189091           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
189092          ,p_application_id   => p_application_id
189093          ,p_amb_context_code => 'DEFAULT'
189094          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
189095          ,p_event_class_code => C_EVENT_CLASS_CODE
189096          ,p_event_type_code  => C_EVENT_TYPE_CODE
189097          
189098          ,p_gain_ccid        => -1
189099          ,p_loss_ccid        => -1
189100 
189101          ,p_actual_flag      => l_actual_flag
189102          ,p_enc_flag         => null
189103          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
189104          ,p_enc_g_l_ref      => null
189105          );
189106       END IF;
189107    END IF;
189108 END IF;
189109 
189110    ELSE
189111       --
189112       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
189113       --
189114       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189115          trace
189116             (p_msg      => 'Trancaction revesal option is Y'
189117             ,p_level    => C_LEVEL_STATEMENT
189118             ,p_module   => l_log_module);
189119       END IF;
189120    END IF;
189121 
189122 END LOOP;
189123 l_result := XLA_AE_LINES_PKG.InsertLines ;
189124 end loop;
189125 close line_cur;
189126 
189127 
189128 --
189129 -- insert headers into xla_ae_headers_gt table
189130 --
189131 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
189132 
189133 -- insert into errors table here.
189134 
189135 END LOOP;
189136 
189137 --
189138 -- 4865292
189139 --
189140 -- Compare g_hdr_extract_count with event count in
189141 -- CreateHeadersAndLines.
189142 --
189143 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
189144 
189145 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189146    trace (p_msg     => '# rows extracted from header extract objects '
189147                     || ' (running total): '
189148                     || g_hdr_extract_count
189149          ,p_level   => C_LEVEL_STATEMENT
189150          ,p_module  => l_log_module);
189151 END IF;
189152 
189153 CLOSE header_cur;
189154 --
189155 
189156 --
189157 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189158    trace
189159       (p_msg      => 'END of EventType_287'
189160       ,p_level    => C_LEVEL_PROCEDURE
189161       ,p_module   => l_log_module);
189162 END IF;
189163 --
189164 RETURN l_result;
189165 EXCEPTION
189166 WHEN xla_exceptions_pkg.application_exception THEN
189167    
189168 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
189169 
189170    
189171 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
189172 
189173    RAISE;
189174 
189175 WHEN NO_DATA_FOUND THEN
189176 
189177 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
189178 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
189179 
189180 FOR header_record IN header_cur
189181 LOOP
189182     l_array_header_events(header_record.event_id) := header_record.event_id;
189183 END LOOP;
189184 
189185 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
189186 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
189187 
189188 fnd_file.put_line(fnd_file.LOG, '                    ');
189189 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
189190 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
189191 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
189192 
189193 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
189194 LOOP
189195 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
189196 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
189197         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
189198 	END IF;
189199 END LOOP;
189200 
189201 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
189202 fnd_file.put_line(fnd_file.LOG, '                    ');
189203 
189204 
189205 xla_exceptions_pkg.raise_message
189206       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_287');
189207 
189208 
189209 WHEN OTHERS THEN
189210    xla_exceptions_pkg.raise_message
189211       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_287');
189212 END EventType_287;
189213 --
189214 
189215 ---------------------------------------
189216 --
189217 -- PRIVATE PROCEDURE
189218 --         insert_sources_288
189219 --
189220 ----------------------------------------
189221 --
189222 PROCEDURE insert_sources_288(
189223                                 p_target_ledger_id       IN NUMBER
189224                               , p_language               IN VARCHAR2
189225                               , p_sla_ledger_id          IN NUMBER
189226                               , p_pad_start_date         IN DATE
189227                               , p_pad_end_date           IN DATE
189228                          )
189229 IS
189230 
189231 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UIPV_TXFR';
189232 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
189233 p_apps_owner                   VARCHAR2(30);
189234 l_log_module                   VARCHAR2(240);
189235 BEGIN
189236 IF g_log_enabled THEN
189237       l_log_module := C_DEFAULT_MODULE||'.insert_sources_288';
189238 END IF;
189239 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189240 
189241       trace
189242          (p_msg      => 'BEGIN of insert_sources_288'
189243          ,p_level    => C_LEVEL_PROCEDURE
189244          ,p_module   => l_log_module);
189245 
189246 END IF;
189247 
189248 -- select APPS owner
189249 SELECT oracle_username
189250   INTO p_apps_owner
189251   FROM fnd_oracle_userid
189252  WHERE read_only_flag = 'U'
189253 ;
189254 
189255 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189256       trace
189257          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
189258                         ' - p_language = '||p_language||
189259                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
189260                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
189261                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
189262                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
189263          ,p_level    => C_LEVEL_STATEMENT
189264          ,p_module   => l_log_module);
189265 END IF;
189266 
189267 
189268 --
189269 INSERT INTO xla_diag_sources --hdr1
189270 (
189271         event_id
189272       , ledger_id
189273       , sla_ledger_id
189274       , description_language
189275       , object_name
189276       , object_type_code
189277       , line_number
189278       , source_application_id
189279       , source_type_code
189280       , source_code
189281       , source_value
189282       , source_meaning
189283       , created_by
189284       , creation_date
189285       , last_update_date
189286       , last_updated_by
189287       , last_update_login
189288       , program_update_date
189289       , program_application_id
189290       , program_id
189291       , request_id
189292 )
189293 SELECT
189294         event_id
189295       , p_target_ledger_id
189296       , p_sla_ledger_id
189297       , p_language
189298       , object_name
189299       , object_type_code
189300       , line_number
189301       , source_application_id
189302       , source_type_code
189303       , source_code
189304       , SUBSTR(source_value ,1,1996)
189305       , SUBSTR(source_meaning,1,200)
189306       , xla_environment_pkg.g_Usr_Id
189307       , TRUNC(SYSDATE)
189308       , TRUNC(SYSDATE)
189309       , xla_environment_pkg.g_Usr_Id
189310       , xla_environment_pkg.g_Login_Id
189311       , TRUNC(SYSDATE)
189312       , xla_environment_pkg.g_Prog_Appl_Id
189313       , xla_environment_pkg.g_Prog_Id
189314       , xla_environment_pkg.g_Req_Id
189315   FROM (
189316        SELECT xet.event_id                  event_id
189317             , 0                             line_number
189318             , CASE r
189319                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
189320                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
189321                 
189322                ELSE null
189323               END                           object_name
189324             , CASE r
189325                 WHEN 1 THEN 'HEADER' 
189326                 WHEN 2 THEN 'HEADER' 
189327                 
189328                 ELSE null
189329               END                           object_type_code
189330             , CASE r
189331                 WHEN 1 THEN '707' 
189332                 WHEN 2 THEN '707' 
189333                 
189334                 ELSE null
189335               END                           source_application_id
189336             , 'S'             source_type_code
189337             , CASE r
189338                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
189339                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
189340                 
189341                 ELSE null
189342               END                           source_code
189343             , CASE r
189344                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
189345                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
189346                 
189347                 ELSE null
189348               END                           source_value
189349             , CASE r
189350                 WHEN 1 THEN fvl12.meaning
189351                 WHEN 2 THEN fvl38.meaning
189352                 
189353                 ELSE null
189354               END               source_meaning
189355         FROM xla_events_gt     xet  
189356       , CST_XLA_INV_HEADERS_V  h1
189357   , fnd_lookup_values    fvl12
189358   , fnd_lookup_values    fvl38
189359             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
189360        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
189361          AND xet.event_type_code = C_EVENT_TYPE_CODE
189362             AND h1.event_id = xet.event_id
189363    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
189364   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
189365   AND fvl12.view_application_id(+) = 700
189366   AND fvl12.language(+)            = USERENV('LANG')
189367      AND fvl38.lookup_type(+)         = 'YES_NO'
189368   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
189369   AND fvl38.view_application_id(+) = 0
189370   AND fvl38.language(+)            = USERENV('LANG')
189371   
189372 )
189373 ;
189374 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189375 
189376       trace
189377          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
189378          ,p_level    => C_LEVEL_STATEMENT
189379          ,p_module   => l_log_module);
189380 
189381 END IF;
189382 --
189383 
189384 
189385 
189386 --
189387 INSERT INTO xla_diag_sources --line1
189388 (
189389         event_id
189390       , ledger_id
189391       , sla_ledger_id
189392       , description_language
189393       , object_name
189394       , object_type_code
189395       , line_number
189396       , source_application_id
189397       , source_type_code
189398       , source_code
189399       , source_value
189400       , source_meaning
189401       , created_by
189402       , creation_date
189403       , last_update_date
189404       , last_updated_by
189405       , last_update_login
189406       , program_update_date
189407       , program_application_id
189408       , program_id
189409       , request_id
189410 )
189411 SELECT  event_id
189412       , p_target_ledger_id
189413       , p_sla_ledger_id
189414       , p_language
189415       , object_name
189416       , object_type_code
189417       , line_number
189418       , source_application_id
189419       , source_type_code
189420       , source_code
189421       , SUBSTR(source_value,1,1996)
189422       , SUBSTR(source_meaning,1,200)
189423       , xla_environment_pkg.g_Usr_Id
189424       , TRUNC(SYSDATE)
189425       , TRUNC(SYSDATE)
189426       , xla_environment_pkg.g_Usr_Id
189427       , xla_environment_pkg.g_Login_Id
189428       , TRUNC(SYSDATE)
189429       , xla_environment_pkg.g_Prog_Appl_Id
189430       , xla_environment_pkg.g_Prog_Id
189431       , xla_environment_pkg.g_Req_Id
189432   FROM (
189433        SELECT xet.event_id                  event_id
189434             , l2.line_number                 line_number
189435             , CASE r
189436                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
189437                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
189438                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
189439                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
189440                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
189441                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
189442                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
189443                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
189444                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
189445                 
189446                ELSE null
189447               END                           object_name
189448             , CASE r
189449                 WHEN 1 THEN 'LINE' 
189450                 WHEN 2 THEN 'LINE' 
189451                 WHEN 3 THEN 'LINE' 
189452                 WHEN 4 THEN 'LINE' 
189453                 WHEN 5 THEN 'LINE' 
189454                 WHEN 6 THEN 'LINE' 
189455                 WHEN 7 THEN 'LINE' 
189456                 WHEN 8 THEN 'LINE' 
189457                 WHEN 9 THEN 'LINE' 
189458                 
189459                 ELSE null
189460               END                           object_type_code
189461             , CASE r
189462                 WHEN 1 THEN '707' 
189463                 WHEN 2 THEN '707' 
189464                 WHEN 3 THEN '707' 
189465                 WHEN 4 THEN '707' 
189466                 WHEN 5 THEN '707' 
189467                 WHEN 6 THEN '707' 
189468                 WHEN 7 THEN '707' 
189469                 WHEN 8 THEN '707' 
189470                 WHEN 9 THEN '707' 
189471                 
189472                 ELSE null
189473               END                           source_application_id
189474             , 'S'             source_type_code
189475             , CASE r
189476                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
189477                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
189478                 WHEN 3 THEN 'CURRENCY_CODE' 
189479                 WHEN 4 THEN 'ENTERED_AMOUNT' 
189480                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
189481                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
189482                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
189483                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
189484                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
189485                 
189486                 ELSE null
189487               END                           source_code
189488             , CASE r
189489                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
189490                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
189491                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
189492                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
189493                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
189494                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
189495                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
189496                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
189497                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
189498                 
189499                 ELSE null
189500               END                           source_value
189501             , null              source_meaning
189502          FROM  xla_events_gt     xet  
189503         , CST_XLA_INV_LINES_V  l2
189504             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
189505         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
189506           AND xet.event_type_code = C_EVENT_TYPE_CODE
189507             AND l2.event_id          = xet.event_id
189508 
189509 )
189510 ;
189511 --
189512 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189513 
189514       trace
189515          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
189516          ,p_level    => C_LEVEL_STATEMENT
189517          ,p_module   => l_log_module);
189518 
189519 END IF;
189520 
189521 
189522 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189523       trace
189524          (p_msg      => 'END of insert_sources_288'
189525          ,p_level    => C_LEVEL_PROCEDURE
189526          ,p_module   => l_log_module);
189527 END IF;
189528 EXCEPTION
189529   WHEN xla_exceptions_pkg.application_exception THEN
189530       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
189531             trace
189532                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
189533                ,p_level    => C_LEVEL_EXCEPTION
189534                ,p_module   => l_log_module);
189535       END IF;
189536       RAISE;
189537   WHEN OTHERS THEN
189538       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
189539             trace
189540                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
189541                ,p_level    => C_LEVEL_EXCEPTION
189542                ,p_module   => l_log_module);
189543        END IF;
189544        xla_exceptions_pkg.raise_message
189545            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_288');
189546 END insert_sources_288;
189547 --
189548 
189549 ---------------------------------------
189550 --
189551 -- PRIVATE FUNCTION
189552 --         EventType_288
189553 --
189554 ----------------------------------------
189555 --
189556 FUNCTION EventType_288
189557        (p_application_id         IN NUMBER
189558        ,p_base_ledger_id         IN NUMBER
189559        ,p_target_ledger_id       IN NUMBER
189560        ,p_language               IN VARCHAR2
189561        ,p_currency_code          IN VARCHAR2
189562        ,p_sla_ledger_id          IN NUMBER
189563        ,p_pad_start_date         IN DATE
189564        ,p_pad_end_date           IN DATE
189565        ,p_primary_ledger_id      IN NUMBER)
189566 RETURN BOOLEAN IS
189567 --
189568 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UIPV_TXFR';
189569 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
189570 
189571 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
189572 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
189573 --
189574 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189575 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189576 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
189577 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189578 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189579 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
189580 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
189581 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189582 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189583 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189584 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189585 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189586 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189587 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189588 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189589 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189590 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189591 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189592 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189593 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189594 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189595 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189596 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
189597 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
189598 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
189599 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
189600 
189601 l_event_id                             NUMBER;
189602 l_previous_event_id                    NUMBER;
189603 l_first_event_id                       NUMBER;
189604 l_last_event_id                        NUMBER;
189605 
189606 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
189607 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
189608 --
189609 --
189610 l_result                    BOOLEAN := TRUE;
189611 l_rows                      NUMBER  := 1000;
189612 l_event_type_name           VARCHAR2(80) := 'User-defined Invoice Price Variance Transfer';
189613 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
189614 l_description               VARCHAR2(4000);
189615 l_transaction_reversal      NUMBER;
189616 l_ae_header_id              NUMBER;
189617 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
189618 l_log_module                VARCHAR2(240);
189619 --
189620 l_acct_reversal_source      VARCHAR2(30);
189621 l_trx_reversal_source       VARCHAR2(30);
189622 
189623 l_continue_with_lines       BOOLEAN := TRUE;
189624 --
189625 l_acc_rev_gl_date_source    DATE;                      -- 4262811
189626 --
189627 type t_array_event_id is table of number index by binary_integer;
189628 
189629 l_rec_array_event                    t_rec_array_event;
189630 l_null_rec_array_event               t_rec_array_event;
189631 l_array_ae_header_id                 xla_number_array_type;
189632 l_actual_flag                        VARCHAR2(1) := NULL;
189633 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
189634 l_balance_type_code                  VARCHAR2(1) :=NULL;
189635 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
189636 
189637 --
189638 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
189639 --
189640 
189641 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
189642 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
189643 
189644 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
189645 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
189646 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
189647 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
189648 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
189649 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
189650 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
189651 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
189652 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
189653 
189654 l_array_source_12              t_array_source_12;
189655 l_array_source_12_meaning      t_array_lookup_meaning;
189656 l_array_source_38              t_array_source_38;
189657 l_array_source_38_meaning      t_array_lookup_meaning;
189658 
189659 l_array_source_4      t_array_source_4;
189660 l_array_source_11      t_array_source_11;
189661 l_array_source_15      t_array_source_15;
189662 l_array_source_18      t_array_source_18;
189663 l_array_source_19      t_array_source_19;
189664 l_array_source_20      t_array_source_20;
189665 l_array_source_21      t_array_source_21;
189666 l_array_source_22      t_array_source_22;
189667 l_array_source_24      t_array_source_24;
189668 
189669 --
189670 CURSOR header_cur
189671 IS
189672 SELECT /*+ leading(xet) cardinality(xet,1) */
189673 -- Event Type Code: UIPV_TXFR
189674 -- Event Class Code: USER_DEFINE
189675     xet.entity_id
189676   , xet.legal_entity_id
189677   , xet.entity_code
189678   , xet.transaction_number
189679   , xet.event_id
189680   , xet.event_class_code
189681   , xet.event_type_code
189682   , xet.event_number
189683   , xet.event_date
189684   , xet.transaction_date
189685   , xet.reference_num_1
189686   , xet.reference_num_2
189687   , xet.reference_num_3
189688   , xet.reference_num_4
189689   , xet.reference_char_1
189690   , xet.reference_char_2
189691   , xet.reference_char_3
189692   , xet.reference_char_4
189693   , xet.reference_date_1
189694   , xet.reference_date_2
189695   , xet.reference_date_3
189696   , xet.reference_date_4
189697   , xet.event_created_by
189698   , xet.budgetary_control_flag 
189699   , h1.DISTRIBUTION_TYPE    source_12
189700   , fvl12.meaning   source_12_meaning
189701   , h1.TRANSFER_TO_GL_INDICATOR    source_38
189702   , fvl38.meaning   source_38_meaning
189703   FROM xla_events_gt     xet 
189704   , CST_XLA_INV_HEADERS_V  h1
189705   , fnd_lookup_values    fvl12
189706   , fnd_lookup_values    fvl38
189707  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
189708    and xet.event_type_code = C_EVENT_TYPE_CODE
189709    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
189710    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
189711   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
189712   AND fvl12.view_application_id(+) = 700
189713   AND fvl12.language(+)            = USERENV('LANG')
189714      AND fvl38.lookup_type(+)         = 'YES_NO'
189715   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
189716   AND fvl38.view_application_id(+) = 0
189717   AND fvl38.language(+)            = USERENV('LANG')
189718   
189719  ORDER BY event_id
189720 ;
189721 
189722 
189723 --
189724 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
189725 IS
189726 SELECT /*+ leading(xet) cardinality(xet,1) */
189727 -- Event Type Code: UIPV_TXFR
189728 -- Event Class Code: USER_DEFINE
189729     xet.entity_id
189730    ,xet.legal_entity_id
189731    ,xet.entity_code
189732    ,xet.transaction_number
189733    ,xet.event_id
189734    ,xet.event_class_code
189735    ,xet.event_type_code
189736    ,xet.event_number
189737    ,xet.event_date
189738    ,xet.transaction_date
189739    ,xet.reference_num_1
189740    ,xet.reference_num_2
189741    ,xet.reference_num_3
189742    ,xet.reference_num_4
189743    ,xet.reference_char_1
189744    ,xet.reference_char_2
189745    ,xet.reference_char_3
189746    ,xet.reference_char_4
189747    ,xet.reference_date_1
189748    ,xet.reference_date_2
189749    ,xet.reference_date_3
189750    ,xet.reference_date_4
189751    ,xet.event_created_by
189752    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
189753   , l2.CODE_COMBINATION_ID    source_4
189754   , l2.DISTRIBUTION_IDENTIFIER    source_11
189755   , l2.CURRENCY_CODE    source_15
189756   , l2.ENTERED_AMOUNT    source_18
189757   , l2.CURRENCY_CONVERSION_DATE    source_19
189758   , l2.CURRENCY_CONVERSION_RATE    source_20
189759   , l2.CURRENCY_CONVERSION_TYPE    source_21
189760   , l2.ACCOUNTED_AMOUNT    source_22
189761   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
189762   FROM xla_events_gt     xet 
189763   , CST_XLA_INV_LINES_V  l2
189764  WHERE xet.event_id between x_first_event_id and x_last_event_id
189765    and xet.event_date between p_pad_start_date and p_pad_end_date
189766    and xet.event_type_code = C_EVENT_TYPE_CODE
189767    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
189768 ;
189769 
189770 --
189771 BEGIN
189772 IF g_log_enabled THEN
189773    l_log_module := C_DEFAULT_MODULE||'.EventType_288';
189774 END IF;
189775 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189776    trace
189777       (p_msg      => 'BEGIN of EventType_288'
189778       ,p_level    => C_LEVEL_PROCEDURE
189779       ,p_module   => l_log_module);
189780 END IF;
189781 
189782 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189783    trace
189784       (p_msg      => 'p_application_id = '||p_application_id||
189785                      ' - p_base_ledger_id = '||p_base_ledger_id||
189786                      ' - p_target_ledger_id  = '||p_target_ledger_id||
189787                      ' - p_language = '||p_language||
189788                      ' - p_currency_code = '||p_currency_code||
189789                      ' - p_sla_ledger_id = '||p_sla_ledger_id
189790       ,p_level    => C_LEVEL_STATEMENT
189791       ,p_module   => l_log_module);
189792 END IF;
189793 --
189794 -- initialze arrays
189795 --
189796 g_array_event.DELETE;
189797 l_rec_array_event := l_null_rec_array_event;
189798 --
189799 --------------------------------------
189800 -- 4262811 Initialze MPA Line Number
189801 --------------------------------------
189802 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
189803 
189804 --
189805 
189806 --
189807 OPEN header_cur;
189808 --
189809 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189810    trace
189811    (p_msg      => 'SQL - FETCH header_cur'
189812    ,p_level    => C_LEVEL_STATEMENT
189813    ,p_module   => l_log_module);
189814 END IF;
189815 --
189816 LOOP
189817 FETCH header_cur BULK COLLECT INTO
189818         l_array_entity_id
189819       , l_array_legal_entity_id
189820       , l_array_entity_code
189821       , l_array_transaction_num
189822       , l_array_event_id
189823       , l_array_class_code
189824       , l_array_event_type
189825       , l_array_event_number
189826       , l_array_event_date
189827       , l_array_transaction_date
189828       , l_array_reference_num_1
189829       , l_array_reference_num_2
189830       , l_array_reference_num_3
189831       , l_array_reference_num_4
189832       , l_array_reference_char_1
189833       , l_array_reference_char_2
189834       , l_array_reference_char_3
189835       , l_array_reference_char_4
189836       , l_array_reference_date_1
189837       , l_array_reference_date_2
189838       , l_array_reference_date_3
189839       , l_array_reference_date_4
189840       , l_array_event_created_by
189841       , l_array_budgetary_control_flag 
189842       , l_array_source_12
189843       , l_array_source_12_meaning
189844       , l_array_source_38
189845       , l_array_source_38_meaning
189846       LIMIT l_rows;
189847 --
189848 IF (C_LEVEL_EVENT >= g_log_level) THEN
189849    trace
189850    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
189851    ,p_level    => C_LEVEL_EVENT
189852    ,p_module   => l_log_module);
189853 END IF;
189854 --
189855 EXIT WHEN l_array_entity_id.COUNT = 0;
189856 
189857 -- initialize arrays
189858 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
189859 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
189860 
189861 --
189862 -- Bug 4458708
189863 --
189864 XLA_AE_LINES_PKG.g_LineNumber := 0;
189865 
189866 
189867 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
189868 g_last_hdr_idx := l_array_event_id.LAST;
189869 --
189870 -- loop for the headers. Each iteration is for each header extract row
189871 -- fetched in header cursor
189872 --
189873 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
189874 
189875 --
189876 -- set event info as cache for other routines to refer event attributes
189877 --
189878 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
189879    (p_application_id           => p_application_id
189880    ,p_primary_ledger_id        => p_primary_ledger_id
189881    ,p_base_ledger_id           => p_base_ledger_id
189882    ,p_target_ledger_id         => p_target_ledger_id
189883    ,p_entity_id                => l_array_entity_id(hdr_idx)
189884    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
189885    ,p_entity_code              => l_array_entity_code(hdr_idx)
189886    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
189887    ,p_event_id                 => l_array_event_id(hdr_idx)
189888    ,p_event_class_code         => l_array_class_code(hdr_idx)
189889    ,p_event_type_code          => l_array_event_type(hdr_idx)
189890    ,p_event_number             => l_array_event_number(hdr_idx)
189891    ,p_event_date               => l_array_event_date(hdr_idx)
189892    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
189893    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
189894    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
189895    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
189896    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
189897    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
189898    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
189899    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
189900    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
189901    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
189902    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
189903    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
189904    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
189905    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
189906    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
189907 
189908 --
189909 -- set the status of entry to C_VALID (0)
189910 --
189911 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
189912 
189913 --
189914 -- initialize a row for ae header
189915 --
189916 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
189917 
189918 l_event_id := l_array_event_id(hdr_idx);
189919 
189920 --
189921 -- storing the hdr_idx for event. May be used by line cursor.
189922 --
189923 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
189924 
189925 --
189926 -- store sources from header extract. This can be improved to
189927 -- store only those sources from header extract that may be used in lines
189928 --
189929 
189930 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
189931 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
189932 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
189933 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
189934 
189935 --
189936 -- initilaize the status of ae headers for diffrent balance types
189937 -- the status is initialised to C_NOT_CREATED (2)
189938 --
189939 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189940 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189941 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189942 
189943 --
189944 -- call api to validate and store accounting attributes for header
189945 --
189946 
189947 ------------------------------------------------------------
189948 -- Accrual Reversal : to get date for Standard Source (NONE)
189949 ------------------------------------------------------------
189950 l_acc_rev_gl_date_source := NULL;
189951 
189952      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
189953       l_rec_acct_attrs.array_date_value(1) := 
189954 xla_ae_sources_pkg.GetSystemSourceDate(
189955    p_source_code           => 'XLA_REFERENCE_DATE_1'
189956  , p_source_type_code      => 'Y'
189957  , p_source_application_id =>  602
189958 );
189959      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
189960       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
189961 
189962 
189963 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
189964 
189965 XLA_AE_HEADER_PKG.SetJeCategoryName;
189966 
189967 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
189968 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
189969 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
189970 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
189971 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
189972 
189973 
189974 -- No header level analytical criteria
189975 
189976 --
189977 --accounting attribute enhancement, bug 3612931
189978 --
189979 l_trx_reversal_source := SUBSTR(NULL, 1,30);
189980 
189981 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
189982    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
189983 
189984    xla_accounting_err_pkg.build_message
189985       (p_appli_s_name            => 'XLA'
189986       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
189987       ,p_token_1                 => 'ACCT_ATTR_NAME'
189988       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
189989       ,p_token_2                 => 'PRODUCT_NAME'
189990       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
189991       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
189992       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
189993       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
189994 
189995 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
189996    --
189997    -- following sets the accounting attributes needed to reverse
189998    -- accounting for a distributeion
189999    --
190000    xla_ae_lines_pkg.SetTrxReversalAttrs
190001       (p_event_id              => l_event_id
190002       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
190003       ,p_trx_reversal_source   => l_trx_reversal_source);
190004 
190005 END IF;
190006 
190007 
190008 ----------------------------------------------------------------
190009 -- 4262811 -  update the header statuses to invalid in need be
190010 ----------------------------------------------------------------
190011 --
190012 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
190013 
190014 
190015   -----------------------------------------------
190016   -- No accrual reversal for the event class/type
190017   -----------------------------------------------
190018 ----------------------------------------------------------------
190019 
190020 --
190021 -- this ends the header loop iteration for one bulk fetch
190022 --
190023 END LOOP;
190024 
190025 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
190026 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
190027 
190028 --
190029 -- insert dummy rows into lines gt table that were created due to
190030 -- transaction reversals
190031 --
190032 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
190033    l_result := XLA_AE_LINES_PKG.InsertLines;
190034 END IF;
190035 
190036 --
190037 -- reset the temp_line_num for each set of events fetched from header
190038 -- cursor rather than doing it for each new event in line cursor
190039 -- Bug 3939231
190040 --
190041 xla_ae_lines_pkg.g_temp_line_num := 0;
190042 
190043 
190044 
190045 --
190046 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
190047 --
190048 --
190049 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190050 
190051       trace
190052          (p_msg      => 'SQL - FETCH line_cur'
190053          ,p_level    => C_LEVEL_STATEMENT
190054          ,p_module   => l_log_module);
190055 
190056 END IF;
190057 --
190058 --
190059 LOOP
190060   --
190061   FETCH line_cur BULK COLLECT INTO
190062         l_array_entity_id
190063       , l_array_legal_entity_id
190064       , l_array_entity_code
190065       , l_array_transaction_num
190066       , l_array_event_id
190067       , l_array_class_code
190068       , l_array_event_type
190069       , l_array_event_number
190070       , l_array_event_date
190071       , l_array_transaction_date
190072       , l_array_reference_num_1
190073       , l_array_reference_num_2
190074       , l_array_reference_num_3
190075       , l_array_reference_num_4
190076       , l_array_reference_char_1
190077       , l_array_reference_char_2
190078       , l_array_reference_char_3
190079       , l_array_reference_char_4
190080       , l_array_reference_date_1
190081       , l_array_reference_date_2
190082       , l_array_reference_date_3
190083       , l_array_reference_date_4
190084       , l_array_event_created_by
190085       , l_array_budgetary_control_flag
190086       , l_array_extract_line_num 
190087       , l_array_source_4
190088       , l_array_source_11
190089       , l_array_source_15
190090       , l_array_source_18
190091       , l_array_source_19
190092       , l_array_source_20
190093       , l_array_source_21
190094       , l_array_source_22
190095       , l_array_source_24
190096       LIMIT l_rows;
190097 
190098   --
190099   IF (C_LEVEL_EVENT >= g_log_level) THEN
190100             trace
190101                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
190102                ,p_level    => C_LEVEL_EVENT
190103                ,p_module   => l_log_module);
190104   END IF;
190105   --
190106   EXIT WHEN l_array_entity_id.count = 0;
190107 
190108   XLA_AE_LINES_PKG.g_rec_lines := null;
190109 
190110 --
190111 -- Bug 4458708
190112 --
190113 XLA_AE_LINES_PKG.g_LineNumber := 0;
190114 --
190115 --
190116 
190117 FOR Idx IN 1..l_array_event_id.count LOOP
190118    --
190119    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
190120    --
190121    l_event_id := l_array_event_id(idx);  -- 5648433
190122 
190123    --
190124    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
190125    --
190126 
190127    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
190128              (g_array_event(l_event_id).array_value_num('header_index'))
190129          ,'N'
190130          ) <> 'Y'
190131    THEN
190132       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190133          trace
190134             (p_msg      => 'Trancaction revesal option is not Y '
190135             ,p_level    => C_LEVEL_STATEMENT
190136             ,p_module   => l_log_module);
190137       END IF;
190138 
190139 --
190140 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
190141 --
190142 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
190143 --
190144 -- set event info as cache for other routines to refer event attributes
190145 --
190146 
190147 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
190148    l_previous_event_id := l_event_id;
190149 
190150    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
190151       (p_application_id           => p_application_id
190152       ,p_primary_ledger_id        => p_primary_ledger_id
190153       ,p_base_ledger_id           => p_base_ledger_id
190154       ,p_target_ledger_id         => p_target_ledger_id
190155       ,p_entity_id                => l_array_entity_id(Idx)
190156       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
190157       ,p_entity_code              => l_array_entity_code(Idx)
190158       ,p_transaction_num          => l_array_transaction_num(Idx)
190159       ,p_event_id                 => l_array_event_id(Idx)
190160       ,p_event_class_code         => l_array_class_code(Idx)
190161       ,p_event_type_code          => l_array_event_type(Idx)
190162       ,p_event_number             => l_array_event_number(Idx)
190163       ,p_event_date               => l_array_event_date(Idx)
190164       ,p_transaction_date         => l_array_transaction_date(Idx)
190165       ,p_reference_num_1          => l_array_reference_num_1(Idx)
190166       ,p_reference_num_2          => l_array_reference_num_2(Idx)
190167       ,p_reference_num_3          => l_array_reference_num_3(Idx)
190168       ,p_reference_num_4          => l_array_reference_num_4(Idx)
190169       ,p_reference_char_1         => l_array_reference_char_1(Idx)
190170       ,p_reference_char_2         => l_array_reference_char_2(Idx)
190171       ,p_reference_char_3         => l_array_reference_char_3(Idx)
190172       ,p_reference_char_4         => l_array_reference_char_4(Idx)
190173       ,p_reference_date_1         => l_array_reference_date_1(Idx)
190174       ,p_reference_date_2         => l_array_reference_date_2(Idx)
190175       ,p_reference_date_3         => l_array_reference_date_3(Idx)
190176       ,p_reference_date_4         => l_array_reference_date_4(Idx)
190177       ,p_event_created_by         => l_array_event_created_by(Idx)
190178       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
190179        --
190180 END IF;
190181 
190182 
190183 
190184 --
190185 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
190186 
190187 l_acct_reversal_source := SUBSTR(NULL, 1,30);
190188 
190189 IF l_continue_with_lines THEN
190190    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
190191       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
190192 
190193       xla_accounting_err_pkg.build_message
190194          (p_appli_s_name            => 'XLA'
190195          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
190196          ,p_token_1                 => 'LINE_NUMBER'
190197          ,p_value_1                 => l_array_extract_line_num(Idx)
190198          ,p_token_2                 => 'PRODUCT_NAME'
190199          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
190200          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
190201          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
190202          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
190203 
190204    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
190205       --
190206       -- following sets the accounting attributes needed to reverse
190207       -- accounting for a distributeion
190208       --
190209 
190210       --
190211       -- 5217187
190212       --
190213       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
190214       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
190215                                        g_array_event(l_event_id).array_value_num('header_index'));
190216       --
190217       --
190218 
190219       -- No reversal code generated
190220 
190221       xla_ae_lines_pkg.SetAcctReversalAttrs
190222          (p_event_id             => l_event_id
190223          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
190224          ,p_calculate_acctd_flag => l_calculate_acctd_flag
190225          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
190226    END IF;
190227 
190228    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
190229        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
190230 
190231 --
190232 AcctLineType_22 (
190233  p_application_id  => p_application_id
190234  ,p_event_id     => l_event_id
190235  ,p_calculate_acctd_flag => l_calculate_acctd_flag
190236  ,p_calculate_g_l_flag => l_calculate_g_l_flag
190237  ,p_actual_flag => l_actual_flag
190238  ,p_balance_type_code => l_balance_type_code
190239  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190240  
190241  , p_source_4 => l_array_source_4(Idx)
190242  , p_source_11 => l_array_source_11(Idx)
190243  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190244  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190245  , p_source_15 => l_array_source_15(Idx)
190246  , p_source_18 => l_array_source_18(Idx)
190247  , p_source_19 => l_array_source_19(Idx)
190248  , p_source_20 => l_array_source_20(Idx)
190249  , p_source_21 => l_array_source_21(Idx)
190250  , p_source_22 => l_array_source_22(Idx)
190251  , p_source_24 => l_array_source_24(Idx)
190252  );
190253 If(l_balance_type_code = 'A') THEN
190254   l_actual_gain_loss_ref := l_gain_or_loss_ref;
190255 END IF;
190256 
190257 --
190258 
190259 
190260 --
190261 AcctLineType_40 (
190262  p_application_id  => p_application_id
190263  ,p_event_id     => l_event_id
190264  ,p_calculate_acctd_flag => l_calculate_acctd_flag
190265  ,p_calculate_g_l_flag => l_calculate_g_l_flag
190266  ,p_actual_flag => l_actual_flag
190267  ,p_balance_type_code => l_balance_type_code
190268  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190269  
190270  , p_source_4 => l_array_source_4(Idx)
190271  , p_source_11 => l_array_source_11(Idx)
190272  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190273  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190274  , p_source_15 => l_array_source_15(Idx)
190275  , p_source_18 => l_array_source_18(Idx)
190276  , p_source_19 => l_array_source_19(Idx)
190277  , p_source_20 => l_array_source_20(Idx)
190278  , p_source_21 => l_array_source_21(Idx)
190279  , p_source_22 => l_array_source_22(Idx)
190280  , p_source_24 => l_array_source_24(Idx)
190281  );
190282 If(l_balance_type_code = 'A') THEN
190283   l_actual_gain_loss_ref := l_gain_or_loss_ref;
190284 END IF;
190285 
190286 --
190287 
190288 
190289 --
190290 AcctLineType_121 (
190291  p_application_id  => p_application_id
190292  ,p_event_id     => l_event_id
190293  ,p_calculate_acctd_flag => l_calculate_acctd_flag
190294  ,p_calculate_g_l_flag => l_calculate_g_l_flag
190295  ,p_actual_flag => l_actual_flag
190296  ,p_balance_type_code => l_balance_type_code
190297  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190298  
190299  , p_source_4 => l_array_source_4(Idx)
190300  , p_source_11 => l_array_source_11(Idx)
190301  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190302  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190303  , p_source_15 => l_array_source_15(Idx)
190304  , p_source_18 => l_array_source_18(Idx)
190305  , p_source_19 => l_array_source_19(Idx)
190306  , p_source_20 => l_array_source_20(Idx)
190307  , p_source_21 => l_array_source_21(Idx)
190308  , p_source_22 => l_array_source_22(Idx)
190309  , p_source_24 => l_array_source_24(Idx)
190310  );
190311 If(l_balance_type_code = 'A') THEN
190312   l_actual_gain_loss_ref := l_gain_or_loss_ref;
190313 END IF;
190314 
190315 --
190316 
190317 
190318 --
190319 AcctLineType_143 (
190320  p_application_id  => p_application_id
190321  ,p_event_id     => l_event_id
190322  ,p_calculate_acctd_flag => l_calculate_acctd_flag
190323  ,p_calculate_g_l_flag => l_calculate_g_l_flag
190324  ,p_actual_flag => l_actual_flag
190325  ,p_balance_type_code => l_balance_type_code
190326  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190327  
190328  , p_source_4 => l_array_source_4(Idx)
190329  , p_source_11 => l_array_source_11(Idx)
190330  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190331  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190332  , p_source_15 => l_array_source_15(Idx)
190333  , p_source_18 => l_array_source_18(Idx)
190334  , p_source_19 => l_array_source_19(Idx)
190335  , p_source_20 => l_array_source_20(Idx)
190336  , p_source_21 => l_array_source_21(Idx)
190337  , p_source_22 => l_array_source_22(Idx)
190338  , p_source_24 => l_array_source_24(Idx)
190339  );
190340 If(l_balance_type_code = 'A') THEN
190341   l_actual_gain_loss_ref := l_gain_or_loss_ref;
190342 END IF;
190343 
190344 --
190345 
190346       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
190347       -- or secondary ledger that has different currency with primary
190348       -- or alc that is calculated by sla
190349       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
190350             (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'))
190351 
190352 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
190353 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
190354           AND (l_actual_flag = 'A')) THEN
190355         XLA_AE_LINES_PKG.CreateGainOrLossLines(
190356           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
190357          ,p_application_id   => p_application_id
190358          ,p_amb_context_code => 'DEFAULT'
190359          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
190360          ,p_event_class_code => C_EVENT_CLASS_CODE
190361          ,p_event_type_code  => C_EVENT_TYPE_CODE
190362          
190363          ,p_gain_ccid        => -1
190364          ,p_loss_ccid        => -1
190365 
190366          ,p_actual_flag      => l_actual_flag
190367          ,p_enc_flag         => null
190368          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
190369          ,p_enc_g_l_ref      => null
190370          );
190371       END IF;
190372    END IF;
190373 END IF;
190374 
190375    ELSE
190376       --
190377       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
190378       --
190379       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190380          trace
190381             (p_msg      => 'Trancaction revesal option is Y'
190382             ,p_level    => C_LEVEL_STATEMENT
190383             ,p_module   => l_log_module);
190384       END IF;
190385    END IF;
190386 
190387 END LOOP;
190388 l_result := XLA_AE_LINES_PKG.InsertLines ;
190389 end loop;
190390 close line_cur;
190391 
190392 
190393 --
190394 -- insert headers into xla_ae_headers_gt table
190395 --
190396 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
190397 
190398 -- insert into errors table here.
190399 
190400 END LOOP;
190401 
190402 --
190403 -- 4865292
190404 --
190405 -- Compare g_hdr_extract_count with event count in
190406 -- CreateHeadersAndLines.
190407 --
190408 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
190409 
190410 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190411    trace (p_msg     => '# rows extracted from header extract objects '
190412                     || ' (running total): '
190413                     || g_hdr_extract_count
190414          ,p_level   => C_LEVEL_STATEMENT
190415          ,p_module  => l_log_module);
190416 END IF;
190417 
190418 CLOSE header_cur;
190419 --
190420 
190421 --
190422 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190423    trace
190424       (p_msg      => 'END of EventType_288'
190425       ,p_level    => C_LEVEL_PROCEDURE
190426       ,p_module   => l_log_module);
190427 END IF;
190428 --
190429 RETURN l_result;
190430 EXCEPTION
190431 WHEN xla_exceptions_pkg.application_exception THEN
190432    
190433 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
190434 
190435    
190436 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
190437 
190438    RAISE;
190439 
190440 WHEN NO_DATA_FOUND THEN
190441 
190442 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
190443 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
190444 
190445 FOR header_record IN header_cur
190446 LOOP
190447     l_array_header_events(header_record.event_id) := header_record.event_id;
190448 END LOOP;
190449 
190450 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
190451 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
190452 
190453 fnd_file.put_line(fnd_file.LOG, '                    ');
190454 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
190455 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
190456 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
190457 
190458 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
190459 LOOP
190460 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
190461 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
190462         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
190463 	END IF;
190464 END LOOP;
190465 
190466 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
190467 fnd_file.put_line(fnd_file.LOG, '                    ');
190468 
190469 
190470 xla_exceptions_pkg.raise_message
190471       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_288');
190472 
190473 
190474 WHEN OTHERS THEN
190475    xla_exceptions_pkg.raise_message
190476       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_288');
190477 END EventType_288;
190478 --
190479 
190480 ---------------------------------------
190481 --
190482 -- PRIVATE PROCEDURE
190483 --         insert_sources_289
190484 --
190485 ----------------------------------------
190486 --
190487 PROCEDURE insert_sources_289(
190488                                 p_target_ledger_id       IN NUMBER
190489                               , p_language               IN VARCHAR2
190490                               , p_sla_ledger_id          IN NUMBER
190491                               , p_pad_start_date         IN DATE
190492                               , p_pad_end_date           IN DATE
190493                          )
190494 IS
190495 
190496 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UMISC_ISSUE';
190497 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
190498 p_apps_owner                   VARCHAR2(30);
190499 l_log_module                   VARCHAR2(240);
190500 BEGIN
190501 IF g_log_enabled THEN
190502       l_log_module := C_DEFAULT_MODULE||'.insert_sources_289';
190503 END IF;
190504 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190505 
190506       trace
190507          (p_msg      => 'BEGIN of insert_sources_289'
190508          ,p_level    => C_LEVEL_PROCEDURE
190509          ,p_module   => l_log_module);
190510 
190511 END IF;
190512 
190513 -- select APPS owner
190514 SELECT oracle_username
190515   INTO p_apps_owner
190516   FROM fnd_oracle_userid
190517  WHERE read_only_flag = 'U'
190518 ;
190519 
190520 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190521       trace
190522          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
190523                         ' - p_language = '||p_language||
190524                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
190525                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
190526                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
190527                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
190528          ,p_level    => C_LEVEL_STATEMENT
190529          ,p_module   => l_log_module);
190530 END IF;
190531 
190532 
190533 --
190534 INSERT INTO xla_diag_sources --hdr1
190535 (
190536         event_id
190537       , ledger_id
190538       , sla_ledger_id
190539       , description_language
190540       , object_name
190541       , object_type_code
190542       , line_number
190543       , source_application_id
190544       , source_type_code
190545       , source_code
190546       , source_value
190547       , source_meaning
190548       , created_by
190549       , creation_date
190550       , last_update_date
190551       , last_updated_by
190552       , last_update_login
190553       , program_update_date
190554       , program_application_id
190555       , program_id
190556       , request_id
190557 )
190558 SELECT
190559         event_id
190560       , p_target_ledger_id
190561       , p_sla_ledger_id
190562       , p_language
190563       , object_name
190564       , object_type_code
190565       , line_number
190566       , source_application_id
190567       , source_type_code
190568       , source_code
190569       , SUBSTR(source_value ,1,1996)
190570       , SUBSTR(source_meaning,1,200)
190571       , xla_environment_pkg.g_Usr_Id
190572       , TRUNC(SYSDATE)
190573       , TRUNC(SYSDATE)
190574       , xla_environment_pkg.g_Usr_Id
190575       , xla_environment_pkg.g_Login_Id
190576       , TRUNC(SYSDATE)
190577       , xla_environment_pkg.g_Prog_Appl_Id
190578       , xla_environment_pkg.g_Prog_Id
190579       , xla_environment_pkg.g_Req_Id
190580   FROM (
190581        SELECT xet.event_id                  event_id
190582             , 0                             line_number
190583             , CASE r
190584                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
190585                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
190586                 
190587                ELSE null
190588               END                           object_name
190589             , CASE r
190590                 WHEN 1 THEN 'HEADER' 
190591                 WHEN 2 THEN 'HEADER' 
190592                 
190593                 ELSE null
190594               END                           object_type_code
190595             , CASE r
190596                 WHEN 1 THEN '707' 
190597                 WHEN 2 THEN '707' 
190598                 
190599                 ELSE null
190600               END                           source_application_id
190601             , 'S'             source_type_code
190602             , CASE r
190603                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
190604                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
190605                 
190606                 ELSE null
190607               END                           source_code
190608             , CASE r
190609                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
190610                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
190611                 
190612                 ELSE null
190613               END                           source_value
190614             , CASE r
190615                 WHEN 1 THEN fvl12.meaning
190616                 WHEN 2 THEN fvl38.meaning
190617                 
190618                 ELSE null
190619               END               source_meaning
190620         FROM xla_events_gt     xet  
190621       , CST_XLA_INV_HEADERS_V  h1
190622   , fnd_lookup_values    fvl12
190623   , fnd_lookup_values    fvl38
190624             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
190625        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
190626          AND xet.event_type_code = C_EVENT_TYPE_CODE
190627             AND h1.event_id = xet.event_id
190628    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
190629   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
190630   AND fvl12.view_application_id(+) = 700
190631   AND fvl12.language(+)            = USERENV('LANG')
190632      AND fvl38.lookup_type(+)         = 'YES_NO'
190633   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
190634   AND fvl38.view_application_id(+) = 0
190635   AND fvl38.language(+)            = USERENV('LANG')
190636   
190637 )
190638 ;
190639 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190640 
190641       trace
190642          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
190643          ,p_level    => C_LEVEL_STATEMENT
190644          ,p_module   => l_log_module);
190645 
190646 END IF;
190647 --
190648 
190649 
190650 
190651 --
190652 INSERT INTO xla_diag_sources --line1
190653 (
190654         event_id
190655       , ledger_id
190656       , sla_ledger_id
190657       , description_language
190658       , object_name
190659       , object_type_code
190660       , line_number
190661       , source_application_id
190662       , source_type_code
190663       , source_code
190664       , source_value
190665       , source_meaning
190666       , created_by
190667       , creation_date
190668       , last_update_date
190669       , last_updated_by
190670       , last_update_login
190671       , program_update_date
190672       , program_application_id
190673       , program_id
190674       , request_id
190675 )
190676 SELECT  event_id
190677       , p_target_ledger_id
190678       , p_sla_ledger_id
190679       , p_language
190680       , object_name
190681       , object_type_code
190682       , line_number
190683       , source_application_id
190684       , source_type_code
190685       , source_code
190686       , SUBSTR(source_value,1,1996)
190687       , SUBSTR(source_meaning,1,200)
190688       , xla_environment_pkg.g_Usr_Id
190689       , TRUNC(SYSDATE)
190690       , TRUNC(SYSDATE)
190691       , xla_environment_pkg.g_Usr_Id
190692       , xla_environment_pkg.g_Login_Id
190693       , TRUNC(SYSDATE)
190694       , xla_environment_pkg.g_Prog_Appl_Id
190695       , xla_environment_pkg.g_Prog_Id
190696       , xla_environment_pkg.g_Req_Id
190697   FROM (
190698        SELECT xet.event_id                  event_id
190699             , l2.line_number                 line_number
190700             , CASE r
190701                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
190702                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
190703                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
190704                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
190705                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
190706                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
190707                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
190708                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
190709                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
190710                 
190711                ELSE null
190712               END                           object_name
190713             , CASE r
190714                 WHEN 1 THEN 'LINE' 
190715                 WHEN 2 THEN 'LINE' 
190716                 WHEN 3 THEN 'LINE' 
190717                 WHEN 4 THEN 'LINE' 
190718                 WHEN 5 THEN 'LINE' 
190719                 WHEN 6 THEN 'LINE' 
190720                 WHEN 7 THEN 'LINE' 
190721                 WHEN 8 THEN 'LINE' 
190722                 WHEN 9 THEN 'LINE' 
190723                 
190724                 ELSE null
190725               END                           object_type_code
190726             , CASE r
190727                 WHEN 1 THEN '707' 
190728                 WHEN 2 THEN '707' 
190729                 WHEN 3 THEN '707' 
190730                 WHEN 4 THEN '707' 
190731                 WHEN 5 THEN '707' 
190732                 WHEN 6 THEN '707' 
190733                 WHEN 7 THEN '707' 
190734                 WHEN 8 THEN '707' 
190735                 WHEN 9 THEN '707' 
190736                 
190737                 ELSE null
190738               END                           source_application_id
190739             , 'S'             source_type_code
190740             , CASE r
190741                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
190742                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
190743                 WHEN 3 THEN 'CURRENCY_CODE' 
190744                 WHEN 4 THEN 'ENTERED_AMOUNT' 
190745                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
190746                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
190747                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
190748                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
190749                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
190750                 
190751                 ELSE null
190752               END                           source_code
190753             , CASE r
190754                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
190755                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
190756                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
190757                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
190758                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
190759                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
190760                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
190761                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
190762                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
190763                 
190764                 ELSE null
190765               END                           source_value
190766             , null              source_meaning
190767          FROM  xla_events_gt     xet  
190768         , CST_XLA_INV_LINES_V  l2
190769             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
190770         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
190771           AND xet.event_type_code = C_EVENT_TYPE_CODE
190772             AND l2.event_id          = xet.event_id
190773 
190774 )
190775 ;
190776 --
190777 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190778 
190779       trace
190780          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
190781          ,p_level    => C_LEVEL_STATEMENT
190782          ,p_module   => l_log_module);
190783 
190784 END IF;
190785 
190786 
190787 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190788       trace
190789          (p_msg      => 'END of insert_sources_289'
190790          ,p_level    => C_LEVEL_PROCEDURE
190791          ,p_module   => l_log_module);
190792 END IF;
190793 EXCEPTION
190794   WHEN xla_exceptions_pkg.application_exception THEN
190795       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
190796             trace
190797                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
190798                ,p_level    => C_LEVEL_EXCEPTION
190799                ,p_module   => l_log_module);
190800       END IF;
190801       RAISE;
190802   WHEN OTHERS THEN
190803       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
190804             trace
190805                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
190806                ,p_level    => C_LEVEL_EXCEPTION
190807                ,p_module   => l_log_module);
190808        END IF;
190809        xla_exceptions_pkg.raise_message
190810            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_289');
190811 END insert_sources_289;
190812 --
190813 
190814 ---------------------------------------
190815 --
190816 -- PRIVATE FUNCTION
190817 --         EventType_289
190818 --
190819 ----------------------------------------
190820 --
190821 FUNCTION EventType_289
190822        (p_application_id         IN NUMBER
190823        ,p_base_ledger_id         IN NUMBER
190824        ,p_target_ledger_id       IN NUMBER
190825        ,p_language               IN VARCHAR2
190826        ,p_currency_code          IN VARCHAR2
190827        ,p_sla_ledger_id          IN NUMBER
190828        ,p_pad_start_date         IN DATE
190829        ,p_pad_end_date           IN DATE
190830        ,p_primary_ledger_id      IN NUMBER)
190831 RETURN BOOLEAN IS
190832 --
190833 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UMISC_ISSUE';
190834 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
190835 
190836 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
190837 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
190838 --
190839 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190840 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190841 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
190842 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190843 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190844 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
190845 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
190846 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190847 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190848 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190849 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190850 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190851 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190852 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190853 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190854 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190855 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190856 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190857 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190858 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190859 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190860 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190861 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
190862 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
190863 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
190864 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
190865 
190866 l_event_id                             NUMBER;
190867 l_previous_event_id                    NUMBER;
190868 l_first_event_id                       NUMBER;
190869 l_last_event_id                        NUMBER;
190870 
190871 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
190872 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
190873 --
190874 --
190875 l_result                    BOOLEAN := TRUE;
190876 l_rows                      NUMBER  := 1000;
190877 l_event_type_name           VARCHAR2(80) := 'User-defined Issue';
190878 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
190879 l_description               VARCHAR2(4000);
190880 l_transaction_reversal      NUMBER;
190881 l_ae_header_id              NUMBER;
190882 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
190883 l_log_module                VARCHAR2(240);
190884 --
190885 l_acct_reversal_source      VARCHAR2(30);
190886 l_trx_reversal_source       VARCHAR2(30);
190887 
190888 l_continue_with_lines       BOOLEAN := TRUE;
190889 --
190890 l_acc_rev_gl_date_source    DATE;                      -- 4262811
190891 --
190892 type t_array_event_id is table of number index by binary_integer;
190893 
190894 l_rec_array_event                    t_rec_array_event;
190895 l_null_rec_array_event               t_rec_array_event;
190896 l_array_ae_header_id                 xla_number_array_type;
190897 l_actual_flag                        VARCHAR2(1) := NULL;
190898 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
190899 l_balance_type_code                  VARCHAR2(1) :=NULL;
190900 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
190901 
190902 --
190903 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
190904 --
190905 
190906 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
190907 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
190908 
190909 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
190910 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
190911 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
190912 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
190913 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
190914 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
190915 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
190916 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
190917 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
190918 
190919 l_array_source_12              t_array_source_12;
190920 l_array_source_12_meaning      t_array_lookup_meaning;
190921 l_array_source_38              t_array_source_38;
190922 l_array_source_38_meaning      t_array_lookup_meaning;
190923 
190924 l_array_source_4      t_array_source_4;
190925 l_array_source_11      t_array_source_11;
190926 l_array_source_15      t_array_source_15;
190927 l_array_source_18      t_array_source_18;
190928 l_array_source_19      t_array_source_19;
190929 l_array_source_20      t_array_source_20;
190930 l_array_source_21      t_array_source_21;
190931 l_array_source_22      t_array_source_22;
190932 l_array_source_24      t_array_source_24;
190933 
190934 --
190935 CURSOR header_cur
190936 IS
190937 SELECT /*+ leading(xet) cardinality(xet,1) */
190938 -- Event Type Code: UMISC_ISSUE
190939 -- Event Class Code: USER_DEFINE
190940     xet.entity_id
190941   , xet.legal_entity_id
190942   , xet.entity_code
190943   , xet.transaction_number
190944   , xet.event_id
190945   , xet.event_class_code
190946   , xet.event_type_code
190947   , xet.event_number
190948   , xet.event_date
190949   , xet.transaction_date
190950   , xet.reference_num_1
190951   , xet.reference_num_2
190952   , xet.reference_num_3
190953   , xet.reference_num_4
190954   , xet.reference_char_1
190955   , xet.reference_char_2
190956   , xet.reference_char_3
190957   , xet.reference_char_4
190958   , xet.reference_date_1
190959   , xet.reference_date_2
190960   , xet.reference_date_3
190961   , xet.reference_date_4
190962   , xet.event_created_by
190963   , xet.budgetary_control_flag 
190964   , h1.DISTRIBUTION_TYPE    source_12
190965   , fvl12.meaning   source_12_meaning
190966   , h1.TRANSFER_TO_GL_INDICATOR    source_38
190967   , fvl38.meaning   source_38_meaning
190968   FROM xla_events_gt     xet 
190969   , CST_XLA_INV_HEADERS_V  h1
190970   , fnd_lookup_values    fvl12
190971   , fnd_lookup_values    fvl38
190972  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
190973    and xet.event_type_code = C_EVENT_TYPE_CODE
190974    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
190975    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
190976   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
190977   AND fvl12.view_application_id(+) = 700
190978   AND fvl12.language(+)            = USERENV('LANG')
190979      AND fvl38.lookup_type(+)         = 'YES_NO'
190980   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
190981   AND fvl38.view_application_id(+) = 0
190982   AND fvl38.language(+)            = USERENV('LANG')
190983   
190984  ORDER BY event_id
190985 ;
190986 
190987 
190988 --
190989 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
190990 IS
190991 SELECT /*+ leading(xet) cardinality(xet,1) */
190992 -- Event Type Code: UMISC_ISSUE
190993 -- Event Class Code: USER_DEFINE
190994     xet.entity_id
190995    ,xet.legal_entity_id
190996    ,xet.entity_code
190997    ,xet.transaction_number
190998    ,xet.event_id
190999    ,xet.event_class_code
191000    ,xet.event_type_code
191001    ,xet.event_number
191002    ,xet.event_date
191003    ,xet.transaction_date
191004    ,xet.reference_num_1
191005    ,xet.reference_num_2
191006    ,xet.reference_num_3
191007    ,xet.reference_num_4
191008    ,xet.reference_char_1
191009    ,xet.reference_char_2
191010    ,xet.reference_char_3
191011    ,xet.reference_char_4
191012    ,xet.reference_date_1
191013    ,xet.reference_date_2
191014    ,xet.reference_date_3
191015    ,xet.reference_date_4
191016    ,xet.event_created_by
191017    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
191018   , l2.CODE_COMBINATION_ID    source_4
191019   , l2.DISTRIBUTION_IDENTIFIER    source_11
191020   , l2.CURRENCY_CODE    source_15
191021   , l2.ENTERED_AMOUNT    source_18
191022   , l2.CURRENCY_CONVERSION_DATE    source_19
191023   , l2.CURRENCY_CONVERSION_RATE    source_20
191024   , l2.CURRENCY_CONVERSION_TYPE    source_21
191025   , l2.ACCOUNTED_AMOUNT    source_22
191026   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
191027   FROM xla_events_gt     xet 
191028   , CST_XLA_INV_LINES_V  l2
191029  WHERE xet.event_id between x_first_event_id and x_last_event_id
191030    and xet.event_date between p_pad_start_date and p_pad_end_date
191031    and xet.event_type_code = C_EVENT_TYPE_CODE
191032    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
191033 ;
191034 
191035 --
191036 BEGIN
191037 IF g_log_enabled THEN
191038    l_log_module := C_DEFAULT_MODULE||'.EventType_289';
191039 END IF;
191040 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
191041    trace
191042       (p_msg      => 'BEGIN of EventType_289'
191043       ,p_level    => C_LEVEL_PROCEDURE
191044       ,p_module   => l_log_module);
191045 END IF;
191046 
191047 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191048    trace
191049       (p_msg      => 'p_application_id = '||p_application_id||
191050                      ' - p_base_ledger_id = '||p_base_ledger_id||
191051                      ' - p_target_ledger_id  = '||p_target_ledger_id||
191052                      ' - p_language = '||p_language||
191053                      ' - p_currency_code = '||p_currency_code||
191054                      ' - p_sla_ledger_id = '||p_sla_ledger_id
191055       ,p_level    => C_LEVEL_STATEMENT
191056       ,p_module   => l_log_module);
191057 END IF;
191058 --
191059 -- initialze arrays
191060 --
191061 g_array_event.DELETE;
191062 l_rec_array_event := l_null_rec_array_event;
191063 --
191064 --------------------------------------
191065 -- 4262811 Initialze MPA Line Number
191066 --------------------------------------
191067 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
191068 
191069 --
191070 
191071 --
191072 OPEN header_cur;
191073 --
191074 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191075    trace
191076    (p_msg      => 'SQL - FETCH header_cur'
191077    ,p_level    => C_LEVEL_STATEMENT
191078    ,p_module   => l_log_module);
191079 END IF;
191080 --
191081 LOOP
191082 FETCH header_cur BULK COLLECT INTO
191083         l_array_entity_id
191084       , l_array_legal_entity_id
191085       , l_array_entity_code
191086       , l_array_transaction_num
191087       , l_array_event_id
191088       , l_array_class_code
191089       , l_array_event_type
191090       , l_array_event_number
191091       , l_array_event_date
191092       , l_array_transaction_date
191093       , l_array_reference_num_1
191094       , l_array_reference_num_2
191095       , l_array_reference_num_3
191096       , l_array_reference_num_4
191097       , l_array_reference_char_1
191098       , l_array_reference_char_2
191099       , l_array_reference_char_3
191100       , l_array_reference_char_4
191101       , l_array_reference_date_1
191102       , l_array_reference_date_2
191103       , l_array_reference_date_3
191104       , l_array_reference_date_4
191105       , l_array_event_created_by
191106       , l_array_budgetary_control_flag 
191107       , l_array_source_12
191108       , l_array_source_12_meaning
191109       , l_array_source_38
191110       , l_array_source_38_meaning
191111       LIMIT l_rows;
191112 --
191113 IF (C_LEVEL_EVENT >= g_log_level) THEN
191114    trace
191115    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
191116    ,p_level    => C_LEVEL_EVENT
191117    ,p_module   => l_log_module);
191118 END IF;
191119 --
191120 EXIT WHEN l_array_entity_id.COUNT = 0;
191121 
191122 -- initialize arrays
191123 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
191124 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
191125 
191126 --
191127 -- Bug 4458708
191128 --
191129 XLA_AE_LINES_PKG.g_LineNumber := 0;
191130 
191131 
191132 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
191133 g_last_hdr_idx := l_array_event_id.LAST;
191134 --
191135 -- loop for the headers. Each iteration is for each header extract row
191136 -- fetched in header cursor
191137 --
191138 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
191139 
191140 --
191141 -- set event info as cache for other routines to refer event attributes
191142 --
191143 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
191144    (p_application_id           => p_application_id
191145    ,p_primary_ledger_id        => p_primary_ledger_id
191146    ,p_base_ledger_id           => p_base_ledger_id
191147    ,p_target_ledger_id         => p_target_ledger_id
191148    ,p_entity_id                => l_array_entity_id(hdr_idx)
191149    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
191150    ,p_entity_code              => l_array_entity_code(hdr_idx)
191151    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
191152    ,p_event_id                 => l_array_event_id(hdr_idx)
191153    ,p_event_class_code         => l_array_class_code(hdr_idx)
191154    ,p_event_type_code          => l_array_event_type(hdr_idx)
191155    ,p_event_number             => l_array_event_number(hdr_idx)
191156    ,p_event_date               => l_array_event_date(hdr_idx)
191157    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
191158    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
191159    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
191160    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
191161    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
191162    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
191163    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
191164    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
191165    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
191166    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
191167    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
191168    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
191169    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
191170    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
191171    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
191172 
191173 --
191174 -- set the status of entry to C_VALID (0)
191175 --
191176 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
191177 
191178 --
191179 -- initialize a row for ae header
191180 --
191181 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
191182 
191183 l_event_id := l_array_event_id(hdr_idx);
191184 
191185 --
191186 -- storing the hdr_idx for event. May be used by line cursor.
191187 --
191188 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
191189 
191190 --
191191 -- store sources from header extract. This can be improved to
191192 -- store only those sources from header extract that may be used in lines
191193 --
191194 
191195 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
191196 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
191197 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
191198 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
191199 
191200 --
191201 -- initilaize the status of ae headers for diffrent balance types
191202 -- the status is initialised to C_NOT_CREATED (2)
191203 --
191204 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
191205 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
191206 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
191207 
191208 --
191209 -- call api to validate and store accounting attributes for header
191210 --
191211 
191212 ------------------------------------------------------------
191213 -- Accrual Reversal : to get date for Standard Source (NONE)
191214 ------------------------------------------------------------
191215 l_acc_rev_gl_date_source := NULL;
191216 
191217      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
191218       l_rec_acct_attrs.array_date_value(1) := 
191219 xla_ae_sources_pkg.GetSystemSourceDate(
191220    p_source_code           => 'XLA_REFERENCE_DATE_1'
191221  , p_source_type_code      => 'Y'
191222  , p_source_application_id =>  602
191223 );
191224      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
191225       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
191226 
191227 
191228 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
191229 
191230 XLA_AE_HEADER_PKG.SetJeCategoryName;
191231 
191232 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
191233 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
191234 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
191235 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
191236 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
191237 
191238 
191239 -- No header level analytical criteria
191240 
191241 --
191242 --accounting attribute enhancement, bug 3612931
191243 --
191244 l_trx_reversal_source := SUBSTR(NULL, 1,30);
191245 
191246 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
191247    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
191248 
191249    xla_accounting_err_pkg.build_message
191250       (p_appli_s_name            => 'XLA'
191251       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
191252       ,p_token_1                 => 'ACCT_ATTR_NAME'
191253       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
191254       ,p_token_2                 => 'PRODUCT_NAME'
191255       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
191256       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
191257       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
191258       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
191259 
191260 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
191261    --
191262    -- following sets the accounting attributes needed to reverse
191263    -- accounting for a distributeion
191264    --
191265    xla_ae_lines_pkg.SetTrxReversalAttrs
191266       (p_event_id              => l_event_id
191267       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
191268       ,p_trx_reversal_source   => l_trx_reversal_source);
191269 
191270 END IF;
191271 
191272 
191273 ----------------------------------------------------------------
191274 -- 4262811 -  update the header statuses to invalid in need be
191275 ----------------------------------------------------------------
191276 --
191277 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
191278 
191279 
191280   -----------------------------------------------
191281   -- No accrual reversal for the event class/type
191282   -----------------------------------------------
191283 ----------------------------------------------------------------
191284 
191285 --
191286 -- this ends the header loop iteration for one bulk fetch
191287 --
191288 END LOOP;
191289 
191290 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
191291 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
191292 
191293 --
191294 -- insert dummy rows into lines gt table that were created due to
191295 -- transaction reversals
191296 --
191297 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
191298    l_result := XLA_AE_LINES_PKG.InsertLines;
191299 END IF;
191300 
191301 --
191302 -- reset the temp_line_num for each set of events fetched from header
191303 -- cursor rather than doing it for each new event in line cursor
191304 -- Bug 3939231
191305 --
191306 xla_ae_lines_pkg.g_temp_line_num := 0;
191307 
191308 
191309 
191310 --
191311 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
191312 --
191313 --
191314 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191315 
191316       trace
191317          (p_msg      => 'SQL - FETCH line_cur'
191318          ,p_level    => C_LEVEL_STATEMENT
191319          ,p_module   => l_log_module);
191320 
191321 END IF;
191322 --
191323 --
191324 LOOP
191325   --
191326   FETCH line_cur BULK COLLECT INTO
191327         l_array_entity_id
191328       , l_array_legal_entity_id
191329       , l_array_entity_code
191330       , l_array_transaction_num
191331       , l_array_event_id
191332       , l_array_class_code
191333       , l_array_event_type
191334       , l_array_event_number
191335       , l_array_event_date
191336       , l_array_transaction_date
191337       , l_array_reference_num_1
191338       , l_array_reference_num_2
191339       , l_array_reference_num_3
191340       , l_array_reference_num_4
191341       , l_array_reference_char_1
191342       , l_array_reference_char_2
191343       , l_array_reference_char_3
191344       , l_array_reference_char_4
191345       , l_array_reference_date_1
191346       , l_array_reference_date_2
191347       , l_array_reference_date_3
191348       , l_array_reference_date_4
191349       , l_array_event_created_by
191350       , l_array_budgetary_control_flag
191351       , l_array_extract_line_num 
191352       , l_array_source_4
191353       , l_array_source_11
191354       , l_array_source_15
191355       , l_array_source_18
191356       , l_array_source_19
191357       , l_array_source_20
191358       , l_array_source_21
191359       , l_array_source_22
191360       , l_array_source_24
191361       LIMIT l_rows;
191362 
191363   --
191364   IF (C_LEVEL_EVENT >= g_log_level) THEN
191365             trace
191366                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
191367                ,p_level    => C_LEVEL_EVENT
191368                ,p_module   => l_log_module);
191369   END IF;
191370   --
191371   EXIT WHEN l_array_entity_id.count = 0;
191372 
191373   XLA_AE_LINES_PKG.g_rec_lines := null;
191374 
191375 --
191376 -- Bug 4458708
191377 --
191378 XLA_AE_LINES_PKG.g_LineNumber := 0;
191379 --
191380 --
191381 
191382 FOR Idx IN 1..l_array_event_id.count LOOP
191383    --
191384    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
191385    --
191386    l_event_id := l_array_event_id(idx);  -- 5648433
191387 
191388    --
191389    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
191390    --
191391 
191392    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
191393              (g_array_event(l_event_id).array_value_num('header_index'))
191394          ,'N'
191395          ) <> 'Y'
191396    THEN
191397       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191398          trace
191399             (p_msg      => 'Trancaction revesal option is not Y '
191400             ,p_level    => C_LEVEL_STATEMENT
191401             ,p_module   => l_log_module);
191402       END IF;
191403 
191404 --
191405 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
191406 --
191407 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
191408 --
191409 -- set event info as cache for other routines to refer event attributes
191410 --
191411 
191412 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
191413    l_previous_event_id := l_event_id;
191414 
191415    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
191416       (p_application_id           => p_application_id
191417       ,p_primary_ledger_id        => p_primary_ledger_id
191418       ,p_base_ledger_id           => p_base_ledger_id
191419       ,p_target_ledger_id         => p_target_ledger_id
191420       ,p_entity_id                => l_array_entity_id(Idx)
191421       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
191422       ,p_entity_code              => l_array_entity_code(Idx)
191423       ,p_transaction_num          => l_array_transaction_num(Idx)
191424       ,p_event_id                 => l_array_event_id(Idx)
191425       ,p_event_class_code         => l_array_class_code(Idx)
191426       ,p_event_type_code          => l_array_event_type(Idx)
191427       ,p_event_number             => l_array_event_number(Idx)
191428       ,p_event_date               => l_array_event_date(Idx)
191429       ,p_transaction_date         => l_array_transaction_date(Idx)
191430       ,p_reference_num_1          => l_array_reference_num_1(Idx)
191431       ,p_reference_num_2          => l_array_reference_num_2(Idx)
191432       ,p_reference_num_3          => l_array_reference_num_3(Idx)
191433       ,p_reference_num_4          => l_array_reference_num_4(Idx)
191434       ,p_reference_char_1         => l_array_reference_char_1(Idx)
191435       ,p_reference_char_2         => l_array_reference_char_2(Idx)
191436       ,p_reference_char_3         => l_array_reference_char_3(Idx)
191437       ,p_reference_char_4         => l_array_reference_char_4(Idx)
191438       ,p_reference_date_1         => l_array_reference_date_1(Idx)
191439       ,p_reference_date_2         => l_array_reference_date_2(Idx)
191440       ,p_reference_date_3         => l_array_reference_date_3(Idx)
191441       ,p_reference_date_4         => l_array_reference_date_4(Idx)
191442       ,p_event_created_by         => l_array_event_created_by(Idx)
191443       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
191444        --
191445 END IF;
191446 
191447 
191448 
191449 --
191450 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
191451 
191452 l_acct_reversal_source := SUBSTR(NULL, 1,30);
191453 
191454 IF l_continue_with_lines THEN
191455    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
191456       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
191457 
191458       xla_accounting_err_pkg.build_message
191459          (p_appli_s_name            => 'XLA'
191460          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
191461          ,p_token_1                 => 'LINE_NUMBER'
191462          ,p_value_1                 => l_array_extract_line_num(Idx)
191463          ,p_token_2                 => 'PRODUCT_NAME'
191464          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
191465          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
191466          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
191467          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
191468 
191469    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
191470       --
191471       -- following sets the accounting attributes needed to reverse
191472       -- accounting for a distributeion
191473       --
191474 
191475       --
191476       -- 5217187
191477       --
191478       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
191479       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
191480                                        g_array_event(l_event_id).array_value_num('header_index'));
191481       --
191482       --
191483 
191484       -- No reversal code generated
191485 
191486       xla_ae_lines_pkg.SetAcctReversalAttrs
191487          (p_event_id             => l_event_id
191488          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
191489          ,p_calculate_acctd_flag => l_calculate_acctd_flag
191490          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
191491    END IF;
191492 
191493    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
191494        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
191495 
191496 --
191497 AcctLineType_26 (
191498  p_application_id  => p_application_id
191499  ,p_event_id     => l_event_id
191500  ,p_calculate_acctd_flag => l_calculate_acctd_flag
191501  ,p_calculate_g_l_flag => l_calculate_g_l_flag
191502  ,p_actual_flag => l_actual_flag
191503  ,p_balance_type_code => l_balance_type_code
191504  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
191505  
191506  , p_source_4 => l_array_source_4(Idx)
191507  , p_source_11 => l_array_source_11(Idx)
191508  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
191509  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
191510  , p_source_15 => l_array_source_15(Idx)
191511  , p_source_18 => l_array_source_18(Idx)
191512  , p_source_19 => l_array_source_19(Idx)
191513  , p_source_20 => l_array_source_20(Idx)
191514  , p_source_21 => l_array_source_21(Idx)
191515  , p_source_22 => l_array_source_22(Idx)
191516  , p_source_24 => l_array_source_24(Idx)
191517  );
191518 If(l_balance_type_code = 'A') THEN
191519   l_actual_gain_loss_ref := l_gain_or_loss_ref;
191520 END IF;
191521 
191522 --
191523 
191524 
191525 --
191526 AcctLineType_150 (
191527  p_application_id  => p_application_id
191528  ,p_event_id     => l_event_id
191529  ,p_calculate_acctd_flag => l_calculate_acctd_flag
191530  ,p_calculate_g_l_flag => l_calculate_g_l_flag
191531  ,p_actual_flag => l_actual_flag
191532  ,p_balance_type_code => l_balance_type_code
191533  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
191534  
191535  , p_source_4 => l_array_source_4(Idx)
191536  , p_source_11 => l_array_source_11(Idx)
191537  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
191538  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
191539  , p_source_15 => l_array_source_15(Idx)
191540  , p_source_18 => l_array_source_18(Idx)
191541  , p_source_19 => l_array_source_19(Idx)
191542  , p_source_20 => l_array_source_20(Idx)
191543  , p_source_21 => l_array_source_21(Idx)
191544  , p_source_22 => l_array_source_22(Idx)
191545  , p_source_24 => l_array_source_24(Idx)
191546  );
191547 If(l_balance_type_code = 'A') THEN
191548   l_actual_gain_loss_ref := l_gain_or_loss_ref;
191549 END IF;
191550 
191551 --
191552 
191553 
191554 --
191555 AcctLineType_174 (
191556  p_application_id  => p_application_id
191557  ,p_event_id     => l_event_id
191558  ,p_calculate_acctd_flag => l_calculate_acctd_flag
191559  ,p_calculate_g_l_flag => l_calculate_g_l_flag
191560  ,p_actual_flag => l_actual_flag
191561  ,p_balance_type_code => l_balance_type_code
191562  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
191563  
191564  , p_source_4 => l_array_source_4(Idx)
191565  , p_source_11 => l_array_source_11(Idx)
191566  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
191567  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
191568  , p_source_15 => l_array_source_15(Idx)
191569  , p_source_18 => l_array_source_18(Idx)
191570  , p_source_19 => l_array_source_19(Idx)
191571  , p_source_20 => l_array_source_20(Idx)
191572  , p_source_21 => l_array_source_21(Idx)
191573  , p_source_22 => l_array_source_22(Idx)
191574  , p_source_24 => l_array_source_24(Idx)
191575  );
191576 If(l_balance_type_code = 'A') THEN
191577   l_actual_gain_loss_ref := l_gain_or_loss_ref;
191578 END IF;
191579 
191580 --
191581 
191582       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
191583       -- or secondary ledger that has different currency with primary
191584       -- or alc that is calculated by sla
191585       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
191586             (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'))
191587 
191588 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
191589 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
191590           AND (l_actual_flag = 'A')) THEN
191591         XLA_AE_LINES_PKG.CreateGainOrLossLines(
191592           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
191593          ,p_application_id   => p_application_id
191594          ,p_amb_context_code => 'DEFAULT'
191595          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
191596          ,p_event_class_code => C_EVENT_CLASS_CODE
191597          ,p_event_type_code  => C_EVENT_TYPE_CODE
191598          
191599          ,p_gain_ccid        => -1
191600          ,p_loss_ccid        => -1
191601 
191602          ,p_actual_flag      => l_actual_flag
191603          ,p_enc_flag         => null
191604          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
191605          ,p_enc_g_l_ref      => null
191606          );
191607       END IF;
191608    END IF;
191609 END IF;
191610 
191611    ELSE
191612       --
191613       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
191614       --
191615       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191616          trace
191617             (p_msg      => 'Trancaction revesal option is Y'
191618             ,p_level    => C_LEVEL_STATEMENT
191619             ,p_module   => l_log_module);
191620       END IF;
191621    END IF;
191622 
191623 END LOOP;
191624 l_result := XLA_AE_LINES_PKG.InsertLines ;
191625 end loop;
191626 close line_cur;
191627 
191628 
191629 --
191630 -- insert headers into xla_ae_headers_gt table
191631 --
191632 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
191633 
191634 -- insert into errors table here.
191635 
191636 END LOOP;
191637 
191638 --
191639 -- 4865292
191640 --
191641 -- Compare g_hdr_extract_count with event count in
191642 -- CreateHeadersAndLines.
191643 --
191644 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
191645 
191646 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191647    trace (p_msg     => '# rows extracted from header extract objects '
191648                     || ' (running total): '
191649                     || g_hdr_extract_count
191650          ,p_level   => C_LEVEL_STATEMENT
191651          ,p_module  => l_log_module);
191652 END IF;
191653 
191654 CLOSE header_cur;
191655 --
191656 
191657 --
191658 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
191659    trace
191660       (p_msg      => 'END of EventType_289'
191661       ,p_level    => C_LEVEL_PROCEDURE
191662       ,p_module   => l_log_module);
191663 END IF;
191664 --
191665 RETURN l_result;
191666 EXCEPTION
191667 WHEN xla_exceptions_pkg.application_exception THEN
191668    
191669 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
191670 
191671    
191672 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
191673 
191674    RAISE;
191675 
191676 WHEN NO_DATA_FOUND THEN
191677 
191678 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
191679 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
191680 
191681 FOR header_record IN header_cur
191682 LOOP
191683     l_array_header_events(header_record.event_id) := header_record.event_id;
191684 END LOOP;
191685 
191686 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
191687 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
191688 
191689 fnd_file.put_line(fnd_file.LOG, '                    ');
191690 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
191691 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
191692 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
191693 
191694 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
191695 LOOP
191696 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
191697 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
191698         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
191699 	END IF;
191700 END LOOP;
191701 
191702 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
191703 fnd_file.put_line(fnd_file.LOG, '                    ');
191704 
191705 
191706 xla_exceptions_pkg.raise_message
191707       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_289');
191708 
191709 
191710 WHEN OTHERS THEN
191711    xla_exceptions_pkg.raise_message
191712       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_289');
191713 END EventType_289;
191714 --
191715 
191716 ---------------------------------------
191717 --
191718 -- PRIVATE PROCEDURE
191719 --         insert_sources_290
191720 --
191721 ----------------------------------------
191722 --
191723 PROCEDURE insert_sources_290(
191724                                 p_target_ledger_id       IN NUMBER
191725                               , p_language               IN VARCHAR2
191726                               , p_sla_ledger_id          IN NUMBER
191727                               , p_pad_start_date         IN DATE
191728                               , p_pad_end_date           IN DATE
191729                          )
191730 IS
191731 
191732 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UMISC_RCPT';
191733 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
191734 p_apps_owner                   VARCHAR2(30);
191735 l_log_module                   VARCHAR2(240);
191736 BEGIN
191737 IF g_log_enabled THEN
191738       l_log_module := C_DEFAULT_MODULE||'.insert_sources_290';
191739 END IF;
191740 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
191741 
191742       trace
191743          (p_msg      => 'BEGIN of insert_sources_290'
191744          ,p_level    => C_LEVEL_PROCEDURE
191745          ,p_module   => l_log_module);
191746 
191747 END IF;
191748 
191749 -- select APPS owner
191750 SELECT oracle_username
191751   INTO p_apps_owner
191752   FROM fnd_oracle_userid
191753  WHERE read_only_flag = 'U'
191754 ;
191755 
191756 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191757       trace
191758          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
191759                         ' - p_language = '||p_language||
191760                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
191761                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
191762                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
191763                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
191764          ,p_level    => C_LEVEL_STATEMENT
191765          ,p_module   => l_log_module);
191766 END IF;
191767 
191768 
191769 --
191770 INSERT INTO xla_diag_sources --hdr1
191771 (
191772         event_id
191773       , ledger_id
191774       , sla_ledger_id
191775       , description_language
191776       , object_name
191777       , object_type_code
191778       , line_number
191779       , source_application_id
191780       , source_type_code
191781       , source_code
191782       , source_value
191783       , source_meaning
191784       , created_by
191785       , creation_date
191786       , last_update_date
191787       , last_updated_by
191788       , last_update_login
191789       , program_update_date
191790       , program_application_id
191791       , program_id
191792       , request_id
191793 )
191794 SELECT
191795         event_id
191796       , p_target_ledger_id
191797       , p_sla_ledger_id
191798       , p_language
191799       , object_name
191800       , object_type_code
191801       , line_number
191802       , source_application_id
191803       , source_type_code
191804       , source_code
191805       , SUBSTR(source_value ,1,1996)
191806       , SUBSTR(source_meaning,1,200)
191807       , xla_environment_pkg.g_Usr_Id
191808       , TRUNC(SYSDATE)
191809       , TRUNC(SYSDATE)
191810       , xla_environment_pkg.g_Usr_Id
191811       , xla_environment_pkg.g_Login_Id
191812       , TRUNC(SYSDATE)
191813       , xla_environment_pkg.g_Prog_Appl_Id
191814       , xla_environment_pkg.g_Prog_Id
191815       , xla_environment_pkg.g_Req_Id
191816   FROM (
191817        SELECT xet.event_id                  event_id
191818             , 0                             line_number
191819             , CASE r
191820                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
191821                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
191822                 
191823                ELSE null
191824               END                           object_name
191825             , CASE r
191826                 WHEN 1 THEN 'HEADER' 
191827                 WHEN 2 THEN 'HEADER' 
191828                 
191829                 ELSE null
191830               END                           object_type_code
191831             , CASE r
191832                 WHEN 1 THEN '707' 
191833                 WHEN 2 THEN '707' 
191834                 
191835                 ELSE null
191836               END                           source_application_id
191837             , 'S'             source_type_code
191838             , CASE r
191839                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
191840                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
191841                 
191842                 ELSE null
191843               END                           source_code
191844             , CASE r
191845                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
191846                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
191847                 
191848                 ELSE null
191849               END                           source_value
191850             , CASE r
191851                 WHEN 1 THEN fvl12.meaning
191852                 WHEN 2 THEN fvl38.meaning
191853                 
191854                 ELSE null
191855               END               source_meaning
191856         FROM xla_events_gt     xet  
191857       , CST_XLA_INV_HEADERS_V  h1
191858   , fnd_lookup_values    fvl12
191859   , fnd_lookup_values    fvl38
191860             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
191861        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
191862          AND xet.event_type_code = C_EVENT_TYPE_CODE
191863             AND h1.event_id = xet.event_id
191864    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
191865   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
191866   AND fvl12.view_application_id(+) = 700
191867   AND fvl12.language(+)            = USERENV('LANG')
191868      AND fvl38.lookup_type(+)         = 'YES_NO'
191869   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
191870   AND fvl38.view_application_id(+) = 0
191871   AND fvl38.language(+)            = USERENV('LANG')
191872   
191873 )
191874 ;
191875 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191876 
191877       trace
191878          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
191879          ,p_level    => C_LEVEL_STATEMENT
191880          ,p_module   => l_log_module);
191881 
191882 END IF;
191883 --
191884 
191885 
191886 
191887 --
191888 INSERT INTO xla_diag_sources --line1
191889 (
191890         event_id
191891       , ledger_id
191892       , sla_ledger_id
191893       , description_language
191894       , object_name
191895       , object_type_code
191896       , line_number
191897       , source_application_id
191898       , source_type_code
191899       , source_code
191900       , source_value
191901       , source_meaning
191902       , created_by
191903       , creation_date
191904       , last_update_date
191905       , last_updated_by
191906       , last_update_login
191907       , program_update_date
191908       , program_application_id
191909       , program_id
191910       , request_id
191911 )
191912 SELECT  event_id
191913       , p_target_ledger_id
191914       , p_sla_ledger_id
191915       , p_language
191916       , object_name
191917       , object_type_code
191918       , line_number
191919       , source_application_id
191920       , source_type_code
191921       , source_code
191922       , SUBSTR(source_value,1,1996)
191923       , SUBSTR(source_meaning,1,200)
191924       , xla_environment_pkg.g_Usr_Id
191925       , TRUNC(SYSDATE)
191926       , TRUNC(SYSDATE)
191927       , xla_environment_pkg.g_Usr_Id
191928       , xla_environment_pkg.g_Login_Id
191929       , TRUNC(SYSDATE)
191930       , xla_environment_pkg.g_Prog_Appl_Id
191931       , xla_environment_pkg.g_Prog_Id
191932       , xla_environment_pkg.g_Req_Id
191933   FROM (
191934        SELECT xet.event_id                  event_id
191935             , l2.line_number                 line_number
191936             , CASE r
191937                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
191938                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
191939                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
191940                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
191941                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
191942                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
191943                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
191944                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
191945                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
191946                 
191947                ELSE null
191948               END                           object_name
191949             , CASE r
191950                 WHEN 1 THEN 'LINE' 
191951                 WHEN 2 THEN 'LINE' 
191952                 WHEN 3 THEN 'LINE' 
191953                 WHEN 4 THEN 'LINE' 
191954                 WHEN 5 THEN 'LINE' 
191955                 WHEN 6 THEN 'LINE' 
191956                 WHEN 7 THEN 'LINE' 
191957                 WHEN 8 THEN 'LINE' 
191958                 WHEN 9 THEN 'LINE' 
191959                 
191960                 ELSE null
191961               END                           object_type_code
191962             , CASE r
191963                 WHEN 1 THEN '707' 
191964                 WHEN 2 THEN '707' 
191965                 WHEN 3 THEN '707' 
191966                 WHEN 4 THEN '707' 
191967                 WHEN 5 THEN '707' 
191968                 WHEN 6 THEN '707' 
191969                 WHEN 7 THEN '707' 
191970                 WHEN 8 THEN '707' 
191971                 WHEN 9 THEN '707' 
191972                 
191973                 ELSE null
191974               END                           source_application_id
191975             , 'S'             source_type_code
191976             , CASE r
191977                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
191978                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
191979                 WHEN 3 THEN 'CURRENCY_CODE' 
191980                 WHEN 4 THEN 'ENTERED_AMOUNT' 
191981                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
191982                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
191983                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
191984                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
191985                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
191986                 
191987                 ELSE null
191988               END                           source_code
191989             , CASE r
191990                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
191991                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
191992                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
191993                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
191994                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
191995                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
191996                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
191997                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
191998                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
191999                 
192000                 ELSE null
192001               END                           source_value
192002             , null              source_meaning
192003          FROM  xla_events_gt     xet  
192004         , CST_XLA_INV_LINES_V  l2
192005             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
192006         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
192007           AND xet.event_type_code = C_EVENT_TYPE_CODE
192008             AND l2.event_id          = xet.event_id
192009 
192010 )
192011 ;
192012 --
192013 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192014 
192015       trace
192016          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
192017          ,p_level    => C_LEVEL_STATEMENT
192018          ,p_module   => l_log_module);
192019 
192020 END IF;
192021 
192022 
192023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192024       trace
192025          (p_msg      => 'END of insert_sources_290'
192026          ,p_level    => C_LEVEL_PROCEDURE
192027          ,p_module   => l_log_module);
192028 END IF;
192029 EXCEPTION
192030   WHEN xla_exceptions_pkg.application_exception THEN
192031       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
192032             trace
192033                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
192034                ,p_level    => C_LEVEL_EXCEPTION
192035                ,p_module   => l_log_module);
192036       END IF;
192037       RAISE;
192038   WHEN OTHERS THEN
192039       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
192040             trace
192041                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
192042                ,p_level    => C_LEVEL_EXCEPTION
192043                ,p_module   => l_log_module);
192044        END IF;
192045        xla_exceptions_pkg.raise_message
192046            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_290');
192047 END insert_sources_290;
192048 --
192049 
192050 ---------------------------------------
192051 --
192052 -- PRIVATE FUNCTION
192053 --         EventType_290
192054 --
192055 ----------------------------------------
192056 --
192057 FUNCTION EventType_290
192058        (p_application_id         IN NUMBER
192059        ,p_base_ledger_id         IN NUMBER
192060        ,p_target_ledger_id       IN NUMBER
192061        ,p_language               IN VARCHAR2
192062        ,p_currency_code          IN VARCHAR2
192063        ,p_sla_ledger_id          IN NUMBER
192064        ,p_pad_start_date         IN DATE
192065        ,p_pad_end_date           IN DATE
192066        ,p_primary_ledger_id      IN NUMBER)
192067 RETURN BOOLEAN IS
192068 --
192069 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UMISC_RCPT';
192070 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
192071 
192072 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
192073 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
192074 --
192075 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192076 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192077 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
192078 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192079 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192080 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
192081 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
192082 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192083 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192084 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192085 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192086 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192087 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192088 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192089 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192090 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192091 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192092 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192093 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192094 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192095 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192096 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192097 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
192098 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
192099 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
192100 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
192101 
192102 l_event_id                             NUMBER;
192103 l_previous_event_id                    NUMBER;
192104 l_first_event_id                       NUMBER;
192105 l_last_event_id                        NUMBER;
192106 
192107 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
192108 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
192109 --
192110 --
192111 l_result                    BOOLEAN := TRUE;
192112 l_rows                      NUMBER  := 1000;
192113 l_event_type_name           VARCHAR2(80) := 'User-defined Receipt';
192114 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
192115 l_description               VARCHAR2(4000);
192116 l_transaction_reversal      NUMBER;
192117 l_ae_header_id              NUMBER;
192118 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
192119 l_log_module                VARCHAR2(240);
192120 --
192121 l_acct_reversal_source      VARCHAR2(30);
192122 l_trx_reversal_source       VARCHAR2(30);
192123 
192124 l_continue_with_lines       BOOLEAN := TRUE;
192125 --
192126 l_acc_rev_gl_date_source    DATE;                      -- 4262811
192127 --
192128 type t_array_event_id is table of number index by binary_integer;
192129 
192130 l_rec_array_event                    t_rec_array_event;
192131 l_null_rec_array_event               t_rec_array_event;
192132 l_array_ae_header_id                 xla_number_array_type;
192133 l_actual_flag                        VARCHAR2(1) := NULL;
192134 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
192135 l_balance_type_code                  VARCHAR2(1) :=NULL;
192136 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
192137 
192138 --
192139 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
192140 --
192141 
192142 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
192143 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
192144 
192145 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
192146 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
192147 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
192148 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
192149 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
192150 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
192151 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
192152 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
192153 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
192154 
192155 l_array_source_12              t_array_source_12;
192156 l_array_source_12_meaning      t_array_lookup_meaning;
192157 l_array_source_38              t_array_source_38;
192158 l_array_source_38_meaning      t_array_lookup_meaning;
192159 
192160 l_array_source_4      t_array_source_4;
192161 l_array_source_11      t_array_source_11;
192162 l_array_source_15      t_array_source_15;
192163 l_array_source_18      t_array_source_18;
192164 l_array_source_19      t_array_source_19;
192165 l_array_source_20      t_array_source_20;
192166 l_array_source_21      t_array_source_21;
192167 l_array_source_22      t_array_source_22;
192168 l_array_source_24      t_array_source_24;
192169 
192170 --
192171 CURSOR header_cur
192172 IS
192173 SELECT /*+ leading(xet) cardinality(xet,1) */
192174 -- Event Type Code: UMISC_RCPT
192175 -- Event Class Code: USER_DEFINE
192176     xet.entity_id
192177   , xet.legal_entity_id
192178   , xet.entity_code
192179   , xet.transaction_number
192180   , xet.event_id
192181   , xet.event_class_code
192182   , xet.event_type_code
192183   , xet.event_number
192184   , xet.event_date
192185   , xet.transaction_date
192186   , xet.reference_num_1
192187   , xet.reference_num_2
192188   , xet.reference_num_3
192189   , xet.reference_num_4
192190   , xet.reference_char_1
192191   , xet.reference_char_2
192192   , xet.reference_char_3
192193   , xet.reference_char_4
192194   , xet.reference_date_1
192195   , xet.reference_date_2
192196   , xet.reference_date_3
192197   , xet.reference_date_4
192198   , xet.event_created_by
192199   , xet.budgetary_control_flag 
192200   , h1.DISTRIBUTION_TYPE    source_12
192201   , fvl12.meaning   source_12_meaning
192202   , h1.TRANSFER_TO_GL_INDICATOR    source_38
192203   , fvl38.meaning   source_38_meaning
192204   FROM xla_events_gt     xet 
192205   , CST_XLA_INV_HEADERS_V  h1
192206   , fnd_lookup_values    fvl12
192207   , fnd_lookup_values    fvl38
192208  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
192209    and xet.event_type_code = C_EVENT_TYPE_CODE
192210    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
192211    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
192212   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
192213   AND fvl12.view_application_id(+) = 700
192214   AND fvl12.language(+)            = USERENV('LANG')
192215      AND fvl38.lookup_type(+)         = 'YES_NO'
192216   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
192217   AND fvl38.view_application_id(+) = 0
192218   AND fvl38.language(+)            = USERENV('LANG')
192219   
192220  ORDER BY event_id
192221 ;
192222 
192223 
192224 --
192225 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
192226 IS
192227 SELECT /*+ leading(xet) cardinality(xet,1) */
192228 -- Event Type Code: UMISC_RCPT
192229 -- Event Class Code: USER_DEFINE
192230     xet.entity_id
192231    ,xet.legal_entity_id
192232    ,xet.entity_code
192233    ,xet.transaction_number
192234    ,xet.event_id
192235    ,xet.event_class_code
192236    ,xet.event_type_code
192237    ,xet.event_number
192238    ,xet.event_date
192239    ,xet.transaction_date
192240    ,xet.reference_num_1
192241    ,xet.reference_num_2
192242    ,xet.reference_num_3
192243    ,xet.reference_num_4
192244    ,xet.reference_char_1
192245    ,xet.reference_char_2
192246    ,xet.reference_char_3
192247    ,xet.reference_char_4
192248    ,xet.reference_date_1
192249    ,xet.reference_date_2
192250    ,xet.reference_date_3
192251    ,xet.reference_date_4
192252    ,xet.event_created_by
192253    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
192254   , l2.CODE_COMBINATION_ID    source_4
192255   , l2.DISTRIBUTION_IDENTIFIER    source_11
192256   , l2.CURRENCY_CODE    source_15
192257   , l2.ENTERED_AMOUNT    source_18
192258   , l2.CURRENCY_CONVERSION_DATE    source_19
192259   , l2.CURRENCY_CONVERSION_RATE    source_20
192260   , l2.CURRENCY_CONVERSION_TYPE    source_21
192261   , l2.ACCOUNTED_AMOUNT    source_22
192262   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
192263   FROM xla_events_gt     xet 
192264   , CST_XLA_INV_LINES_V  l2
192265  WHERE xet.event_id between x_first_event_id and x_last_event_id
192266    and xet.event_date between p_pad_start_date and p_pad_end_date
192267    and xet.event_type_code = C_EVENT_TYPE_CODE
192268    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
192269 ;
192270 
192271 --
192272 BEGIN
192273 IF g_log_enabled THEN
192274    l_log_module := C_DEFAULT_MODULE||'.EventType_290';
192275 END IF;
192276 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192277    trace
192278       (p_msg      => 'BEGIN of EventType_290'
192279       ,p_level    => C_LEVEL_PROCEDURE
192280       ,p_module   => l_log_module);
192281 END IF;
192282 
192283 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192284    trace
192285       (p_msg      => 'p_application_id = '||p_application_id||
192286                      ' - p_base_ledger_id = '||p_base_ledger_id||
192287                      ' - p_target_ledger_id  = '||p_target_ledger_id||
192288                      ' - p_language = '||p_language||
192289                      ' - p_currency_code = '||p_currency_code||
192290                      ' - p_sla_ledger_id = '||p_sla_ledger_id
192291       ,p_level    => C_LEVEL_STATEMENT
192292       ,p_module   => l_log_module);
192293 END IF;
192294 --
192295 -- initialze arrays
192296 --
192297 g_array_event.DELETE;
192298 l_rec_array_event := l_null_rec_array_event;
192299 --
192300 --------------------------------------
192301 -- 4262811 Initialze MPA Line Number
192302 --------------------------------------
192303 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
192304 
192305 --
192306 
192307 --
192308 OPEN header_cur;
192309 --
192310 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192311    trace
192312    (p_msg      => 'SQL - FETCH header_cur'
192313    ,p_level    => C_LEVEL_STATEMENT
192314    ,p_module   => l_log_module);
192315 END IF;
192316 --
192317 LOOP
192318 FETCH header_cur BULK COLLECT INTO
192319         l_array_entity_id
192320       , l_array_legal_entity_id
192321       , l_array_entity_code
192322       , l_array_transaction_num
192323       , l_array_event_id
192324       , l_array_class_code
192325       , l_array_event_type
192326       , l_array_event_number
192327       , l_array_event_date
192328       , l_array_transaction_date
192329       , l_array_reference_num_1
192330       , l_array_reference_num_2
192331       , l_array_reference_num_3
192332       , l_array_reference_num_4
192333       , l_array_reference_char_1
192334       , l_array_reference_char_2
192335       , l_array_reference_char_3
192336       , l_array_reference_char_4
192337       , l_array_reference_date_1
192338       , l_array_reference_date_2
192339       , l_array_reference_date_3
192340       , l_array_reference_date_4
192341       , l_array_event_created_by
192342       , l_array_budgetary_control_flag 
192343       , l_array_source_12
192344       , l_array_source_12_meaning
192345       , l_array_source_38
192346       , l_array_source_38_meaning
192347       LIMIT l_rows;
192348 --
192349 IF (C_LEVEL_EVENT >= g_log_level) THEN
192350    trace
192351    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
192352    ,p_level    => C_LEVEL_EVENT
192353    ,p_module   => l_log_module);
192354 END IF;
192355 --
192356 EXIT WHEN l_array_entity_id.COUNT = 0;
192357 
192358 -- initialize arrays
192359 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
192360 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
192361 
192362 --
192363 -- Bug 4458708
192364 --
192365 XLA_AE_LINES_PKG.g_LineNumber := 0;
192366 
192367 
192368 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
192369 g_last_hdr_idx := l_array_event_id.LAST;
192370 --
192371 -- loop for the headers. Each iteration is for each header extract row
192372 -- fetched in header cursor
192373 --
192374 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
192375 
192376 --
192377 -- set event info as cache for other routines to refer event attributes
192378 --
192379 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
192380    (p_application_id           => p_application_id
192381    ,p_primary_ledger_id        => p_primary_ledger_id
192382    ,p_base_ledger_id           => p_base_ledger_id
192383    ,p_target_ledger_id         => p_target_ledger_id
192384    ,p_entity_id                => l_array_entity_id(hdr_idx)
192385    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
192386    ,p_entity_code              => l_array_entity_code(hdr_idx)
192387    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
192388    ,p_event_id                 => l_array_event_id(hdr_idx)
192389    ,p_event_class_code         => l_array_class_code(hdr_idx)
192390    ,p_event_type_code          => l_array_event_type(hdr_idx)
192391    ,p_event_number             => l_array_event_number(hdr_idx)
192392    ,p_event_date               => l_array_event_date(hdr_idx)
192393    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
192394    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
192395    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
192396    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
192397    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
192398    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
192399    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
192400    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
192401    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
192402    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
192403    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
192404    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
192405    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
192406    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
192407    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
192408 
192409 --
192410 -- set the status of entry to C_VALID (0)
192411 --
192412 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
192413 
192414 --
192415 -- initialize a row for ae header
192416 --
192417 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
192418 
192419 l_event_id := l_array_event_id(hdr_idx);
192420 
192421 --
192422 -- storing the hdr_idx for event. May be used by line cursor.
192423 --
192424 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
192425 
192426 --
192427 -- store sources from header extract. This can be improved to
192428 -- store only those sources from header extract that may be used in lines
192429 --
192430 
192431 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
192432 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
192433 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
192434 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
192435 
192436 --
192437 -- initilaize the status of ae headers for diffrent balance types
192438 -- the status is initialised to C_NOT_CREATED (2)
192439 --
192440 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
192441 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
192442 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
192443 
192444 --
192445 -- call api to validate and store accounting attributes for header
192446 --
192447 
192448 ------------------------------------------------------------
192449 -- Accrual Reversal : to get date for Standard Source (NONE)
192450 ------------------------------------------------------------
192451 l_acc_rev_gl_date_source := NULL;
192452 
192453      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
192454       l_rec_acct_attrs.array_date_value(1) := 
192455 xla_ae_sources_pkg.GetSystemSourceDate(
192456    p_source_code           => 'XLA_REFERENCE_DATE_1'
192457  , p_source_type_code      => 'Y'
192458  , p_source_application_id =>  602
192459 );
192460      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
192461       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
192462 
192463 
192464 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
192465 
192466 XLA_AE_HEADER_PKG.SetJeCategoryName;
192467 
192468 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
192469 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
192470 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
192471 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
192472 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
192473 
192474 
192475 -- No header level analytical criteria
192476 
192477 --
192478 --accounting attribute enhancement, bug 3612931
192479 --
192480 l_trx_reversal_source := SUBSTR(NULL, 1,30);
192481 
192482 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
192483    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
192484 
192485    xla_accounting_err_pkg.build_message
192486       (p_appli_s_name            => 'XLA'
192487       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
192488       ,p_token_1                 => 'ACCT_ATTR_NAME'
192489       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
192490       ,p_token_2                 => 'PRODUCT_NAME'
192491       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
192492       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
192493       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
192494       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
192495 
192496 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
192497    --
192498    -- following sets the accounting attributes needed to reverse
192499    -- accounting for a distributeion
192500    --
192501    xla_ae_lines_pkg.SetTrxReversalAttrs
192502       (p_event_id              => l_event_id
192503       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
192504       ,p_trx_reversal_source   => l_trx_reversal_source);
192505 
192506 END IF;
192507 
192508 
192509 ----------------------------------------------------------------
192510 -- 4262811 -  update the header statuses to invalid in need be
192511 ----------------------------------------------------------------
192512 --
192513 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
192514 
192515 
192516   -----------------------------------------------
192517   -- No accrual reversal for the event class/type
192518   -----------------------------------------------
192519 ----------------------------------------------------------------
192520 
192521 --
192522 -- this ends the header loop iteration for one bulk fetch
192523 --
192524 END LOOP;
192525 
192526 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
192527 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
192528 
192529 --
192530 -- insert dummy rows into lines gt table that were created due to
192531 -- transaction reversals
192532 --
192533 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
192534    l_result := XLA_AE_LINES_PKG.InsertLines;
192535 END IF;
192536 
192537 --
192538 -- reset the temp_line_num for each set of events fetched from header
192539 -- cursor rather than doing it for each new event in line cursor
192540 -- Bug 3939231
192541 --
192542 xla_ae_lines_pkg.g_temp_line_num := 0;
192543 
192544 
192545 
192546 --
192547 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
192548 --
192549 --
192550 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192551 
192552       trace
192553          (p_msg      => 'SQL - FETCH line_cur'
192554          ,p_level    => C_LEVEL_STATEMENT
192555          ,p_module   => l_log_module);
192556 
192557 END IF;
192558 --
192559 --
192560 LOOP
192561   --
192562   FETCH line_cur BULK COLLECT INTO
192563         l_array_entity_id
192564       , l_array_legal_entity_id
192565       , l_array_entity_code
192566       , l_array_transaction_num
192567       , l_array_event_id
192568       , l_array_class_code
192569       , l_array_event_type
192570       , l_array_event_number
192571       , l_array_event_date
192572       , l_array_transaction_date
192573       , l_array_reference_num_1
192574       , l_array_reference_num_2
192575       , l_array_reference_num_3
192576       , l_array_reference_num_4
192577       , l_array_reference_char_1
192578       , l_array_reference_char_2
192579       , l_array_reference_char_3
192580       , l_array_reference_char_4
192581       , l_array_reference_date_1
192582       , l_array_reference_date_2
192583       , l_array_reference_date_3
192584       , l_array_reference_date_4
192585       , l_array_event_created_by
192586       , l_array_budgetary_control_flag
192587       , l_array_extract_line_num 
192588       , l_array_source_4
192589       , l_array_source_11
192590       , l_array_source_15
192591       , l_array_source_18
192592       , l_array_source_19
192593       , l_array_source_20
192594       , l_array_source_21
192595       , l_array_source_22
192596       , l_array_source_24
192597       LIMIT l_rows;
192598 
192599   --
192600   IF (C_LEVEL_EVENT >= g_log_level) THEN
192601             trace
192602                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
192603                ,p_level    => C_LEVEL_EVENT
192604                ,p_module   => l_log_module);
192605   END IF;
192606   --
192607   EXIT WHEN l_array_entity_id.count = 0;
192608 
192609   XLA_AE_LINES_PKG.g_rec_lines := null;
192610 
192611 --
192612 -- Bug 4458708
192613 --
192614 XLA_AE_LINES_PKG.g_LineNumber := 0;
192615 --
192616 --
192617 
192618 FOR Idx IN 1..l_array_event_id.count LOOP
192619    --
192620    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
192621    --
192622    l_event_id := l_array_event_id(idx);  -- 5648433
192623 
192624    --
192625    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
192626    --
192627 
192628    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
192629              (g_array_event(l_event_id).array_value_num('header_index'))
192630          ,'N'
192631          ) <> 'Y'
192632    THEN
192633       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192634          trace
192635             (p_msg      => 'Trancaction revesal option is not Y '
192636             ,p_level    => C_LEVEL_STATEMENT
192637             ,p_module   => l_log_module);
192638       END IF;
192639 
192640 --
192641 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
192642 --
192643 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
192644 --
192645 -- set event info as cache for other routines to refer event attributes
192646 --
192647 
192648 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
192649    l_previous_event_id := l_event_id;
192650 
192651    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
192652       (p_application_id           => p_application_id
192653       ,p_primary_ledger_id        => p_primary_ledger_id
192654       ,p_base_ledger_id           => p_base_ledger_id
192655       ,p_target_ledger_id         => p_target_ledger_id
192656       ,p_entity_id                => l_array_entity_id(Idx)
192657       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
192658       ,p_entity_code              => l_array_entity_code(Idx)
192659       ,p_transaction_num          => l_array_transaction_num(Idx)
192660       ,p_event_id                 => l_array_event_id(Idx)
192661       ,p_event_class_code         => l_array_class_code(Idx)
192662       ,p_event_type_code          => l_array_event_type(Idx)
192663       ,p_event_number             => l_array_event_number(Idx)
192664       ,p_event_date               => l_array_event_date(Idx)
192665       ,p_transaction_date         => l_array_transaction_date(Idx)
192666       ,p_reference_num_1          => l_array_reference_num_1(Idx)
192667       ,p_reference_num_2          => l_array_reference_num_2(Idx)
192668       ,p_reference_num_3          => l_array_reference_num_3(Idx)
192669       ,p_reference_num_4          => l_array_reference_num_4(Idx)
192670       ,p_reference_char_1         => l_array_reference_char_1(Idx)
192671       ,p_reference_char_2         => l_array_reference_char_2(Idx)
192672       ,p_reference_char_3         => l_array_reference_char_3(Idx)
192673       ,p_reference_char_4         => l_array_reference_char_4(Idx)
192674       ,p_reference_date_1         => l_array_reference_date_1(Idx)
192675       ,p_reference_date_2         => l_array_reference_date_2(Idx)
192676       ,p_reference_date_3         => l_array_reference_date_3(Idx)
192677       ,p_reference_date_4         => l_array_reference_date_4(Idx)
192678       ,p_event_created_by         => l_array_event_created_by(Idx)
192679       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
192680        --
192681 END IF;
192682 
192683 
192684 
192685 --
192686 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
192687 
192688 l_acct_reversal_source := SUBSTR(NULL, 1,30);
192689 
192690 IF l_continue_with_lines THEN
192691    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
192692       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
192693 
192694       xla_accounting_err_pkg.build_message
192695          (p_appli_s_name            => 'XLA'
192696          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
192697          ,p_token_1                 => 'LINE_NUMBER'
192698          ,p_value_1                 => l_array_extract_line_num(Idx)
192699          ,p_token_2                 => 'PRODUCT_NAME'
192700          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
192701          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
192702          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
192703          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
192704 
192705    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
192706       --
192707       -- following sets the accounting attributes needed to reverse
192708       -- accounting for a distributeion
192709       --
192710 
192711       --
192712       -- 5217187
192713       --
192714       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
192715       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
192716                                        g_array_event(l_event_id).array_value_num('header_index'));
192717       --
192718       --
192719 
192720       -- No reversal code generated
192721 
192722       xla_ae_lines_pkg.SetAcctReversalAttrs
192723          (p_event_id             => l_event_id
192724          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
192725          ,p_calculate_acctd_flag => l_calculate_acctd_flag
192726          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
192727    END IF;
192728 
192729    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
192730        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
192731 
192732 --
192733 AcctLineType_43 (
192734  p_application_id  => p_application_id
192735  ,p_event_id     => l_event_id
192736  ,p_calculate_acctd_flag => l_calculate_acctd_flag
192737  ,p_calculate_g_l_flag => l_calculate_g_l_flag
192738  ,p_actual_flag => l_actual_flag
192739  ,p_balance_type_code => l_balance_type_code
192740  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
192741  
192742  , p_source_4 => l_array_source_4(Idx)
192743  , p_source_11 => l_array_source_11(Idx)
192744  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
192745  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
192746  , p_source_15 => l_array_source_15(Idx)
192747  , p_source_18 => l_array_source_18(Idx)
192748  , p_source_19 => l_array_source_19(Idx)
192749  , p_source_20 => l_array_source_20(Idx)
192750  , p_source_21 => l_array_source_21(Idx)
192751  , p_source_22 => l_array_source_22(Idx)
192752  , p_source_24 => l_array_source_24(Idx)
192753  );
192754 If(l_balance_type_code = 'A') THEN
192755   l_actual_gain_loss_ref := l_gain_or_loss_ref;
192756 END IF;
192757 
192758 --
192759 
192760 
192761 --
192762 AcctLineType_134 (
192763  p_application_id  => p_application_id
192764  ,p_event_id     => l_event_id
192765  ,p_calculate_acctd_flag => l_calculate_acctd_flag
192766  ,p_calculate_g_l_flag => l_calculate_g_l_flag
192767  ,p_actual_flag => l_actual_flag
192768  ,p_balance_type_code => l_balance_type_code
192769  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
192770  
192771  , p_source_4 => l_array_source_4(Idx)
192772  , p_source_11 => l_array_source_11(Idx)
192773  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
192774  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
192775  , p_source_15 => l_array_source_15(Idx)
192776  , p_source_18 => l_array_source_18(Idx)
192777  , p_source_19 => l_array_source_19(Idx)
192778  , p_source_20 => l_array_source_20(Idx)
192779  , p_source_21 => l_array_source_21(Idx)
192780  , p_source_22 => l_array_source_22(Idx)
192781  , p_source_24 => l_array_source_24(Idx)
192782  );
192783 If(l_balance_type_code = 'A') THEN
192784   l_actual_gain_loss_ref := l_gain_or_loss_ref;
192785 END IF;
192786 
192787 --
192788 
192789 
192790 --
192791 AcctLineType_195 (
192792  p_application_id  => p_application_id
192793  ,p_event_id     => l_event_id
192794  ,p_calculate_acctd_flag => l_calculate_acctd_flag
192795  ,p_calculate_g_l_flag => l_calculate_g_l_flag
192796  ,p_actual_flag => l_actual_flag
192797  ,p_balance_type_code => l_balance_type_code
192798  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
192799  
192800  , p_source_4 => l_array_source_4(Idx)
192801  , p_source_11 => l_array_source_11(Idx)
192802  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
192803  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
192804  , p_source_15 => l_array_source_15(Idx)
192805  , p_source_18 => l_array_source_18(Idx)
192806  , p_source_19 => l_array_source_19(Idx)
192807  , p_source_20 => l_array_source_20(Idx)
192808  , p_source_21 => l_array_source_21(Idx)
192809  , p_source_22 => l_array_source_22(Idx)
192810  , p_source_24 => l_array_source_24(Idx)
192811  );
192812 If(l_balance_type_code = 'A') THEN
192813   l_actual_gain_loss_ref := l_gain_or_loss_ref;
192814 END IF;
192815 
192816 --
192817 
192818       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
192819       -- or secondary ledger that has different currency with primary
192820       -- or alc that is calculated by sla
192821       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
192822             (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'))
192823 
192824 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
192825 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
192826           AND (l_actual_flag = 'A')) THEN
192827         XLA_AE_LINES_PKG.CreateGainOrLossLines(
192828           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
192829          ,p_application_id   => p_application_id
192830          ,p_amb_context_code => 'DEFAULT'
192831          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
192832          ,p_event_class_code => C_EVENT_CLASS_CODE
192833          ,p_event_type_code  => C_EVENT_TYPE_CODE
192834          
192835          ,p_gain_ccid        => -1
192836          ,p_loss_ccid        => -1
192837 
192838          ,p_actual_flag      => l_actual_flag
192839          ,p_enc_flag         => null
192840          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
192841          ,p_enc_g_l_ref      => null
192842          );
192843       END IF;
192844    END IF;
192845 END IF;
192846 
192847    ELSE
192848       --
192849       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
192850       --
192851       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192852          trace
192853             (p_msg      => 'Trancaction revesal option is Y'
192854             ,p_level    => C_LEVEL_STATEMENT
192855             ,p_module   => l_log_module);
192856       END IF;
192857    END IF;
192858 
192859 END LOOP;
192860 l_result := XLA_AE_LINES_PKG.InsertLines ;
192861 end loop;
192862 close line_cur;
192863 
192864 
192865 --
192866 -- insert headers into xla_ae_headers_gt table
192867 --
192868 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
192869 
192870 -- insert into errors table here.
192871 
192872 END LOOP;
192873 
192874 --
192875 -- 4865292
192876 --
192877 -- Compare g_hdr_extract_count with event count in
192878 -- CreateHeadersAndLines.
192879 --
192880 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
192881 
192882 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192883    trace (p_msg     => '# rows extracted from header extract objects '
192884                     || ' (running total): '
192885                     || g_hdr_extract_count
192886          ,p_level   => C_LEVEL_STATEMENT
192887          ,p_module  => l_log_module);
192888 END IF;
192889 
192890 CLOSE header_cur;
192891 --
192892 
192893 --
192894 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192895    trace
192896       (p_msg      => 'END of EventType_290'
192897       ,p_level    => C_LEVEL_PROCEDURE
192898       ,p_module   => l_log_module);
192899 END IF;
192900 --
192901 RETURN l_result;
192902 EXCEPTION
192903 WHEN xla_exceptions_pkg.application_exception THEN
192904    
192905 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
192906 
192907    
192908 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
192909 
192910    RAISE;
192911 
192912 WHEN NO_DATA_FOUND THEN
192913 
192914 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
192915 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
192916 
192917 FOR header_record IN header_cur
192918 LOOP
192919     l_array_header_events(header_record.event_id) := header_record.event_id;
192920 END LOOP;
192921 
192922 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
192923 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
192924 
192925 fnd_file.put_line(fnd_file.LOG, '                    ');
192926 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
192927 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
192928 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
192929 
192930 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
192931 LOOP
192932 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
192933 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
192934         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
192935 	END IF;
192936 END LOOP;
192937 
192938 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
192939 fnd_file.put_line(fnd_file.LOG, '                    ');
192940 
192941 
192942 xla_exceptions_pkg.raise_message
192943       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_290');
192944 
192945 
192946 WHEN OTHERS THEN
192947    xla_exceptions_pkg.raise_message
192948       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_290');
192949 END EventType_290;
192950 --
192951 
192952 ---------------------------------------
192953 --
192954 -- PRIVATE PROCEDURE
192955 --         insert_sources_291
192956 --
192957 ----------------------------------------
192958 --
192959 PROCEDURE insert_sources_291(
192960                                 p_target_ledger_id       IN NUMBER
192961                               , p_language               IN VARCHAR2
192962                               , p_sla_ledger_id          IN NUMBER
192963                               , p_pad_start_date         IN DATE
192964                               , p_pad_end_date           IN DATE
192965                          )
192966 IS
192967 
192968 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USUB_TXFR';
192969 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
192970 p_apps_owner                   VARCHAR2(30);
192971 l_log_module                   VARCHAR2(240);
192972 BEGIN
192973 IF g_log_enabled THEN
192974       l_log_module := C_DEFAULT_MODULE||'.insert_sources_291';
192975 END IF;
192976 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192977 
192978       trace
192979          (p_msg      => 'BEGIN of insert_sources_291'
192980          ,p_level    => C_LEVEL_PROCEDURE
192981          ,p_module   => l_log_module);
192982 
192983 END IF;
192984 
192985 -- select APPS owner
192986 SELECT oracle_username
192987   INTO p_apps_owner
192988   FROM fnd_oracle_userid
192989  WHERE read_only_flag = 'U'
192990 ;
192991 
192992 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192993       trace
192994          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
192995                         ' - p_language = '||p_language||
192996                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
192997                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
192998                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
192999                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
193000          ,p_level    => C_LEVEL_STATEMENT
193001          ,p_module   => l_log_module);
193002 END IF;
193003 
193004 
193005 --
193006 INSERT INTO xla_diag_sources --hdr1
193007 (
193008         event_id
193009       , ledger_id
193010       , sla_ledger_id
193011       , description_language
193012       , object_name
193013       , object_type_code
193014       , line_number
193015       , source_application_id
193016       , source_type_code
193017       , source_code
193018       , source_value
193019       , source_meaning
193020       , created_by
193021       , creation_date
193022       , last_update_date
193023       , last_updated_by
193024       , last_update_login
193025       , program_update_date
193026       , program_application_id
193027       , program_id
193028       , request_id
193029 )
193030 SELECT
193031         event_id
193032       , p_target_ledger_id
193033       , p_sla_ledger_id
193034       , p_language
193035       , object_name
193036       , object_type_code
193037       , line_number
193038       , source_application_id
193039       , source_type_code
193040       , source_code
193041       , SUBSTR(source_value ,1,1996)
193042       , SUBSTR(source_meaning,1,200)
193043       , xla_environment_pkg.g_Usr_Id
193044       , TRUNC(SYSDATE)
193045       , TRUNC(SYSDATE)
193046       , xla_environment_pkg.g_Usr_Id
193047       , xla_environment_pkg.g_Login_Id
193048       , TRUNC(SYSDATE)
193049       , xla_environment_pkg.g_Prog_Appl_Id
193050       , xla_environment_pkg.g_Prog_Id
193051       , xla_environment_pkg.g_Req_Id
193052   FROM (
193053        SELECT xet.event_id                  event_id
193054             , 0                             line_number
193055             , CASE r
193056                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
193057                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
193058                 
193059                ELSE null
193060               END                           object_name
193061             , CASE r
193062                 WHEN 1 THEN 'HEADER' 
193063                 WHEN 2 THEN 'HEADER' 
193064                 
193065                 ELSE null
193066               END                           object_type_code
193067             , CASE r
193068                 WHEN 1 THEN '707' 
193069                 WHEN 2 THEN '707' 
193070                 
193071                 ELSE null
193072               END                           source_application_id
193073             , 'S'             source_type_code
193074             , CASE r
193075                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
193076                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
193077                 
193078                 ELSE null
193079               END                           source_code
193080             , CASE r
193081                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
193082                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
193083                 
193084                 ELSE null
193085               END                           source_value
193086             , CASE r
193087                 WHEN 1 THEN fvl12.meaning
193088                 WHEN 2 THEN fvl38.meaning
193089                 
193090                 ELSE null
193091               END               source_meaning
193092         FROM xla_events_gt     xet  
193093       , CST_XLA_INV_HEADERS_V  h1
193094   , fnd_lookup_values    fvl12
193095   , fnd_lookup_values    fvl38
193096             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
193097        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
193098          AND xet.event_type_code = C_EVENT_TYPE_CODE
193099             AND h1.event_id = xet.event_id
193100    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
193101   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
193102   AND fvl12.view_application_id(+) = 700
193103   AND fvl12.language(+)            = USERENV('LANG')
193104      AND fvl38.lookup_type(+)         = 'YES_NO'
193105   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
193106   AND fvl38.view_application_id(+) = 0
193107   AND fvl38.language(+)            = USERENV('LANG')
193108   
193109 )
193110 ;
193111 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193112 
193113       trace
193114          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
193115          ,p_level    => C_LEVEL_STATEMENT
193116          ,p_module   => l_log_module);
193117 
193118 END IF;
193119 --
193120 
193121 
193122 
193123 --
193124 INSERT INTO xla_diag_sources --line1
193125 (
193126         event_id
193127       , ledger_id
193128       , sla_ledger_id
193129       , description_language
193130       , object_name
193131       , object_type_code
193132       , line_number
193133       , source_application_id
193134       , source_type_code
193135       , source_code
193136       , source_value
193137       , source_meaning
193138       , created_by
193139       , creation_date
193140       , last_update_date
193141       , last_updated_by
193142       , last_update_login
193143       , program_update_date
193144       , program_application_id
193145       , program_id
193146       , request_id
193147 )
193148 SELECT  event_id
193149       , p_target_ledger_id
193150       , p_sla_ledger_id
193151       , p_language
193152       , object_name
193153       , object_type_code
193154       , line_number
193155       , source_application_id
193156       , source_type_code
193157       , source_code
193158       , SUBSTR(source_value,1,1996)
193159       , SUBSTR(source_meaning,1,200)
193160       , xla_environment_pkg.g_Usr_Id
193161       , TRUNC(SYSDATE)
193162       , TRUNC(SYSDATE)
193163       , xla_environment_pkg.g_Usr_Id
193164       , xla_environment_pkg.g_Login_Id
193165       , TRUNC(SYSDATE)
193166       , xla_environment_pkg.g_Prog_Appl_Id
193167       , xla_environment_pkg.g_Prog_Id
193168       , xla_environment_pkg.g_Req_Id
193169   FROM (
193170        SELECT xet.event_id                  event_id
193171             , l2.line_number                 line_number
193172             , CASE r
193173                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
193174                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
193175                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
193176                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
193177                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
193178                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
193179                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
193180                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
193181                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
193182                 
193183                ELSE null
193184               END                           object_name
193185             , CASE r
193186                 WHEN 1 THEN 'LINE' 
193187                 WHEN 2 THEN 'LINE' 
193188                 WHEN 3 THEN 'LINE' 
193189                 WHEN 4 THEN 'LINE' 
193190                 WHEN 5 THEN 'LINE' 
193191                 WHEN 6 THEN 'LINE' 
193192                 WHEN 7 THEN 'LINE' 
193193                 WHEN 8 THEN 'LINE' 
193194                 WHEN 9 THEN 'LINE' 
193195                 
193196                 ELSE null
193197               END                           object_type_code
193198             , CASE r
193199                 WHEN 1 THEN '707' 
193200                 WHEN 2 THEN '707' 
193201                 WHEN 3 THEN '707' 
193202                 WHEN 4 THEN '707' 
193203                 WHEN 5 THEN '707' 
193204                 WHEN 6 THEN '707' 
193205                 WHEN 7 THEN '707' 
193206                 WHEN 8 THEN '707' 
193207                 WHEN 9 THEN '707' 
193208                 
193209                 ELSE null
193210               END                           source_application_id
193211             , 'S'             source_type_code
193212             , CASE r
193213                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
193214                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
193215                 WHEN 3 THEN 'CURRENCY_CODE' 
193216                 WHEN 4 THEN 'ENTERED_AMOUNT' 
193217                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
193218                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
193219                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
193220                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
193221                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
193222                 
193223                 ELSE null
193224               END                           source_code
193225             , CASE r
193226                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
193227                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
193228                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
193229                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
193230                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
193231                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
193232                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
193233                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
193234                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
193235                 
193236                 ELSE null
193237               END                           source_value
193238             , null              source_meaning
193239          FROM  xla_events_gt     xet  
193240         , CST_XLA_INV_LINES_V  l2
193241             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
193242         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
193243           AND xet.event_type_code = C_EVENT_TYPE_CODE
193244             AND l2.event_id          = xet.event_id
193245 
193246 )
193247 ;
193248 --
193249 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193250 
193251       trace
193252          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
193253          ,p_level    => C_LEVEL_STATEMENT
193254          ,p_module   => l_log_module);
193255 
193256 END IF;
193257 
193258 
193259 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
193260       trace
193261          (p_msg      => 'END of insert_sources_291'
193262          ,p_level    => C_LEVEL_PROCEDURE
193263          ,p_module   => l_log_module);
193264 END IF;
193265 EXCEPTION
193266   WHEN xla_exceptions_pkg.application_exception THEN
193267       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
193268             trace
193269                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
193270                ,p_level    => C_LEVEL_EXCEPTION
193271                ,p_module   => l_log_module);
193272       END IF;
193273       RAISE;
193274   WHEN OTHERS THEN
193275       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
193276             trace
193277                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
193278                ,p_level    => C_LEVEL_EXCEPTION
193279                ,p_module   => l_log_module);
193280        END IF;
193281        xla_exceptions_pkg.raise_message
193282            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_291');
193283 END insert_sources_291;
193284 --
193285 
193286 ---------------------------------------
193287 --
193288 -- PRIVATE FUNCTION
193289 --         EventType_291
193290 --
193291 ----------------------------------------
193292 --
193293 FUNCTION EventType_291
193294        (p_application_id         IN NUMBER
193295        ,p_base_ledger_id         IN NUMBER
193296        ,p_target_ledger_id       IN NUMBER
193297        ,p_language               IN VARCHAR2
193298        ,p_currency_code          IN VARCHAR2
193299        ,p_sla_ledger_id          IN NUMBER
193300        ,p_pad_start_date         IN DATE
193301        ,p_pad_end_date           IN DATE
193302        ,p_primary_ledger_id      IN NUMBER)
193303 RETURN BOOLEAN IS
193304 --
193305 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USUB_TXFR';
193306 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
193307 
193308 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
193309 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
193310 --
193311 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
193312 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
193313 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
193314 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
193315 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
193316 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
193317 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
193318 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
193319 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
193320 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
193321 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
193322 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
193323 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
193324 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
193325 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
193326 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
193327 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
193328 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
193329 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
193330 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
193331 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
193332 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
193333 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
193334 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
193335 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
193336 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
193337 
193338 l_event_id                             NUMBER;
193339 l_previous_event_id                    NUMBER;
193340 l_first_event_id                       NUMBER;
193341 l_last_event_id                        NUMBER;
193342 
193343 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
193344 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
193345 --
193346 --
193347 l_result                    BOOLEAN := TRUE;
193348 l_rows                      NUMBER  := 1000;
193349 l_event_type_name           VARCHAR2(80) := 'User-defined Subinventory Transfer';
193350 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
193351 l_description               VARCHAR2(4000);
193352 l_transaction_reversal      NUMBER;
193353 l_ae_header_id              NUMBER;
193354 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
193355 l_log_module                VARCHAR2(240);
193356 --
193357 l_acct_reversal_source      VARCHAR2(30);
193358 l_trx_reversal_source       VARCHAR2(30);
193359 
193360 l_continue_with_lines       BOOLEAN := TRUE;
193361 --
193362 l_acc_rev_gl_date_source    DATE;                      -- 4262811
193363 --
193364 type t_array_event_id is table of number index by binary_integer;
193365 
193366 l_rec_array_event                    t_rec_array_event;
193367 l_null_rec_array_event               t_rec_array_event;
193368 l_array_ae_header_id                 xla_number_array_type;
193369 l_actual_flag                        VARCHAR2(1) := NULL;
193370 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
193371 l_balance_type_code                  VARCHAR2(1) :=NULL;
193372 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
193373 
193374 --
193375 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
193376 --
193377 
193378 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
193379 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
193380 
193381 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
193382 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
193383 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
193384 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
193385 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
193386 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
193387 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
193388 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
193389 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
193390 
193391 l_array_source_12              t_array_source_12;
193392 l_array_source_12_meaning      t_array_lookup_meaning;
193393 l_array_source_38              t_array_source_38;
193394 l_array_source_38_meaning      t_array_lookup_meaning;
193395 
193396 l_array_source_4      t_array_source_4;
193397 l_array_source_11      t_array_source_11;
193398 l_array_source_15      t_array_source_15;
193399 l_array_source_18      t_array_source_18;
193400 l_array_source_19      t_array_source_19;
193401 l_array_source_20      t_array_source_20;
193402 l_array_source_21      t_array_source_21;
193403 l_array_source_22      t_array_source_22;
193404 l_array_source_24      t_array_source_24;
193405 
193406 --
193407 CURSOR header_cur
193408 IS
193409 SELECT /*+ leading(xet) cardinality(xet,1) */
193410 -- Event Type Code: USUB_TXFR
193411 -- Event Class Code: USER_DEFINE
193412     xet.entity_id
193413   , xet.legal_entity_id
193414   , xet.entity_code
193415   , xet.transaction_number
193416   , xet.event_id
193417   , xet.event_class_code
193418   , xet.event_type_code
193419   , xet.event_number
193420   , xet.event_date
193421   , xet.transaction_date
193422   , xet.reference_num_1
193423   , xet.reference_num_2
193424   , xet.reference_num_3
193425   , xet.reference_num_4
193426   , xet.reference_char_1
193427   , xet.reference_char_2
193428   , xet.reference_char_3
193429   , xet.reference_char_4
193430   , xet.reference_date_1
193431   , xet.reference_date_2
193432   , xet.reference_date_3
193433   , xet.reference_date_4
193434   , xet.event_created_by
193435   , xet.budgetary_control_flag 
193436   , h1.DISTRIBUTION_TYPE    source_12
193437   , fvl12.meaning   source_12_meaning
193438   , h1.TRANSFER_TO_GL_INDICATOR    source_38
193439   , fvl38.meaning   source_38_meaning
193440   FROM xla_events_gt     xet 
193441   , CST_XLA_INV_HEADERS_V  h1
193442   , fnd_lookup_values    fvl12
193443   , fnd_lookup_values    fvl38
193444  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
193445    and xet.event_type_code = C_EVENT_TYPE_CODE
193446    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
193447    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
193448   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
193449   AND fvl12.view_application_id(+) = 700
193450   AND fvl12.language(+)            = USERENV('LANG')
193451      AND fvl38.lookup_type(+)         = 'YES_NO'
193452   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
193453   AND fvl38.view_application_id(+) = 0
193454   AND fvl38.language(+)            = USERENV('LANG')
193455   
193456  ORDER BY event_id
193457 ;
193458 
193459 
193460 --
193461 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
193462 IS
193463 SELECT /*+ leading(xet) cardinality(xet,1) */
193464 -- Event Type Code: USUB_TXFR
193465 -- Event Class Code: USER_DEFINE
193466     xet.entity_id
193467    ,xet.legal_entity_id
193468    ,xet.entity_code
193469    ,xet.transaction_number
193470    ,xet.event_id
193471    ,xet.event_class_code
193472    ,xet.event_type_code
193473    ,xet.event_number
193474    ,xet.event_date
193475    ,xet.transaction_date
193476    ,xet.reference_num_1
193477    ,xet.reference_num_2
193478    ,xet.reference_num_3
193479    ,xet.reference_num_4
193480    ,xet.reference_char_1
193481    ,xet.reference_char_2
193482    ,xet.reference_char_3
193483    ,xet.reference_char_4
193484    ,xet.reference_date_1
193485    ,xet.reference_date_2
193486    ,xet.reference_date_3
193487    ,xet.reference_date_4
193488    ,xet.event_created_by
193489    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
193490   , l2.CODE_COMBINATION_ID    source_4
193491   , l2.DISTRIBUTION_IDENTIFIER    source_11
193492   , l2.CURRENCY_CODE    source_15
193493   , l2.ENTERED_AMOUNT    source_18
193494   , l2.CURRENCY_CONVERSION_DATE    source_19
193495   , l2.CURRENCY_CONVERSION_RATE    source_20
193496   , l2.CURRENCY_CONVERSION_TYPE    source_21
193497   , l2.ACCOUNTED_AMOUNT    source_22
193498   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
193499   FROM xla_events_gt     xet 
193500   , CST_XLA_INV_LINES_V  l2
193501  WHERE xet.event_id between x_first_event_id and x_last_event_id
193502    and xet.event_date between p_pad_start_date and p_pad_end_date
193503    and xet.event_type_code = C_EVENT_TYPE_CODE
193504    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
193505 ;
193506 
193507 --
193508 BEGIN
193509 IF g_log_enabled THEN
193510    l_log_module := C_DEFAULT_MODULE||'.EventType_291';
193511 END IF;
193512 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
193513    trace
193514       (p_msg      => 'BEGIN of EventType_291'
193515       ,p_level    => C_LEVEL_PROCEDURE
193516       ,p_module   => l_log_module);
193517 END IF;
193518 
193519 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193520    trace
193521       (p_msg      => 'p_application_id = '||p_application_id||
193522                      ' - p_base_ledger_id = '||p_base_ledger_id||
193523                      ' - p_target_ledger_id  = '||p_target_ledger_id||
193524                      ' - p_language = '||p_language||
193525                      ' - p_currency_code = '||p_currency_code||
193526                      ' - p_sla_ledger_id = '||p_sla_ledger_id
193527       ,p_level    => C_LEVEL_STATEMENT
193528       ,p_module   => l_log_module);
193529 END IF;
193530 --
193531 -- initialze arrays
193532 --
193533 g_array_event.DELETE;
193534 l_rec_array_event := l_null_rec_array_event;
193535 --
193536 --------------------------------------
193537 -- 4262811 Initialze MPA Line Number
193538 --------------------------------------
193539 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
193540 
193541 --
193542 
193543 --
193544 OPEN header_cur;
193545 --
193546 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193547    trace
193548    (p_msg      => 'SQL - FETCH header_cur'
193549    ,p_level    => C_LEVEL_STATEMENT
193550    ,p_module   => l_log_module);
193551 END IF;
193552 --
193553 LOOP
193554 FETCH header_cur BULK COLLECT INTO
193555         l_array_entity_id
193556       , l_array_legal_entity_id
193557       , l_array_entity_code
193558       , l_array_transaction_num
193559       , l_array_event_id
193560       , l_array_class_code
193561       , l_array_event_type
193562       , l_array_event_number
193563       , l_array_event_date
193564       , l_array_transaction_date
193565       , l_array_reference_num_1
193566       , l_array_reference_num_2
193567       , l_array_reference_num_3
193568       , l_array_reference_num_4
193569       , l_array_reference_char_1
193570       , l_array_reference_char_2
193571       , l_array_reference_char_3
193572       , l_array_reference_char_4
193573       , l_array_reference_date_1
193574       , l_array_reference_date_2
193575       , l_array_reference_date_3
193576       , l_array_reference_date_4
193577       , l_array_event_created_by
193578       , l_array_budgetary_control_flag 
193579       , l_array_source_12
193580       , l_array_source_12_meaning
193581       , l_array_source_38
193582       , l_array_source_38_meaning
193583       LIMIT l_rows;
193584 --
193585 IF (C_LEVEL_EVENT >= g_log_level) THEN
193586    trace
193587    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
193588    ,p_level    => C_LEVEL_EVENT
193589    ,p_module   => l_log_module);
193590 END IF;
193591 --
193592 EXIT WHEN l_array_entity_id.COUNT = 0;
193593 
193594 -- initialize arrays
193595 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
193596 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
193597 
193598 --
193599 -- Bug 4458708
193600 --
193601 XLA_AE_LINES_PKG.g_LineNumber := 0;
193602 
193603 
193604 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
193605 g_last_hdr_idx := l_array_event_id.LAST;
193606 --
193607 -- loop for the headers. Each iteration is for each header extract row
193608 -- fetched in header cursor
193609 --
193610 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
193611 
193612 --
193613 -- set event info as cache for other routines to refer event attributes
193614 --
193615 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
193616    (p_application_id           => p_application_id
193617    ,p_primary_ledger_id        => p_primary_ledger_id
193618    ,p_base_ledger_id           => p_base_ledger_id
193619    ,p_target_ledger_id         => p_target_ledger_id
193620    ,p_entity_id                => l_array_entity_id(hdr_idx)
193621    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
193622    ,p_entity_code              => l_array_entity_code(hdr_idx)
193623    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
193624    ,p_event_id                 => l_array_event_id(hdr_idx)
193625    ,p_event_class_code         => l_array_class_code(hdr_idx)
193626    ,p_event_type_code          => l_array_event_type(hdr_idx)
193627    ,p_event_number             => l_array_event_number(hdr_idx)
193628    ,p_event_date               => l_array_event_date(hdr_idx)
193629    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
193630    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
193631    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
193632    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
193633    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
193634    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
193635    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
193636    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
193637    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
193638    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
193639    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
193640    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
193641    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
193642    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
193643    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
193644 
193645 --
193646 -- set the status of entry to C_VALID (0)
193647 --
193648 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
193649 
193650 --
193651 -- initialize a row for ae header
193652 --
193653 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
193654 
193655 l_event_id := l_array_event_id(hdr_idx);
193656 
193657 --
193658 -- storing the hdr_idx for event. May be used by line cursor.
193659 --
193660 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
193661 
193662 --
193663 -- store sources from header extract. This can be improved to
193664 -- store only those sources from header extract that may be used in lines
193665 --
193666 
193667 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
193668 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
193669 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
193670 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
193671 
193672 --
193673 -- initilaize the status of ae headers for diffrent balance types
193674 -- the status is initialised to C_NOT_CREATED (2)
193675 --
193676 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
193677 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
193678 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
193679 
193680 --
193681 -- call api to validate and store accounting attributes for header
193682 --
193683 
193684 ------------------------------------------------------------
193685 -- Accrual Reversal : to get date for Standard Source (NONE)
193686 ------------------------------------------------------------
193687 l_acc_rev_gl_date_source := NULL;
193688 
193689      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
193690       l_rec_acct_attrs.array_date_value(1) := 
193691 xla_ae_sources_pkg.GetSystemSourceDate(
193692    p_source_code           => 'XLA_REFERENCE_DATE_1'
193693  , p_source_type_code      => 'Y'
193694  , p_source_application_id =>  602
193695 );
193696      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
193697       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
193698 
193699 
193700 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
193701 
193702 XLA_AE_HEADER_PKG.SetJeCategoryName;
193703 
193704 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
193705 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
193706 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
193707 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
193708 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
193709 
193710 
193711 -- No header level analytical criteria
193712 
193713 --
193714 --accounting attribute enhancement, bug 3612931
193715 --
193716 l_trx_reversal_source := SUBSTR(NULL, 1,30);
193717 
193718 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
193719    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
193720 
193721    xla_accounting_err_pkg.build_message
193722       (p_appli_s_name            => 'XLA'
193723       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
193724       ,p_token_1                 => 'ACCT_ATTR_NAME'
193725       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
193726       ,p_token_2                 => 'PRODUCT_NAME'
193727       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
193728       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
193729       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
193730       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
193731 
193732 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
193733    --
193734    -- following sets the accounting attributes needed to reverse
193735    -- accounting for a distributeion
193736    --
193737    xla_ae_lines_pkg.SetTrxReversalAttrs
193738       (p_event_id              => l_event_id
193739       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
193740       ,p_trx_reversal_source   => l_trx_reversal_source);
193741 
193742 END IF;
193743 
193744 
193745 ----------------------------------------------------------------
193746 -- 4262811 -  update the header statuses to invalid in need be
193747 ----------------------------------------------------------------
193748 --
193749 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
193750 
193751 
193752   -----------------------------------------------
193753   -- No accrual reversal for the event class/type
193754   -----------------------------------------------
193755 ----------------------------------------------------------------
193756 
193757 --
193758 -- this ends the header loop iteration for one bulk fetch
193759 --
193760 END LOOP;
193761 
193762 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
193763 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
193764 
193765 --
193766 -- insert dummy rows into lines gt table that were created due to
193767 -- transaction reversals
193768 --
193769 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
193770    l_result := XLA_AE_LINES_PKG.InsertLines;
193771 END IF;
193772 
193773 --
193774 -- reset the temp_line_num for each set of events fetched from header
193775 -- cursor rather than doing it for each new event in line cursor
193776 -- Bug 3939231
193777 --
193778 xla_ae_lines_pkg.g_temp_line_num := 0;
193779 
193780 
193781 
193782 --
193783 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
193784 --
193785 --
193786 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193787 
193788       trace
193789          (p_msg      => 'SQL - FETCH line_cur'
193790          ,p_level    => C_LEVEL_STATEMENT
193791          ,p_module   => l_log_module);
193792 
193793 END IF;
193794 --
193795 --
193796 LOOP
193797   --
193798   FETCH line_cur BULK COLLECT INTO
193799         l_array_entity_id
193800       , l_array_legal_entity_id
193801       , l_array_entity_code
193802       , l_array_transaction_num
193803       , l_array_event_id
193804       , l_array_class_code
193805       , l_array_event_type
193806       , l_array_event_number
193807       , l_array_event_date
193808       , l_array_transaction_date
193809       , l_array_reference_num_1
193810       , l_array_reference_num_2
193811       , l_array_reference_num_3
193812       , l_array_reference_num_4
193813       , l_array_reference_char_1
193814       , l_array_reference_char_2
193815       , l_array_reference_char_3
193816       , l_array_reference_char_4
193817       , l_array_reference_date_1
193818       , l_array_reference_date_2
193819       , l_array_reference_date_3
193820       , l_array_reference_date_4
193821       , l_array_event_created_by
193822       , l_array_budgetary_control_flag
193823       , l_array_extract_line_num 
193824       , l_array_source_4
193825       , l_array_source_11
193826       , l_array_source_15
193827       , l_array_source_18
193828       , l_array_source_19
193829       , l_array_source_20
193830       , l_array_source_21
193831       , l_array_source_22
193832       , l_array_source_24
193833       LIMIT l_rows;
193834 
193835   --
193836   IF (C_LEVEL_EVENT >= g_log_level) THEN
193837             trace
193838                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
193839                ,p_level    => C_LEVEL_EVENT
193840                ,p_module   => l_log_module);
193841   END IF;
193842   --
193843   EXIT WHEN l_array_entity_id.count = 0;
193844 
193845   XLA_AE_LINES_PKG.g_rec_lines := null;
193846 
193847 --
193848 -- Bug 4458708
193849 --
193850 XLA_AE_LINES_PKG.g_LineNumber := 0;
193851 --
193852 --
193853 
193854 FOR Idx IN 1..l_array_event_id.count LOOP
193855    --
193856    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
193857    --
193858    l_event_id := l_array_event_id(idx);  -- 5648433
193859 
193860    --
193861    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
193862    --
193863 
193864    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
193865              (g_array_event(l_event_id).array_value_num('header_index'))
193866          ,'N'
193867          ) <> 'Y'
193868    THEN
193869       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193870          trace
193871             (p_msg      => 'Trancaction revesal option is not Y '
193872             ,p_level    => C_LEVEL_STATEMENT
193873             ,p_module   => l_log_module);
193874       END IF;
193875 
193876 --
193877 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
193878 --
193879 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
193880 --
193881 -- set event info as cache for other routines to refer event attributes
193882 --
193883 
193884 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
193885    l_previous_event_id := l_event_id;
193886 
193887    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
193888       (p_application_id           => p_application_id
193889       ,p_primary_ledger_id        => p_primary_ledger_id
193890       ,p_base_ledger_id           => p_base_ledger_id
193891       ,p_target_ledger_id         => p_target_ledger_id
193892       ,p_entity_id                => l_array_entity_id(Idx)
193893       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
193894       ,p_entity_code              => l_array_entity_code(Idx)
193895       ,p_transaction_num          => l_array_transaction_num(Idx)
193896       ,p_event_id                 => l_array_event_id(Idx)
193897       ,p_event_class_code         => l_array_class_code(Idx)
193898       ,p_event_type_code          => l_array_event_type(Idx)
193899       ,p_event_number             => l_array_event_number(Idx)
193900       ,p_event_date               => l_array_event_date(Idx)
193901       ,p_transaction_date         => l_array_transaction_date(Idx)
193902       ,p_reference_num_1          => l_array_reference_num_1(Idx)
193903       ,p_reference_num_2          => l_array_reference_num_2(Idx)
193904       ,p_reference_num_3          => l_array_reference_num_3(Idx)
193905       ,p_reference_num_4          => l_array_reference_num_4(Idx)
193906       ,p_reference_char_1         => l_array_reference_char_1(Idx)
193907       ,p_reference_char_2         => l_array_reference_char_2(Idx)
193908       ,p_reference_char_3         => l_array_reference_char_3(Idx)
193909       ,p_reference_char_4         => l_array_reference_char_4(Idx)
193910       ,p_reference_date_1         => l_array_reference_date_1(Idx)
193911       ,p_reference_date_2         => l_array_reference_date_2(Idx)
193912       ,p_reference_date_3         => l_array_reference_date_3(Idx)
193913       ,p_reference_date_4         => l_array_reference_date_4(Idx)
193914       ,p_event_created_by         => l_array_event_created_by(Idx)
193915       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
193916        --
193917 END IF;
193918 
193919 
193920 
193921 --
193922 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
193923 
193924 l_acct_reversal_source := SUBSTR(NULL, 1,30);
193925 
193926 IF l_continue_with_lines THEN
193927    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
193928       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
193929 
193930       xla_accounting_err_pkg.build_message
193931          (p_appli_s_name            => 'XLA'
193932          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
193933          ,p_token_1                 => 'LINE_NUMBER'
193934          ,p_value_1                 => l_array_extract_line_num(Idx)
193935          ,p_token_2                 => 'PRODUCT_NAME'
193936          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
193937          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
193938          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
193939          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
193940 
193941    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
193942       --
193943       -- following sets the accounting attributes needed to reverse
193944       -- accounting for a distributeion
193945       --
193946 
193947       --
193948       -- 5217187
193949       --
193950       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
193951       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
193952                                        g_array_event(l_event_id).array_value_num('header_index'));
193953       --
193954       --
193955 
193956       -- No reversal code generated
193957 
193958       xla_ae_lines_pkg.SetAcctReversalAttrs
193959          (p_event_id             => l_event_id
193960          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
193961          ,p_calculate_acctd_flag => l_calculate_acctd_flag
193962          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
193963    END IF;
193964 
193965    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
193966        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
193967 
193968 --
193969 AcctLineType_35 (
193970  p_application_id  => p_application_id
193971  ,p_event_id     => l_event_id
193972  ,p_calculate_acctd_flag => l_calculate_acctd_flag
193973  ,p_calculate_g_l_flag => l_calculate_g_l_flag
193974  ,p_actual_flag => l_actual_flag
193975  ,p_balance_type_code => l_balance_type_code
193976  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193977  
193978  , p_source_4 => l_array_source_4(Idx)
193979  , p_source_11 => l_array_source_11(Idx)
193980  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193981  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193982  , p_source_15 => l_array_source_15(Idx)
193983  , p_source_18 => l_array_source_18(Idx)
193984  , p_source_19 => l_array_source_19(Idx)
193985  , p_source_20 => l_array_source_20(Idx)
193986  , p_source_21 => l_array_source_21(Idx)
193987  , p_source_22 => l_array_source_22(Idx)
193988  , p_source_24 => l_array_source_24(Idx)
193989  );
193990 If(l_balance_type_code = 'A') THEN
193991   l_actual_gain_loss_ref := l_gain_or_loss_ref;
193992 END IF;
193993 
193994 --
193995 
193996 
193997 --
193998 AcctLineType_144 (
193999  p_application_id  => p_application_id
194000  ,p_event_id     => l_event_id
194001  ,p_calculate_acctd_flag => l_calculate_acctd_flag
194002  ,p_calculate_g_l_flag => l_calculate_g_l_flag
194003  ,p_actual_flag => l_actual_flag
194004  ,p_balance_type_code => l_balance_type_code
194005  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
194006  
194007  , p_source_4 => l_array_source_4(Idx)
194008  , p_source_11 => l_array_source_11(Idx)
194009  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
194010  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
194011  , p_source_15 => l_array_source_15(Idx)
194012  , p_source_18 => l_array_source_18(Idx)
194013  , p_source_19 => l_array_source_19(Idx)
194014  , p_source_20 => l_array_source_20(Idx)
194015  , p_source_21 => l_array_source_21(Idx)
194016  , p_source_22 => l_array_source_22(Idx)
194017  , p_source_24 => l_array_source_24(Idx)
194018  );
194019 If(l_balance_type_code = 'A') THEN
194020   l_actual_gain_loss_ref := l_gain_or_loss_ref;
194021 END IF;
194022 
194023 --
194024 
194025 
194026 --
194027 AcctLineType_176 (
194028  p_application_id  => p_application_id
194029  ,p_event_id     => l_event_id
194030  ,p_calculate_acctd_flag => l_calculate_acctd_flag
194031  ,p_calculate_g_l_flag => l_calculate_g_l_flag
194032  ,p_actual_flag => l_actual_flag
194033  ,p_balance_type_code => l_balance_type_code
194034  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
194035  
194036  , p_source_4 => l_array_source_4(Idx)
194037  , p_source_11 => l_array_source_11(Idx)
194038  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
194039  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
194040  , p_source_15 => l_array_source_15(Idx)
194041  , p_source_18 => l_array_source_18(Idx)
194042  , p_source_19 => l_array_source_19(Idx)
194043  , p_source_20 => l_array_source_20(Idx)
194044  , p_source_21 => l_array_source_21(Idx)
194045  , p_source_22 => l_array_source_22(Idx)
194046  , p_source_24 => l_array_source_24(Idx)
194047  );
194048 If(l_balance_type_code = 'A') THEN
194049   l_actual_gain_loss_ref := l_gain_or_loss_ref;
194050 END IF;
194051 
194052 --
194053 
194054       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
194055       -- or secondary ledger that has different currency with primary
194056       -- or alc that is calculated by sla
194057       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
194058             (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'))
194059 
194060 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
194061 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
194062           AND (l_actual_flag = 'A')) THEN
194063         XLA_AE_LINES_PKG.CreateGainOrLossLines(
194064           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
194065          ,p_application_id   => p_application_id
194066          ,p_amb_context_code => 'DEFAULT'
194067          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
194068          ,p_event_class_code => C_EVENT_CLASS_CODE
194069          ,p_event_type_code  => C_EVENT_TYPE_CODE
194070          
194071          ,p_gain_ccid        => -1
194072          ,p_loss_ccid        => -1
194073 
194074          ,p_actual_flag      => l_actual_flag
194075          ,p_enc_flag         => null
194076          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
194077          ,p_enc_g_l_ref      => null
194078          );
194079       END IF;
194080    END IF;
194081 END IF;
194082 
194083    ELSE
194084       --
194085       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
194086       --
194087       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194088          trace
194089             (p_msg      => 'Trancaction revesal option is Y'
194090             ,p_level    => C_LEVEL_STATEMENT
194091             ,p_module   => l_log_module);
194092       END IF;
194093    END IF;
194094 
194095 END LOOP;
194096 l_result := XLA_AE_LINES_PKG.InsertLines ;
194097 end loop;
194098 close line_cur;
194099 
194100 
194101 --
194102 -- insert headers into xla_ae_headers_gt table
194103 --
194104 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
194105 
194106 -- insert into errors table here.
194107 
194108 END LOOP;
194109 
194110 --
194111 -- 4865292
194112 --
194113 -- Compare g_hdr_extract_count with event count in
194114 -- CreateHeadersAndLines.
194115 --
194116 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
194117 
194118 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194119    trace (p_msg     => '# rows extracted from header extract objects '
194120                     || ' (running total): '
194121                     || g_hdr_extract_count
194122          ,p_level   => C_LEVEL_STATEMENT
194123          ,p_module  => l_log_module);
194124 END IF;
194125 
194126 CLOSE header_cur;
194127 --
194128 
194129 --
194130 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
194131    trace
194132       (p_msg      => 'END of EventType_291'
194133       ,p_level    => C_LEVEL_PROCEDURE
194134       ,p_module   => l_log_module);
194135 END IF;
194136 --
194137 RETURN l_result;
194138 EXCEPTION
194139 WHEN xla_exceptions_pkg.application_exception THEN
194140    
194141 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
194142 
194143    
194144 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
194145 
194146    RAISE;
194147 
194148 WHEN NO_DATA_FOUND THEN
194149 
194150 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
194151 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
194152 
194153 FOR header_record IN header_cur
194154 LOOP
194155     l_array_header_events(header_record.event_id) := header_record.event_id;
194156 END LOOP;
194157 
194158 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
194159 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
194160 
194161 fnd_file.put_line(fnd_file.LOG, '                    ');
194162 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
194163 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
194164 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
194165 
194166 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
194167 LOOP
194168 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
194169 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
194170         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
194171 	END IF;
194172 END LOOP;
194173 
194174 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
194175 fnd_file.put_line(fnd_file.LOG, '                    ');
194176 
194177 
194178 xla_exceptions_pkg.raise_message
194179       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_291');
194180 
194181 
194182 WHEN OTHERS THEN
194183    xla_exceptions_pkg.raise_message
194184       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_291');
194185 END EventType_291;
194186 --
194187 
194188 ---------------------------------------
194189 --
194190 -- PRIVATE PROCEDURE
194191 --         insert_sources_292
194192 --
194193 ----------------------------------------
194194 --
194195 PROCEDURE insert_sources_292(
194196                                 p_target_ledger_id       IN NUMBER
194197                               , p_language               IN VARCHAR2
194198                               , p_sla_ledger_id          IN NUMBER
194199                               , p_pad_start_date         IN DATE
194200                               , p_pad_end_date           IN DATE
194201                          )
194202 IS
194203 
194204 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'VARIANCE_ALL';
194205 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'VARIANCE';
194206 p_apps_owner                   VARCHAR2(30);
194207 l_log_module                   VARCHAR2(240);
194208 BEGIN
194209 IF g_log_enabled THEN
194210       l_log_module := C_DEFAULT_MODULE||'.insert_sources_292';
194211 END IF;
194212 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
194213 
194214       trace
194215          (p_msg      => 'BEGIN of insert_sources_292'
194216          ,p_level    => C_LEVEL_PROCEDURE
194217          ,p_module   => l_log_module);
194218 
194219 END IF;
194220 
194221 -- select APPS owner
194222 SELECT oracle_username
194223   INTO p_apps_owner
194224   FROM fnd_oracle_userid
194225  WHERE read_only_flag = 'U'
194226 ;
194227 
194228 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194229       trace
194230          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
194231                         ' - p_language = '||p_language||
194232                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
194233                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
194234                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
194235                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
194236          ,p_level    => C_LEVEL_STATEMENT
194237          ,p_module   => l_log_module);
194238 END IF;
194239 
194240 
194241 --
194242 INSERT INTO xla_diag_sources --hdr2
194243 (
194244         event_id
194245       , ledger_id
194246       , sla_ledger_id
194247       , description_language
194248       , object_name
194249       , object_type_code
194250       , line_number
194251       , source_application_id
194252       , source_type_code
194253       , source_code
194254       , source_value
194255       , source_meaning
194256       , created_by
194257       , creation_date
194258       , last_update_date
194259       , last_updated_by
194260       , last_update_login
194261       , program_update_date
194262       , program_application_id
194263       , program_id
194264       , request_id
194265 )
194266 SELECT
194267         event_id
194268       , p_target_ledger_id
194269       , p_sla_ledger_id
194270       , p_language
194271       , object_name
194272       , object_type_code
194273       , line_number
194274       , source_application_id
194275       , source_type_code
194276       , source_code
194277       , SUBSTR(source_value ,1,1996)
194278       , SUBSTR(source_meaning ,1,200)
194279       , xla_environment_pkg.g_Usr_Id
194280       , TRUNC(SYSDATE)
194281       , TRUNC(SYSDATE)
194282       , xla_environment_pkg.g_Usr_Id
194283       , xla_environment_pkg.g_Login_Id
194284       , TRUNC(SYSDATE)
194285       , xla_environment_pkg.g_Prog_Appl_Id
194286       , xla_environment_pkg.g_Prog_Id
194287       , xla_environment_pkg.g_Req_Id
194288   FROM (
194289        SELECT xet.event_id                  event_id
194290             , 0                          line_number
194291             , CASE r
194292                WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V' 
194293                 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V' 
194294                 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V' 
194295                 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V' 
194296                 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V' 
194297                 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V' 
194298                 
194299                ELSE null
194300               END                           object_name
194301             , CASE r
194302                 WHEN 1 THEN 'HEADER' 
194303                 WHEN 2 THEN 'HEADER' 
194304                 WHEN 3 THEN 'HEADER' 
194305                 WHEN 4 THEN 'HEADER' 
194306                 WHEN 5 THEN 'HEADER' 
194307                 WHEN 6 THEN 'HEADER' 
194308                 
194309                 ELSE null
194310               END                           object_type_code
194311             , CASE r
194312                 WHEN 1 THEN '707' 
194313                 WHEN 2 THEN '707' 
194314                 WHEN 3 THEN '707' 
194315                 WHEN 4 THEN '707' 
194316                 WHEN 5 THEN '707' 
194317                 WHEN 6 THEN '707' 
194318                 
194319                 ELSE null
194320               END                           source_application_id
194321             , 'S'             source_type_code
194322             , CASE r
194323                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
194324                 WHEN 2 THEN 'CURRENCY_CODE' 
194325                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
194326                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
194327                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
194328                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
194329                 
194330                 ELSE null
194331               END                           source_code
194332             , CASE r
194333                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
194334                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
194335                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
194336                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
194337                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
194338                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
194339                 
194340                 ELSE null
194341               END                           source_value
194342             , CASE r
194343                 WHEN 1 THEN fvl12.meaning
194344                 WHEN 6 THEN fvl38.meaning
194345                 
194346                 ELSE null
194347               END               source_meaning
194348          FROM xla_events_gt     xet  
194349       , CST_XLA_WIP_HEADERS_V  h1
194350   , fnd_lookup_values    fvl12
194351   , fnd_lookup_values    fvl38
194352              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
194353          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
194354            AND xet.event_class_code = C_EVENT_CLASS_CODE
194355               AND h1.event_id = xet.event_id
194356    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
194357   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
194358   AND fvl12.view_application_id(+) = 700
194359   AND fvl12.language(+)            = USERENV('LANG')
194360      AND fvl38.lookup_type(+)         = 'YES_NO'
194361   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
194362   AND fvl38.view_application_id(+) = 0
194363   AND fvl38.language(+)            = USERENV('LANG')
194364   
194365 )
194366 ;
194367 --
194368 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194369 
194370       trace
194371          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
194372          ,p_level    => C_LEVEL_STATEMENT
194373          ,p_module   => l_log_module);
194374 
194375 END IF;
194376 --
194377 
194378 
194379 
194380 --
194381 INSERT INTO xla_diag_sources  --line2
194382 (
194383         event_id
194384       , ledger_id
194385       , sla_ledger_id
194386       , description_language
194387       , object_name
194388       , object_type_code
194389       , line_number
194390       , source_application_id
194391       , source_type_code
194392       , source_code
194393       , source_value
194394       , source_meaning
194395       , created_by
194396       , creation_date
194397       , last_update_date
194398       , last_updated_by
194399       , last_update_login
194400       , program_update_date
194401       , program_application_id
194402       , program_id
194403       , request_id
194404 )
194405 SELECT  event_id
194406       , p_target_ledger_id
194407       , p_sla_ledger_id
194408       , p_language
194409       , object_name
194410       , object_type_code
194411       , line_number
194412       , source_application_id
194413       , source_type_code
194414       , source_code
194415       , SUBSTR(source_value,1,1996)
194416       , SUBSTR(source_meaning ,1,200)
194417       , xla_environment_pkg.g_Usr_Id
194418       , TRUNC(SYSDATE)
194419       , TRUNC(SYSDATE)
194420       , xla_environment_pkg.g_Usr_Id
194421       , xla_environment_pkg.g_Login_Id
194422       , TRUNC(SYSDATE)
194423       , xla_environment_pkg.g_Prog_Appl_Id
194424       , xla_environment_pkg.g_Prog_Id
194425       , xla_environment_pkg.g_Req_Id
194426   FROM (
194427        SELECT xet.event_id                  event_id
194428             , l2.line_number                 line_number
194429             , CASE r
194430                WHEN 1 THEN 'CST_XLA_WIP_LINES_V' 
194431                 WHEN 2 THEN 'CST_XLA_WIP_LINES_V' 
194432                 WHEN 3 THEN 'CST_XLA_WIP_LINES_V' 
194433                 WHEN 4 THEN 'CST_XLA_WIP_LINES_V' 
194434                 WHEN 5 THEN 'CST_XLA_WIP_LINES_V' 
194435                 
194436                ELSE null
194437               END                           object_name
194438             , CASE r
194439                 WHEN 1 THEN 'LINE' 
194440                 WHEN 2 THEN 'LINE' 
194441                 WHEN 3 THEN 'LINE' 
194442                 WHEN 4 THEN 'LINE' 
194443                 WHEN 5 THEN 'LINE' 
194444                 
194445                 ELSE null
194446               END                           object_type_code
194447             , CASE r
194448                 WHEN 1 THEN '707' 
194449                 WHEN 2 THEN '707' 
194450                 WHEN 3 THEN '707' 
194451                 WHEN 4 THEN '707' 
194452                 WHEN 5 THEN '707' 
194453                 
194454                 ELSE null
194455               END                           source_application_id
194456             , 'S'             source_type_code
194457             , CASE r
194458                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
194459                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
194460                 WHEN 3 THEN 'ENTERED_AMOUNT' 
194461                 WHEN 4 THEN 'ACCOUNTED_AMOUNT' 
194462                 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
194463                 
194464                 ELSE null
194465               END                           source_code
194466             , CASE r
194467                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
194468                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
194469                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
194470                 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
194471                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
194472                 
194473                 ELSE null
194474               END                           source_value
194475             , null              source_meaning
194476          FROM  xla_events_gt     xet  
194477         , CST_XLA_WIP_LINES_V  l2
194478             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
194479         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
194480           AND xet.event_class_code = C_EVENT_CLASS_CODE
194481             AND l2.event_id          = xet.event_id
194482 
194483 )
194484 ;
194485 --
194486 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194487 
194488       trace
194489          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
194490          ,p_level    => C_LEVEL_STATEMENT
194491          ,p_module   => l_log_module);
194492 
194493 END IF;
194494 
194495 
194496 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
194497       trace
194498          (p_msg      => 'END of insert_sources_292'
194499          ,p_level    => C_LEVEL_PROCEDURE
194500          ,p_module   => l_log_module);
194501 END IF;
194502 EXCEPTION
194503   WHEN xla_exceptions_pkg.application_exception THEN
194504       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
194505             trace
194506                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
194507                ,p_level    => C_LEVEL_EXCEPTION
194508                ,p_module   => l_log_module);
194509       END IF;
194510       RAISE;
194511   WHEN OTHERS THEN
194512       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
194513             trace
194514                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
194515                ,p_level    => C_LEVEL_EXCEPTION
194516                ,p_module   => l_log_module);
194517        END IF;
194518        xla_exceptions_pkg.raise_message
194519            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_292');
194520 END insert_sources_292;
194521 --
194522 
194523 ---------------------------------------
194524 --
194525 -- PRIVATE FUNCTION
194526 --         EventClass_292
194527 --
194528 ----------------------------------------
194529 --
194530 FUNCTION EventClass_292
194531        (p_application_id         IN NUMBER
194532        ,p_base_ledger_id         IN NUMBER
194533        ,p_target_ledger_id       IN NUMBER
194534        ,p_language               IN VARCHAR2
194535        ,p_currency_code          IN VARCHAR2
194536        ,p_sla_ledger_id          IN NUMBER
194537        ,p_pad_start_date         IN DATE
194538        ,p_pad_end_date           IN DATE
194539        ,p_primary_ledger_id      IN NUMBER)
194540 RETURN BOOLEAN IS
194541 --
194542 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'VARIANCE_ALL';
194543 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'VARIANCE';
194544 
194545 l_calculate_acctd_flag   VARCHAR2(1) :='N';
194546 l_calculate_g_l_flag     VARCHAR2(1) :='N';
194547 --
194548 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194549 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194550 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
194551 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194552 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194553 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
194554 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
194555 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194556 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194557 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194558 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194559 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194560 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194561 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194562 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194563 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194564 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194565 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194566 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194567 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194568 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194569 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194570 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
194571 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
194572 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
194573 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
194574 
194575 l_event_id                             NUMBER;
194576 l_previous_event_id                    NUMBER;
194577 l_first_event_id                       NUMBER;
194578 l_last_event_id                        NUMBER;
194579 
194580 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
194581 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
194582 --
194583 --
194584 l_result                    BOOLEAN := TRUE;
194585 l_rows                      NUMBER  := 1000;
194586 l_event_type_name           VARCHAR2(80) := 'All';
194587 l_event_class_name          VARCHAR2(80) := 'WIP Variance';
194588 l_description               VARCHAR2(4000);
194589 l_transaction_reversal      NUMBER;
194590 l_ae_header_id              NUMBER;
194591 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
194592 l_log_module                VARCHAR2(240);
194593 --
194594 l_acct_reversal_source      VARCHAR2(30);
194595 l_trx_reversal_source       VARCHAR2(30);
194596 
194597 l_continue_with_lines       BOOLEAN := TRUE;
194598 --
194599 l_acc_rev_gl_date_source    DATE;                      -- 4262811
194600 --
194601 type t_array_event_id is table of number index by binary_integer;
194602 
194603 l_rec_array_event                    t_rec_array_event;
194604 l_null_rec_array_event               t_rec_array_event;
194605 l_array_ae_header_id                 xla_number_array_type;
194606 l_actual_flag                        VARCHAR2(1) := NULL;
194607 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
194608 l_balance_type_code                  VARCHAR2(1) :=NULL;
194609 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
194610 
194611 --
194612 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
194613 --
194614 
194615 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
194616 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
194617 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
194618 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
194619 TYPE t_array_source_21 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
194620 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
194621 
194622 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
194623 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
194624 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
194625 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
194626 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
194627 
194628 l_array_source_12              t_array_source_12;
194629 l_array_source_12_meaning      t_array_lookup_meaning;
194630 l_array_source_15              t_array_source_15;
194631 l_array_source_19              t_array_source_19;
194632 l_array_source_20              t_array_source_20;
194633 l_array_source_21              t_array_source_21;
194634 l_array_source_38              t_array_source_38;
194635 l_array_source_38_meaning      t_array_lookup_meaning;
194636 
194637 l_array_source_4      t_array_source_4;
194638 l_array_source_11      t_array_source_11;
194639 l_array_source_18      t_array_source_18;
194640 l_array_source_22      t_array_source_22;
194641 l_array_source_24      t_array_source_24;
194642 
194643 --
194644 CURSOR header_cur
194645 IS
194646 SELECT /*+ leading(xet) cardinality(xet,1) */
194647 -- Event Class Code: VARIANCE
194648     xet.entity_id
194649    ,xet.legal_entity_id
194650    ,xet.entity_code
194651    ,xet.transaction_number
194652    ,xet.event_id
194653    ,xet.event_class_code
194654    ,xet.event_type_code
194655    ,xet.event_number
194656    ,xet.event_date
194657    ,xet.transaction_date
194658    ,xet.reference_num_1
194659    ,xet.reference_num_2
194660    ,xet.reference_num_3
194661    ,xet.reference_num_4
194662    ,xet.reference_char_1
194663    ,xet.reference_char_2
194664    ,xet.reference_char_3
194665    ,xet.reference_char_4
194666    ,xet.reference_date_1
194667    ,xet.reference_date_2
194668    ,xet.reference_date_3
194669    ,xet.reference_date_4
194670    ,xet.event_created_by
194671    ,xet.budgetary_control_flag 
194672   , h1.DISTRIBUTION_TYPE    source_12
194673   , fvl12.meaning   source_12_meaning
194674   , h1.CURRENCY_CODE    source_15
194675   , h1.CURRENCY_CONVERSION_DATE    source_19
194676   , h1.CURRENCY_CONVERSION_RATE    source_20
194677   , h1.CURRENCY_CONVERSION_TYPE    source_21
194678   , h1.TRANSFER_TO_GL_INDICATOR    source_38
194679   , fvl38.meaning   source_38_meaning
194680   FROM xla_events_gt     xet 
194681   , CST_XLA_WIP_HEADERS_V  h1
194682   , fnd_lookup_values    fvl12
194683   , fnd_lookup_values    fvl38
194684  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
194685    and xet.event_class_code = C_EVENT_CLASS_CODE
194686    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
194687    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
194688   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
194689   AND fvl12.view_application_id(+) = 700
194690   AND fvl12.language(+)            = USERENV('LANG')
194691      AND fvl38.lookup_type(+)         = 'YES_NO'
194692   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
194693   AND fvl38.view_application_id(+) = 0
194694   AND fvl38.language(+)            = USERENV('LANG')
194695   
194696  ORDER BY event_id
194697 ;
194698 
194699 
194700 --
194701 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
194702 IS
194703 SELECT  /*+ leading(xet) cardinality(xet,1) */
194704 -- Event Class Code: VARIANCE
194705     xet.entity_id
194706    ,xet.legal_entity_id
194707    ,xet.entity_code
194708    ,xet.transaction_number
194709    ,xet.event_id
194710    ,xet.event_class_code
194711    ,xet.event_type_code
194712    ,xet.event_number
194713    ,xet.event_date
194714    ,xet.transaction_date
194715    ,xet.reference_num_1
194716    ,xet.reference_num_2
194717    ,xet.reference_num_3
194718    ,xet.reference_num_4
194719    ,xet.reference_char_1
194720    ,xet.reference_char_2
194721    ,xet.reference_char_3
194722    ,xet.reference_char_4
194723    ,xet.reference_date_1
194724    ,xet.reference_date_2
194725    ,xet.reference_date_3
194726    ,xet.reference_date_4
194727    ,xet.event_created_by
194728    ,xet.budgetary_control_flag
194729  , l2.LINE_NUMBER  
194730   , l2.CODE_COMBINATION_ID    source_4
194731   , l2.DISTRIBUTION_IDENTIFIER    source_11
194732   , l2.ENTERED_AMOUNT    source_18
194733   , l2.ACCOUNTED_AMOUNT    source_22
194734   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
194735   FROM xla_events_gt     xet 
194736   , CST_XLA_WIP_LINES_V  l2
194737  WHERE xet.event_id between x_first_event_id and x_last_event_id
194738    and xet.event_date between p_pad_start_date and p_pad_end_date
194739    and xet.event_class_code = C_EVENT_CLASS_CODE
194740    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
194741 ;
194742 
194743 --
194744 BEGIN
194745 IF g_log_enabled THEN
194746    l_log_module := C_DEFAULT_MODULE||'.EventClass_292';
194747 END IF;
194748 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
194749    trace
194750       (p_msg      => 'BEGIN of EventClass_292'
194751       ,p_level    => C_LEVEL_PROCEDURE
194752       ,p_module   => l_log_module);
194753 END IF;
194754 
194755 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194756    trace
194757       (p_msg      => 'p_application_id = '||p_application_id||
194758                      ' - p_base_ledger_id = '||p_base_ledger_id||
194759                      ' - p_target_ledger_id  = '||p_target_ledger_id||
194760                      ' - p_language = '||p_language||
194761                      ' - p_currency_code = '||p_currency_code||
194762                      ' - p_sla_ledger_id = '||p_sla_ledger_id
194763       ,p_level    => C_LEVEL_STATEMENT
194764       ,p_module   => l_log_module);
194765 END IF;
194766 --
194767 -- initialze arrays
194768 --
194769 g_array_event.DELETE;
194770 l_rec_array_event := l_null_rec_array_event;
194771 --
194772 --------------------------------------
194773 -- 4262811 Initialze MPA Line Number
194774 --------------------------------------
194775 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
194776 
194777 --
194778 
194779 --
194780 OPEN header_cur;
194781 --
194782 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194783    trace
194784    (p_msg      => 'SQL - FETCH header_cur'
194785    ,p_level    => C_LEVEL_STATEMENT
194786    ,p_module   => l_log_module);
194787 END IF;
194788 --
194789 LOOP
194790 FETCH header_cur BULK COLLECT INTO
194791         l_array_entity_id
194792       , l_array_legal_entity_id
194793       , l_array_entity_code
194794       , l_array_transaction_num
194795       , l_array_event_id
194796       , l_array_class_code
194797       , l_array_event_type
194798       , l_array_event_number
194799       , l_array_event_date
194800       , l_array_transaction_date
194801       , l_array_reference_num_1
194802       , l_array_reference_num_2
194803       , l_array_reference_num_3
194804       , l_array_reference_num_4
194805       , l_array_reference_char_1
194806       , l_array_reference_char_2
194807       , l_array_reference_char_3
194808       , l_array_reference_char_4
194809       , l_array_reference_date_1
194810       , l_array_reference_date_2
194811       , l_array_reference_date_3
194812       , l_array_reference_date_4
194813       , l_array_event_created_by
194814       , l_array_budgetary_control_flag 
194815       , l_array_source_12
194816       , l_array_source_12_meaning
194817       , l_array_source_15
194818       , l_array_source_19
194819       , l_array_source_20
194820       , l_array_source_21
194821       , l_array_source_38
194822       , l_array_source_38_meaning
194823       LIMIT l_rows;
194824 --
194825 IF (C_LEVEL_EVENT >= g_log_level) THEN
194826    trace
194827    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
194828    ,p_level    => C_LEVEL_EVENT
194829    ,p_module   => l_log_module);
194830 END IF;
194831 --
194832 EXIT WHEN l_array_entity_id.COUNT = 0;
194833 
194834 -- initialize arrays
194835 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
194836 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
194837 
194838 --
194839 -- Bug 4458708
194840 --
194841 XLA_AE_LINES_PKG.g_LineNumber := 0;
194842 
194843 
194844 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
194845 g_last_hdr_idx := l_array_event_id.LAST;
194846 --
194847 -- loop for the headers. Each iteration is for each header extract row
194848 -- fetched in header cursor
194849 --
194850 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
194851 
194852 --
194853 -- set event info as cache for other routines to refer event attributes
194854 --
194855 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
194856    (p_application_id           => p_application_id
194857    ,p_primary_ledger_id        => p_primary_ledger_id
194858    ,p_base_ledger_id           => p_base_ledger_id
194859    ,p_target_ledger_id         => p_target_ledger_id
194860    ,p_entity_id                => l_array_entity_id(hdr_idx)
194861    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
194862    ,p_entity_code              => l_array_entity_code(hdr_idx)
194863    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
194864    ,p_event_id                 => l_array_event_id(hdr_idx)
194865    ,p_event_class_code         => l_array_class_code(hdr_idx)
194866    ,p_event_type_code          => l_array_event_type(hdr_idx)
194867    ,p_event_number             => l_array_event_number(hdr_idx)
194868    ,p_event_date               => l_array_event_date(hdr_idx)
194869    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
194870    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
194871    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
194872    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
194873    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
194874    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
194875    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
194876    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
194877    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
194878    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
194879    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
194880    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
194881    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
194882    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
194883    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
194884 
194885 --
194886 -- set the status of entry to C_VALID (0)
194887 --
194888 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
194889 
194890 --
194891 -- initialize a row for ae header
194892 --
194893 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
194894 
194895 l_event_id := l_array_event_id(hdr_idx);
194896 
194897 --
194898 -- storing the hdr_idx for event. May be used by line cursor.
194899 --
194900 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
194901 
194902 --
194903 -- store sources from header extract. This can be improved to
194904 -- store only those sources from header extract that may be used in lines
194905 --
194906 
194907 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
194908 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
194909 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
194910 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
194911 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
194912 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
194913 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
194914 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
194915 
194916 --
194917 -- initilaize the status of ae headers for diffrent balance types
194918 -- the status is initialised to C_NOT_CREATED (2)
194919 --
194920 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
194921 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
194922 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
194923 
194924 --
194925 -- call api to validate and store accounting attributes for header
194926 --
194927 
194928 ------------------------------------------------------------
194929 -- Accrual Reversal : to get date for Standard Source (NONE)
194930 ------------------------------------------------------------
194931 l_acc_rev_gl_date_source := NULL;
194932 
194933      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
194934       l_rec_acct_attrs.array_date_value(1) := 
194935 xla_ae_sources_pkg.GetSystemSourceDate(
194936    p_source_code           => 'XLA_REFERENCE_DATE_1'
194937  , p_source_type_code      => 'Y'
194938  , p_source_application_id =>  602
194939 );
194940      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
194941       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
194942 
194943 
194944 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
194945 
194946 XLA_AE_HEADER_PKG.SetJeCategoryName;
194947 
194948 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
194949 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
194950 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
194951 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
194952 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
194953 
194954 
194955 -- No header level analytical criteria
194956 
194957 --
194958 --accounting attribute enhancement, bug 3612931
194959 --
194960 l_trx_reversal_source := SUBSTR(NULL, 1,30);
194961 
194962 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
194963    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
194964 
194965    xla_accounting_err_pkg.build_message
194966       (p_appli_s_name            => 'XLA'
194967       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
194968       ,p_token_1                 => 'ACCT_ATTR_NAME'
194969       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
194970       ,p_token_2                 => 'PRODUCT_NAME'
194971       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
194972       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
194973       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
194974       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
194975 
194976 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
194977    --
194978    -- following sets the accounting attributes needed to reverse
194979    -- accounting for a distributeion
194980    --
194981    xla_ae_lines_pkg.SetTrxReversalAttrs
194982       (p_event_id              => l_event_id
194983       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
194984       ,p_trx_reversal_source   => l_trx_reversal_source);
194985 
194986 END IF;
194987 
194988 
194989 ----------------------------------------------------------------
194990 -- 4262811 -  update the header statuses to invalid in need be
194991 ----------------------------------------------------------------
194992 --
194993 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
194994 
194995 
194996   -----------------------------------------------
194997   -- No accrual reversal for the event class/type
194998   -----------------------------------------------
194999 ----------------------------------------------------------------
195000 
195001 --
195002 -- this ends the header loop iteration for one bulk fetch
195003 --
195004 END LOOP;
195005 
195006 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
195007 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
195008 
195009 --
195010 -- insert dummy rows into lines gt table that were created due to
195011 -- transaction reversals
195012 --
195013 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
195014    l_result := XLA_AE_LINES_PKG.InsertLines;
195015 END IF;
195016 
195017 --
195018 -- reset the temp_line_num for each set of events fetched from header
195019 -- cursor rather than doing it for each new event in line cursor
195020 -- Bug 3939231
195021 --
195022 xla_ae_lines_pkg.g_temp_line_num := 0;
195023 
195024 
195025 
195026 --
195027 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
195028 --
195029 --
195030 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195031 
195032       trace
195033          (p_msg      => 'SQL - FETCH line_cur'
195034          ,p_level    => C_LEVEL_STATEMENT
195035          ,p_module   => l_log_module);
195036 
195037 END IF;
195038 --
195039 --
195040 LOOP
195041   --
195042   FETCH line_cur BULK COLLECT INTO
195043         l_array_entity_id
195044       , l_array_legal_entity_id
195045       , l_array_entity_code
195046       , l_array_transaction_num
195047       , l_array_event_id
195048       , l_array_class_code
195049       , l_array_event_type
195050       , l_array_event_number
195051       , l_array_event_date
195052       , l_array_transaction_date
195053       , l_array_reference_num_1
195054       , l_array_reference_num_2
195055       , l_array_reference_num_3
195056       , l_array_reference_num_4
195057       , l_array_reference_char_1
195058       , l_array_reference_char_2
195059       , l_array_reference_char_3
195060       , l_array_reference_char_4
195061       , l_array_reference_date_1
195062       , l_array_reference_date_2
195063       , l_array_reference_date_3
195064       , l_array_reference_date_4
195065       , l_array_event_created_by
195066       , l_array_budgetary_control_flag
195067       , l_array_extract_line_num 
195068       , l_array_source_4
195069       , l_array_source_11
195070       , l_array_source_18
195071       , l_array_source_22
195072       , l_array_source_24
195073       LIMIT l_rows;
195074 
195075   --
195076   IF (C_LEVEL_EVENT >= g_log_level) THEN
195077             trace
195078                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
195079                ,p_level    => C_LEVEL_EVENT
195080                ,p_module   => l_log_module);
195081   END IF;
195082   --
195083   EXIT WHEN l_array_entity_id.count = 0;
195084 
195085   XLA_AE_LINES_PKG.g_rec_lines := null;
195086 
195087 --
195088 -- Bug 4458708
195089 --
195090 XLA_AE_LINES_PKG.g_LineNumber := 0;
195091 --
195092 --
195093 
195094 FOR Idx IN 1..l_array_event_id.count LOOP
195095    --
195096    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
195097    --
195098    l_event_id := l_array_event_id(idx);  -- 5648433
195099 
195100    --
195101    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
195102    --
195103 
195104    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
195105              (g_array_event(l_event_id).array_value_num('header_index'))
195106          ,'N'
195107          ) <> 'Y'
195108    THEN
195109       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195110          trace
195111             (p_msg      => 'Trancaction revesal option is not Y '
195112             ,p_level    => C_LEVEL_STATEMENT
195113             ,p_module   => l_log_module);
195114       END IF;
195115 
195116 --
195117 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
195118 --
195119 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
195120 --
195121 -- set event info as cache for other routines to refer event attributes
195122 --
195123 
195124 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
195125    l_previous_event_id := l_event_id;
195126 
195127    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
195128       (p_application_id           => p_application_id
195129       ,p_primary_ledger_id        => p_primary_ledger_id
195130       ,p_base_ledger_id           => p_base_ledger_id
195131       ,p_target_ledger_id         => p_target_ledger_id
195132       ,p_entity_id                => l_array_entity_id(Idx)
195133       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
195134       ,p_entity_code              => l_array_entity_code(Idx)
195135       ,p_transaction_num          => l_array_transaction_num(Idx)
195136       ,p_event_id                 => l_array_event_id(Idx)
195137       ,p_event_class_code         => l_array_class_code(Idx)
195138       ,p_event_type_code          => l_array_event_type(Idx)
195139       ,p_event_number             => l_array_event_number(Idx)
195140       ,p_event_date               => l_array_event_date(Idx)
195141       ,p_transaction_date         => l_array_transaction_date(Idx)
195142       ,p_reference_num_1          => l_array_reference_num_1(Idx)
195143       ,p_reference_num_2          => l_array_reference_num_2(Idx)
195144       ,p_reference_num_3          => l_array_reference_num_3(Idx)
195145       ,p_reference_num_4          => l_array_reference_num_4(Idx)
195146       ,p_reference_char_1         => l_array_reference_char_1(Idx)
195147       ,p_reference_char_2         => l_array_reference_char_2(Idx)
195148       ,p_reference_char_3         => l_array_reference_char_3(Idx)
195149       ,p_reference_char_4         => l_array_reference_char_4(Idx)
195150       ,p_reference_date_1         => l_array_reference_date_1(Idx)
195151       ,p_reference_date_2         => l_array_reference_date_2(Idx)
195152       ,p_reference_date_3         => l_array_reference_date_3(Idx)
195153       ,p_reference_date_4         => l_array_reference_date_4(Idx)
195154       ,p_event_created_by         => l_array_event_created_by(Idx)
195155       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
195156        --
195157 END IF;
195158 
195159 
195160 
195161 --
195162 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
195163 
195164 l_acct_reversal_source := SUBSTR(NULL, 1,30);
195165 
195166 IF l_continue_with_lines THEN
195167    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
195168       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
195169 
195170       xla_accounting_err_pkg.build_message
195171          (p_appli_s_name            => 'XLA'
195172          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
195173          ,p_token_1                 => 'LINE_NUMBER'
195174          ,p_value_1                 => l_array_extract_line_num(Idx)
195175          ,p_token_2                 => 'PRODUCT_NAME'
195176          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
195177          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
195178          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
195179          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
195180 
195181    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
195182       --
195183       -- following sets the accounting attributes needed to reverse
195184       -- accounting for a distributeion
195185       --
195186 
195187       --
195188       -- 5217187
195189       --
195190       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
195191       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
195192                                        g_array_event(l_event_id).array_value_num('header_index'));
195193       --
195194       --
195195 
195196       -- No reversal code generated
195197 
195198       xla_ae_lines_pkg.SetAcctReversalAttrs
195199          (p_event_id             => l_event_id
195200          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
195201          ,p_calculate_acctd_flag => l_calculate_acctd_flag
195202          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
195203    END IF;
195204 
195205    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
195206        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
195207 
195208 --
195209 AcctLineType_242 (
195210  p_application_id  => p_application_id
195211  ,p_event_id     => l_event_id
195212  ,p_calculate_acctd_flag => l_calculate_acctd_flag
195213  ,p_calculate_g_l_flag => l_calculate_g_l_flag
195214  ,p_actual_flag => l_actual_flag
195215  ,p_balance_type_code => l_balance_type_code
195216  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
195217  
195218  , p_source_4 => l_array_source_4(Idx)
195219  , p_source_11 => l_array_source_11(Idx)
195220  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
195221  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
195222  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
195223  , p_source_18 => l_array_source_18(Idx)
195224  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
195225  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
195226  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
195227  , p_source_22 => l_array_source_22(Idx)
195228  , p_source_24 => l_array_source_24(Idx)
195229  );
195230 If(l_balance_type_code = 'A') THEN
195231   l_actual_gain_loss_ref := l_gain_or_loss_ref;
195232 END IF;
195233 
195234 --
195235 
195236 
195237 --
195238 AcctLineType_247 (
195239  p_application_id  => p_application_id
195240  ,p_event_id     => l_event_id
195241  ,p_calculate_acctd_flag => l_calculate_acctd_flag
195242  ,p_calculate_g_l_flag => l_calculate_g_l_flag
195243  ,p_actual_flag => l_actual_flag
195244  ,p_balance_type_code => l_balance_type_code
195245  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
195246  
195247  , p_source_4 => l_array_source_4(Idx)
195248  , p_source_11 => l_array_source_11(Idx)
195249  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
195250  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
195251  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
195252  , p_source_18 => l_array_source_18(Idx)
195253  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
195254  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
195255  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
195256  , p_source_22 => l_array_source_22(Idx)
195257  , p_source_24 => l_array_source_24(Idx)
195258  );
195259 If(l_balance_type_code = 'A') THEN
195260   l_actual_gain_loss_ref := l_gain_or_loss_ref;
195261 END IF;
195262 
195263 --
195264 
195265       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
195266       -- or secondary ledger that has different currency with primary
195267       -- or alc that is calculated by sla
195268       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
195269             (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'))
195270 
195271 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
195272 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
195273           AND (l_actual_flag = 'A')) THEN
195274         XLA_AE_LINES_PKG.CreateGainOrLossLines(
195275           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
195276          ,p_application_id   => p_application_id
195277          ,p_amb_context_code => 'DEFAULT'
195278          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
195279          ,p_event_class_code => C_EVENT_CLASS_CODE
195280          ,p_event_type_code  => C_EVENT_TYPE_CODE
195281          
195282          ,p_gain_ccid        => -1
195283          ,p_loss_ccid        => -1
195284 
195285          ,p_actual_flag      => l_actual_flag
195286          ,p_enc_flag         => null
195287          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
195288          ,p_enc_g_l_ref      => null
195289          );
195290       END IF;
195291    END IF;
195292 END IF;
195293 
195294    ELSE
195295       --
195296       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
195297       --
195298       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195299          trace
195300             (p_msg      => 'Trancaction revesal option is Y'
195301             ,p_level    => C_LEVEL_STATEMENT
195302             ,p_module   => l_log_module);
195303       END IF;
195304    END IF;
195305 
195306 END LOOP;
195307 l_result := XLA_AE_LINES_PKG.InsertLines ;
195308 end loop;
195309 close line_cur;
195310 
195311 
195312 --
195313 -- insert headers into xla_ae_headers_gt table
195314 --
195315 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
195316 
195317 -- insert into errors table here.
195318 
195319 END LOOP;
195320 
195321 --
195322 -- 4865292
195323 --
195324 -- Compare g_hdr_extract_count with event count in
195325 -- CreateHeadersAndLines.
195326 --
195327 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
195328 
195329 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195330    trace (p_msg     => '# rows extracted from header extract objects '
195331                     || ' (running total): '
195332                     || g_hdr_extract_count
195333          ,p_level   => C_LEVEL_STATEMENT
195334          ,p_module  => l_log_module);
195335 END IF;
195336 
195337 CLOSE header_cur;
195338 --
195339 
195340 --
195341 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195342    trace
195343       (p_msg      => 'END of EventClass_292'
195344       ,p_level    => C_LEVEL_PROCEDURE
195345       ,p_module   => l_log_module);
195346 END IF;
195347 --
195348 RETURN l_result;
195349 EXCEPTION
195350 WHEN xla_exceptions_pkg.application_exception THEN
195351    
195352 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
195353 
195354    
195355 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
195356 
195357    RAISE;
195358 
195359 WHEN NO_DATA_FOUND THEN
195360 
195361 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
195362 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
195363 
195364 FOR header_record IN header_cur
195365 LOOP
195366     l_array_header_events(header_record.event_id) := header_record.event_id;
195367 END LOOP;
195368 
195369 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
195370 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
195371 
195372 fnd_file.put_line(fnd_file.LOG, '                    ');
195373 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
195374 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
195375 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
195376 
195377 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
195378 LOOP
195379 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
195380 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
195381         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
195382 	END IF;
195383 END LOOP;
195384 
195385 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
195386 fnd_file.put_line(fnd_file.LOG, '                    ');
195387 
195388 
195389 xla_exceptions_pkg.raise_message
195390       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_292');
195391 
195392 
195393 WHEN OTHERS THEN
195394    xla_exceptions_pkg.raise_message
195395       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_292');
195396 END EventClass_292;
195397 --
195398 
195399 ---------------------------------------
195400 --
195401 -- PRIVATE PROCEDURE
195402 --         insert_sources_293
195403 --
195404 ----------------------------------------
195405 --
195406 PROCEDURE insert_sources_293(
195407                                 p_target_ledger_id       IN NUMBER
195408                               , p_language               IN VARCHAR2
195409                               , p_sla_ledger_id          IN NUMBER
195410                               , p_pad_start_date         IN DATE
195411                               , p_pad_end_date           IN DATE
195412                          )
195413 IS
195414 
195415 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_UPD_ALL';
195416 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_COST_UPD';
195417 p_apps_owner                   VARCHAR2(30);
195418 l_log_module                   VARCHAR2(240);
195419 BEGIN
195420 IF g_log_enabled THEN
195421       l_log_module := C_DEFAULT_MODULE||'.insert_sources_293';
195422 END IF;
195423 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195424 
195425       trace
195426          (p_msg      => 'BEGIN of insert_sources_293'
195427          ,p_level    => C_LEVEL_PROCEDURE
195428          ,p_module   => l_log_module);
195429 
195430 END IF;
195431 
195432 -- select APPS owner
195433 SELECT oracle_username
195434   INTO p_apps_owner
195435   FROM fnd_oracle_userid
195436  WHERE read_only_flag = 'U'
195437 ;
195438 
195439 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195440       trace
195441          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
195442                         ' - p_language = '||p_language||
195443                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
195444                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
195445                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
195446                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
195447          ,p_level    => C_LEVEL_STATEMENT
195448          ,p_module   => l_log_module);
195449 END IF;
195450 
195451 
195452 --
195453 INSERT INTO xla_diag_sources --hdr2
195454 (
195455         event_id
195456       , ledger_id
195457       , sla_ledger_id
195458       , description_language
195459       , object_name
195460       , object_type_code
195461       , line_number
195462       , source_application_id
195463       , source_type_code
195464       , source_code
195465       , source_value
195466       , source_meaning
195467       , created_by
195468       , creation_date
195469       , last_update_date
195470       , last_updated_by
195471       , last_update_login
195472       , program_update_date
195473       , program_application_id
195474       , program_id
195475       , request_id
195476 )
195477 SELECT
195478         event_id
195479       , p_target_ledger_id
195480       , p_sla_ledger_id
195481       , p_language
195482       , object_name
195483       , object_type_code
195484       , line_number
195485       , source_application_id
195486       , source_type_code
195487       , source_code
195488       , SUBSTR(source_value ,1,1996)
195489       , SUBSTR(source_meaning ,1,200)
195490       , xla_environment_pkg.g_Usr_Id
195491       , TRUNC(SYSDATE)
195492       , TRUNC(SYSDATE)
195493       , xla_environment_pkg.g_Usr_Id
195494       , xla_environment_pkg.g_Login_Id
195495       , TRUNC(SYSDATE)
195496       , xla_environment_pkg.g_Prog_Appl_Id
195497       , xla_environment_pkg.g_Prog_Id
195498       , xla_environment_pkg.g_Req_Id
195499   FROM (
195500        SELECT xet.event_id                  event_id
195501             , 0                          line_number
195502             , CASE r
195503                WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V' 
195504                 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V' 
195505                 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V' 
195506                 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V' 
195507                 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V' 
195508                 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V' 
195509                 
195510                ELSE null
195511               END                           object_name
195512             , CASE r
195513                 WHEN 1 THEN 'HEADER' 
195514                 WHEN 2 THEN 'HEADER' 
195515                 WHEN 3 THEN 'HEADER' 
195516                 WHEN 4 THEN 'HEADER' 
195517                 WHEN 5 THEN 'HEADER' 
195518                 WHEN 6 THEN 'HEADER' 
195519                 
195520                 ELSE null
195521               END                           object_type_code
195522             , CASE r
195523                 WHEN 1 THEN '707' 
195524                 WHEN 2 THEN '707' 
195525                 WHEN 3 THEN '707' 
195526                 WHEN 4 THEN '707' 
195527                 WHEN 5 THEN '707' 
195528                 WHEN 6 THEN '707' 
195529                 
195530                 ELSE null
195531               END                           source_application_id
195532             , 'S'             source_type_code
195533             , CASE r
195534                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
195535                 WHEN 2 THEN 'CURRENCY_CODE' 
195536                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
195537                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
195538                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
195539                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
195540                 
195541                 ELSE null
195542               END                           source_code
195543             , CASE r
195544                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
195545                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
195546                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
195547                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
195548                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
195549                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
195550                 
195551                 ELSE null
195552               END                           source_value
195553             , CASE r
195554                 WHEN 1 THEN fvl12.meaning
195555                 WHEN 6 THEN fvl38.meaning
195556                 
195557                 ELSE null
195558               END               source_meaning
195559          FROM xla_events_gt     xet  
195560       , CST_XLA_WIP_HEADERS_V  h1
195561   , fnd_lookup_values    fvl12
195562   , fnd_lookup_values    fvl38
195563              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
195564          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
195565            AND xet.event_class_code = C_EVENT_CLASS_CODE
195566               AND h1.event_id = xet.event_id
195567    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
195568   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
195569   AND fvl12.view_application_id(+) = 700
195570   AND fvl12.language(+)            = USERENV('LANG')
195571      AND fvl38.lookup_type(+)         = 'YES_NO'
195572   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
195573   AND fvl38.view_application_id(+) = 0
195574   AND fvl38.language(+)            = USERENV('LANG')
195575   
195576 )
195577 ;
195578 --
195579 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195580 
195581       trace
195582          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
195583          ,p_level    => C_LEVEL_STATEMENT
195584          ,p_module   => l_log_module);
195585 
195586 END IF;
195587 --
195588 
195589 
195590 
195591 --
195592 INSERT INTO xla_diag_sources  --line2
195593 (
195594         event_id
195595       , ledger_id
195596       , sla_ledger_id
195597       , description_language
195598       , object_name
195599       , object_type_code
195600       , line_number
195601       , source_application_id
195602       , source_type_code
195603       , source_code
195604       , source_value
195605       , source_meaning
195606       , created_by
195607       , creation_date
195608       , last_update_date
195609       , last_updated_by
195610       , last_update_login
195611       , program_update_date
195612       , program_application_id
195613       , program_id
195614       , request_id
195615 )
195616 SELECT  event_id
195617       , p_target_ledger_id
195618       , p_sla_ledger_id
195619       , p_language
195620       , object_name
195621       , object_type_code
195622       , line_number
195623       , source_application_id
195624       , source_type_code
195625       , source_code
195626       , SUBSTR(source_value,1,1996)
195627       , SUBSTR(source_meaning ,1,200)
195628       , xla_environment_pkg.g_Usr_Id
195629       , TRUNC(SYSDATE)
195630       , TRUNC(SYSDATE)
195631       , xla_environment_pkg.g_Usr_Id
195632       , xla_environment_pkg.g_Login_Id
195633       , TRUNC(SYSDATE)
195634       , xla_environment_pkg.g_Prog_Appl_Id
195635       , xla_environment_pkg.g_Prog_Id
195636       , xla_environment_pkg.g_Req_Id
195637   FROM (
195638        SELECT xet.event_id                  event_id
195639             , l2.line_number                 line_number
195640             , CASE r
195641                WHEN 1 THEN 'CST_XLA_WIP_LINES_V' 
195642                 WHEN 2 THEN 'CST_XLA_WIP_LINES_V' 
195643                 WHEN 3 THEN 'CST_XLA_WIP_LINES_V' 
195644                 WHEN 4 THEN 'CST_XLA_WIP_LINES_V' 
195645                 WHEN 5 THEN 'CST_XLA_WIP_LINES_V' 
195646                 
195647                ELSE null
195648               END                           object_name
195649             , CASE r
195650                 WHEN 1 THEN 'LINE' 
195651                 WHEN 2 THEN 'LINE' 
195652                 WHEN 3 THEN 'LINE' 
195653                 WHEN 4 THEN 'LINE' 
195654                 WHEN 5 THEN 'LINE' 
195655                 
195656                 ELSE null
195657               END                           object_type_code
195658             , CASE r
195659                 WHEN 1 THEN '707' 
195660                 WHEN 2 THEN '707' 
195661                 WHEN 3 THEN '707' 
195662                 WHEN 4 THEN '707' 
195663                 WHEN 5 THEN '707' 
195664                 
195665                 ELSE null
195666               END                           source_application_id
195667             , 'S'             source_type_code
195668             , CASE r
195669                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
195670                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
195671                 WHEN 3 THEN 'ENTERED_AMOUNT' 
195672                 WHEN 4 THEN 'ACCOUNTED_AMOUNT' 
195673                 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
195674                 
195675                 ELSE null
195676               END                           source_code
195677             , CASE r
195678                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
195679                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
195680                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
195681                 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
195682                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
195683                 
195684                 ELSE null
195685               END                           source_value
195686             , null              source_meaning
195687          FROM  xla_events_gt     xet  
195688         , CST_XLA_WIP_LINES_V  l2
195689             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
195690         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
195691           AND xet.event_class_code = C_EVENT_CLASS_CODE
195692             AND l2.event_id          = xet.event_id
195693 
195694 )
195695 ;
195696 --
195697 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195698 
195699       trace
195700          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
195701          ,p_level    => C_LEVEL_STATEMENT
195702          ,p_module   => l_log_module);
195703 
195704 END IF;
195705 
195706 
195707 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195708       trace
195709          (p_msg      => 'END of insert_sources_293'
195710          ,p_level    => C_LEVEL_PROCEDURE
195711          ,p_module   => l_log_module);
195712 END IF;
195713 EXCEPTION
195714   WHEN xla_exceptions_pkg.application_exception THEN
195715       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
195716             trace
195717                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
195718                ,p_level    => C_LEVEL_EXCEPTION
195719                ,p_module   => l_log_module);
195720       END IF;
195721       RAISE;
195722   WHEN OTHERS THEN
195723       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
195724             trace
195725                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
195726                ,p_level    => C_LEVEL_EXCEPTION
195727                ,p_module   => l_log_module);
195728        END IF;
195729        xla_exceptions_pkg.raise_message
195730            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_293');
195731 END insert_sources_293;
195732 --
195733 
195734 ---------------------------------------
195735 --
195736 -- PRIVATE FUNCTION
195737 --         EventClass_293
195738 --
195739 ----------------------------------------
195740 --
195741 FUNCTION EventClass_293
195742        (p_application_id         IN NUMBER
195743        ,p_base_ledger_id         IN NUMBER
195744        ,p_target_ledger_id       IN NUMBER
195745        ,p_language               IN VARCHAR2
195746        ,p_currency_code          IN VARCHAR2
195747        ,p_sla_ledger_id          IN NUMBER
195748        ,p_pad_start_date         IN DATE
195749        ,p_pad_end_date           IN DATE
195750        ,p_primary_ledger_id      IN NUMBER)
195751 RETURN BOOLEAN IS
195752 --
195753 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_UPD_ALL';
195754 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_COST_UPD';
195755 
195756 l_calculate_acctd_flag   VARCHAR2(1) :='N';
195757 l_calculate_g_l_flag     VARCHAR2(1) :='N';
195758 --
195759 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195760 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195761 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
195762 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195763 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195764 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
195765 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
195766 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195767 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195768 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195769 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195770 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195771 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195772 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195773 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195774 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195775 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195776 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195777 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195778 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195779 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195780 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195781 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
195782 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
195783 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
195784 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
195785 
195786 l_event_id                             NUMBER;
195787 l_previous_event_id                    NUMBER;
195788 l_first_event_id                       NUMBER;
195789 l_last_event_id                        NUMBER;
195790 
195791 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
195792 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
195793 --
195794 --
195795 l_result                    BOOLEAN := TRUE;
195796 l_rows                      NUMBER  := 1000;
195797 l_event_type_name           VARCHAR2(80) := 'All';
195798 l_event_class_name          VARCHAR2(80) := 'WIP Cost Update';
195799 l_description               VARCHAR2(4000);
195800 l_transaction_reversal      NUMBER;
195801 l_ae_header_id              NUMBER;
195802 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
195803 l_log_module                VARCHAR2(240);
195804 --
195805 l_acct_reversal_source      VARCHAR2(30);
195806 l_trx_reversal_source       VARCHAR2(30);
195807 
195808 l_continue_with_lines       BOOLEAN := TRUE;
195809 --
195810 l_acc_rev_gl_date_source    DATE;                      -- 4262811
195811 --
195812 type t_array_event_id is table of number index by binary_integer;
195813 
195814 l_rec_array_event                    t_rec_array_event;
195815 l_null_rec_array_event               t_rec_array_event;
195816 l_array_ae_header_id                 xla_number_array_type;
195817 l_actual_flag                        VARCHAR2(1) := NULL;
195818 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
195819 l_balance_type_code                  VARCHAR2(1) :=NULL;
195820 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
195821 
195822 --
195823 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
195824 --
195825 
195826 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
195827 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
195828 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
195829 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
195830 TYPE t_array_source_21 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
195831 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
195832 
195833 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
195834 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
195835 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
195836 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
195837 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
195838 
195839 l_array_source_12              t_array_source_12;
195840 l_array_source_12_meaning      t_array_lookup_meaning;
195841 l_array_source_15              t_array_source_15;
195842 l_array_source_19              t_array_source_19;
195843 l_array_source_20              t_array_source_20;
195844 l_array_source_21              t_array_source_21;
195845 l_array_source_38              t_array_source_38;
195846 l_array_source_38_meaning      t_array_lookup_meaning;
195847 
195848 l_array_source_4      t_array_source_4;
195849 l_array_source_11      t_array_source_11;
195850 l_array_source_18      t_array_source_18;
195851 l_array_source_22      t_array_source_22;
195852 l_array_source_24      t_array_source_24;
195853 
195854 --
195855 CURSOR header_cur
195856 IS
195857 SELECT /*+ leading(xet) cardinality(xet,1) */
195858 -- Event Class Code: WIP_COST_UPD
195859     xet.entity_id
195860    ,xet.legal_entity_id
195861    ,xet.entity_code
195862    ,xet.transaction_number
195863    ,xet.event_id
195864    ,xet.event_class_code
195865    ,xet.event_type_code
195866    ,xet.event_number
195867    ,xet.event_date
195868    ,xet.transaction_date
195869    ,xet.reference_num_1
195870    ,xet.reference_num_2
195871    ,xet.reference_num_3
195872    ,xet.reference_num_4
195873    ,xet.reference_char_1
195874    ,xet.reference_char_2
195875    ,xet.reference_char_3
195876    ,xet.reference_char_4
195877    ,xet.reference_date_1
195878    ,xet.reference_date_2
195879    ,xet.reference_date_3
195880    ,xet.reference_date_4
195881    ,xet.event_created_by
195882    ,xet.budgetary_control_flag 
195883   , h1.DISTRIBUTION_TYPE    source_12
195884   , fvl12.meaning   source_12_meaning
195885   , h1.CURRENCY_CODE    source_15
195886   , h1.CURRENCY_CONVERSION_DATE    source_19
195887   , h1.CURRENCY_CONVERSION_RATE    source_20
195888   , h1.CURRENCY_CONVERSION_TYPE    source_21
195889   , h1.TRANSFER_TO_GL_INDICATOR    source_38
195890   , fvl38.meaning   source_38_meaning
195891   FROM xla_events_gt     xet 
195892   , CST_XLA_WIP_HEADERS_V  h1
195893   , fnd_lookup_values    fvl12
195894   , fnd_lookup_values    fvl38
195895  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
195896    and xet.event_class_code = C_EVENT_CLASS_CODE
195897    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
195898    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
195899   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
195900   AND fvl12.view_application_id(+) = 700
195901   AND fvl12.language(+)            = USERENV('LANG')
195902      AND fvl38.lookup_type(+)         = 'YES_NO'
195903   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
195904   AND fvl38.view_application_id(+) = 0
195905   AND fvl38.language(+)            = USERENV('LANG')
195906   
195907  ORDER BY event_id
195908 ;
195909 
195910 
195911 --
195912 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
195913 IS
195914 SELECT  /*+ leading(xet) cardinality(xet,1) */
195915 -- Event Class Code: WIP_COST_UPD
195916     xet.entity_id
195917    ,xet.legal_entity_id
195918    ,xet.entity_code
195919    ,xet.transaction_number
195920    ,xet.event_id
195921    ,xet.event_class_code
195922    ,xet.event_type_code
195923    ,xet.event_number
195924    ,xet.event_date
195925    ,xet.transaction_date
195926    ,xet.reference_num_1
195927    ,xet.reference_num_2
195928    ,xet.reference_num_3
195929    ,xet.reference_num_4
195930    ,xet.reference_char_1
195931    ,xet.reference_char_2
195932    ,xet.reference_char_3
195933    ,xet.reference_char_4
195934    ,xet.reference_date_1
195935    ,xet.reference_date_2
195936    ,xet.reference_date_3
195937    ,xet.reference_date_4
195938    ,xet.event_created_by
195939    ,xet.budgetary_control_flag
195940  , l2.LINE_NUMBER  
195941   , l2.CODE_COMBINATION_ID    source_4
195942   , l2.DISTRIBUTION_IDENTIFIER    source_11
195943   , l2.ENTERED_AMOUNT    source_18
195944   , l2.ACCOUNTED_AMOUNT    source_22
195945   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
195946   FROM xla_events_gt     xet 
195947   , CST_XLA_WIP_LINES_V  l2
195948  WHERE xet.event_id between x_first_event_id and x_last_event_id
195949    and xet.event_date between p_pad_start_date and p_pad_end_date
195950    and xet.event_class_code = C_EVENT_CLASS_CODE
195951    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
195952 ;
195953 
195954 --
195955 BEGIN
195956 IF g_log_enabled THEN
195957    l_log_module := C_DEFAULT_MODULE||'.EventClass_293';
195958 END IF;
195959 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195960    trace
195961       (p_msg      => 'BEGIN of EventClass_293'
195962       ,p_level    => C_LEVEL_PROCEDURE
195963       ,p_module   => l_log_module);
195964 END IF;
195965 
195966 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195967    trace
195968       (p_msg      => 'p_application_id = '||p_application_id||
195969                      ' - p_base_ledger_id = '||p_base_ledger_id||
195970                      ' - p_target_ledger_id  = '||p_target_ledger_id||
195971                      ' - p_language = '||p_language||
195972                      ' - p_currency_code = '||p_currency_code||
195973                      ' - p_sla_ledger_id = '||p_sla_ledger_id
195974       ,p_level    => C_LEVEL_STATEMENT
195975       ,p_module   => l_log_module);
195976 END IF;
195977 --
195978 -- initialze arrays
195979 --
195980 g_array_event.DELETE;
195981 l_rec_array_event := l_null_rec_array_event;
195982 --
195983 --------------------------------------
195984 -- 4262811 Initialze MPA Line Number
195985 --------------------------------------
195986 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
195987 
195988 --
195989 
195990 --
195991 OPEN header_cur;
195992 --
195993 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195994    trace
195995    (p_msg      => 'SQL - FETCH header_cur'
195996    ,p_level    => C_LEVEL_STATEMENT
195997    ,p_module   => l_log_module);
195998 END IF;
195999 --
196000 LOOP
196001 FETCH header_cur BULK COLLECT INTO
196002         l_array_entity_id
196003       , l_array_legal_entity_id
196004       , l_array_entity_code
196005       , l_array_transaction_num
196006       , l_array_event_id
196007       , l_array_class_code
196008       , l_array_event_type
196009       , l_array_event_number
196010       , l_array_event_date
196011       , l_array_transaction_date
196012       , l_array_reference_num_1
196013       , l_array_reference_num_2
196014       , l_array_reference_num_3
196015       , l_array_reference_num_4
196016       , l_array_reference_char_1
196017       , l_array_reference_char_2
196018       , l_array_reference_char_3
196019       , l_array_reference_char_4
196020       , l_array_reference_date_1
196021       , l_array_reference_date_2
196022       , l_array_reference_date_3
196023       , l_array_reference_date_4
196024       , l_array_event_created_by
196025       , l_array_budgetary_control_flag 
196026       , l_array_source_12
196027       , l_array_source_12_meaning
196028       , l_array_source_15
196029       , l_array_source_19
196030       , l_array_source_20
196031       , l_array_source_21
196032       , l_array_source_38
196033       , l_array_source_38_meaning
196034       LIMIT l_rows;
196035 --
196036 IF (C_LEVEL_EVENT >= g_log_level) THEN
196037    trace
196038    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
196039    ,p_level    => C_LEVEL_EVENT
196040    ,p_module   => l_log_module);
196041 END IF;
196042 --
196043 EXIT WHEN l_array_entity_id.COUNT = 0;
196044 
196045 -- initialize arrays
196046 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
196047 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
196048 
196049 --
196050 -- Bug 4458708
196051 --
196052 XLA_AE_LINES_PKG.g_LineNumber := 0;
196053 
196054 
196055 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
196056 g_last_hdr_idx := l_array_event_id.LAST;
196057 --
196058 -- loop for the headers. Each iteration is for each header extract row
196059 -- fetched in header cursor
196060 --
196061 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
196062 
196063 --
196064 -- set event info as cache for other routines to refer event attributes
196065 --
196066 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
196067    (p_application_id           => p_application_id
196068    ,p_primary_ledger_id        => p_primary_ledger_id
196069    ,p_base_ledger_id           => p_base_ledger_id
196070    ,p_target_ledger_id         => p_target_ledger_id
196071    ,p_entity_id                => l_array_entity_id(hdr_idx)
196072    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
196073    ,p_entity_code              => l_array_entity_code(hdr_idx)
196074    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
196075    ,p_event_id                 => l_array_event_id(hdr_idx)
196076    ,p_event_class_code         => l_array_class_code(hdr_idx)
196077    ,p_event_type_code          => l_array_event_type(hdr_idx)
196078    ,p_event_number             => l_array_event_number(hdr_idx)
196079    ,p_event_date               => l_array_event_date(hdr_idx)
196080    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
196081    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
196082    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
196083    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
196084    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
196085    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
196086    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
196087    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
196088    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
196089    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
196090    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
196091    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
196092    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
196093    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
196094    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
196095 
196096 --
196097 -- set the status of entry to C_VALID (0)
196098 --
196099 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
196100 
196101 --
196102 -- initialize a row for ae header
196103 --
196104 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
196105 
196106 l_event_id := l_array_event_id(hdr_idx);
196107 
196108 --
196109 -- storing the hdr_idx for event. May be used by line cursor.
196110 --
196111 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
196112 
196113 --
196114 -- store sources from header extract. This can be improved to
196115 -- store only those sources from header extract that may be used in lines
196116 --
196117 
196118 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
196119 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
196120 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
196121 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
196122 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
196123 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
196124 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
196125 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
196126 
196127 --
196128 -- initilaize the status of ae headers for diffrent balance types
196129 -- the status is initialised to C_NOT_CREATED (2)
196130 --
196131 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
196132 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
196133 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
196134 
196135 --
196136 -- call api to validate and store accounting attributes for header
196137 --
196138 
196139 ------------------------------------------------------------
196140 -- Accrual Reversal : to get date for Standard Source (NONE)
196141 ------------------------------------------------------------
196142 l_acc_rev_gl_date_source := NULL;
196143 
196144      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
196145       l_rec_acct_attrs.array_date_value(1) := 
196146 xla_ae_sources_pkg.GetSystemSourceDate(
196147    p_source_code           => 'XLA_REFERENCE_DATE_1'
196148  , p_source_type_code      => 'Y'
196149  , p_source_application_id =>  602
196150 );
196151      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
196152       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
196153 
196154 
196155 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
196156 
196157 XLA_AE_HEADER_PKG.SetJeCategoryName;
196158 
196159 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
196160 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
196161 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
196162 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
196163 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
196164 
196165 
196166 -- No header level analytical criteria
196167 
196168 --
196169 --accounting attribute enhancement, bug 3612931
196170 --
196171 l_trx_reversal_source := SUBSTR(NULL, 1,30);
196172 
196173 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
196174    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
196175 
196176    xla_accounting_err_pkg.build_message
196177       (p_appli_s_name            => 'XLA'
196178       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
196179       ,p_token_1                 => 'ACCT_ATTR_NAME'
196180       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
196181       ,p_token_2                 => 'PRODUCT_NAME'
196182       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
196183       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
196184       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
196185       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
196186 
196187 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
196188    --
196189    -- following sets the accounting attributes needed to reverse
196190    -- accounting for a distributeion
196191    --
196192    xla_ae_lines_pkg.SetTrxReversalAttrs
196193       (p_event_id              => l_event_id
196194       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
196195       ,p_trx_reversal_source   => l_trx_reversal_source);
196196 
196197 END IF;
196198 
196199 
196200 ----------------------------------------------------------------
196201 -- 4262811 -  update the header statuses to invalid in need be
196202 ----------------------------------------------------------------
196203 --
196204 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
196205 
196206 
196207   -----------------------------------------------
196208   -- No accrual reversal for the event class/type
196209   -----------------------------------------------
196210 ----------------------------------------------------------------
196211 
196212 --
196213 -- this ends the header loop iteration for one bulk fetch
196214 --
196215 END LOOP;
196216 
196217 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
196218 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
196219 
196220 --
196221 -- insert dummy rows into lines gt table that were created due to
196222 -- transaction reversals
196223 --
196224 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
196225    l_result := XLA_AE_LINES_PKG.InsertLines;
196226 END IF;
196227 
196228 --
196229 -- reset the temp_line_num for each set of events fetched from header
196230 -- cursor rather than doing it for each new event in line cursor
196231 -- Bug 3939231
196232 --
196233 xla_ae_lines_pkg.g_temp_line_num := 0;
196234 
196235 
196236 
196237 --
196238 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
196239 --
196240 --
196241 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196242 
196243       trace
196244          (p_msg      => 'SQL - FETCH line_cur'
196245          ,p_level    => C_LEVEL_STATEMENT
196246          ,p_module   => l_log_module);
196247 
196248 END IF;
196249 --
196250 --
196251 LOOP
196252   --
196253   FETCH line_cur BULK COLLECT INTO
196254         l_array_entity_id
196255       , l_array_legal_entity_id
196256       , l_array_entity_code
196257       , l_array_transaction_num
196258       , l_array_event_id
196259       , l_array_class_code
196260       , l_array_event_type
196261       , l_array_event_number
196262       , l_array_event_date
196263       , l_array_transaction_date
196264       , l_array_reference_num_1
196265       , l_array_reference_num_2
196266       , l_array_reference_num_3
196267       , l_array_reference_num_4
196268       , l_array_reference_char_1
196269       , l_array_reference_char_2
196270       , l_array_reference_char_3
196271       , l_array_reference_char_4
196272       , l_array_reference_date_1
196273       , l_array_reference_date_2
196274       , l_array_reference_date_3
196275       , l_array_reference_date_4
196276       , l_array_event_created_by
196277       , l_array_budgetary_control_flag
196278       , l_array_extract_line_num 
196279       , l_array_source_4
196280       , l_array_source_11
196281       , l_array_source_18
196282       , l_array_source_22
196283       , l_array_source_24
196284       LIMIT l_rows;
196285 
196286   --
196287   IF (C_LEVEL_EVENT >= g_log_level) THEN
196288             trace
196289                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
196290                ,p_level    => C_LEVEL_EVENT
196291                ,p_module   => l_log_module);
196292   END IF;
196293   --
196294   EXIT WHEN l_array_entity_id.count = 0;
196295 
196296   XLA_AE_LINES_PKG.g_rec_lines := null;
196297 
196298 --
196299 -- Bug 4458708
196300 --
196301 XLA_AE_LINES_PKG.g_LineNumber := 0;
196302 --
196303 --
196304 
196305 FOR Idx IN 1..l_array_event_id.count LOOP
196306    --
196307    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
196308    --
196309    l_event_id := l_array_event_id(idx);  -- 5648433
196310 
196311    --
196312    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
196313    --
196314 
196315    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
196316              (g_array_event(l_event_id).array_value_num('header_index'))
196317          ,'N'
196318          ) <> 'Y'
196319    THEN
196320       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196321          trace
196322             (p_msg      => 'Trancaction revesal option is not Y '
196323             ,p_level    => C_LEVEL_STATEMENT
196324             ,p_module   => l_log_module);
196325       END IF;
196326 
196327 --
196328 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
196329 --
196330 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
196331 --
196332 -- set event info as cache for other routines to refer event attributes
196333 --
196334 
196335 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
196336    l_previous_event_id := l_event_id;
196337 
196338    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
196339       (p_application_id           => p_application_id
196340       ,p_primary_ledger_id        => p_primary_ledger_id
196341       ,p_base_ledger_id           => p_base_ledger_id
196342       ,p_target_ledger_id         => p_target_ledger_id
196343       ,p_entity_id                => l_array_entity_id(Idx)
196344       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
196345       ,p_entity_code              => l_array_entity_code(Idx)
196346       ,p_transaction_num          => l_array_transaction_num(Idx)
196347       ,p_event_id                 => l_array_event_id(Idx)
196348       ,p_event_class_code         => l_array_class_code(Idx)
196349       ,p_event_type_code          => l_array_event_type(Idx)
196350       ,p_event_number             => l_array_event_number(Idx)
196351       ,p_event_date               => l_array_event_date(Idx)
196352       ,p_transaction_date         => l_array_transaction_date(Idx)
196353       ,p_reference_num_1          => l_array_reference_num_1(Idx)
196354       ,p_reference_num_2          => l_array_reference_num_2(Idx)
196355       ,p_reference_num_3          => l_array_reference_num_3(Idx)
196356       ,p_reference_num_4          => l_array_reference_num_4(Idx)
196357       ,p_reference_char_1         => l_array_reference_char_1(Idx)
196358       ,p_reference_char_2         => l_array_reference_char_2(Idx)
196359       ,p_reference_char_3         => l_array_reference_char_3(Idx)
196360       ,p_reference_char_4         => l_array_reference_char_4(Idx)
196361       ,p_reference_date_1         => l_array_reference_date_1(Idx)
196362       ,p_reference_date_2         => l_array_reference_date_2(Idx)
196363       ,p_reference_date_3         => l_array_reference_date_3(Idx)
196364       ,p_reference_date_4         => l_array_reference_date_4(Idx)
196365       ,p_event_created_by         => l_array_event_created_by(Idx)
196366       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
196367        --
196368 END IF;
196369 
196370 
196371 
196372 --
196373 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
196374 
196375 l_acct_reversal_source := SUBSTR(NULL, 1,30);
196376 
196377 IF l_continue_with_lines THEN
196378    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
196379       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
196380 
196381       xla_accounting_err_pkg.build_message
196382          (p_appli_s_name            => 'XLA'
196383          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
196384          ,p_token_1                 => 'LINE_NUMBER'
196385          ,p_value_1                 => l_array_extract_line_num(Idx)
196386          ,p_token_2                 => 'PRODUCT_NAME'
196387          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
196388          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
196389          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
196390          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
196391 
196392    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
196393       --
196394       -- following sets the accounting attributes needed to reverse
196395       -- accounting for a distributeion
196396       --
196397 
196398       --
196399       -- 5217187
196400       --
196401       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
196402       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
196403                                        g_array_event(l_event_id).array_value_num('header_index'));
196404       --
196405       --
196406 
196407       -- No reversal code generated
196408 
196409       xla_ae_lines_pkg.SetAcctReversalAttrs
196410          (p_event_id             => l_event_id
196411          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
196412          ,p_calculate_acctd_flag => l_calculate_acctd_flag
196413          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
196414    END IF;
196415 
196416    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
196417        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
196418 
196419 --
196420 AcctLineType_21 (
196421  p_application_id  => p_application_id
196422  ,p_event_id     => l_event_id
196423  ,p_calculate_acctd_flag => l_calculate_acctd_flag
196424  ,p_calculate_g_l_flag => l_calculate_g_l_flag
196425  ,p_actual_flag => l_actual_flag
196426  ,p_balance_type_code => l_balance_type_code
196427  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
196428  
196429  , p_source_4 => l_array_source_4(Idx)
196430  , p_source_11 => l_array_source_11(Idx)
196431  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
196432  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
196433  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
196434  , p_source_18 => l_array_source_18(Idx)
196435  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
196436  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
196437  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
196438  , p_source_22 => l_array_source_22(Idx)
196439  , p_source_24 => l_array_source_24(Idx)
196440  );
196441 If(l_balance_type_code = 'A') THEN
196442   l_actual_gain_loss_ref := l_gain_or_loss_ref;
196443 END IF;
196444 
196445 --
196446 
196447 
196448 --
196449 AcctLineType_243 (
196450  p_application_id  => p_application_id
196451  ,p_event_id     => l_event_id
196452  ,p_calculate_acctd_flag => l_calculate_acctd_flag
196453  ,p_calculate_g_l_flag => l_calculate_g_l_flag
196454  ,p_actual_flag => l_actual_flag
196455  ,p_balance_type_code => l_balance_type_code
196456  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
196457  
196458  , p_source_4 => l_array_source_4(Idx)
196459  , p_source_11 => l_array_source_11(Idx)
196460  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
196461  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
196462  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
196463  , p_source_18 => l_array_source_18(Idx)
196464  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
196465  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
196466  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
196467  , p_source_22 => l_array_source_22(Idx)
196468  , p_source_24 => l_array_source_24(Idx)
196469  );
196470 If(l_balance_type_code = 'A') THEN
196471   l_actual_gain_loss_ref := l_gain_or_loss_ref;
196472 END IF;
196473 
196474 --
196475 
196476       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
196477       -- or secondary ledger that has different currency with primary
196478       -- or alc that is calculated by sla
196479       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
196480             (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'))
196481 
196482 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
196483 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
196484           AND (l_actual_flag = 'A')) THEN
196485         XLA_AE_LINES_PKG.CreateGainOrLossLines(
196486           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
196487          ,p_application_id   => p_application_id
196488          ,p_amb_context_code => 'DEFAULT'
196489          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
196490          ,p_event_class_code => C_EVENT_CLASS_CODE
196491          ,p_event_type_code  => C_EVENT_TYPE_CODE
196492          
196493          ,p_gain_ccid        => -1
196494          ,p_loss_ccid        => -1
196495 
196496          ,p_actual_flag      => l_actual_flag
196497          ,p_enc_flag         => null
196498          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
196499          ,p_enc_g_l_ref      => null
196500          );
196501       END IF;
196502    END IF;
196503 END IF;
196504 
196505    ELSE
196506       --
196507       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
196508       --
196509       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196510          trace
196511             (p_msg      => 'Trancaction revesal option is Y'
196512             ,p_level    => C_LEVEL_STATEMENT
196513             ,p_module   => l_log_module);
196514       END IF;
196515    END IF;
196516 
196517 END LOOP;
196518 l_result := XLA_AE_LINES_PKG.InsertLines ;
196519 end loop;
196520 close line_cur;
196521 
196522 
196523 --
196524 -- insert headers into xla_ae_headers_gt table
196525 --
196526 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
196527 
196528 -- insert into errors table here.
196529 
196530 END LOOP;
196531 
196532 --
196533 -- 4865292
196534 --
196535 -- Compare g_hdr_extract_count with event count in
196536 -- CreateHeadersAndLines.
196537 --
196538 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
196539 
196540 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196541    trace (p_msg     => '# rows extracted from header extract objects '
196542                     || ' (running total): '
196543                     || g_hdr_extract_count
196544          ,p_level   => C_LEVEL_STATEMENT
196545          ,p_module  => l_log_module);
196546 END IF;
196547 
196548 CLOSE header_cur;
196549 --
196550 
196551 --
196552 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
196553    trace
196554       (p_msg      => 'END of EventClass_293'
196555       ,p_level    => C_LEVEL_PROCEDURE
196556       ,p_module   => l_log_module);
196557 END IF;
196558 --
196559 RETURN l_result;
196560 EXCEPTION
196561 WHEN xla_exceptions_pkg.application_exception THEN
196562    
196563 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
196564 
196565    
196566 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
196567 
196568    RAISE;
196569 
196570 WHEN NO_DATA_FOUND THEN
196571 
196572 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
196573 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
196574 
196575 FOR header_record IN header_cur
196576 LOOP
196577     l_array_header_events(header_record.event_id) := header_record.event_id;
196578 END LOOP;
196579 
196580 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
196581 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
196582 
196583 fnd_file.put_line(fnd_file.LOG, '                    ');
196584 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
196585 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
196586 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
196587 
196588 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
196589 LOOP
196590 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
196591 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
196592         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
196593 	END IF;
196594 END LOOP;
196595 
196596 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
196597 fnd_file.put_line(fnd_file.LOG, '                    ');
196598 
196599 
196600 xla_exceptions_pkg.raise_message
196601       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_293');
196602 
196603 
196604 WHEN OTHERS THEN
196605    xla_exceptions_pkg.raise_message
196606       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_293');
196607 END EventClass_293;
196608 --
196609 
196610 ---------------------------------------
196611 --
196612 -- PRIVATE PROCEDURE
196613 --         insert_sources_294
196614 --
196615 ----------------------------------------
196616 --
196617 PROCEDURE insert_sources_294(
196618                                 p_target_ledger_id       IN NUMBER
196619                               , p_language               IN VARCHAR2
196620                               , p_sla_ledger_id          IN NUMBER
196621                               , p_pad_start_date         IN DATE
196622                               , p_pad_end_date           IN DATE
196623                          )
196624 IS
196625 
196626 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_LOT_ALL';
196627 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_LOT';
196628 p_apps_owner                   VARCHAR2(30);
196629 l_log_module                   VARCHAR2(240);
196630 BEGIN
196631 IF g_log_enabled THEN
196632       l_log_module := C_DEFAULT_MODULE||'.insert_sources_294';
196633 END IF;
196634 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
196635 
196636       trace
196637          (p_msg      => 'BEGIN of insert_sources_294'
196638          ,p_level    => C_LEVEL_PROCEDURE
196639          ,p_module   => l_log_module);
196640 
196641 END IF;
196642 
196643 -- select APPS owner
196644 SELECT oracle_username
196645   INTO p_apps_owner
196646   FROM fnd_oracle_userid
196647  WHERE read_only_flag = 'U'
196648 ;
196649 
196650 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196651       trace
196652          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
196653                         ' - p_language = '||p_language||
196654                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
196655                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
196656                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
196657                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
196658          ,p_level    => C_LEVEL_STATEMENT
196659          ,p_module   => l_log_module);
196660 END IF;
196661 
196662 
196663 --
196664 INSERT INTO xla_diag_sources --hdr2
196665 (
196666         event_id
196667       , ledger_id
196668       , sla_ledger_id
196669       , description_language
196670       , object_name
196671       , object_type_code
196672       , line_number
196673       , source_application_id
196674       , source_type_code
196675       , source_code
196676       , source_value
196677       , source_meaning
196678       , created_by
196679       , creation_date
196680       , last_update_date
196681       , last_updated_by
196682       , last_update_login
196683       , program_update_date
196684       , program_application_id
196685       , program_id
196686       , request_id
196687 )
196688 SELECT
196689         event_id
196690       , p_target_ledger_id
196691       , p_sla_ledger_id
196692       , p_language
196693       , object_name
196694       , object_type_code
196695       , line_number
196696       , source_application_id
196697       , source_type_code
196698       , source_code
196699       , SUBSTR(source_value ,1,1996)
196700       , SUBSTR(source_meaning ,1,200)
196701       , xla_environment_pkg.g_Usr_Id
196702       , TRUNC(SYSDATE)
196703       , TRUNC(SYSDATE)
196704       , xla_environment_pkg.g_Usr_Id
196705       , xla_environment_pkg.g_Login_Id
196706       , TRUNC(SYSDATE)
196707       , xla_environment_pkg.g_Prog_Appl_Id
196708       , xla_environment_pkg.g_Prog_Id
196709       , xla_environment_pkg.g_Req_Id
196710   FROM (
196711        SELECT xet.event_id                  event_id
196712             , 0                          line_number
196713             , CASE r
196714                WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V' 
196715                 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V' 
196716                 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V' 
196717                 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V' 
196718                 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V' 
196719                 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V' 
196720                 
196721                ELSE null
196722               END                           object_name
196723             , CASE r
196724                 WHEN 1 THEN 'HEADER' 
196725                 WHEN 2 THEN 'HEADER' 
196726                 WHEN 3 THEN 'HEADER' 
196727                 WHEN 4 THEN 'HEADER' 
196728                 WHEN 5 THEN 'HEADER' 
196729                 WHEN 6 THEN 'HEADER' 
196730                 
196731                 ELSE null
196732               END                           object_type_code
196733             , CASE r
196734                 WHEN 1 THEN '707' 
196735                 WHEN 2 THEN '707' 
196736                 WHEN 3 THEN '707' 
196737                 WHEN 4 THEN '707' 
196738                 WHEN 5 THEN '707' 
196739                 WHEN 6 THEN '707' 
196740                 
196741                 ELSE null
196742               END                           source_application_id
196743             , 'S'             source_type_code
196744             , CASE r
196745                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
196746                 WHEN 2 THEN 'CURRENCY_CODE' 
196747                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
196748                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
196749                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
196750                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
196751                 
196752                 ELSE null
196753               END                           source_code
196754             , CASE r
196755                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
196756                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
196757                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
196758                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
196759                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
196760                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
196761                 
196762                 ELSE null
196763               END                           source_value
196764             , CASE r
196765                 WHEN 1 THEN fvl12.meaning
196766                 WHEN 6 THEN fvl38.meaning
196767                 
196768                 ELSE null
196769               END               source_meaning
196770          FROM xla_events_gt     xet  
196771       , CST_XLA_WIP_HEADERS_V  h1
196772   , fnd_lookup_values    fvl12
196773   , fnd_lookup_values    fvl38
196774              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
196775          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
196776            AND xet.event_class_code = C_EVENT_CLASS_CODE
196777               AND h1.event_id = xet.event_id
196778    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
196779   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
196780   AND fvl12.view_application_id(+) = 700
196781   AND fvl12.language(+)            = USERENV('LANG')
196782      AND fvl38.lookup_type(+)         = 'YES_NO'
196783   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
196784   AND fvl38.view_application_id(+) = 0
196785   AND fvl38.language(+)            = USERENV('LANG')
196786   
196787 )
196788 ;
196789 --
196790 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196791 
196792       trace
196793          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
196794          ,p_level    => C_LEVEL_STATEMENT
196795          ,p_module   => l_log_module);
196796 
196797 END IF;
196798 --
196799 
196800 
196801 
196802 --
196803 INSERT INTO xla_diag_sources  --line2
196804 (
196805         event_id
196806       , ledger_id
196807       , sla_ledger_id
196808       , description_language
196809       , object_name
196810       , object_type_code
196811       , line_number
196812       , source_application_id
196813       , source_type_code
196814       , source_code
196815       , source_value
196816       , source_meaning
196817       , created_by
196818       , creation_date
196819       , last_update_date
196820       , last_updated_by
196821       , last_update_login
196822       , program_update_date
196823       , program_application_id
196824       , program_id
196825       , request_id
196826 )
196827 SELECT  event_id
196828       , p_target_ledger_id
196829       , p_sla_ledger_id
196830       , p_language
196831       , object_name
196832       , object_type_code
196833       , line_number
196834       , source_application_id
196835       , source_type_code
196836       , source_code
196837       , SUBSTR(source_value,1,1996)
196838       , SUBSTR(source_meaning ,1,200)
196839       , xla_environment_pkg.g_Usr_Id
196840       , TRUNC(SYSDATE)
196841       , TRUNC(SYSDATE)
196842       , xla_environment_pkg.g_Usr_Id
196843       , xla_environment_pkg.g_Login_Id
196844       , TRUNC(SYSDATE)
196845       , xla_environment_pkg.g_Prog_Appl_Id
196846       , xla_environment_pkg.g_Prog_Id
196847       , xla_environment_pkg.g_Req_Id
196848   FROM (
196849        SELECT xet.event_id                  event_id
196850             , l2.line_number                 line_number
196851             , CASE r
196852                WHEN 1 THEN 'CST_XLA_WIP_LINES_V' 
196853                 WHEN 2 THEN 'CST_XLA_WIP_LINES_V' 
196854                 WHEN 3 THEN 'CST_XLA_WIP_LINES_V' 
196855                 WHEN 4 THEN 'CST_XLA_WIP_LINES_V' 
196856                 WHEN 5 THEN 'CST_XLA_WIP_LINES_V' 
196857                 
196858                ELSE null
196859               END                           object_name
196860             , CASE r
196861                 WHEN 1 THEN 'LINE' 
196862                 WHEN 2 THEN 'LINE' 
196863                 WHEN 3 THEN 'LINE' 
196864                 WHEN 4 THEN 'LINE' 
196865                 WHEN 5 THEN 'LINE' 
196866                 
196867                 ELSE null
196868               END                           object_type_code
196869             , CASE r
196870                 WHEN 1 THEN '707' 
196871                 WHEN 2 THEN '707' 
196872                 WHEN 3 THEN '707' 
196873                 WHEN 4 THEN '707' 
196874                 WHEN 5 THEN '707' 
196875                 
196876                 ELSE null
196877               END                           source_application_id
196878             , 'S'             source_type_code
196879             , CASE r
196880                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
196881                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
196882                 WHEN 3 THEN 'ENTERED_AMOUNT' 
196883                 WHEN 4 THEN 'ACCOUNTED_AMOUNT' 
196884                 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
196885                 
196886                 ELSE null
196887               END                           source_code
196888             , CASE r
196889                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
196890                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
196891                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
196892                 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
196893                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
196894                 
196895                 ELSE null
196896               END                           source_value
196897             , null              source_meaning
196898          FROM  xla_events_gt     xet  
196899         , CST_XLA_WIP_LINES_V  l2
196900             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
196901         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
196902           AND xet.event_class_code = C_EVENT_CLASS_CODE
196903             AND l2.event_id          = xet.event_id
196904 
196905 )
196906 ;
196907 --
196908 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196909 
196910       trace
196911          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
196912          ,p_level    => C_LEVEL_STATEMENT
196913          ,p_module   => l_log_module);
196914 
196915 END IF;
196916 
196917 
196918 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
196919       trace
196920          (p_msg      => 'END of insert_sources_294'
196921          ,p_level    => C_LEVEL_PROCEDURE
196922          ,p_module   => l_log_module);
196923 END IF;
196924 EXCEPTION
196925   WHEN xla_exceptions_pkg.application_exception THEN
196926       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
196927             trace
196928                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
196929                ,p_level    => C_LEVEL_EXCEPTION
196930                ,p_module   => l_log_module);
196931       END IF;
196932       RAISE;
196933   WHEN OTHERS THEN
196934       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
196935             trace
196936                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
196937                ,p_level    => C_LEVEL_EXCEPTION
196938                ,p_module   => l_log_module);
196939        END IF;
196940        xla_exceptions_pkg.raise_message
196941            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_294');
196942 END insert_sources_294;
196943 --
196944 
196945 ---------------------------------------
196946 --
196947 -- PRIVATE FUNCTION
196948 --         EventClass_294
196949 --
196950 ----------------------------------------
196951 --
196952 FUNCTION EventClass_294
196953        (p_application_id         IN NUMBER
196954        ,p_base_ledger_id         IN NUMBER
196955        ,p_target_ledger_id       IN NUMBER
196956        ,p_language               IN VARCHAR2
196957        ,p_currency_code          IN VARCHAR2
196958        ,p_sla_ledger_id          IN NUMBER
196959        ,p_pad_start_date         IN DATE
196960        ,p_pad_end_date           IN DATE
196961        ,p_primary_ledger_id      IN NUMBER)
196962 RETURN BOOLEAN IS
196963 --
196964 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_LOT_ALL';
196965 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_LOT';
196966 
196967 l_calculate_acctd_flag   VARCHAR2(1) :='N';
196968 l_calculate_g_l_flag     VARCHAR2(1) :='N';
196969 --
196970 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196971 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196972 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
196973 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196974 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196975 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
196976 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
196977 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196978 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196979 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196980 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196981 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196982 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196983 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196984 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196985 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196986 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196987 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196988 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196989 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196990 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196991 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196992 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
196993 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
196994 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
196995 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
196996 
196997 l_event_id                             NUMBER;
196998 l_previous_event_id                    NUMBER;
196999 l_first_event_id                       NUMBER;
197000 l_last_event_id                        NUMBER;
197001 
197002 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
197003 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
197004 --
197005 --
197006 l_result                    BOOLEAN := TRUE;
197007 l_rows                      NUMBER  := 1000;
197008 l_event_type_name           VARCHAR2(80) := 'All';
197009 l_event_class_name          VARCHAR2(80) := 'WIP Lot';
197010 l_description               VARCHAR2(4000);
197011 l_transaction_reversal      NUMBER;
197012 l_ae_header_id              NUMBER;
197013 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
197014 l_log_module                VARCHAR2(240);
197015 --
197016 l_acct_reversal_source      VARCHAR2(30);
197017 l_trx_reversal_source       VARCHAR2(30);
197018 
197019 l_continue_with_lines       BOOLEAN := TRUE;
197020 --
197021 l_acc_rev_gl_date_source    DATE;                      -- 4262811
197022 --
197023 type t_array_event_id is table of number index by binary_integer;
197024 
197025 l_rec_array_event                    t_rec_array_event;
197026 l_null_rec_array_event               t_rec_array_event;
197027 l_array_ae_header_id                 xla_number_array_type;
197028 l_actual_flag                        VARCHAR2(1) := NULL;
197029 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
197030 l_balance_type_code                  VARCHAR2(1) :=NULL;
197031 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
197032 
197033 --
197034 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
197035 --
197036 
197037 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
197038 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
197039 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
197040 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
197041 TYPE t_array_source_21 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
197042 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
197043 
197044 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
197045 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
197046 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
197047 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
197048 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
197049 
197050 l_array_source_12              t_array_source_12;
197051 l_array_source_12_meaning      t_array_lookup_meaning;
197052 l_array_source_15              t_array_source_15;
197053 l_array_source_19              t_array_source_19;
197054 l_array_source_20              t_array_source_20;
197055 l_array_source_21              t_array_source_21;
197056 l_array_source_38              t_array_source_38;
197057 l_array_source_38_meaning      t_array_lookup_meaning;
197058 
197059 l_array_source_4      t_array_source_4;
197060 l_array_source_11      t_array_source_11;
197061 l_array_source_18      t_array_source_18;
197062 l_array_source_22      t_array_source_22;
197063 l_array_source_24      t_array_source_24;
197064 
197065 --
197066 CURSOR header_cur
197067 IS
197068 SELECT /*+ leading(xet) cardinality(xet,1) */
197069 -- Event Class Code: WIP_LOT
197070     xet.entity_id
197071    ,xet.legal_entity_id
197072    ,xet.entity_code
197073    ,xet.transaction_number
197074    ,xet.event_id
197075    ,xet.event_class_code
197076    ,xet.event_type_code
197077    ,xet.event_number
197078    ,xet.event_date
197079    ,xet.transaction_date
197080    ,xet.reference_num_1
197081    ,xet.reference_num_2
197082    ,xet.reference_num_3
197083    ,xet.reference_num_4
197084    ,xet.reference_char_1
197085    ,xet.reference_char_2
197086    ,xet.reference_char_3
197087    ,xet.reference_char_4
197088    ,xet.reference_date_1
197089    ,xet.reference_date_2
197090    ,xet.reference_date_3
197091    ,xet.reference_date_4
197092    ,xet.event_created_by
197093    ,xet.budgetary_control_flag 
197094   , h1.DISTRIBUTION_TYPE    source_12
197095   , fvl12.meaning   source_12_meaning
197096   , h1.CURRENCY_CODE    source_15
197097   , h1.CURRENCY_CONVERSION_DATE    source_19
197098   , h1.CURRENCY_CONVERSION_RATE    source_20
197099   , h1.CURRENCY_CONVERSION_TYPE    source_21
197100   , h1.TRANSFER_TO_GL_INDICATOR    source_38
197101   , fvl38.meaning   source_38_meaning
197102   FROM xla_events_gt     xet 
197103   , CST_XLA_WIP_HEADERS_V  h1
197104   , fnd_lookup_values    fvl12
197105   , fnd_lookup_values    fvl38
197106  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
197107    and xet.event_class_code = C_EVENT_CLASS_CODE
197108    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
197109    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
197110   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
197111   AND fvl12.view_application_id(+) = 700
197112   AND fvl12.language(+)            = USERENV('LANG')
197113      AND fvl38.lookup_type(+)         = 'YES_NO'
197114   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
197115   AND fvl38.view_application_id(+) = 0
197116   AND fvl38.language(+)            = USERENV('LANG')
197117   
197118  ORDER BY event_id
197119 ;
197120 
197121 
197122 --
197123 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
197124 IS
197125 SELECT  /*+ leading(xet) cardinality(xet,1) */
197126 -- Event Class Code: WIP_LOT
197127     xet.entity_id
197128    ,xet.legal_entity_id
197129    ,xet.entity_code
197130    ,xet.transaction_number
197131    ,xet.event_id
197132    ,xet.event_class_code
197133    ,xet.event_type_code
197134    ,xet.event_number
197135    ,xet.event_date
197136    ,xet.transaction_date
197137    ,xet.reference_num_1
197138    ,xet.reference_num_2
197139    ,xet.reference_num_3
197140    ,xet.reference_num_4
197141    ,xet.reference_char_1
197142    ,xet.reference_char_2
197143    ,xet.reference_char_3
197144    ,xet.reference_char_4
197145    ,xet.reference_date_1
197146    ,xet.reference_date_2
197147    ,xet.reference_date_3
197148    ,xet.reference_date_4
197149    ,xet.event_created_by
197150    ,xet.budgetary_control_flag
197151  , l2.LINE_NUMBER  
197152   , l2.CODE_COMBINATION_ID    source_4
197153   , l2.DISTRIBUTION_IDENTIFIER    source_11
197154   , l2.ENTERED_AMOUNT    source_18
197155   , l2.ACCOUNTED_AMOUNT    source_22
197156   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
197157   FROM xla_events_gt     xet 
197158   , CST_XLA_WIP_LINES_V  l2
197159  WHERE xet.event_id between x_first_event_id and x_last_event_id
197160    and xet.event_date between p_pad_start_date and p_pad_end_date
197161    and xet.event_class_code = C_EVENT_CLASS_CODE
197162    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
197163 ;
197164 
197165 --
197166 BEGIN
197167 IF g_log_enabled THEN
197168    l_log_module := C_DEFAULT_MODULE||'.EventClass_294';
197169 END IF;
197170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
197171    trace
197172       (p_msg      => 'BEGIN of EventClass_294'
197173       ,p_level    => C_LEVEL_PROCEDURE
197174       ,p_module   => l_log_module);
197175 END IF;
197176 
197177 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197178    trace
197179       (p_msg      => 'p_application_id = '||p_application_id||
197180                      ' - p_base_ledger_id = '||p_base_ledger_id||
197181                      ' - p_target_ledger_id  = '||p_target_ledger_id||
197182                      ' - p_language = '||p_language||
197183                      ' - p_currency_code = '||p_currency_code||
197184                      ' - p_sla_ledger_id = '||p_sla_ledger_id
197185       ,p_level    => C_LEVEL_STATEMENT
197186       ,p_module   => l_log_module);
197187 END IF;
197188 --
197189 -- initialze arrays
197190 --
197191 g_array_event.DELETE;
197192 l_rec_array_event := l_null_rec_array_event;
197193 --
197194 --------------------------------------
197195 -- 4262811 Initialze MPA Line Number
197196 --------------------------------------
197197 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
197198 
197199 --
197200 
197201 --
197202 OPEN header_cur;
197203 --
197204 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197205    trace
197206    (p_msg      => 'SQL - FETCH header_cur'
197207    ,p_level    => C_LEVEL_STATEMENT
197208    ,p_module   => l_log_module);
197209 END IF;
197210 --
197211 LOOP
197212 FETCH header_cur BULK COLLECT INTO
197213         l_array_entity_id
197214       , l_array_legal_entity_id
197215       , l_array_entity_code
197216       , l_array_transaction_num
197217       , l_array_event_id
197218       , l_array_class_code
197219       , l_array_event_type
197220       , l_array_event_number
197221       , l_array_event_date
197222       , l_array_transaction_date
197223       , l_array_reference_num_1
197224       , l_array_reference_num_2
197225       , l_array_reference_num_3
197226       , l_array_reference_num_4
197227       , l_array_reference_char_1
197228       , l_array_reference_char_2
197229       , l_array_reference_char_3
197230       , l_array_reference_char_4
197231       , l_array_reference_date_1
197232       , l_array_reference_date_2
197233       , l_array_reference_date_3
197234       , l_array_reference_date_4
197235       , l_array_event_created_by
197236       , l_array_budgetary_control_flag 
197237       , l_array_source_12
197238       , l_array_source_12_meaning
197239       , l_array_source_15
197240       , l_array_source_19
197241       , l_array_source_20
197242       , l_array_source_21
197243       , l_array_source_38
197244       , l_array_source_38_meaning
197245       LIMIT l_rows;
197246 --
197247 IF (C_LEVEL_EVENT >= g_log_level) THEN
197248    trace
197249    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
197250    ,p_level    => C_LEVEL_EVENT
197251    ,p_module   => l_log_module);
197252 END IF;
197253 --
197254 EXIT WHEN l_array_entity_id.COUNT = 0;
197255 
197256 -- initialize arrays
197257 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
197258 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
197259 
197260 --
197261 -- Bug 4458708
197262 --
197263 XLA_AE_LINES_PKG.g_LineNumber := 0;
197264 
197265 
197266 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
197267 g_last_hdr_idx := l_array_event_id.LAST;
197268 --
197269 -- loop for the headers. Each iteration is for each header extract row
197270 -- fetched in header cursor
197271 --
197272 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
197273 
197274 --
197275 -- set event info as cache for other routines to refer event attributes
197276 --
197277 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
197278    (p_application_id           => p_application_id
197279    ,p_primary_ledger_id        => p_primary_ledger_id
197280    ,p_base_ledger_id           => p_base_ledger_id
197281    ,p_target_ledger_id         => p_target_ledger_id
197282    ,p_entity_id                => l_array_entity_id(hdr_idx)
197283    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
197284    ,p_entity_code              => l_array_entity_code(hdr_idx)
197285    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
197286    ,p_event_id                 => l_array_event_id(hdr_idx)
197287    ,p_event_class_code         => l_array_class_code(hdr_idx)
197288    ,p_event_type_code          => l_array_event_type(hdr_idx)
197289    ,p_event_number             => l_array_event_number(hdr_idx)
197290    ,p_event_date               => l_array_event_date(hdr_idx)
197291    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
197292    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
197293    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
197294    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
197295    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
197296    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
197297    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
197298    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
197299    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
197300    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
197301    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
197302    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
197303    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
197304    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
197305    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
197306 
197307 --
197308 -- set the status of entry to C_VALID (0)
197309 --
197310 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
197311 
197312 --
197313 -- initialize a row for ae header
197314 --
197315 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
197316 
197317 l_event_id := l_array_event_id(hdr_idx);
197318 
197319 --
197320 -- storing the hdr_idx for event. May be used by line cursor.
197321 --
197322 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
197323 
197324 --
197325 -- store sources from header extract. This can be improved to
197326 -- store only those sources from header extract that may be used in lines
197327 --
197328 
197329 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
197330 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
197331 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
197332 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
197333 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
197334 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
197335 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
197336 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
197337 
197338 --
197339 -- initilaize the status of ae headers for diffrent balance types
197340 -- the status is initialised to C_NOT_CREATED (2)
197341 --
197342 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
197343 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
197344 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
197345 
197346 --
197347 -- call api to validate and store accounting attributes for header
197348 --
197349 
197350 ------------------------------------------------------------
197351 -- Accrual Reversal : to get date for Standard Source (NONE)
197352 ------------------------------------------------------------
197353 l_acc_rev_gl_date_source := NULL;
197354 
197355      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
197356       l_rec_acct_attrs.array_date_value(1) := 
197357 xla_ae_sources_pkg.GetSystemSourceDate(
197358    p_source_code           => 'XLA_REFERENCE_DATE_1'
197359  , p_source_type_code      => 'Y'
197360  , p_source_application_id =>  602
197361 );
197362      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
197363       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
197364 
197365 
197366 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
197367 
197368 XLA_AE_HEADER_PKG.SetJeCategoryName;
197369 
197370 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
197371 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
197372 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
197373 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
197374 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
197375 
197376 
197377 -- No header level analytical criteria
197378 
197379 --
197380 --accounting attribute enhancement, bug 3612931
197381 --
197382 l_trx_reversal_source := SUBSTR(NULL, 1,30);
197383 
197384 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
197385    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
197386 
197387    xla_accounting_err_pkg.build_message
197388       (p_appli_s_name            => 'XLA'
197389       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
197390       ,p_token_1                 => 'ACCT_ATTR_NAME'
197391       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
197392       ,p_token_2                 => 'PRODUCT_NAME'
197393       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
197394       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
197395       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
197396       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
197397 
197398 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
197399    --
197400    -- following sets the accounting attributes needed to reverse
197401    -- accounting for a distributeion
197402    --
197403    xla_ae_lines_pkg.SetTrxReversalAttrs
197404       (p_event_id              => l_event_id
197405       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
197406       ,p_trx_reversal_source   => l_trx_reversal_source);
197407 
197408 END IF;
197409 
197410 
197411 ----------------------------------------------------------------
197412 -- 4262811 -  update the header statuses to invalid in need be
197413 ----------------------------------------------------------------
197414 --
197415 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
197416 
197417 
197418   -----------------------------------------------
197419   -- No accrual reversal for the event class/type
197420   -----------------------------------------------
197421 ----------------------------------------------------------------
197422 
197423 --
197424 -- this ends the header loop iteration for one bulk fetch
197425 --
197426 END LOOP;
197427 
197428 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
197429 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
197430 
197431 --
197432 -- insert dummy rows into lines gt table that were created due to
197433 -- transaction reversals
197434 --
197435 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
197436    l_result := XLA_AE_LINES_PKG.InsertLines;
197437 END IF;
197438 
197439 --
197440 -- reset the temp_line_num for each set of events fetched from header
197441 -- cursor rather than doing it for each new event in line cursor
197442 -- Bug 3939231
197443 --
197444 xla_ae_lines_pkg.g_temp_line_num := 0;
197445 
197446 
197447 
197448 --
197449 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
197450 --
197451 --
197452 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197453 
197454       trace
197455          (p_msg      => 'SQL - FETCH line_cur'
197456          ,p_level    => C_LEVEL_STATEMENT
197457          ,p_module   => l_log_module);
197458 
197459 END IF;
197460 --
197461 --
197462 LOOP
197463   --
197464   FETCH line_cur BULK COLLECT INTO
197465         l_array_entity_id
197466       , l_array_legal_entity_id
197467       , l_array_entity_code
197468       , l_array_transaction_num
197469       , l_array_event_id
197470       , l_array_class_code
197471       , l_array_event_type
197472       , l_array_event_number
197473       , l_array_event_date
197474       , l_array_transaction_date
197475       , l_array_reference_num_1
197476       , l_array_reference_num_2
197477       , l_array_reference_num_3
197478       , l_array_reference_num_4
197479       , l_array_reference_char_1
197480       , l_array_reference_char_2
197481       , l_array_reference_char_3
197482       , l_array_reference_char_4
197483       , l_array_reference_date_1
197484       , l_array_reference_date_2
197485       , l_array_reference_date_3
197486       , l_array_reference_date_4
197487       , l_array_event_created_by
197488       , l_array_budgetary_control_flag
197489       , l_array_extract_line_num 
197490       , l_array_source_4
197491       , l_array_source_11
197492       , l_array_source_18
197493       , l_array_source_22
197494       , l_array_source_24
197495       LIMIT l_rows;
197496 
197497   --
197498   IF (C_LEVEL_EVENT >= g_log_level) THEN
197499             trace
197500                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
197501                ,p_level    => C_LEVEL_EVENT
197502                ,p_module   => l_log_module);
197503   END IF;
197504   --
197505   EXIT WHEN l_array_entity_id.count = 0;
197506 
197507   XLA_AE_LINES_PKG.g_rec_lines := null;
197508 
197509 --
197510 -- Bug 4458708
197511 --
197512 XLA_AE_LINES_PKG.g_LineNumber := 0;
197513 --
197514 --
197515 
197516 FOR Idx IN 1..l_array_event_id.count LOOP
197517    --
197518    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
197519    --
197520    l_event_id := l_array_event_id(idx);  -- 5648433
197521 
197522    --
197523    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
197524    --
197525 
197526    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
197527              (g_array_event(l_event_id).array_value_num('header_index'))
197528          ,'N'
197529          ) <> 'Y'
197530    THEN
197531       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197532          trace
197533             (p_msg      => 'Trancaction revesal option is not Y '
197534             ,p_level    => C_LEVEL_STATEMENT
197535             ,p_module   => l_log_module);
197536       END IF;
197537 
197538 --
197539 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
197540 --
197541 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
197542 --
197543 -- set event info as cache for other routines to refer event attributes
197544 --
197545 
197546 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
197547    l_previous_event_id := l_event_id;
197548 
197549    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
197550       (p_application_id           => p_application_id
197551       ,p_primary_ledger_id        => p_primary_ledger_id
197552       ,p_base_ledger_id           => p_base_ledger_id
197553       ,p_target_ledger_id         => p_target_ledger_id
197554       ,p_entity_id                => l_array_entity_id(Idx)
197555       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
197556       ,p_entity_code              => l_array_entity_code(Idx)
197557       ,p_transaction_num          => l_array_transaction_num(Idx)
197558       ,p_event_id                 => l_array_event_id(Idx)
197559       ,p_event_class_code         => l_array_class_code(Idx)
197560       ,p_event_type_code          => l_array_event_type(Idx)
197561       ,p_event_number             => l_array_event_number(Idx)
197562       ,p_event_date               => l_array_event_date(Idx)
197563       ,p_transaction_date         => l_array_transaction_date(Idx)
197564       ,p_reference_num_1          => l_array_reference_num_1(Idx)
197565       ,p_reference_num_2          => l_array_reference_num_2(Idx)
197566       ,p_reference_num_3          => l_array_reference_num_3(Idx)
197567       ,p_reference_num_4          => l_array_reference_num_4(Idx)
197568       ,p_reference_char_1         => l_array_reference_char_1(Idx)
197569       ,p_reference_char_2         => l_array_reference_char_2(Idx)
197570       ,p_reference_char_3         => l_array_reference_char_3(Idx)
197571       ,p_reference_char_4         => l_array_reference_char_4(Idx)
197572       ,p_reference_date_1         => l_array_reference_date_1(Idx)
197573       ,p_reference_date_2         => l_array_reference_date_2(Idx)
197574       ,p_reference_date_3         => l_array_reference_date_3(Idx)
197575       ,p_reference_date_4         => l_array_reference_date_4(Idx)
197576       ,p_event_created_by         => l_array_event_created_by(Idx)
197577       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
197578        --
197579 END IF;
197580 
197581 
197582 
197583 --
197584 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
197585 
197586 l_acct_reversal_source := SUBSTR(NULL, 1,30);
197587 
197588 IF l_continue_with_lines THEN
197589    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
197590       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
197591 
197592       xla_accounting_err_pkg.build_message
197593          (p_appli_s_name            => 'XLA'
197594          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
197595          ,p_token_1                 => 'LINE_NUMBER'
197596          ,p_value_1                 => l_array_extract_line_num(Idx)
197597          ,p_token_2                 => 'PRODUCT_NAME'
197598          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
197599          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
197600          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
197601          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
197602 
197603    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
197604       --
197605       -- following sets the accounting attributes needed to reverse
197606       -- accounting for a distributeion
197607       --
197608 
197609       --
197610       -- 5217187
197611       --
197612       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
197613       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
197614                                        g_array_event(l_event_id).array_value_num('header_index'));
197615       --
197616       --
197617 
197618       -- No reversal code generated
197619 
197620       xla_ae_lines_pkg.SetAcctReversalAttrs
197621          (p_event_id             => l_event_id
197622          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
197623          ,p_calculate_acctd_flag => l_calculate_acctd_flag
197624          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
197625    END IF;
197626 
197627    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
197628        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
197629 
197630 --
197631 AcctLineType_177 (
197632  p_application_id  => p_application_id
197633  ,p_event_id     => l_event_id
197634  ,p_calculate_acctd_flag => l_calculate_acctd_flag
197635  ,p_calculate_g_l_flag => l_calculate_g_l_flag
197636  ,p_actual_flag => l_actual_flag
197637  ,p_balance_type_code => l_balance_type_code
197638  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
197639  
197640  , p_source_4 => l_array_source_4(Idx)
197641  , p_source_11 => l_array_source_11(Idx)
197642  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
197643  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
197644  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
197645  , p_source_18 => l_array_source_18(Idx)
197646  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
197647  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
197648  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
197649  , p_source_22 => l_array_source_22(Idx)
197650  , p_source_24 => l_array_source_24(Idx)
197651  );
197652 If(l_balance_type_code = 'A') THEN
197653   l_actual_gain_loss_ref := l_gain_or_loss_ref;
197654 END IF;
197655 
197656 --
197657 
197658 
197659 --
197660 AcctLineType_244 (
197661  p_application_id  => p_application_id
197662  ,p_event_id     => l_event_id
197663  ,p_calculate_acctd_flag => l_calculate_acctd_flag
197664  ,p_calculate_g_l_flag => l_calculate_g_l_flag
197665  ,p_actual_flag => l_actual_flag
197666  ,p_balance_type_code => l_balance_type_code
197667  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
197668  
197669  , p_source_4 => l_array_source_4(Idx)
197670  , p_source_11 => l_array_source_11(Idx)
197671  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
197672  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
197673  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
197674  , p_source_18 => l_array_source_18(Idx)
197675  , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
197676  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
197677  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
197678  , p_source_22 => l_array_source_22(Idx)
197679  , p_source_24 => l_array_source_24(Idx)
197680  );
197681 If(l_balance_type_code = 'A') THEN
197682   l_actual_gain_loss_ref := l_gain_or_loss_ref;
197683 END IF;
197684 
197685 --
197686 
197687       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
197688       -- or secondary ledger that has different currency with primary
197689       -- or alc that is calculated by sla
197690       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
197691             (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'))
197692 
197693 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
197694 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
197695           AND (l_actual_flag = 'A')) THEN
197696         XLA_AE_LINES_PKG.CreateGainOrLossLines(
197697           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
197698          ,p_application_id   => p_application_id
197699          ,p_amb_context_code => 'DEFAULT'
197700          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
197701          ,p_event_class_code => C_EVENT_CLASS_CODE
197702          ,p_event_type_code  => C_EVENT_TYPE_CODE
197703          
197704          ,p_gain_ccid        => -1
197705          ,p_loss_ccid        => -1
197706 
197707          ,p_actual_flag      => l_actual_flag
197708          ,p_enc_flag         => null
197709          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
197710          ,p_enc_g_l_ref      => null
197711          );
197712       END IF;
197713    END IF;
197714 END IF;
197715 
197716    ELSE
197717       --
197718       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
197719       --
197720       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197721          trace
197722             (p_msg      => 'Trancaction revesal option is Y'
197723             ,p_level    => C_LEVEL_STATEMENT
197724             ,p_module   => l_log_module);
197725       END IF;
197726    END IF;
197727 
197728 END LOOP;
197729 l_result := XLA_AE_LINES_PKG.InsertLines ;
197730 end loop;
197731 close line_cur;
197732 
197733 
197734 --
197735 -- insert headers into xla_ae_headers_gt table
197736 --
197737 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
197738 
197739 -- insert into errors table here.
197740 
197741 END LOOP;
197742 
197743 --
197744 -- 4865292
197745 --
197746 -- Compare g_hdr_extract_count with event count in
197747 -- CreateHeadersAndLines.
197748 --
197749 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
197750 
197751 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197752    trace (p_msg     => '# rows extracted from header extract objects '
197753                     || ' (running total): '
197754                     || g_hdr_extract_count
197755          ,p_level   => C_LEVEL_STATEMENT
197756          ,p_module  => l_log_module);
197757 END IF;
197758 
197759 CLOSE header_cur;
197760 --
197761 
197762 --
197763 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
197764    trace
197765       (p_msg      => 'END of EventClass_294'
197766       ,p_level    => C_LEVEL_PROCEDURE
197767       ,p_module   => l_log_module);
197768 END IF;
197769 --
197770 RETURN l_result;
197771 EXCEPTION
197772 WHEN xla_exceptions_pkg.application_exception THEN
197773    
197774 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
197775 
197776    
197777 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
197778 
197779    RAISE;
197780 
197781 WHEN NO_DATA_FOUND THEN
197782 
197783 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
197784 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
197785 
197786 FOR header_record IN header_cur
197787 LOOP
197788     l_array_header_events(header_record.event_id) := header_record.event_id;
197789 END LOOP;
197790 
197791 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
197792 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
197793 
197794 fnd_file.put_line(fnd_file.LOG, '                    ');
197795 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
197796 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
197797 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
197798 
197799 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
197800 LOOP
197801 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
197802 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
197803         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
197804 	END IF;
197805 END LOOP;
197806 
197807 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
197808 fnd_file.put_line(fnd_file.LOG, '                    ');
197809 
197810 
197811 xla_exceptions_pkg.raise_message
197812       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_294');
197813 
197814 
197815 WHEN OTHERS THEN
197816    xla_exceptions_pkg.raise_message
197817       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_294');
197818 END EventClass_294;
197819 --
197820 
197821 ---------------------------------------
197822 --
197823 -- PRIVATE PROCEDURE
197824 --         insert_sources_295
197825 --
197826 ----------------------------------------
197827 --
197828 PROCEDURE insert_sources_295(
197829                                 p_target_ledger_id       IN NUMBER
197830                               , p_language               IN VARCHAR2
197831                               , p_sla_ledger_id          IN NUMBER
197832                               , p_pad_start_date         IN DATE
197833                               , p_pad_end_date           IN DATE
197834                          )
197835 IS
197836 
197837 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_MTL_ALL';
197838 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_MTL';
197839 p_apps_owner                   VARCHAR2(30);
197840 l_log_module                   VARCHAR2(240);
197841 BEGIN
197842 IF g_log_enabled THEN
197843       l_log_module := C_DEFAULT_MODULE||'.insert_sources_295';
197844 END IF;
197845 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
197846 
197847       trace
197848          (p_msg      => 'BEGIN of insert_sources_295'
197849          ,p_level    => C_LEVEL_PROCEDURE
197850          ,p_module   => l_log_module);
197851 
197852 END IF;
197853 
197854 -- select APPS owner
197855 SELECT oracle_username
197856   INTO p_apps_owner
197857   FROM fnd_oracle_userid
197858  WHERE read_only_flag = 'U'
197859 ;
197860 
197861 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197862       trace
197863          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
197864                         ' - p_language = '||p_language||
197865                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
197866                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
197867                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
197868                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
197869          ,p_level    => C_LEVEL_STATEMENT
197870          ,p_module   => l_log_module);
197871 END IF;
197872 
197873 
197874 --
197875 INSERT INTO xla_diag_sources --hdr2
197876 (
197877         event_id
197878       , ledger_id
197879       , sla_ledger_id
197880       , description_language
197881       , object_name
197882       , object_type_code
197883       , line_number
197884       , source_application_id
197885       , source_type_code
197886       , source_code
197887       , source_value
197888       , source_meaning
197889       , created_by
197890       , creation_date
197891       , last_update_date
197892       , last_updated_by
197893       , last_update_login
197894       , program_update_date
197895       , program_application_id
197896       , program_id
197897       , request_id
197898 )
197899 SELECT
197900         event_id
197901       , p_target_ledger_id
197902       , p_sla_ledger_id
197903       , p_language
197904       , object_name
197905       , object_type_code
197906       , line_number
197907       , source_application_id
197908       , source_type_code
197909       , source_code
197910       , SUBSTR(source_value ,1,1996)
197911       , SUBSTR(source_meaning ,1,200)
197912       , xla_environment_pkg.g_Usr_Id
197913       , TRUNC(SYSDATE)
197914       , TRUNC(SYSDATE)
197915       , xla_environment_pkg.g_Usr_Id
197916       , xla_environment_pkg.g_Login_Id
197917       , TRUNC(SYSDATE)
197918       , xla_environment_pkg.g_Prog_Appl_Id
197919       , xla_environment_pkg.g_Prog_Id
197920       , xla_environment_pkg.g_Req_Id
197921   FROM (
197922        SELECT xet.event_id                  event_id
197923             , 0                          line_number
197924             , CASE r
197925                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
197926                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
197927                 
197928                ELSE null
197929               END                           object_name
197930             , CASE r
197931                 WHEN 1 THEN 'HEADER' 
197932                 WHEN 2 THEN 'HEADER' 
197933                 
197934                 ELSE null
197935               END                           object_type_code
197936             , CASE r
197937                 WHEN 1 THEN '707' 
197938                 WHEN 2 THEN '707' 
197939                 
197940                 ELSE null
197941               END                           source_application_id
197942             , 'S'             source_type_code
197943             , CASE r
197944                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
197945                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
197946                 
197947                 ELSE null
197948               END                           source_code
197949             , CASE r
197950                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
197951                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
197952                 
197953                 ELSE null
197954               END                           source_value
197955             , CASE r
197956                 WHEN 1 THEN fvl12.meaning
197957                 WHEN 2 THEN fvl38.meaning
197958                 
197959                 ELSE null
197960               END               source_meaning
197961          FROM xla_events_gt     xet  
197962       , CST_XLA_INV_HEADERS_V  h1
197963   , fnd_lookup_values    fvl12
197964   , fnd_lookup_values    fvl38
197965              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
197966          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
197967            AND xet.event_class_code = C_EVENT_CLASS_CODE
197968               AND h1.event_id = xet.event_id
197969    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
197970   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
197971   AND fvl12.view_application_id(+) = 700
197972   AND fvl12.language(+)            = USERENV('LANG')
197973      AND fvl38.lookup_type(+)         = 'YES_NO'
197974   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
197975   AND fvl38.view_application_id(+) = 0
197976   AND fvl38.language(+)            = USERENV('LANG')
197977   
197978 )
197979 ;
197980 --
197981 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197982 
197983       trace
197984          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
197985          ,p_level    => C_LEVEL_STATEMENT
197986          ,p_module   => l_log_module);
197987 
197988 END IF;
197989 --
197990 
197991 
197992 
197993 --
197994 INSERT INTO xla_diag_sources  --line2
197995 (
197996         event_id
197997       , ledger_id
197998       , sla_ledger_id
197999       , description_language
198000       , object_name
198001       , object_type_code
198002       , line_number
198003       , source_application_id
198004       , source_type_code
198005       , source_code
198006       , source_value
198007       , source_meaning
198008       , created_by
198009       , creation_date
198010       , last_update_date
198011       , last_updated_by
198012       , last_update_login
198013       , program_update_date
198014       , program_application_id
198015       , program_id
198016       , request_id
198017 )
198018 SELECT  event_id
198019       , p_target_ledger_id
198020       , p_sla_ledger_id
198021       , p_language
198022       , object_name
198023       , object_type_code
198024       , line_number
198025       , source_application_id
198026       , source_type_code
198027       , source_code
198028       , SUBSTR(source_value,1,1996)
198029       , SUBSTR(source_meaning ,1,200)
198030       , xla_environment_pkg.g_Usr_Id
198031       , TRUNC(SYSDATE)
198032       , TRUNC(SYSDATE)
198033       , xla_environment_pkg.g_Usr_Id
198034       , xla_environment_pkg.g_Login_Id
198035       , TRUNC(SYSDATE)
198036       , xla_environment_pkg.g_Prog_Appl_Id
198037       , xla_environment_pkg.g_Prog_Id
198038       , xla_environment_pkg.g_Req_Id
198039   FROM (
198040        SELECT xet.event_id                  event_id
198041             , l2.line_number                 line_number
198042             , CASE r
198043                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
198044                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
198045                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
198046                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
198047                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
198048                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
198049                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
198050                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
198051                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
198052                 
198053                ELSE null
198054               END                           object_name
198055             , CASE r
198056                 WHEN 1 THEN 'LINE' 
198057                 WHEN 2 THEN 'LINE' 
198058                 WHEN 3 THEN 'LINE' 
198059                 WHEN 4 THEN 'LINE' 
198060                 WHEN 5 THEN 'LINE' 
198061                 WHEN 6 THEN 'LINE' 
198062                 WHEN 7 THEN 'LINE' 
198063                 WHEN 8 THEN 'LINE' 
198064                 WHEN 9 THEN 'LINE' 
198065                 
198066                 ELSE null
198067               END                           object_type_code
198068             , CASE r
198069                 WHEN 1 THEN '707' 
198070                 WHEN 2 THEN '707' 
198071                 WHEN 3 THEN '707' 
198072                 WHEN 4 THEN '707' 
198073                 WHEN 5 THEN '707' 
198074                 WHEN 6 THEN '707' 
198075                 WHEN 7 THEN '707' 
198076                 WHEN 8 THEN '707' 
198077                 WHEN 9 THEN '707' 
198078                 
198079                 ELSE null
198080               END                           source_application_id
198081             , 'S'             source_type_code
198082             , CASE r
198083                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
198084                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
198085                 WHEN 3 THEN 'CURRENCY_CODE' 
198086                 WHEN 4 THEN 'ENTERED_AMOUNT' 
198087                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
198088                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
198089                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
198090                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
198091                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
198092                 
198093                 ELSE null
198094               END                           source_code
198095             , CASE r
198096                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
198097                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
198098                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
198099                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
198100                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
198101                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
198102                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
198103                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
198104                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
198105                 
198106                 ELSE null
198107               END                           source_value
198108             , null              source_meaning
198109          FROM  xla_events_gt     xet  
198110         , CST_XLA_INV_LINES_V  l2
198111             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
198112         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
198113           AND xet.event_class_code = C_EVENT_CLASS_CODE
198114             AND l2.event_id          = xet.event_id
198115 
198116 )
198117 ;
198118 --
198119 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198120 
198121       trace
198122          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
198123          ,p_level    => C_LEVEL_STATEMENT
198124          ,p_module   => l_log_module);
198125 
198126 END IF;
198127 
198128 
198129 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
198130       trace
198131          (p_msg      => 'END of insert_sources_295'
198132          ,p_level    => C_LEVEL_PROCEDURE
198133          ,p_module   => l_log_module);
198134 END IF;
198135 EXCEPTION
198136   WHEN xla_exceptions_pkg.application_exception THEN
198137       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
198138             trace
198139                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
198140                ,p_level    => C_LEVEL_EXCEPTION
198141                ,p_module   => l_log_module);
198142       END IF;
198143       RAISE;
198144   WHEN OTHERS THEN
198145       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
198146             trace
198147                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
198148                ,p_level    => C_LEVEL_EXCEPTION
198149                ,p_module   => l_log_module);
198150        END IF;
198151        xla_exceptions_pkg.raise_message
198152            (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_295');
198153 END insert_sources_295;
198154 --
198155 
198156 ---------------------------------------
198157 --
198158 -- PRIVATE FUNCTION
198159 --         EventClass_295
198160 --
198161 ----------------------------------------
198162 --
198163 FUNCTION EventClass_295
198164        (p_application_id         IN NUMBER
198165        ,p_base_ledger_id         IN NUMBER
198166        ,p_target_ledger_id       IN NUMBER
198167        ,p_language               IN VARCHAR2
198168        ,p_currency_code          IN VARCHAR2
198169        ,p_sla_ledger_id          IN NUMBER
198170        ,p_pad_start_date         IN DATE
198171        ,p_pad_end_date           IN DATE
198172        ,p_primary_ledger_id      IN NUMBER)
198173 RETURN BOOLEAN IS
198174 --
198175 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_MTL_ALL';
198176 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_MTL';
198177 
198178 l_calculate_acctd_flag   VARCHAR2(1) :='N';
198179 l_calculate_g_l_flag     VARCHAR2(1) :='N';
198180 --
198181 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198182 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198183 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
198184 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198185 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198186 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
198187 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
198188 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198189 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198190 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198191 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198192 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198193 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198194 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198195 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198196 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198197 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198198 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198199 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198200 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198201 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198202 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198203 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
198204 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
198205 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
198206 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
198207 
198208 l_event_id                             NUMBER;
198209 l_previous_event_id                    NUMBER;
198210 l_first_event_id                       NUMBER;
198211 l_last_event_id                        NUMBER;
198212 
198213 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
198214 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
198215 --
198216 --
198217 l_result                    BOOLEAN := TRUE;
198218 l_rows                      NUMBER  := 1000;
198219 l_event_type_name           VARCHAR2(80) := 'All';
198220 l_event_class_name          VARCHAR2(80) := 'WIP Material';
198221 l_description               VARCHAR2(4000);
198222 l_transaction_reversal      NUMBER;
198223 l_ae_header_id              NUMBER;
198224 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
198225 l_log_module                VARCHAR2(240);
198226 --
198227 l_acct_reversal_source      VARCHAR2(30);
198228 l_trx_reversal_source       VARCHAR2(30);
198229 
198230 l_continue_with_lines       BOOLEAN := TRUE;
198231 --
198232 l_acc_rev_gl_date_source    DATE;                      -- 4262811
198233 --
198234 type t_array_event_id is table of number index by binary_integer;
198235 
198236 l_rec_array_event                    t_rec_array_event;
198237 l_null_rec_array_event               t_rec_array_event;
198238 l_array_ae_header_id                 xla_number_array_type;
198239 l_actual_flag                        VARCHAR2(1) := NULL;
198240 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
198241 l_balance_type_code                  VARCHAR2(1) :=NULL;
198242 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
198243 
198244 --
198245 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
198246 --
198247 
198248 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
198249 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
198250 
198251 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
198252 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
198253 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
198254 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
198255 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
198256 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
198257 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
198258 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
198259 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
198260 
198261 l_array_source_12              t_array_source_12;
198262 l_array_source_12_meaning      t_array_lookup_meaning;
198263 l_array_source_38              t_array_source_38;
198264 l_array_source_38_meaning      t_array_lookup_meaning;
198265 
198266 l_array_source_4      t_array_source_4;
198267 l_array_source_11      t_array_source_11;
198268 l_array_source_15      t_array_source_15;
198269 l_array_source_18      t_array_source_18;
198270 l_array_source_19      t_array_source_19;
198271 l_array_source_20      t_array_source_20;
198272 l_array_source_21      t_array_source_21;
198273 l_array_source_22      t_array_source_22;
198274 l_array_source_24      t_array_source_24;
198275 
198276 --
198277 CURSOR header_cur
198278 IS
198279 SELECT /*+ leading(xet) cardinality(xet,1) */
198280 -- Event Class Code: WIP_MTL
198281     xet.entity_id
198282    ,xet.legal_entity_id
198283    ,xet.entity_code
198284    ,xet.transaction_number
198285    ,xet.event_id
198286    ,xet.event_class_code
198287    ,xet.event_type_code
198288    ,xet.event_number
198289    ,xet.event_date
198290    ,xet.transaction_date
198291    ,xet.reference_num_1
198292    ,xet.reference_num_2
198293    ,xet.reference_num_3
198294    ,xet.reference_num_4
198295    ,xet.reference_char_1
198296    ,xet.reference_char_2
198297    ,xet.reference_char_3
198298    ,xet.reference_char_4
198299    ,xet.reference_date_1
198300    ,xet.reference_date_2
198301    ,xet.reference_date_3
198302    ,xet.reference_date_4
198303    ,xet.event_created_by
198304    ,xet.budgetary_control_flag 
198305   , h1.DISTRIBUTION_TYPE    source_12
198306   , fvl12.meaning   source_12_meaning
198307   , h1.TRANSFER_TO_GL_INDICATOR    source_38
198308   , fvl38.meaning   source_38_meaning
198309   FROM xla_events_gt     xet 
198310   , CST_XLA_INV_HEADERS_V  h1
198311   , fnd_lookup_values    fvl12
198312   , fnd_lookup_values    fvl38
198313  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
198314    and xet.event_class_code = C_EVENT_CLASS_CODE
198315    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
198316    AND fvl12.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
198317   AND fvl12.lookup_code(+)         = h1.DISTRIBUTION_TYPE
198318   AND fvl12.view_application_id(+) = 700
198319   AND fvl12.language(+)            = USERENV('LANG')
198320      AND fvl38.lookup_type(+)         = 'YES_NO'
198321   AND fvl38.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
198322   AND fvl38.view_application_id(+) = 0
198323   AND fvl38.language(+)            = USERENV('LANG')
198324   
198325  ORDER BY event_id
198326 ;
198327 
198328 
198329 --
198330 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
198331 IS
198332 SELECT  /*+ leading(xet) cardinality(xet,1) */
198333 -- Event Class Code: WIP_MTL
198334     xet.entity_id
198335    ,xet.legal_entity_id
198336    ,xet.entity_code
198337    ,xet.transaction_number
198338    ,xet.event_id
198339    ,xet.event_class_code
198340    ,xet.event_type_code
198341    ,xet.event_number
198342    ,xet.event_date
198343    ,xet.transaction_date
198344    ,xet.reference_num_1
198345    ,xet.reference_num_2
198346    ,xet.reference_num_3
198347    ,xet.reference_num_4
198348    ,xet.reference_char_1
198349    ,xet.reference_char_2
198350    ,xet.reference_char_3
198351    ,xet.reference_char_4
198352    ,xet.reference_date_1
198353    ,xet.reference_date_2
198354    ,xet.reference_date_3
198355    ,xet.reference_date_4
198356    ,xet.event_created_by
198357    ,xet.budgetary_control_flag
198358  , l2.LINE_NUMBER  
198359   , l2.CODE_COMBINATION_ID    source_4
198360   , l2.DISTRIBUTION_IDENTIFIER    source_11
198361   , l2.CURRENCY_CODE    source_15
198362   , l2.ENTERED_AMOUNT    source_18
198363   , l2.CURRENCY_CONVERSION_DATE    source_19
198364   , l2.CURRENCY_CONVERSION_RATE    source_20
198365   , l2.CURRENCY_CONVERSION_TYPE    source_21
198366   , l2.ACCOUNTED_AMOUNT    source_22
198367   , l2.ACCOUNTING_LINE_TYPE_CODE    source_24
198368   FROM xla_events_gt     xet 
198369   , CST_XLA_INV_LINES_V  l2
198370  WHERE xet.event_id between x_first_event_id and x_last_event_id
198371    and xet.event_date between p_pad_start_date and p_pad_end_date
198372    and xet.event_class_code = C_EVENT_CLASS_CODE
198373    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
198374 ;
198375 
198376 --
198377 BEGIN
198378 IF g_log_enabled THEN
198379    l_log_module := C_DEFAULT_MODULE||'.EventClass_295';
198380 END IF;
198381 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
198382    trace
198383       (p_msg      => 'BEGIN of EventClass_295'
198384       ,p_level    => C_LEVEL_PROCEDURE
198385       ,p_module   => l_log_module);
198386 END IF;
198387 
198388 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198389    trace
198390       (p_msg      => 'p_application_id = '||p_application_id||
198391                      ' - p_base_ledger_id = '||p_base_ledger_id||
198392                      ' - p_target_ledger_id  = '||p_target_ledger_id||
198393                      ' - p_language = '||p_language||
198394                      ' - p_currency_code = '||p_currency_code||
198395                      ' - p_sla_ledger_id = '||p_sla_ledger_id
198396       ,p_level    => C_LEVEL_STATEMENT
198397       ,p_module   => l_log_module);
198398 END IF;
198399 --
198400 -- initialze arrays
198401 --
198402 g_array_event.DELETE;
198403 l_rec_array_event := l_null_rec_array_event;
198404 --
198405 --------------------------------------
198406 -- 4262811 Initialze MPA Line Number
198407 --------------------------------------
198408 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
198409 
198410 --
198411 
198412 --
198413 OPEN header_cur;
198414 --
198415 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198416    trace
198417    (p_msg      => 'SQL - FETCH header_cur'
198418    ,p_level    => C_LEVEL_STATEMENT
198419    ,p_module   => l_log_module);
198420 END IF;
198421 --
198422 LOOP
198423 FETCH header_cur BULK COLLECT INTO
198424         l_array_entity_id
198425       , l_array_legal_entity_id
198426       , l_array_entity_code
198427       , l_array_transaction_num
198428       , l_array_event_id
198429       , l_array_class_code
198430       , l_array_event_type
198431       , l_array_event_number
198432       , l_array_event_date
198433       , l_array_transaction_date
198434       , l_array_reference_num_1
198435       , l_array_reference_num_2
198436       , l_array_reference_num_3
198437       , l_array_reference_num_4
198438       , l_array_reference_char_1
198439       , l_array_reference_char_2
198440       , l_array_reference_char_3
198441       , l_array_reference_char_4
198442       , l_array_reference_date_1
198443       , l_array_reference_date_2
198444       , l_array_reference_date_3
198445       , l_array_reference_date_4
198446       , l_array_event_created_by
198447       , l_array_budgetary_control_flag 
198448       , l_array_source_12
198449       , l_array_source_12_meaning
198450       , l_array_source_38
198451       , l_array_source_38_meaning
198452       LIMIT l_rows;
198453 --
198454 IF (C_LEVEL_EVENT >= g_log_level) THEN
198455    trace
198456    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
198457    ,p_level    => C_LEVEL_EVENT
198458    ,p_module   => l_log_module);
198459 END IF;
198460 --
198461 EXIT WHEN l_array_entity_id.COUNT = 0;
198462 
198463 -- initialize arrays
198464 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
198465 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
198466 
198467 --
198468 -- Bug 4458708
198469 --
198470 XLA_AE_LINES_PKG.g_LineNumber := 0;
198471 
198472 
198473 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
198474 g_last_hdr_idx := l_array_event_id.LAST;
198475 --
198476 -- loop for the headers. Each iteration is for each header extract row
198477 -- fetched in header cursor
198478 --
198479 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
198480 
198481 --
198482 -- set event info as cache for other routines to refer event attributes
198483 --
198484 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
198485    (p_application_id           => p_application_id
198486    ,p_primary_ledger_id        => p_primary_ledger_id
198487    ,p_base_ledger_id           => p_base_ledger_id
198488    ,p_target_ledger_id         => p_target_ledger_id
198489    ,p_entity_id                => l_array_entity_id(hdr_idx)
198490    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
198491    ,p_entity_code              => l_array_entity_code(hdr_idx)
198492    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
198493    ,p_event_id                 => l_array_event_id(hdr_idx)
198494    ,p_event_class_code         => l_array_class_code(hdr_idx)
198495    ,p_event_type_code          => l_array_event_type(hdr_idx)
198496    ,p_event_number             => l_array_event_number(hdr_idx)
198497    ,p_event_date               => l_array_event_date(hdr_idx)
198498    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
198499    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
198500    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
198501    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
198502    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
198503    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
198504    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
198505    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
198506    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
198507    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
198508    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
198509    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
198510    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
198511    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
198512    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
198513 
198514 --
198515 -- set the status of entry to C_VALID (0)
198516 --
198517 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
198518 
198519 --
198520 -- initialize a row for ae header
198521 --
198522 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
198523 
198524 l_event_id := l_array_event_id(hdr_idx);
198525 
198526 --
198527 -- storing the hdr_idx for event. May be used by line cursor.
198528 --
198529 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
198530 
198531 --
198532 -- store sources from header extract. This can be improved to
198533 -- store only those sources from header extract that may be used in lines
198534 --
198535 
198536 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
198537 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
198538 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
198539 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
198540 
198541 --
198542 -- initilaize the status of ae headers for diffrent balance types
198543 -- the status is initialised to C_NOT_CREATED (2)
198544 --
198545 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
198546 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
198547 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
198548 
198549 --
198550 -- call api to validate and store accounting attributes for header
198551 --
198552 
198553 ------------------------------------------------------------
198554 -- Accrual Reversal : to get date for Standard Source (NONE)
198555 ------------------------------------------------------------
198556 l_acc_rev_gl_date_source := NULL;
198557 
198558      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
198559       l_rec_acct_attrs.array_date_value(1) := 
198560 xla_ae_sources_pkg.GetSystemSourceDate(
198561    p_source_code           => 'XLA_REFERENCE_DATE_1'
198562  , p_source_type_code      => 'Y'
198563  , p_source_application_id =>  602
198564 );
198565      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
198566       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
198567 
198568 
198569 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
198570 
198571 XLA_AE_HEADER_PKG.SetJeCategoryName;
198572 
198573 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
198574 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
198575 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
198576 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
198577 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
198578 
198579 
198580 -- No header level analytical criteria
198581 
198582 --
198583 --accounting attribute enhancement, bug 3612931
198584 --
198585 l_trx_reversal_source := SUBSTR(NULL, 1,30);
198586 
198587 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
198588    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
198589 
198590    xla_accounting_err_pkg.build_message
198591       (p_appli_s_name            => 'XLA'
198592       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
198593       ,p_token_1                 => 'ACCT_ATTR_NAME'
198594       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
198595       ,p_token_2                 => 'PRODUCT_NAME'
198596       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
198597       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
198598       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
198599       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
198600 
198601 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
198602    --
198603    -- following sets the accounting attributes needed to reverse
198604    -- accounting for a distributeion
198605    --
198606    xla_ae_lines_pkg.SetTrxReversalAttrs
198607       (p_event_id              => l_event_id
198608       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
198609       ,p_trx_reversal_source   => l_trx_reversal_source);
198610 
198611 END IF;
198612 
198613 
198614 ----------------------------------------------------------------
198615 -- 4262811 -  update the header statuses to invalid in need be
198616 ----------------------------------------------------------------
198617 --
198618 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
198619 
198620 
198621   -----------------------------------------------
198622   -- No accrual reversal for the event class/type
198623   -----------------------------------------------
198624 ----------------------------------------------------------------
198625 
198626 --
198627 -- this ends the header loop iteration for one bulk fetch
198628 --
198629 END LOOP;
198630 
198631 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
198632 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
198633 
198634 --
198635 -- insert dummy rows into lines gt table that were created due to
198636 -- transaction reversals
198637 --
198638 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
198639    l_result := XLA_AE_LINES_PKG.InsertLines;
198640 END IF;
198641 
198642 --
198643 -- reset the temp_line_num for each set of events fetched from header
198644 -- cursor rather than doing it for each new event in line cursor
198645 -- Bug 3939231
198646 --
198647 xla_ae_lines_pkg.g_temp_line_num := 0;
198648 
198649 
198650 
198651 --
198652 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
198653 --
198654 --
198655 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198656 
198657       trace
198658          (p_msg      => 'SQL - FETCH line_cur'
198659          ,p_level    => C_LEVEL_STATEMENT
198660          ,p_module   => l_log_module);
198661 
198662 END IF;
198663 --
198664 --
198665 LOOP
198666   --
198667   FETCH line_cur BULK COLLECT INTO
198668         l_array_entity_id
198669       , l_array_legal_entity_id
198670       , l_array_entity_code
198671       , l_array_transaction_num
198672       , l_array_event_id
198673       , l_array_class_code
198674       , l_array_event_type
198675       , l_array_event_number
198676       , l_array_event_date
198677       , l_array_transaction_date
198678       , l_array_reference_num_1
198679       , l_array_reference_num_2
198680       , l_array_reference_num_3
198681       , l_array_reference_num_4
198682       , l_array_reference_char_1
198683       , l_array_reference_char_2
198684       , l_array_reference_char_3
198685       , l_array_reference_char_4
198686       , l_array_reference_date_1
198687       , l_array_reference_date_2
198688       , l_array_reference_date_3
198689       , l_array_reference_date_4
198690       , l_array_event_created_by
198691       , l_array_budgetary_control_flag
198692       , l_array_extract_line_num 
198693       , l_array_source_4
198694       , l_array_source_11
198695       , l_array_source_15
198696       , l_array_source_18
198697       , l_array_source_19
198698       , l_array_source_20
198699       , l_array_source_21
198700       , l_array_source_22
198701       , l_array_source_24
198702       LIMIT l_rows;
198703 
198704   --
198705   IF (C_LEVEL_EVENT >= g_log_level) THEN
198706             trace
198707                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
198708                ,p_level    => C_LEVEL_EVENT
198709                ,p_module   => l_log_module);
198710   END IF;
198711   --
198712   EXIT WHEN l_array_entity_id.count = 0;
198713 
198714   XLA_AE_LINES_PKG.g_rec_lines := null;
198715 
198716 --
198717 -- Bug 4458708
198718 --
198719 XLA_AE_LINES_PKG.g_LineNumber := 0;
198720 --
198721 --
198722 
198723 FOR Idx IN 1..l_array_event_id.count LOOP
198724    --
198725    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
198726    --
198727    l_event_id := l_array_event_id(idx);  -- 5648433
198728 
198729    --
198730    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
198731    --
198732 
198733    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
198734              (g_array_event(l_event_id).array_value_num('header_index'))
198735          ,'N'
198736          ) <> 'Y'
198737    THEN
198738       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198739          trace
198740             (p_msg      => 'Trancaction revesal option is not Y '
198741             ,p_level    => C_LEVEL_STATEMENT
198742             ,p_module   => l_log_module);
198743       END IF;
198744 
198745 --
198746 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
198747 --
198748 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
198749 --
198750 -- set event info as cache for other routines to refer event attributes
198751 --
198752 
198753 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
198754    l_previous_event_id := l_event_id;
198755 
198756    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
198757       (p_application_id           => p_application_id
198758       ,p_primary_ledger_id        => p_primary_ledger_id
198759       ,p_base_ledger_id           => p_base_ledger_id
198760       ,p_target_ledger_id         => p_target_ledger_id
198761       ,p_entity_id                => l_array_entity_id(Idx)
198762       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
198763       ,p_entity_code              => l_array_entity_code(Idx)
198764       ,p_transaction_num          => l_array_transaction_num(Idx)
198765       ,p_event_id                 => l_array_event_id(Idx)
198766       ,p_event_class_code         => l_array_class_code(Idx)
198767       ,p_event_type_code          => l_array_event_type(Idx)
198768       ,p_event_number             => l_array_event_number(Idx)
198769       ,p_event_date               => l_array_event_date(Idx)
198770       ,p_transaction_date         => l_array_transaction_date(Idx)
198771       ,p_reference_num_1          => l_array_reference_num_1(Idx)
198772       ,p_reference_num_2          => l_array_reference_num_2(Idx)
198773       ,p_reference_num_3          => l_array_reference_num_3(Idx)
198774       ,p_reference_num_4          => l_array_reference_num_4(Idx)
198775       ,p_reference_char_1         => l_array_reference_char_1(Idx)
198776       ,p_reference_char_2         => l_array_reference_char_2(Idx)
198777       ,p_reference_char_3         => l_array_reference_char_3(Idx)
198778       ,p_reference_char_4         => l_array_reference_char_4(Idx)
198779       ,p_reference_date_1         => l_array_reference_date_1(Idx)
198780       ,p_reference_date_2         => l_array_reference_date_2(Idx)
198781       ,p_reference_date_3         => l_array_reference_date_3(Idx)
198782       ,p_reference_date_4         => l_array_reference_date_4(Idx)
198783       ,p_event_created_by         => l_array_event_created_by(Idx)
198784       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
198785        --
198786 END IF;
198787 
198788 
198789 
198790 --
198791 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
198792 
198793 l_acct_reversal_source := SUBSTR(NULL, 1,30);
198794 
198795 IF l_continue_with_lines THEN
198796    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
198797       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
198798 
198799       xla_accounting_err_pkg.build_message
198800          (p_appli_s_name            => 'XLA'
198801          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
198802          ,p_token_1                 => 'LINE_NUMBER'
198803          ,p_value_1                 => l_array_extract_line_num(Idx)
198804          ,p_token_2                 => 'PRODUCT_NAME'
198805          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
198806          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
198807          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
198808          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
198809 
198810    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
198811       --
198812       -- following sets the accounting attributes needed to reverse
198813       -- accounting for a distributeion
198814       --
198815 
198816       --
198817       -- 5217187
198818       --
198819       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
198820       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
198821                                        g_array_event(l_event_id).array_value_num('header_index'));
198822       --
198823       --
198824 
198825       -- No reversal code generated
198826 
198827       xla_ae_lines_pkg.SetAcctReversalAttrs
198828          (p_event_id             => l_event_id
198829          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
198830          ,p_calculate_acctd_flag => l_calculate_acctd_flag
198831          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
198832    END IF;
198833 
198834    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
198835        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
198836 
198837 --
198838 AcctLineType_39 (
198839  p_application_id  => p_application_id
198840  ,p_event_id     => l_event_id
198841  ,p_calculate_acctd_flag => l_calculate_acctd_flag
198842  ,p_calculate_g_l_flag => l_calculate_g_l_flag
198843  ,p_actual_flag => l_actual_flag
198844  ,p_balance_type_code => l_balance_type_code
198845  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
198846  
198847  , p_source_4 => l_array_source_4(Idx)
198848  , p_source_11 => l_array_source_11(Idx)
198849  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
198850  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
198851  , p_source_15 => l_array_source_15(Idx)
198852  , p_source_18 => l_array_source_18(Idx)
198853  , p_source_19 => l_array_source_19(Idx)
198854  , p_source_20 => l_array_source_20(Idx)
198855  , p_source_21 => l_array_source_21(Idx)
198856  , p_source_22 => l_array_source_22(Idx)
198857  , p_source_24 => l_array_source_24(Idx)
198858  );
198859 If(l_balance_type_code = 'A') THEN
198860   l_actual_gain_loss_ref := l_gain_or_loss_ref;
198861 END IF;
198862 
198863 --
198864 
198865 
198866 --
198867 AcctLineType_139 (
198868  p_application_id  => p_application_id
198869  ,p_event_id     => l_event_id
198870  ,p_calculate_acctd_flag => l_calculate_acctd_flag
198871  ,p_calculate_g_l_flag => l_calculate_g_l_flag
198872  ,p_actual_flag => l_actual_flag
198873  ,p_balance_type_code => l_balance_type_code
198874  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
198875  
198876  , p_source_4 => l_array_source_4(Idx)
198877  , p_source_11 => l_array_source_11(Idx)
198878  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
198879  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
198880  , p_source_15 => l_array_source_15(Idx)
198881  , p_source_18 => l_array_source_18(Idx)
198882  , p_source_19 => l_array_source_19(Idx)
198883  , p_source_20 => l_array_source_20(Idx)
198884  , p_source_21 => l_array_source_21(Idx)
198885  , p_source_22 => l_array_source_22(Idx)
198886  , p_source_24 => l_array_source_24(Idx)
198887  );
198888 If(l_balance_type_code = 'A') THEN
198889   l_actual_gain_loss_ref := l_gain_or_loss_ref;
198890 END IF;
198891 
198892 --
198893 
198894 
198895 --
198896 AcctLineType_163 (
198897  p_application_id  => p_application_id
198898  ,p_event_id     => l_event_id
198899  ,p_calculate_acctd_flag => l_calculate_acctd_flag
198900  ,p_calculate_g_l_flag => l_calculate_g_l_flag
198901  ,p_actual_flag => l_actual_flag
198902  ,p_balance_type_code => l_balance_type_code
198903  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
198904  
198905  , p_source_4 => l_array_source_4(Idx)
198906  , p_source_11 => l_array_source_11(Idx)
198907  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
198908  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
198909  , p_source_15 => l_array_source_15(Idx)
198910  , p_source_18 => l_array_source_18(Idx)
198911  , p_source_19 => l_array_source_19(Idx)
198912  , p_source_20 => l_array_source_20(Idx)
198913  , p_source_21 => l_array_source_21(Idx)
198914  , p_source_22 => l_array_source_22(Idx)
198915  , p_source_24 => l_array_source_24(Idx)
198916  );
198917 If(l_balance_type_code = 'A') THEN
198918   l_actual_gain_loss_ref := l_gain_or_loss_ref;
198919 END IF;
198920 
198921 --
198922 
198923 
198924 --
198925 AcctLineType_201 (
198926  p_application_id  => p_application_id
198927  ,p_event_id     => l_event_id
198928  ,p_calculate_acctd_flag => l_calculate_acctd_flag
198929  ,p_calculate_g_l_flag => l_calculate_g_l_flag
198930  ,p_actual_flag => l_actual_flag
198931  ,p_balance_type_code => l_balance_type_code
198932  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
198933  
198934  , p_source_4 => l_array_source_4(Idx)
198935  , p_source_11 => l_array_source_11(Idx)
198936  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
198937  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
198938  , p_source_15 => l_array_source_15(Idx)
198939  , p_source_18 => l_array_source_18(Idx)
198940  , p_source_19 => l_array_source_19(Idx)
198941  , p_source_20 => l_array_source_20(Idx)
198942  , p_source_21 => l_array_source_21(Idx)
198943  , p_source_22 => l_array_source_22(Idx)
198944  , p_source_24 => l_array_source_24(Idx)
198945  );
198946 If(l_balance_type_code = 'A') THEN
198947   l_actual_gain_loss_ref := l_gain_or_loss_ref;
198948 END IF;
198949 
198950 --
198951 
198952 
198953 --
198954 AcctLineType_245 (
198955  p_application_id  => p_application_id
198956  ,p_event_id     => l_event_id
198957  ,p_calculate_acctd_flag => l_calculate_acctd_flag
198958  ,p_calculate_g_l_flag => l_calculate_g_l_flag
198959  ,p_actual_flag => l_actual_flag
198960  ,p_balance_type_code => l_balance_type_code
198961  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
198962  
198963  , p_source_4 => l_array_source_4(Idx)
198964  , p_source_11 => l_array_source_11(Idx)
198965  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
198966  , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
198967  , p_source_15 => l_array_source_15(Idx)
198968  , p_source_18 => l_array_source_18(Idx)
198969  , p_source_19 => l_array_source_19(Idx)
198970  , p_source_20 => l_array_source_20(Idx)
198971  , p_source_21 => l_array_source_21(Idx)
198972  , p_source_22 => l_array_source_22(Idx)
198973  , p_source_24 => l_array_source_24(Idx)
198974  );
198975 If(l_balance_type_code = 'A') THEN
198976   l_actual_gain_loss_ref := l_gain_or_loss_ref;
198977 END IF;
198978 
198979 --
198980 
198981       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
198982       -- or secondary ledger that has different currency with primary
198983       -- or alc that is calculated by sla
198984       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
198985             (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'))
198986 
198987 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
198988 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
198989           AND (l_actual_flag = 'A')) THEN
198990         XLA_AE_LINES_PKG.CreateGainOrLossLines(
198991           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
198992          ,p_application_id   => p_application_id
198993          ,p_amb_context_code => 'DEFAULT'
198994          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
198995          ,p_event_class_code => C_EVENT_CLASS_CODE
198996          ,p_event_type_code  => C_EVENT_TYPE_CODE
198997          
198998          ,p_gain_ccid        => -1
198999          ,p_loss_ccid        => -1
199000 
199001          ,p_actual_flag      => l_actual_flag
199002          ,p_enc_flag         => null
199003          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
199004          ,p_enc_g_l_ref      => null
199005          );
199006       END IF;
199007    END IF;
199008 END IF;
199009 
199010    ELSE
199011       --
199012       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
199013       --
199014       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199015          trace
199016             (p_msg      => 'Trancaction revesal option is Y'
199017             ,p_level    => C_LEVEL_STATEMENT
199018             ,p_module   => l_log_module);
199019       END IF;
199020    END IF;
199021 
199022 END LOOP;
199023 l_result := XLA_AE_LINES_PKG.InsertLines ;
199024 end loop;
199025 close line_cur;
199026 
199027 
199028 --
199029 -- insert headers into xla_ae_headers_gt table
199030 --
199031 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
199032 
199033 -- insert into errors table here.
199034 
199035 END LOOP;
199036 
199037 --
199038 -- 4865292
199039 --
199040 -- Compare g_hdr_extract_count with event count in
199041 -- CreateHeadersAndLines.
199042 --
199043 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
199044 
199045 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199046    trace (p_msg     => '# rows extracted from header extract objects '
199047                     || ' (running total): '
199048                     || g_hdr_extract_count
199049          ,p_level   => C_LEVEL_STATEMENT
199050          ,p_module  => l_log_module);
199051 END IF;
199052 
199053 CLOSE header_cur;
199054 --
199055 
199056 --
199057 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
199058    trace
199059       (p_msg      => 'END of EventClass_295'
199060       ,p_level    => C_LEVEL_PROCEDURE
199061       ,p_module   => l_log_module);
199062 END IF;
199063 --
199064 RETURN l_result;
199065 EXCEPTION
199066 WHEN xla_exceptions_pkg.application_exception THEN
199067    
199068 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
199069 
199070    
199071 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
199072 
199073    RAISE;
199074 
199075 WHEN NO_DATA_FOUND THEN
199076 
199077 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
199078 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
199079 
199080 FOR header_record IN header_cur
199081 LOOP
199082     l_array_header_events(header_record.event_id) := header_record.event_id;
199083 END LOOP;
199084 
199085 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
199086 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
199087 
199088 fnd_file.put_line(fnd_file.LOG, '                    ');
199089 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
199090 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
199091 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
199092 
199093 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
199094 LOOP
199095 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
199096 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
199097         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
199098 	END IF;
199099 END LOOP;
199100 
199101 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
199102 fnd_file.put_line(fnd_file.LOG, '                    ');
199103 
199104 
199105 xla_exceptions_pkg.raise_message
199106       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_295');
199107 
199108 
199109 WHEN OTHERS THEN
199110    xla_exceptions_pkg.raise_message
199111       (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_295');
199112 END EventClass_295;
199113 --
199114 
199115 --
199116 --+============================================+
199117 --|                                            |
199118 --|  PRIVATE FUNCTION                          |
199119 --|                                            |
199120 --+============================================+
199121 --
199122 FUNCTION CreateHeadersAndLines
199123        (p_application_id         IN NUMBER
199124        ,p_base_ledger_id         IN NUMBER
199125        ,p_target_ledger_id       IN NUMBER
199126        ,p_pad_start_date         IN DATE
199127        ,p_pad_end_date           IN DATE
199128        ,p_primary_ledger_id      IN NUMBER)
199129 RETURN BOOLEAN IS
199130 l_created                   BOOLEAN:=FALSE;
199131 l_event_id                  NUMBER;
199132 l_event_date                DATE;
199133 l_language                  VARCHAR2(30);
199134 l_currency_code             VARCHAR2(30);
199135 l_sla_ledger_id             NUMBER;
199136 l_log_module                VARCHAR2(240);
199137 
199138 BEGIN
199139 --
199140 IF g_log_enabled THEN
199141    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
199142 END IF;
199143 --
199144 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
199145    trace
199146       (p_msg      => 'BEGIN of CreateHeadersAndLines'
199147       ,p_level    => C_LEVEL_PROCEDURE
199148       ,p_module   => l_log_module);
199149 END IF;
199150 
199151 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
199152 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
199153 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
199154 
199155 --
199156 -- initialize array of lines with NULL
199157 --
199158 xla_ae_lines_pkg.SetNullLine;
199159 
199160 --
199161 -- initialize header extract count -- Bug 4865292
199162 --
199163 g_hdr_extract_count:= 0;
199164 
199165 
199166 l_created := EventClass_250(
199167    p_application_id         => p_application_id
199168  , p_base_ledger_id         => p_base_ledger_id
199169  , p_target_ledger_id       => p_target_ledger_id
199170  , p_language               => l_language
199171  , p_currency_code          => l_currency_code
199172  , p_sla_ledger_id          => l_sla_ledger_id
199173  , p_pad_start_date         => p_pad_start_date
199174  , p_pad_end_date           => p_pad_end_date
199175  , p_primary_ledger_id      => p_primary_ledger_id
199176 );
199177 
199178 
199179 
199180      IF ( g_diagnostics_mode ='Y' ) THEN
199181 
199182          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199183           trace
199184               (p_msg      => 'CALL Transaction Objects Diagnostics'
199185               ,p_level    => C_LEVEL_STATEMENT
199186               ,p_module   => l_log_module);
199187 
199188          END IF;
199189 
199190          insert_sources_250(
199191                           p_target_ledger_id => p_target_ledger_id
199192                         , p_language         => l_language
199193                         , p_sla_ledger_id    => l_sla_ledger_id
199194                         , p_pad_start_date   => p_pad_start_date
199195                         , p_pad_end_date     => p_pad_end_date
199196                           );
199197 
199198      END IF;
199199 
199200 l_created := EventClass_251(
199201    p_application_id         => p_application_id
199202  , p_base_ledger_id         => p_base_ledger_id
199203  , p_target_ledger_id       => p_target_ledger_id
199204  , p_language               => l_language
199205  , p_currency_code          => l_currency_code
199206  , p_sla_ledger_id          => l_sla_ledger_id
199207  , p_pad_start_date         => p_pad_start_date
199208  , p_pad_end_date           => p_pad_end_date
199209  , p_primary_ledger_id      => p_primary_ledger_id
199210 );
199211 
199212 
199213 
199214      IF ( g_diagnostics_mode ='Y' ) THEN
199215 
199216          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199217           trace
199218               (p_msg      => 'CALL Transaction Objects Diagnostics'
199219               ,p_level    => C_LEVEL_STATEMENT
199220               ,p_module   => l_log_module);
199221 
199222          END IF;
199223 
199224          insert_sources_251(
199225                           p_target_ledger_id => p_target_ledger_id
199226                         , p_language         => l_language
199227                         , p_sla_ledger_id    => l_sla_ledger_id
199228                         , p_pad_start_date   => p_pad_start_date
199229                         , p_pad_end_date     => p_pad_end_date
199230                           );
199231 
199232      END IF;
199233 
199234 l_created := EventClass_252(
199235    p_application_id         => p_application_id
199236  , p_base_ledger_id         => p_base_ledger_id
199237  , p_target_ledger_id       => p_target_ledger_id
199238  , p_language               => l_language
199239  , p_currency_code          => l_currency_code
199240  , p_sla_ledger_id          => l_sla_ledger_id
199241  , p_pad_start_date         => p_pad_start_date
199242  , p_pad_end_date           => p_pad_end_date
199243  , p_primary_ledger_id      => p_primary_ledger_id
199244 );
199245 
199246 
199247 
199248      IF ( g_diagnostics_mode ='Y' ) THEN
199249 
199250          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199251           trace
199252               (p_msg      => 'CALL Transaction Objects Diagnostics'
199253               ,p_level    => C_LEVEL_STATEMENT
199254               ,p_module   => l_log_module);
199255 
199256          END IF;
199257 
199258          insert_sources_252(
199259                           p_target_ledger_id => p_target_ledger_id
199260                         , p_language         => l_language
199261                         , p_sla_ledger_id    => l_sla_ledger_id
199262                         , p_pad_start_date   => p_pad_start_date
199263                         , p_pad_end_date     => p_pad_end_date
199264                           );
199265 
199266      END IF;
199267 
199268 l_created := EventClass_253(
199269    p_application_id         => p_application_id
199270  , p_base_ledger_id         => p_base_ledger_id
199271  , p_target_ledger_id       => p_target_ledger_id
199272  , p_language               => l_language
199273  , p_currency_code          => l_currency_code
199274  , p_sla_ledger_id          => l_sla_ledger_id
199275  , p_pad_start_date         => p_pad_start_date
199276  , p_pad_end_date           => p_pad_end_date
199277  , p_primary_ledger_id      => p_primary_ledger_id
199278 );
199279 
199280 
199281 
199282      IF ( g_diagnostics_mode ='Y' ) THEN
199283 
199284          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199285           trace
199286               (p_msg      => 'CALL Transaction Objects Diagnostics'
199287               ,p_level    => C_LEVEL_STATEMENT
199288               ,p_module   => l_log_module);
199289 
199290          END IF;
199291 
199292          insert_sources_253(
199293                           p_target_ledger_id => p_target_ledger_id
199294                         , p_language         => l_language
199295                         , p_sla_ledger_id    => l_sla_ledger_id
199296                         , p_pad_start_date   => p_pad_start_date
199297                         , p_pad_end_date     => p_pad_end_date
199298                           );
199299 
199300      END IF;
199301 
199302 l_created := EventClass_254(
199303    p_application_id         => p_application_id
199304  , p_base_ledger_id         => p_base_ledger_id
199305  , p_target_ledger_id       => p_target_ledger_id
199306  , p_language               => l_language
199307  , p_currency_code          => l_currency_code
199308  , p_sla_ledger_id          => l_sla_ledger_id
199309  , p_pad_start_date         => p_pad_start_date
199310  , p_pad_end_date           => p_pad_end_date
199311  , p_primary_ledger_id      => p_primary_ledger_id
199312 );
199313 
199314 
199315 
199316      IF ( g_diagnostics_mode ='Y' ) THEN
199317 
199318          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199319           trace
199320               (p_msg      => 'CALL Transaction Objects Diagnostics'
199321               ,p_level    => C_LEVEL_STATEMENT
199322               ,p_module   => l_log_module);
199323 
199324          END IF;
199325 
199326          insert_sources_254(
199327                           p_target_ledger_id => p_target_ledger_id
199328                         , p_language         => l_language
199329                         , p_sla_ledger_id    => l_sla_ledger_id
199330                         , p_pad_start_date   => p_pad_start_date
199331                         , p_pad_end_date     => p_pad_end_date
199332                           );
199333 
199334      END IF;
199335 
199336 l_created := EventClass_255(
199337    p_application_id         => p_application_id
199338  , p_base_ledger_id         => p_base_ledger_id
199339  , p_target_ledger_id       => p_target_ledger_id
199340  , p_language               => l_language
199341  , p_currency_code          => l_currency_code
199342  , p_sla_ledger_id          => l_sla_ledger_id
199343  , p_pad_start_date         => p_pad_start_date
199344  , p_pad_end_date           => p_pad_end_date
199345  , p_primary_ledger_id      => p_primary_ledger_id
199346 );
199347 
199348 
199349 
199350      IF ( g_diagnostics_mode ='Y' ) THEN
199351 
199352          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199353           trace
199354               (p_msg      => 'CALL Transaction Objects Diagnostics'
199355               ,p_level    => C_LEVEL_STATEMENT
199356               ,p_module   => l_log_module);
199357 
199358          END IF;
199359 
199360          insert_sources_255(
199361                           p_target_ledger_id => p_target_ledger_id
199362                         , p_language         => l_language
199363                         , p_sla_ledger_id    => l_sla_ledger_id
199364                         , p_pad_start_date   => p_pad_start_date
199365                         , p_pad_end_date     => p_pad_end_date
199366                           );
199367 
199368      END IF;
199369 
199370 l_created := EventClass_256(
199371    p_application_id         => p_application_id
199372  , p_base_ledger_id         => p_base_ledger_id
199373  , p_target_ledger_id       => p_target_ledger_id
199374  , p_language               => l_language
199375  , p_currency_code          => l_currency_code
199376  , p_sla_ledger_id          => l_sla_ledger_id
199377  , p_pad_start_date         => p_pad_start_date
199378  , p_pad_end_date           => p_pad_end_date
199379  , p_primary_ledger_id      => p_primary_ledger_id
199380 );
199381 
199382 
199383 
199384      IF ( g_diagnostics_mode ='Y' ) THEN
199385 
199386          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199387           trace
199388               (p_msg      => 'CALL Transaction Objects Diagnostics'
199389               ,p_level    => C_LEVEL_STATEMENT
199390               ,p_module   => l_log_module);
199391 
199392          END IF;
199393 
199394          insert_sources_256(
199395                           p_target_ledger_id => p_target_ledger_id
199396                         , p_language         => l_language
199397                         , p_sla_ledger_id    => l_sla_ledger_id
199398                         , p_pad_start_date   => p_pad_start_date
199399                         , p_pad_end_date     => p_pad_end_date
199400                           );
199401 
199402      END IF;
199403 
199404 l_created := EventClass_257(
199405    p_application_id         => p_application_id
199406  , p_base_ledger_id         => p_base_ledger_id
199407  , p_target_ledger_id       => p_target_ledger_id
199408  , p_language               => l_language
199409  , p_currency_code          => l_currency_code
199410  , p_sla_ledger_id          => l_sla_ledger_id
199411  , p_pad_start_date         => p_pad_start_date
199412  , p_pad_end_date           => p_pad_end_date
199413  , p_primary_ledger_id      => p_primary_ledger_id
199414 );
199415 
199416 
199417 
199418      IF ( g_diagnostics_mode ='Y' ) THEN
199419 
199420          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199421           trace
199422               (p_msg      => 'CALL Transaction Objects Diagnostics'
199423               ,p_level    => C_LEVEL_STATEMENT
199424               ,p_module   => l_log_module);
199425 
199426          END IF;
199427 
199428          insert_sources_257(
199429                           p_target_ledger_id => p_target_ledger_id
199430                         , p_language         => l_language
199431                         , p_sla_ledger_id    => l_sla_ledger_id
199432                         , p_pad_start_date   => p_pad_start_date
199433                         , p_pad_end_date     => p_pad_end_date
199434                           );
199435 
199436      END IF;
199437 
199438 l_created := EventClass_258(
199439    p_application_id         => p_application_id
199440  , p_base_ledger_id         => p_base_ledger_id
199441  , p_target_ledger_id       => p_target_ledger_id
199442  , p_language               => l_language
199443  , p_currency_code          => l_currency_code
199444  , p_sla_ledger_id          => l_sla_ledger_id
199445  , p_pad_start_date         => p_pad_start_date
199446  , p_pad_end_date           => p_pad_end_date
199447  , p_primary_ledger_id      => p_primary_ledger_id
199448 );
199449 
199450 
199451 
199452      IF ( g_diagnostics_mode ='Y' ) THEN
199453 
199454          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199455           trace
199456               (p_msg      => 'CALL Transaction Objects Diagnostics'
199457               ,p_level    => C_LEVEL_STATEMENT
199458               ,p_module   => l_log_module);
199459 
199460          END IF;
199461 
199462          insert_sources_258(
199463                           p_target_ledger_id => p_target_ledger_id
199464                         , p_language         => l_language
199465                         , p_sla_ledger_id    => l_sla_ledger_id
199466                         , p_pad_start_date   => p_pad_start_date
199467                         , p_pad_end_date     => p_pad_end_date
199468                           );
199469 
199470      END IF;
199471 
199472 l_created := EventClass_259(
199473    p_application_id         => p_application_id
199474  , p_base_ledger_id         => p_base_ledger_id
199475  , p_target_ledger_id       => p_target_ledger_id
199476  , p_language               => l_language
199477  , p_currency_code          => l_currency_code
199478  , p_sla_ledger_id          => l_sla_ledger_id
199479  , p_pad_start_date         => p_pad_start_date
199480  , p_pad_end_date           => p_pad_end_date
199481  , p_primary_ledger_id      => p_primary_ledger_id
199482 );
199483 
199484 
199485 
199486      IF ( g_diagnostics_mode ='Y' ) THEN
199487 
199488          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199489           trace
199490               (p_msg      => 'CALL Transaction Objects Diagnostics'
199491               ,p_level    => C_LEVEL_STATEMENT
199492               ,p_module   => l_log_module);
199493 
199494          END IF;
199495 
199496          insert_sources_259(
199497                           p_target_ledger_id => p_target_ledger_id
199498                         , p_language         => l_language
199499                         , p_sla_ledger_id    => l_sla_ledger_id
199500                         , p_pad_start_date   => p_pad_start_date
199501                         , p_pad_end_date     => p_pad_end_date
199502                           );
199503 
199504      END IF;
199505 
199506 l_created := EventClass_260(
199507    p_application_id         => p_application_id
199508  , p_base_ledger_id         => p_base_ledger_id
199509  , p_target_ledger_id       => p_target_ledger_id
199510  , p_language               => l_language
199511  , p_currency_code          => l_currency_code
199512  , p_sla_ledger_id          => l_sla_ledger_id
199513  , p_pad_start_date         => p_pad_start_date
199514  , p_pad_end_date           => p_pad_end_date
199515  , p_primary_ledger_id      => p_primary_ledger_id
199516 );
199517 
199518 
199519 
199520      IF ( g_diagnostics_mode ='Y' ) THEN
199521 
199522          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199523           trace
199524               (p_msg      => 'CALL Transaction Objects Diagnostics'
199525               ,p_level    => C_LEVEL_STATEMENT
199526               ,p_module   => l_log_module);
199527 
199528          END IF;
199529 
199530          insert_sources_260(
199531                           p_target_ledger_id => p_target_ledger_id
199532                         , p_language         => l_language
199533                         , p_sla_ledger_id    => l_sla_ledger_id
199534                         , p_pad_start_date   => p_pad_start_date
199535                         , p_pad_end_date     => p_pad_end_date
199536                           );
199537 
199538      END IF;
199539 
199540 l_created := EventClass_261(
199541    p_application_id         => p_application_id
199542  , p_base_ledger_id         => p_base_ledger_id
199543  , p_target_ledger_id       => p_target_ledger_id
199544  , p_language               => l_language
199545  , p_currency_code          => l_currency_code
199546  , p_sla_ledger_id          => l_sla_ledger_id
199547  , p_pad_start_date         => p_pad_start_date
199548  , p_pad_end_date           => p_pad_end_date
199549  , p_primary_ledger_id      => p_primary_ledger_id
199550 );
199551 
199552 
199553 
199554      IF ( g_diagnostics_mode ='Y' ) THEN
199555 
199556          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199557           trace
199558               (p_msg      => 'CALL Transaction Objects Diagnostics'
199559               ,p_level    => C_LEVEL_STATEMENT
199560               ,p_module   => l_log_module);
199561 
199562          END IF;
199563 
199564          insert_sources_261(
199565                           p_target_ledger_id => p_target_ledger_id
199566                         , p_language         => l_language
199567                         , p_sla_ledger_id    => l_sla_ledger_id
199568                         , p_pad_start_date   => p_pad_start_date
199569                         , p_pad_end_date     => p_pad_end_date
199570                           );
199571 
199572      END IF;
199573 
199574 l_created := EventClass_262(
199575    p_application_id         => p_application_id
199576  , p_base_ledger_id         => p_base_ledger_id
199577  , p_target_ledger_id       => p_target_ledger_id
199578  , p_language               => l_language
199579  , p_currency_code          => l_currency_code
199580  , p_sla_ledger_id          => l_sla_ledger_id
199581  , p_pad_start_date         => p_pad_start_date
199582  , p_pad_end_date           => p_pad_end_date
199583  , p_primary_ledger_id      => p_primary_ledger_id
199584 );
199585 
199586 
199587 
199588      IF ( g_diagnostics_mode ='Y' ) THEN
199589 
199590          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199591           trace
199592               (p_msg      => 'CALL Transaction Objects Diagnostics'
199593               ,p_level    => C_LEVEL_STATEMENT
199594               ,p_module   => l_log_module);
199595 
199596          END IF;
199597 
199598          insert_sources_262(
199599                           p_target_ledger_id => p_target_ledger_id
199600                         , p_language         => l_language
199601                         , p_sla_ledger_id    => l_sla_ledger_id
199602                         , p_pad_start_date   => p_pad_start_date
199603                         , p_pad_end_date     => p_pad_end_date
199604                           );
199605 
199606      END IF;
199607 
199608 l_created := EventClass_263(
199609    p_application_id         => p_application_id
199610  , p_base_ledger_id         => p_base_ledger_id
199611  , p_target_ledger_id       => p_target_ledger_id
199612  , p_language               => l_language
199613  , p_currency_code          => l_currency_code
199614  , p_sla_ledger_id          => l_sla_ledger_id
199615  , p_pad_start_date         => p_pad_start_date
199616  , p_pad_end_date           => p_pad_end_date
199617  , p_primary_ledger_id      => p_primary_ledger_id
199618 );
199619 
199620 
199621 
199622      IF ( g_diagnostics_mode ='Y' ) THEN
199623 
199624          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199625           trace
199626               (p_msg      => 'CALL Transaction Objects Diagnostics'
199627               ,p_level    => C_LEVEL_STATEMENT
199628               ,p_module   => l_log_module);
199629 
199630          END IF;
199631 
199632          insert_sources_263(
199633                           p_target_ledger_id => p_target_ledger_id
199634                         , p_language         => l_language
199635                         , p_sla_ledger_id    => l_sla_ledger_id
199636                         , p_pad_start_date   => p_pad_start_date
199637                         , p_pad_end_date     => p_pad_end_date
199638                           );
199639 
199640      END IF;
199641 
199642 l_created := EventClass_264(
199643    p_application_id         => p_application_id
199644  , p_base_ledger_id         => p_base_ledger_id
199645  , p_target_ledger_id       => p_target_ledger_id
199646  , p_language               => l_language
199647  , p_currency_code          => l_currency_code
199648  , p_sla_ledger_id          => l_sla_ledger_id
199649  , p_pad_start_date         => p_pad_start_date
199650  , p_pad_end_date           => p_pad_end_date
199651  , p_primary_ledger_id      => p_primary_ledger_id
199652 );
199653 
199654 
199655 
199656      IF ( g_diagnostics_mode ='Y' ) THEN
199657 
199658          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199659           trace
199660               (p_msg      => 'CALL Transaction Objects Diagnostics'
199661               ,p_level    => C_LEVEL_STATEMENT
199662               ,p_module   => l_log_module);
199663 
199664          END IF;
199665 
199666          insert_sources_264(
199667                           p_target_ledger_id => p_target_ledger_id
199668                         , p_language         => l_language
199669                         , p_sla_ledger_id    => l_sla_ledger_id
199670                         , p_pad_start_date   => p_pad_start_date
199671                         , p_pad_end_date     => p_pad_end_date
199672                           );
199673 
199674      END IF;
199675 
199676 l_created := EventClass_265(
199677    p_application_id         => p_application_id
199678  , p_base_ledger_id         => p_base_ledger_id
199679  , p_target_ledger_id       => p_target_ledger_id
199680  , p_language               => l_language
199681  , p_currency_code          => l_currency_code
199682  , p_sla_ledger_id          => l_sla_ledger_id
199683  , p_pad_start_date         => p_pad_start_date
199684  , p_pad_end_date           => p_pad_end_date
199685  , p_primary_ledger_id      => p_primary_ledger_id
199686 );
199687 
199688 
199689 
199690      IF ( g_diagnostics_mode ='Y' ) THEN
199691 
199692          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199693           trace
199694               (p_msg      => 'CALL Transaction Objects Diagnostics'
199695               ,p_level    => C_LEVEL_STATEMENT
199696               ,p_module   => l_log_module);
199697 
199698          END IF;
199699 
199700          insert_sources_265(
199701                           p_target_ledger_id => p_target_ledger_id
199702                         , p_language         => l_language
199703                         , p_sla_ledger_id    => l_sla_ledger_id
199704                         , p_pad_start_date   => p_pad_start_date
199705                         , p_pad_end_date     => p_pad_end_date
199706                           );
199707 
199708      END IF;
199709 
199710 l_created := EventClass_266(
199711    p_application_id         => p_application_id
199712  , p_base_ledger_id         => p_base_ledger_id
199713  , p_target_ledger_id       => p_target_ledger_id
199714  , p_language               => l_language
199715  , p_currency_code          => l_currency_code
199716  , p_sla_ledger_id          => l_sla_ledger_id
199717  , p_pad_start_date         => p_pad_start_date
199718  , p_pad_end_date           => p_pad_end_date
199719  , p_primary_ledger_id      => p_primary_ledger_id
199720 );
199721 
199722 
199723 
199724      IF ( g_diagnostics_mode ='Y' ) THEN
199725 
199726          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199727           trace
199728               (p_msg      => 'CALL Transaction Objects Diagnostics'
199729               ,p_level    => C_LEVEL_STATEMENT
199730               ,p_module   => l_log_module);
199731 
199732          END IF;
199733 
199734          insert_sources_266(
199735                           p_target_ledger_id => p_target_ledger_id
199736                         , p_language         => l_language
199737                         , p_sla_ledger_id    => l_sla_ledger_id
199738                         , p_pad_start_date   => p_pad_start_date
199739                         , p_pad_end_date     => p_pad_end_date
199740                           );
199741 
199742      END IF;
199743 
199744 l_created := EventClass_267(
199745    p_application_id         => p_application_id
199746  , p_base_ledger_id         => p_base_ledger_id
199747  , p_target_ledger_id       => p_target_ledger_id
199748  , p_language               => l_language
199749  , p_currency_code          => l_currency_code
199750  , p_sla_ledger_id          => l_sla_ledger_id
199751  , p_pad_start_date         => p_pad_start_date
199752  , p_pad_end_date           => p_pad_end_date
199753  , p_primary_ledger_id      => p_primary_ledger_id
199754 );
199755 
199756 
199757 
199758      IF ( g_diagnostics_mode ='Y' ) THEN
199759 
199760          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199761           trace
199762               (p_msg      => 'CALL Transaction Objects Diagnostics'
199763               ,p_level    => C_LEVEL_STATEMENT
199764               ,p_module   => l_log_module);
199765 
199766          END IF;
199767 
199768          insert_sources_267(
199769                           p_target_ledger_id => p_target_ledger_id
199770                         , p_language         => l_language
199771                         , p_sla_ledger_id    => l_sla_ledger_id
199772                         , p_pad_start_date   => p_pad_start_date
199773                         , p_pad_end_date     => p_pad_end_date
199774                           );
199775 
199776      END IF;
199777 
199778 l_created := EventClass_268(
199779    p_application_id         => p_application_id
199780  , p_base_ledger_id         => p_base_ledger_id
199781  , p_target_ledger_id       => p_target_ledger_id
199782  , p_language               => l_language
199783  , p_currency_code          => l_currency_code
199784  , p_sla_ledger_id          => l_sla_ledger_id
199785  , p_pad_start_date         => p_pad_start_date
199786  , p_pad_end_date           => p_pad_end_date
199787  , p_primary_ledger_id      => p_primary_ledger_id
199788 );
199789 
199790 
199791 
199792      IF ( g_diagnostics_mode ='Y' ) THEN
199793 
199794          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199795           trace
199796               (p_msg      => 'CALL Transaction Objects Diagnostics'
199797               ,p_level    => C_LEVEL_STATEMENT
199798               ,p_module   => l_log_module);
199799 
199800          END IF;
199801 
199802          insert_sources_268(
199803                           p_target_ledger_id => p_target_ledger_id
199804                         , p_language         => l_language
199805                         , p_sla_ledger_id    => l_sla_ledger_id
199806                         , p_pad_start_date   => p_pad_start_date
199807                         , p_pad_end_date     => p_pad_end_date
199808                           );
199809 
199810      END IF;
199811 
199812 l_created := EventClass_269(
199813    p_application_id         => p_application_id
199814  , p_base_ledger_id         => p_base_ledger_id
199815  , p_target_ledger_id       => p_target_ledger_id
199816  , p_language               => l_language
199817  , p_currency_code          => l_currency_code
199818  , p_sla_ledger_id          => l_sla_ledger_id
199819  , p_pad_start_date         => p_pad_start_date
199820  , p_pad_end_date           => p_pad_end_date
199821  , p_primary_ledger_id      => p_primary_ledger_id
199822 );
199823 
199824 
199825 
199826      IF ( g_diagnostics_mode ='Y' ) THEN
199827 
199828          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199829           trace
199830               (p_msg      => 'CALL Transaction Objects Diagnostics'
199831               ,p_level    => C_LEVEL_STATEMENT
199832               ,p_module   => l_log_module);
199833 
199834          END IF;
199835 
199836          insert_sources_269(
199837                           p_target_ledger_id => p_target_ledger_id
199838                         , p_language         => l_language
199839                         , p_sla_ledger_id    => l_sla_ledger_id
199840                         , p_pad_start_date   => p_pad_start_date
199841                         , p_pad_end_date     => p_pad_end_date
199842                           );
199843 
199844      END IF;
199845 
199846 l_created := EventClass_270(
199847    p_application_id         => p_application_id
199848  , p_base_ledger_id         => p_base_ledger_id
199849  , p_target_ledger_id       => p_target_ledger_id
199850  , p_language               => l_language
199851  , p_currency_code          => l_currency_code
199852  , p_sla_ledger_id          => l_sla_ledger_id
199853  , p_pad_start_date         => p_pad_start_date
199854  , p_pad_end_date           => p_pad_end_date
199855  , p_primary_ledger_id      => p_primary_ledger_id
199856 );
199857 
199858 
199859 
199860      IF ( g_diagnostics_mode ='Y' ) THEN
199861 
199862          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199863           trace
199864               (p_msg      => 'CALL Transaction Objects Diagnostics'
199865               ,p_level    => C_LEVEL_STATEMENT
199866               ,p_module   => l_log_module);
199867 
199868          END IF;
199869 
199870          insert_sources_270(
199871                           p_target_ledger_id => p_target_ledger_id
199872                         , p_language         => l_language
199873                         , p_sla_ledger_id    => l_sla_ledger_id
199874                         , p_pad_start_date   => p_pad_start_date
199875                         , p_pad_end_date     => p_pad_end_date
199876                           );
199877 
199878      END IF;
199879 
199880 l_created := EventClass_271(
199881    p_application_id         => p_application_id
199882  , p_base_ledger_id         => p_base_ledger_id
199883  , p_target_ledger_id       => p_target_ledger_id
199884  , p_language               => l_language
199885  , p_currency_code          => l_currency_code
199886  , p_sla_ledger_id          => l_sla_ledger_id
199887  , p_pad_start_date         => p_pad_start_date
199888  , p_pad_end_date           => p_pad_end_date
199889  , p_primary_ledger_id      => p_primary_ledger_id
199890 );
199891 
199892 
199893 
199894      IF ( g_diagnostics_mode ='Y' ) THEN
199895 
199896          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199897           trace
199898               (p_msg      => 'CALL Transaction Objects Diagnostics'
199899               ,p_level    => C_LEVEL_STATEMENT
199900               ,p_module   => l_log_module);
199901 
199902          END IF;
199903 
199904          insert_sources_271(
199905                           p_target_ledger_id => p_target_ledger_id
199906                         , p_language         => l_language
199907                         , p_sla_ledger_id    => l_sla_ledger_id
199908                         , p_pad_start_date   => p_pad_start_date
199909                         , p_pad_end_date     => p_pad_end_date
199910                           );
199911 
199912      END IF;
199913 
199914 l_created := EventClass_272(
199915    p_application_id         => p_application_id
199916  , p_base_ledger_id         => p_base_ledger_id
199917  , p_target_ledger_id       => p_target_ledger_id
199918  , p_language               => l_language
199919  , p_currency_code          => l_currency_code
199920  , p_sla_ledger_id          => l_sla_ledger_id
199921  , p_pad_start_date         => p_pad_start_date
199922  , p_pad_end_date           => p_pad_end_date
199923  , p_primary_ledger_id      => p_primary_ledger_id
199924 );
199925 
199926 
199927 
199928      IF ( g_diagnostics_mode ='Y' ) THEN
199929 
199930          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199931           trace
199932               (p_msg      => 'CALL Transaction Objects Diagnostics'
199933               ,p_level    => C_LEVEL_STATEMENT
199934               ,p_module   => l_log_module);
199935 
199936          END IF;
199937 
199938          insert_sources_272(
199939                           p_target_ledger_id => p_target_ledger_id
199940                         , p_language         => l_language
199941                         , p_sla_ledger_id    => l_sla_ledger_id
199942                         , p_pad_start_date   => p_pad_start_date
199943                         , p_pad_end_date     => p_pad_end_date
199944                           );
199945 
199946      END IF;
199947 
199948 l_created := EventClass_273(
199949    p_application_id         => p_application_id
199950  , p_base_ledger_id         => p_base_ledger_id
199951  , p_target_ledger_id       => p_target_ledger_id
199952  , p_language               => l_language
199953  , p_currency_code          => l_currency_code
199954  , p_sla_ledger_id          => l_sla_ledger_id
199955  , p_pad_start_date         => p_pad_start_date
199956  , p_pad_end_date           => p_pad_end_date
199957  , p_primary_ledger_id      => p_primary_ledger_id
199958 );
199959 
199960 
199961 
199962      IF ( g_diagnostics_mode ='Y' ) THEN
199963 
199964          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199965           trace
199966               (p_msg      => 'CALL Transaction Objects Diagnostics'
199967               ,p_level    => C_LEVEL_STATEMENT
199968               ,p_module   => l_log_module);
199969 
199970          END IF;
199971 
199972          insert_sources_273(
199973                           p_target_ledger_id => p_target_ledger_id
199974                         , p_language         => l_language
199975                         , p_sla_ledger_id    => l_sla_ledger_id
199976                         , p_pad_start_date   => p_pad_start_date
199977                         , p_pad_end_date     => p_pad_end_date
199978                           );
199979 
199980      END IF;
199981 
199982 l_created := EventClass_274(
199983    p_application_id         => p_application_id
199984  , p_base_ledger_id         => p_base_ledger_id
199985  , p_target_ledger_id       => p_target_ledger_id
199986  , p_language               => l_language
199987  , p_currency_code          => l_currency_code
199988  , p_sla_ledger_id          => l_sla_ledger_id
199989  , p_pad_start_date         => p_pad_start_date
199990  , p_pad_end_date           => p_pad_end_date
199991  , p_primary_ledger_id      => p_primary_ledger_id
199992 );
199993 
199994 
199995 
199996      IF ( g_diagnostics_mode ='Y' ) THEN
199997 
199998          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199999           trace
200000               (p_msg      => 'CALL Transaction Objects Diagnostics'
200001               ,p_level    => C_LEVEL_STATEMENT
200002               ,p_module   => l_log_module);
200003 
200004          END IF;
200005 
200006          insert_sources_274(
200007                           p_target_ledger_id => p_target_ledger_id
200008                         , p_language         => l_language
200009                         , p_sla_ledger_id    => l_sla_ledger_id
200010                         , p_pad_start_date   => p_pad_start_date
200011                         , p_pad_end_date     => p_pad_end_date
200012                           );
200013 
200014      END IF;
200015 
200016  l_created :=  EventType_275(
200017    p_application_id         => p_application_id
200018  , p_base_ledger_id         => p_base_ledger_id
200019  , p_target_ledger_id       => p_target_ledger_id
200020  , p_language               => l_language
200021  , p_currency_code          => l_currency_code
200022  , p_sla_ledger_id          => l_sla_ledger_id
200023  , p_pad_start_date         => p_pad_start_date
200024  , p_pad_end_date           => p_pad_end_date
200025  , p_primary_ledger_id      => p_primary_ledger_id
200026 );
200027 
200028 
200029 
200030      IF ( g_diagnostics_mode ='Y' ) THEN
200031 
200032          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200033           trace
200034               (p_msg      => 'CALL Transaction Objects Diagnostics'
200035               ,p_level    => C_LEVEL_STATEMENT
200036               ,p_module   => l_log_module);
200037 
200038          END IF;
200039 
200040          insert_sources_275(
200041                           p_target_ledger_id => p_target_ledger_id
200042                         , p_language         => l_language
200043                         , p_sla_ledger_id    => l_sla_ledger_id
200044                         , p_pad_start_date   => p_pad_start_date
200045                         , p_pad_end_date     => p_pad_end_date
200046                           );
200047 
200048      END IF;
200049 
200050  l_created :=  EventType_276(
200051    p_application_id         => p_application_id
200052  , p_base_ledger_id         => p_base_ledger_id
200053  , p_target_ledger_id       => p_target_ledger_id
200054  , p_language               => l_language
200055  , p_currency_code          => l_currency_code
200056  , p_sla_ledger_id          => l_sla_ledger_id
200057  , p_pad_start_date         => p_pad_start_date
200058  , p_pad_end_date           => p_pad_end_date
200059  , p_primary_ledger_id      => p_primary_ledger_id
200060 );
200061 
200062 
200063 
200064      IF ( g_diagnostics_mode ='Y' ) THEN
200065 
200066          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200067           trace
200068               (p_msg      => 'CALL Transaction Objects Diagnostics'
200069               ,p_level    => C_LEVEL_STATEMENT
200070               ,p_module   => l_log_module);
200071 
200072          END IF;
200073 
200074          insert_sources_276(
200075                           p_target_ledger_id => p_target_ledger_id
200076                         , p_language         => l_language
200077                         , p_sla_ledger_id    => l_sla_ledger_id
200078                         , p_pad_start_date   => p_pad_start_date
200079                         , p_pad_end_date     => p_pad_end_date
200080                           );
200081 
200082      END IF;
200083 
200084  l_created :=  EventType_277(
200085    p_application_id         => p_application_id
200086  , p_base_ledger_id         => p_base_ledger_id
200087  , p_target_ledger_id       => p_target_ledger_id
200088  , p_language               => l_language
200089  , p_currency_code          => l_currency_code
200090  , p_sla_ledger_id          => l_sla_ledger_id
200091  , p_pad_start_date         => p_pad_start_date
200092  , p_pad_end_date           => p_pad_end_date
200093  , p_primary_ledger_id      => p_primary_ledger_id
200094 );
200095 
200096 
200097 
200098      IF ( g_diagnostics_mode ='Y' ) THEN
200099 
200100          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200101           trace
200102               (p_msg      => 'CALL Transaction Objects Diagnostics'
200103               ,p_level    => C_LEVEL_STATEMENT
200104               ,p_module   => l_log_module);
200105 
200106          END IF;
200107 
200108          insert_sources_277(
200109                           p_target_ledger_id => p_target_ledger_id
200110                         , p_language         => l_language
200111                         , p_sla_ledger_id    => l_sla_ledger_id
200112                         , p_pad_start_date   => p_pad_start_date
200113                         , p_pad_end_date     => p_pad_end_date
200114                           );
200115 
200116      END IF;
200117 
200118  l_created :=  EventType_278(
200119    p_application_id         => p_application_id
200120  , p_base_ledger_id         => p_base_ledger_id
200121  , p_target_ledger_id       => p_target_ledger_id
200122  , p_language               => l_language
200123  , p_currency_code          => l_currency_code
200124  , p_sla_ledger_id          => l_sla_ledger_id
200125  , p_pad_start_date         => p_pad_start_date
200126  , p_pad_end_date           => p_pad_end_date
200127  , p_primary_ledger_id      => p_primary_ledger_id
200128 );
200129 
200130 
200131 
200132      IF ( g_diagnostics_mode ='Y' ) THEN
200133 
200134          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200135           trace
200136               (p_msg      => 'CALL Transaction Objects Diagnostics'
200137               ,p_level    => C_LEVEL_STATEMENT
200138               ,p_module   => l_log_module);
200139 
200140          END IF;
200141 
200142          insert_sources_278(
200143                           p_target_ledger_id => p_target_ledger_id
200144                         , p_language         => l_language
200145                         , p_sla_ledger_id    => l_sla_ledger_id
200146                         , p_pad_start_date   => p_pad_start_date
200147                         , p_pad_end_date     => p_pad_end_date
200148                           );
200149 
200150      END IF;
200151 
200152  l_created :=  EventType_279(
200153    p_application_id         => p_application_id
200154  , p_base_ledger_id         => p_base_ledger_id
200155  , p_target_ledger_id       => p_target_ledger_id
200156  , p_language               => l_language
200157  , p_currency_code          => l_currency_code
200158  , p_sla_ledger_id          => l_sla_ledger_id
200159  , p_pad_start_date         => p_pad_start_date
200160  , p_pad_end_date           => p_pad_end_date
200161  , p_primary_ledger_id      => p_primary_ledger_id
200162 );
200163 
200164 
200165 
200166      IF ( g_diagnostics_mode ='Y' ) THEN
200167 
200168          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200169           trace
200170               (p_msg      => 'CALL Transaction Objects Diagnostics'
200171               ,p_level    => C_LEVEL_STATEMENT
200172               ,p_module   => l_log_module);
200173 
200174          END IF;
200175 
200176          insert_sources_279(
200177                           p_target_ledger_id => p_target_ledger_id
200178                         , p_language         => l_language
200179                         , p_sla_ledger_id    => l_sla_ledger_id
200180                         , p_pad_start_date   => p_pad_start_date
200181                         , p_pad_end_date     => p_pad_end_date
200182                           );
200183 
200184      END IF;
200185 
200186  l_created :=  EventType_280(
200187    p_application_id         => p_application_id
200188  , p_base_ledger_id         => p_base_ledger_id
200189  , p_target_ledger_id       => p_target_ledger_id
200190  , p_language               => l_language
200191  , p_currency_code          => l_currency_code
200192  , p_sla_ledger_id          => l_sla_ledger_id
200193  , p_pad_start_date         => p_pad_start_date
200194  , p_pad_end_date           => p_pad_end_date
200195  , p_primary_ledger_id      => p_primary_ledger_id
200196 );
200197 
200198 
200199 
200200      IF ( g_diagnostics_mode ='Y' ) THEN
200201 
200202          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200203           trace
200204               (p_msg      => 'CALL Transaction Objects Diagnostics'
200205               ,p_level    => C_LEVEL_STATEMENT
200206               ,p_module   => l_log_module);
200207 
200208          END IF;
200209 
200210          insert_sources_280(
200211                           p_target_ledger_id => p_target_ledger_id
200212                         , p_language         => l_language
200213                         , p_sla_ledger_id    => l_sla_ledger_id
200214                         , p_pad_start_date   => p_pad_start_date
200215                         , p_pad_end_date     => p_pad_end_date
200216                           );
200217 
200218      END IF;
200219 
200220  l_created :=  EventType_281(
200221    p_application_id         => p_application_id
200222  , p_base_ledger_id         => p_base_ledger_id
200223  , p_target_ledger_id       => p_target_ledger_id
200224  , p_language               => l_language
200225  , p_currency_code          => l_currency_code
200226  , p_sla_ledger_id          => l_sla_ledger_id
200227  , p_pad_start_date         => p_pad_start_date
200228  , p_pad_end_date           => p_pad_end_date
200229  , p_primary_ledger_id      => p_primary_ledger_id
200230 );
200231 
200232 
200233 
200234      IF ( g_diagnostics_mode ='Y' ) THEN
200235 
200236          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200237           trace
200238               (p_msg      => 'CALL Transaction Objects Diagnostics'
200239               ,p_level    => C_LEVEL_STATEMENT
200240               ,p_module   => l_log_module);
200241 
200242          END IF;
200243 
200244          insert_sources_281(
200245                           p_target_ledger_id => p_target_ledger_id
200246                         , p_language         => l_language
200247                         , p_sla_ledger_id    => l_sla_ledger_id
200248                         , p_pad_start_date   => p_pad_start_date
200249                         , p_pad_end_date     => p_pad_end_date
200250                           );
200251 
200252      END IF;
200253 
200254  l_created :=  EventType_282(
200255    p_application_id         => p_application_id
200256  , p_base_ledger_id         => p_base_ledger_id
200257  , p_target_ledger_id       => p_target_ledger_id
200258  , p_language               => l_language
200259  , p_currency_code          => l_currency_code
200260  , p_sla_ledger_id          => l_sla_ledger_id
200261  , p_pad_start_date         => p_pad_start_date
200262  , p_pad_end_date           => p_pad_end_date
200263  , p_primary_ledger_id      => p_primary_ledger_id
200264 );
200265 
200266 
200267 
200268      IF ( g_diagnostics_mode ='Y' ) THEN
200269 
200270          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200271           trace
200272               (p_msg      => 'CALL Transaction Objects Diagnostics'
200273               ,p_level    => C_LEVEL_STATEMENT
200274               ,p_module   => l_log_module);
200275 
200276          END IF;
200277 
200278          insert_sources_282(
200279                           p_target_ledger_id => p_target_ledger_id
200280                         , p_language         => l_language
200281                         , p_sla_ledger_id    => l_sla_ledger_id
200282                         , p_pad_start_date   => p_pad_start_date
200283                         , p_pad_end_date     => p_pad_end_date
200284                           );
200285 
200286      END IF;
200287 
200288  l_created :=  EventType_283(
200289    p_application_id         => p_application_id
200290  , p_base_ledger_id         => p_base_ledger_id
200291  , p_target_ledger_id       => p_target_ledger_id
200292  , p_language               => l_language
200293  , p_currency_code          => l_currency_code
200294  , p_sla_ledger_id          => l_sla_ledger_id
200295  , p_pad_start_date         => p_pad_start_date
200296  , p_pad_end_date           => p_pad_end_date
200297  , p_primary_ledger_id      => p_primary_ledger_id
200298 );
200299 
200300 
200301 
200302      IF ( g_diagnostics_mode ='Y' ) THEN
200303 
200304          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200305           trace
200306               (p_msg      => 'CALL Transaction Objects Diagnostics'
200307               ,p_level    => C_LEVEL_STATEMENT
200308               ,p_module   => l_log_module);
200309 
200310          END IF;
200311 
200312          insert_sources_283(
200313                           p_target_ledger_id => p_target_ledger_id
200314                         , p_language         => l_language
200315                         , p_sla_ledger_id    => l_sla_ledger_id
200316                         , p_pad_start_date   => p_pad_start_date
200317                         , p_pad_end_date     => p_pad_end_date
200318                           );
200319 
200320      END IF;
200321 
200322  l_created :=  EventType_284(
200323    p_application_id         => p_application_id
200324  , p_base_ledger_id         => p_base_ledger_id
200325  , p_target_ledger_id       => p_target_ledger_id
200326  , p_language               => l_language
200327  , p_currency_code          => l_currency_code
200328  , p_sla_ledger_id          => l_sla_ledger_id
200329  , p_pad_start_date         => p_pad_start_date
200330  , p_pad_end_date           => p_pad_end_date
200331  , p_primary_ledger_id      => p_primary_ledger_id
200332 );
200333 
200334 
200335 
200336      IF ( g_diagnostics_mode ='Y' ) THEN
200337 
200338          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200339           trace
200340               (p_msg      => 'CALL Transaction Objects Diagnostics'
200341               ,p_level    => C_LEVEL_STATEMENT
200342               ,p_module   => l_log_module);
200343 
200344          END IF;
200345 
200346          insert_sources_284(
200347                           p_target_ledger_id => p_target_ledger_id
200348                         , p_language         => l_language
200349                         , p_sla_ledger_id    => l_sla_ledger_id
200350                         , p_pad_start_date   => p_pad_start_date
200351                         , p_pad_end_date     => p_pad_end_date
200352                           );
200353 
200354      END IF;
200355 
200356  l_created :=  EventType_285(
200357    p_application_id         => p_application_id
200358  , p_base_ledger_id         => p_base_ledger_id
200359  , p_target_ledger_id       => p_target_ledger_id
200360  , p_language               => l_language
200361  , p_currency_code          => l_currency_code
200362  , p_sla_ledger_id          => l_sla_ledger_id
200363  , p_pad_start_date         => p_pad_start_date
200364  , p_pad_end_date           => p_pad_end_date
200365  , p_primary_ledger_id      => p_primary_ledger_id
200366 );
200367 
200368 
200369 
200370      IF ( g_diagnostics_mode ='Y' ) THEN
200371 
200372          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200373           trace
200374               (p_msg      => 'CALL Transaction Objects Diagnostics'
200375               ,p_level    => C_LEVEL_STATEMENT
200376               ,p_module   => l_log_module);
200377 
200378          END IF;
200379 
200380          insert_sources_285(
200381                           p_target_ledger_id => p_target_ledger_id
200382                         , p_language         => l_language
200383                         , p_sla_ledger_id    => l_sla_ledger_id
200384                         , p_pad_start_date   => p_pad_start_date
200385                         , p_pad_end_date     => p_pad_end_date
200386                           );
200387 
200388      END IF;
200389 
200390  l_created :=  EventType_286(
200391    p_application_id         => p_application_id
200392  , p_base_ledger_id         => p_base_ledger_id
200393  , p_target_ledger_id       => p_target_ledger_id
200394  , p_language               => l_language
200395  , p_currency_code          => l_currency_code
200396  , p_sla_ledger_id          => l_sla_ledger_id
200397  , p_pad_start_date         => p_pad_start_date
200398  , p_pad_end_date           => p_pad_end_date
200399  , p_primary_ledger_id      => p_primary_ledger_id
200400 );
200401 
200402 
200403 
200404      IF ( g_diagnostics_mode ='Y' ) THEN
200405 
200406          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200407           trace
200408               (p_msg      => 'CALL Transaction Objects Diagnostics'
200409               ,p_level    => C_LEVEL_STATEMENT
200410               ,p_module   => l_log_module);
200411 
200412          END IF;
200413 
200414          insert_sources_286(
200415                           p_target_ledger_id => p_target_ledger_id
200416                         , p_language         => l_language
200417                         , p_sla_ledger_id    => l_sla_ledger_id
200418                         , p_pad_start_date   => p_pad_start_date
200419                         , p_pad_end_date     => p_pad_end_date
200420                           );
200421 
200422      END IF;
200423 
200424  l_created :=  EventType_287(
200425    p_application_id         => p_application_id
200426  , p_base_ledger_id         => p_base_ledger_id
200427  , p_target_ledger_id       => p_target_ledger_id
200428  , p_language               => l_language
200429  , p_currency_code          => l_currency_code
200430  , p_sla_ledger_id          => l_sla_ledger_id
200431  , p_pad_start_date         => p_pad_start_date
200432  , p_pad_end_date           => p_pad_end_date
200433  , p_primary_ledger_id      => p_primary_ledger_id
200434 );
200435 
200436 
200437 
200438      IF ( g_diagnostics_mode ='Y' ) THEN
200439 
200440          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200441           trace
200442               (p_msg      => 'CALL Transaction Objects Diagnostics'
200443               ,p_level    => C_LEVEL_STATEMENT
200444               ,p_module   => l_log_module);
200445 
200446          END IF;
200447 
200448          insert_sources_287(
200449                           p_target_ledger_id => p_target_ledger_id
200450                         , p_language         => l_language
200451                         , p_sla_ledger_id    => l_sla_ledger_id
200452                         , p_pad_start_date   => p_pad_start_date
200453                         , p_pad_end_date     => p_pad_end_date
200454                           );
200455 
200456      END IF;
200457 
200458  l_created :=  EventType_288(
200459    p_application_id         => p_application_id
200460  , p_base_ledger_id         => p_base_ledger_id
200461  , p_target_ledger_id       => p_target_ledger_id
200462  , p_language               => l_language
200463  , p_currency_code          => l_currency_code
200464  , p_sla_ledger_id          => l_sla_ledger_id
200465  , p_pad_start_date         => p_pad_start_date
200466  , p_pad_end_date           => p_pad_end_date
200467  , p_primary_ledger_id      => p_primary_ledger_id
200468 );
200469 
200470 
200471 
200472      IF ( g_diagnostics_mode ='Y' ) THEN
200473 
200474          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200475           trace
200476               (p_msg      => 'CALL Transaction Objects Diagnostics'
200477               ,p_level    => C_LEVEL_STATEMENT
200478               ,p_module   => l_log_module);
200479 
200480          END IF;
200481 
200482          insert_sources_288(
200483                           p_target_ledger_id => p_target_ledger_id
200484                         , p_language         => l_language
200485                         , p_sla_ledger_id    => l_sla_ledger_id
200486                         , p_pad_start_date   => p_pad_start_date
200487                         , p_pad_end_date     => p_pad_end_date
200488                           );
200489 
200490      END IF;
200491 
200492  l_created :=  EventType_289(
200493    p_application_id         => p_application_id
200494  , p_base_ledger_id         => p_base_ledger_id
200495  , p_target_ledger_id       => p_target_ledger_id
200496  , p_language               => l_language
200497  , p_currency_code          => l_currency_code
200498  , p_sla_ledger_id          => l_sla_ledger_id
200499  , p_pad_start_date         => p_pad_start_date
200500  , p_pad_end_date           => p_pad_end_date
200501  , p_primary_ledger_id      => p_primary_ledger_id
200502 );
200503 
200504 
200505 
200506      IF ( g_diagnostics_mode ='Y' ) THEN
200507 
200508          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200509           trace
200510               (p_msg      => 'CALL Transaction Objects Diagnostics'
200511               ,p_level    => C_LEVEL_STATEMENT
200512               ,p_module   => l_log_module);
200513 
200514          END IF;
200515 
200516          insert_sources_289(
200517                           p_target_ledger_id => p_target_ledger_id
200518                         , p_language         => l_language
200519                         , p_sla_ledger_id    => l_sla_ledger_id
200520                         , p_pad_start_date   => p_pad_start_date
200521                         , p_pad_end_date     => p_pad_end_date
200522                           );
200523 
200524      END IF;
200525 
200526  l_created :=  EventType_290(
200527    p_application_id         => p_application_id
200528  , p_base_ledger_id         => p_base_ledger_id
200529  , p_target_ledger_id       => p_target_ledger_id
200530  , p_language               => l_language
200531  , p_currency_code          => l_currency_code
200532  , p_sla_ledger_id          => l_sla_ledger_id
200533  , p_pad_start_date         => p_pad_start_date
200534  , p_pad_end_date           => p_pad_end_date
200535  , p_primary_ledger_id      => p_primary_ledger_id
200536 );
200537 
200538 
200539 
200540      IF ( g_diagnostics_mode ='Y' ) THEN
200541 
200542          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200543           trace
200544               (p_msg      => 'CALL Transaction Objects Diagnostics'
200545               ,p_level    => C_LEVEL_STATEMENT
200546               ,p_module   => l_log_module);
200547 
200548          END IF;
200549 
200550          insert_sources_290(
200551                           p_target_ledger_id => p_target_ledger_id
200552                         , p_language         => l_language
200553                         , p_sla_ledger_id    => l_sla_ledger_id
200554                         , p_pad_start_date   => p_pad_start_date
200555                         , p_pad_end_date     => p_pad_end_date
200556                           );
200557 
200558      END IF;
200559 
200560  l_created :=  EventType_291(
200561    p_application_id         => p_application_id
200562  , p_base_ledger_id         => p_base_ledger_id
200563  , p_target_ledger_id       => p_target_ledger_id
200564  , p_language               => l_language
200565  , p_currency_code          => l_currency_code
200566  , p_sla_ledger_id          => l_sla_ledger_id
200567  , p_pad_start_date         => p_pad_start_date
200568  , p_pad_end_date           => p_pad_end_date
200569  , p_primary_ledger_id      => p_primary_ledger_id
200570 );
200571 
200572 
200573 
200574      IF ( g_diagnostics_mode ='Y' ) THEN
200575 
200576          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200577           trace
200578               (p_msg      => 'CALL Transaction Objects Diagnostics'
200579               ,p_level    => C_LEVEL_STATEMENT
200580               ,p_module   => l_log_module);
200581 
200582          END IF;
200583 
200584          insert_sources_291(
200585                           p_target_ledger_id => p_target_ledger_id
200586                         , p_language         => l_language
200587                         , p_sla_ledger_id    => l_sla_ledger_id
200588                         , p_pad_start_date   => p_pad_start_date
200589                         , p_pad_end_date     => p_pad_end_date
200590                           );
200591 
200592      END IF;
200593 
200594 l_created := EventClass_292(
200595    p_application_id         => p_application_id
200596  , p_base_ledger_id         => p_base_ledger_id
200597  , p_target_ledger_id       => p_target_ledger_id
200598  , p_language               => l_language
200599  , p_currency_code          => l_currency_code
200600  , p_sla_ledger_id          => l_sla_ledger_id
200601  , p_pad_start_date         => p_pad_start_date
200602  , p_pad_end_date           => p_pad_end_date
200603  , p_primary_ledger_id      => p_primary_ledger_id
200604 );
200605 
200606 
200607 
200608      IF ( g_diagnostics_mode ='Y' ) THEN
200609 
200610          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200611           trace
200612               (p_msg      => 'CALL Transaction Objects Diagnostics'
200613               ,p_level    => C_LEVEL_STATEMENT
200614               ,p_module   => l_log_module);
200615 
200616          END IF;
200617 
200618          insert_sources_292(
200619                           p_target_ledger_id => p_target_ledger_id
200620                         , p_language         => l_language
200621                         , p_sla_ledger_id    => l_sla_ledger_id
200622                         , p_pad_start_date   => p_pad_start_date
200623                         , p_pad_end_date     => p_pad_end_date
200624                           );
200625 
200626      END IF;
200627 
200628 l_created := EventClass_293(
200629    p_application_id         => p_application_id
200630  , p_base_ledger_id         => p_base_ledger_id
200631  , p_target_ledger_id       => p_target_ledger_id
200632  , p_language               => l_language
200633  , p_currency_code          => l_currency_code
200634  , p_sla_ledger_id          => l_sla_ledger_id
200635  , p_pad_start_date         => p_pad_start_date
200636  , p_pad_end_date           => p_pad_end_date
200637  , p_primary_ledger_id      => p_primary_ledger_id
200638 );
200639 
200640 
200641 
200642      IF ( g_diagnostics_mode ='Y' ) THEN
200643 
200644          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200645           trace
200646               (p_msg      => 'CALL Transaction Objects Diagnostics'
200647               ,p_level    => C_LEVEL_STATEMENT
200648               ,p_module   => l_log_module);
200649 
200650          END IF;
200651 
200652          insert_sources_293(
200653                           p_target_ledger_id => p_target_ledger_id
200654                         , p_language         => l_language
200655                         , p_sla_ledger_id    => l_sla_ledger_id
200656                         , p_pad_start_date   => p_pad_start_date
200657                         , p_pad_end_date     => p_pad_end_date
200658                           );
200659 
200660      END IF;
200661 
200662 l_created := EventClass_294(
200663    p_application_id         => p_application_id
200664  , p_base_ledger_id         => p_base_ledger_id
200665  , p_target_ledger_id       => p_target_ledger_id
200666  , p_language               => l_language
200667  , p_currency_code          => l_currency_code
200668  , p_sla_ledger_id          => l_sla_ledger_id
200669  , p_pad_start_date         => p_pad_start_date
200670  , p_pad_end_date           => p_pad_end_date
200671  , p_primary_ledger_id      => p_primary_ledger_id
200672 );
200673 
200674 
200675 
200676      IF ( g_diagnostics_mode ='Y' ) THEN
200677 
200678          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200679           trace
200680               (p_msg      => 'CALL Transaction Objects Diagnostics'
200681               ,p_level    => C_LEVEL_STATEMENT
200682               ,p_module   => l_log_module);
200683 
200684          END IF;
200685 
200686          insert_sources_294(
200687                           p_target_ledger_id => p_target_ledger_id
200688                         , p_language         => l_language
200689                         , p_sla_ledger_id    => l_sla_ledger_id
200690                         , p_pad_start_date   => p_pad_start_date
200691                         , p_pad_end_date     => p_pad_end_date
200692                           );
200693 
200694      END IF;
200695 
200696 l_created := EventClass_295(
200697    p_application_id         => p_application_id
200698  , p_base_ledger_id         => p_base_ledger_id
200699  , p_target_ledger_id       => p_target_ledger_id
200700  , p_language               => l_language
200701  , p_currency_code          => l_currency_code
200702  , p_sla_ledger_id          => l_sla_ledger_id
200703  , p_pad_start_date         => p_pad_start_date
200704  , p_pad_end_date           => p_pad_end_date
200705  , p_primary_ledger_id      => p_primary_ledger_id
200706 );
200707 
200708 
200709 
200710      IF ( g_diagnostics_mode ='Y' ) THEN
200711 
200712          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200713           trace
200714               (p_msg      => 'CALL Transaction Objects Diagnostics'
200715               ,p_level    => C_LEVEL_STATEMENT
200716               ,p_module   => l_log_module);
200717 
200718          END IF;
200719 
200720          insert_sources_295(
200721                           p_target_ledger_id => p_target_ledger_id
200722                         , p_language         => l_language
200723                         , p_sla_ledger_id    => l_sla_ledger_id
200724                         , p_pad_start_date   => p_pad_start_date
200725                         , p_pad_end_date     => p_pad_end_date
200726                           );
200727 
200728      END IF;
200729 
200730 
200731  --
200732  -- Bug 4865292
200733  -- When the number of events and that of header extract do not match,
200734  -- set the no header extract flag to indicate there are some issues
200735  -- in header extract.
200736  --
200737  -- Event count context is set in xla_accounting_pkg.unit_processor.
200738  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
200739  -- to report it as a general error.
200740  --
200741  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
200742  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
200743 
200744      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200745         trace
200746           (p_msg      => '# of extracted headers and events does not match'
200747           ,p_level    => C_LEVEL_STATEMENT
200748           ,p_module   => l_log_module);
200749 
200750         trace
200751           (p_msg      => '# of extracted headers: '
200752                          ||g_hdr_extract_count
200753           ,p_level    => C_LEVEL_STATEMENT
200754           ,p_module   => l_log_module);
200755 
200756         trace
200757           (p_msg      => '# of events in xla_events_gt: '
200758                          ||xla_context_pkg.get_event_count_context
200759           ,p_level    => C_LEVEL_STATEMENT
200760           ,p_module   => l_log_module);
200761 
200762         trace
200763           (p_msg      => 'Event No Header Extract Context: '
200764                          ||xla_context_pkg.get_event_nohdr_context
200765           ,p_level    => C_LEVEL_STATEMENT
200766           ,p_module   => l_log_module);
200767 
200768      END IF;
200769 
200770 
200771      xla_context_pkg.set_event_nohdr_context
200772        (p_nohdr_extract_flag => 'Y'
200773        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
200774 
200775      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200776         trace
200777           (p_msg      => 'No Header Extract Flag is set to Y'
200778           ,p_level    => C_LEVEL_STATEMENT
200779           ,p_module   => l_log_module);
200780      END IF;
200781 
200782  END IF;
200783 
200784 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200785    trace
200786       (p_msg      => 'END of CreateHeadersAndLines'
200787       ,p_level    => C_LEVEL_PROCEDURE
200788       ,p_module   => l_log_module);
200789 END IF;
200790 
200791 RETURN l_created;
200792 EXCEPTION
200793 WHEN xla_exceptions_pkg.application_exception THEN
200794    RAISE;
200795 WHEN OTHERS THEN
200796    xla_exceptions_pkg.raise_message
200797       (p_location => 'XLA_00707_AAD_S_000007_PKG.CreateHeadersAndLines');
200798 END CreateHeadersAndLines;
200799 --
200800 --
200801 
200802 --
200803 --+============================================+
200804 --|                                            |
200805 --|  PUBLIC FUNCTION                           |
200806 --|                                            |
200807 --+============================================+
200808 --
200809 FUNCTION CreateJournalEntries
200810        (p_application_id         IN NUMBER
200811        ,p_base_ledger_id         IN NUMBER
200812        ,p_pad_start_date         IN DATE
200813        ,p_pad_end_date           IN DATE
200814        ,p_primary_ledger_id      IN NUMBER)
200815 RETURN NUMBER IS
200816 l_log_module                   VARCHAR2(240);
200817 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
200818 l_temp_result                  BOOLEAN;
200819 l_result                       NUMBER;
200820 BEGIN
200821 --
200822 IF g_log_enabled THEN
200823    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
200824 END IF;
200825 --
200826 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200827    trace
200828       (p_msg      => 'BEGIN of CreateJournalEntries'||
200829                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
200830       ,p_level    => C_LEVEL_PROCEDURE
200831       ,p_module   => l_log_module);
200832 
200833 END IF;
200834 
200835 --
200836 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
200837 
200838 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200839    trace
200840       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
200841       ,p_level    => C_LEVEL_STATEMENT
200842       ,p_module   => l_log_module);
200843 END IF;
200844 --
200845 xla_ae_journal_entry_pkg.SetProductAcctDefinition
200846    (p_product_rule_code      => 'FV_CST_AAD'
200847    ,p_product_rule_type_code => 'S'
200848    ,p_product_rule_version   => ''
200849    ,p_product_rule_name      => 'Federal Costing Application Accounting Definition'
200850    ,p_amb_context_code       => 'DEFAULT'
200851    );
200852 
200853 l_array_ledgers :=
200854    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
200855       (p_base_ledger_id  => p_base_ledger_id);
200856 
200857 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
200858    l_temp_result :=
200859       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
200860          (p_application_id           => p_application_id
200861          ,p_base_ledger_id           => p_base_ledger_id
200862          ,p_target_ledger_id         => l_array_ledgers(Idx)
200863          ,p_primary_ledger_id        => p_primary_ledger_id
200864          ,p_pad_start_date           => p_pad_start_date
200865          ,p_pad_end_date             => p_pad_end_date);
200866 
200867    l_temp_result :=
200868       l_temp_result AND
200869       CreateHeadersAndLines
200870          (p_application_id             => p_application_id
200871          ,p_base_ledger_id             => p_base_ledger_id
200872          ,p_target_ledger_id           => l_array_ledgers(Idx)
200873          ,p_pad_start_date             => p_pad_start_date
200874          ,p_pad_end_date               => p_pad_end_date
200875          ,p_primary_ledger_id          => p_primary_ledger_id
200876          );
200877 END LOOP;
200878 
200879 
200880 IF (g_diagnostics_mode = 'Y' AND
200881     C_LEVEL_UNEXPECTED >= g_log_level AND
200882     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
200883 
200884    xla_accounting_dump_pkg.acctg_event_extract_log(
200885     p_application_id  => p_application_id
200886     ,p_request_id     => xla_environment_pkg.g_Req_Id
200887    );
200888 
200889 END IF;
200890 
200891 CASE l_temp_result
200892   WHEN TRUE THEN l_result := 0;
200893   ELSE l_result := 2;
200894 END CASE;
200895 
200896 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200897    trace
200898       (p_msg      => 'return value. = '||TO_CHAR(l_result)
200899       ,p_level    => C_LEVEL_PROCEDURE
200900       ,p_module   => l_log_module);
200901    trace
200902       (p_msg      => 'END of CreateJournalEntries '
200903       ,p_level    => C_LEVEL_PROCEDURE
200904       ,p_module   => l_log_module);
200905 END IF;
200906 
200907 RETURN l_result;
200908 EXCEPTION
200909 WHEN xla_exceptions_pkg.application_exception THEN
200910    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200911    trace
200912       (p_msg      => 'ERROR. = '||sqlerrm
200913       ,p_level    => C_LEVEL_PROCEDURE
200914       ,p_module   => l_log_module);
200915    END IF;
200916    RAISE;
200917 WHEN OTHERS THEN
200918    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200919    trace
200920       (p_msg      => 'ERROR. = '||sqlerrm
200921       ,p_level    => C_LEVEL_PROCEDURE
200922       ,p_module   => l_log_module);
200923    END IF;
200924    xla_exceptions_pkg.raise_message
200925       (p_location => 'XLA_00707_AAD_S_000007_PKG.CreateJournalEntries');
200926 END CreateJournalEntries;
200927 --
200928 --=============================================================================
200929 --
200930 --
200931 --
200932 --
200933 --
200934 --
200935 --
200936 --
200937 --
200938 --
200939 --
200940 --
200941 --
200942 --
200943 --
200944 --
200945 --
200946 --
200947 --
200948 --
200949 --
200950 --
200951 --=============================================================================
200952 --=============================================================================
200953 --          *********** Initialization routine **********
200954 --=============================================================================
200955 
200956 BEGIN
200957    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
200958    g_log_enabled    := fnd_log.test
200959                           (log_level  => g_log_level
200960                           ,module     => C_DEFAULT_MODULE);
200961 
200962    IF NOT g_log_enabled  THEN
200963       g_log_level := C_LEVEL_LOG_DISABLED;
200964    END IF;
200965 --
200966 END XLA_00707_AAD_S_000007_PKG;
200967 --